Uso de técnicas de programación segura
Sumario
Introdución
Profundizaremos na seguridade das comunicacións de datos entre procesos que se executan en ordenadores; concretamente en que os datos que un proceso emisor envía a outro proceso receptor:
- cheguen inalterados
- só ó receptor previsto
- e ten un modo de verificar que esto foi así.
No caso de que cheguen a algún outro, garantirase que non poida comprender a información codificada (que lle resulten inintelixible). Isto acádase encriptando ou cifrando os datos.
Os términos cifrado e encriptación aditan empregarse coma sinónimos, máis existe algún matiz que os diferencia. Podemos dicir que o cifrado ten un significado máis específico que encriptación, e que sempre é reversible; isto é, partindo do texto cifrado seempre se pode obter o texto original.
Comunicaciones de datos
Amosanse na figura os elementos que interveñen nunha comunicación entre dúas partes: unha que actúa como emisor e outra que actúa como receptor.
A información que se desexa transmitir codifícase e se transmite de emisor a receptor por un medio de comunicación. Cando a comunicación é entre dous procesos de ordenador, a mensaxe codifícase en binario (coma unha secuencia de ceros e unos).
o medio de comunicación non ten porque ser o ideal xa que as mensaxes:
- podense deteriorar, de xeito que se altere a súa información
^ poden no chegar o seu destino
O medio adoita ser compartido con outros emisores e receptores. Implica isto:
- que poden ter acceso ó medio usuarios non previstos ou incluso maliciosos, que poden escoitar ou ter acceso as mensaxes que se transmiten polo medio, e incluso alterarlos
- o emisor non ten a seguridade total de que a mensaxe chegue ó receptor nin de que o faga inaleterado
- o receptor non ten forma de asegurar que a mensaxe proven do supuesto emisor.
En resumo o medio é inseguro ou non fiable.
A canle:
- adoita ser bidireccional (permite a comunicación en ambos sentidos)
- así pois ambas partes pueden actuar coma emisor e coma receptor, nunha comunicación duplex o bidireccional;o ocontrario é de tipo simplex ou unidireccional.
- e se poden actuar simultáneamente coma emisor e receptore trátase dunha comunicación full-duplex; o contrario (non poden simultáneamente) trátase dunha comunicación de tipo half-duplex.
Funcións de hash
Integridade nas comunicacións de datos
Criptografía
De clave pública (ou asimétrica)
De clave privada (ou simétrica)
Firma dixital
Certificados dixitais
TLS / SSL
Funcionamento
Túneles con SSH
Resumo
- A seguridade en comunicacións de datos entre procesos inclúe distintos aspectos complementarios que son importantes no caso común no que a comunicación entre emisor e receptor realizase a través dun medio de comunicación non seguro. Estes aspectos son:
- a integridade
- a confidencialidade
- a autenticación
- o non repudio. .
- Unha función de hash calcula a partir dunha secuencia de bytes de lonxitude arbitrariamente longa unha secuencia de lonxitude fixa. Debe cumprir os requisitos de:
- non reversibilidade
- uniformidade
- discontinuidade.
- Na actualidade non se considera seguro para o seu uso en criptografía as funcións:
- MD5
- SHA-1
- O cifrado consiste en obter unha mensaxe cifrada (inintelixible para todo aquel que descoñezca a clave secreta) a partir dunha secuencia de bytes ou mensaxe en claro. A clave secreta permite obter a mensaxe en claro orixinal; porén, o cifrado é reversible.
- Tanto o cifrado dunha mensaxe coma o cálculo do seu valor de hash consideranse operacións criptográficas. O cifrado é reversible. Pola contra, o cálculo dun valor de hash non é reversible.
- Cando se obten un valor para o que unha función de hash obten un valor determinado prodúcese unha colisión de hash.
- Considérase unha función de hash robusta cando non é viable obter unha colisión de hash por forza bruta (probando un a un os posibles valores) e non existe ningún método de criptoanálise que permita seleccionar un conxunto máis reducido de valores cunha maior probabilidade de éxito.
- Do mesmo xeito, considérase un método de cifrado robusto cando non é viable obter o valor en blanco orixinal para un valor cifrado por forza bruta, e cando non existe ningún método de criptoanálise que permita seleccionar un conxunto máis reducido de valores cunha maior probabilidade de éxito.
- A criptografía de clave privada ou criptografía simétrica, basease no uso dunha mesma clave secreta por emisor para o encriptado de mensaxes e polo receptor para o seu desencriptado.
- A criptografía de clave pública ou criptografía asimétrica basease no uso dun par de claves, unha privada e outra pública, entre as que existe unha relación matemática.
- Coa clave pública pódese encriptar unha mensaxe de xeito que só se poderá desencriptar coa clave privada.
- Coa clave privada, xunto con unha función de hash, pódese calcular unha firma dixital, que só pode xerar o coñecedor da clave privada, pero que pode verificar calquer coñecedor da clave pública.
- Un certificado dixital X.509 conten a clave pública dunha persona ou entidade, e está asinado dixitalmente por unha AC; pódese utilizar para operacións de cifrado e para verificación de firma dixital.
- Unha PKI é unha combinación de hardware, software, procedimentos de seguridade e marco legal, que en conxunto permite a execución con garantías de operacións criptográficas, cumprindo os requisitos de integridade, confidencialidade, autenticación e non repudio. Unha PKI permite establecer e xestionar asociacións entre claves públicas e identidades de personas e de organizacións.
- Un certificado raíz é un emitido por unha AC, asinado por ela mesma (isto é, autoasinado), e que permite verificar a firma dos certificados dixitais emitidos por ella. Un certificado autoasinado só se considera válido se está emitido por unha AC.
- TLS/SSL utiliza unha combinación de técnicas criptográficas de clave pública e privada,e permite encriptar os datos transmitidos mediante o protocolo de transporte TCP.
Práctica
Glosario
- Ataque criptográfico
- Intento de atopar o texto en claro a partir do texto encriptado sen coñecer previamente a clave; tamén intento de obter unha colisión de hash para un valor de hash determinado.
- Autenticación
- Seguridade para o receptor dunha información de quén é o seu emisor.
- Certificado dixital
- Documento digital que conten información utilizada para criptografía de clave pública, e que permite acreditar a identidade do seu poseedor ou titular.
- Cifrado ou encriptación
- Representación dunha información dunha forma alternativa de xeito que sexa inintelixible; pero que se poida obter a información na súa forma orixinal se se coñece unha información secreta ou clave.
- Colisión de hash
- Hallazgo dunha secuencia de bytes para os que unha función de hash da como resultado un valor determinado.
- Confidencialidade
- Seguridade de que unha información transmitida hacia un receptor so é recibida por él (ou candomenos so é intelixible para él).
- Criptografía de clave privada
- Conxunto de métodos criptográficos, para encriptado (uo cifrado) e desencriptado (ou descifrado) de mensaxes, que se basean nunha clave ou secreto compartido entre emisor e receptor.
- Criptografía de clave pública
- Conxunto de métodos criptográficos que se basean nunha clave privada coñecida só por unha das partes, e unha clave pública asociada coñecida polas dúas. Inclúe métodos para encriptado (ou cifrado), desencriptado (ou descifrado) e firma dixital.
- Firma dixital
- Secuencia de bytes de lonxitude relativamente corta obtida a partir dunha secuencia de bytes, e que só pode calcular o coñecedor do valor dunha clave privada; pero que calquera pode, utilizando unha clave pública asociada con esa clave privada, verificar que foi xenerada por él.
- Función de hash
- Función que fai corresponder a unha secuencia de datos de lonxitude arbitrariamente longa unha secuencia de lonxitude fixa, e que cumple os requisitos de non reversibilidade, uniformidade e discontinuidade.
- Infraestrutura de clave pública (PKI)
- Combinación de medios e procedementos tecnolóxicos, administrativos e legales que, en conxunto, permiten a execución con garantías de operacións criptográficas baseadas en criptografía de clave pública, cumprindo os requisitos de integridade, confidencialidade, autenticación e non repudio.
- Integridade
- Seguridade para o receptor dunha información transmitida de emisor a receptor, a través dunha canle de comunicacións, de que esta no foi alterada na canle entre ambos.
- Non repudio
- Posibilidade de demostrar que unha información foi emitida por un emisor determinado.
- TLS/SSL
- Protocolo de seguridade que funciona a nivel de aplicación sobre o protocolo de transporte TCP; que utiliza unha combinación de métodos criptográficos de clave pública e privada; e que permite a encriptación dos datos transmitidos nos segmentos de datos do protocolo de transporte TCP.
- X.509
- Estándar para certificados dixitais.