1. Conceptos básicos de criptografía.
1.1. Definiciones de Criptografia
1.1.1. La criptografía es la herramienta que nos permite evitar que alguien intercepte, manipule o falsifique los datos transmitidos.
1.1.2. La finalidad básica de la criptografía es el envío de información secreta, utilizando el método criptográfico conocido como cifrado.
1.1.3. Criptografía, criptología, etc. provienen de la raíz griega kryptós, que significa “escondido”.
1.1.4. La criptografía estudia, desde un punto de vista matemático, los métodos de protección de la información.
1.1.5. El criptoanálisis estudia las posibles técnicas utilizadas para contrarrestar los métodos criptográficos, y es de gran utilidad para ayudar a que estos sean más robustos y difíciles de atacar.
1.1.6. Criptología es conjunto formado por estas dos disciplinas, criptografía y criptoanálisis.
1.1.7. Ataque Es acción de intentar descifrar mensajes sin conocer la clave de descifrado.
1.1.8. Formas de llevar a cabo un ataque:
1.1.8.1. Mediante el criptoanálisis: es decir, estudiando matemáticamente la forma de deducir el texto en claro a partir del texto cifrado.
1.1.8.2. Aplicando la fuerza bruta: es decir, probando uno a uno todos los valores posibles de la clave de descifrado x hasta encontrar uno que produzca un texto en claro con sentido.
1.2. Criptografía de clave simétrica
1.2.1. Los sistemas criptográficos de clave simétrica se caracterizan porque la clave de descifrado x es idéntica a la clave de cifrado k, o bien se puede deducir directamente a partir de ésta.
1.2.2. Categorías algoritmos de cifrado:
1.2.2.1. Algoritmos de cifrado en flujo.
1.2.2.1.1. El funcionamiento de una cifrado en flujo consiste en la combinación de un texto en claro M con un texto de cifrado S que se obtiene a partir de la clave simétrica k. Para descifrar, sólo se requiere realizar la operación inversa con el texto cifrado y el mismo texto de cifrado S.
1.2.2.1.2. La operación de combinación que se utiliza normalmente es la suma, y la operación inversa por tanto es la resta.
1.2.2.1.3. No es necesario disponer del mensaje entero antes de empezar a cifrarlo o descifrarlo
1.2.2.1.4. El inconveniente de este método es que se puede romper fácilmente, sobre todo cuanto más corta sea la clave.
1.2.2.1.5. Cifrado síncrono
1.2.2.1.6. Cifrado asíncrono
1.2.2.1.7. Los algoritmos de cifrado en flujo actualmente en uso tienen la propiedad que son poco costosos de implementar. Las implementaciones en hardware son relativamente simples y, por lo tanto, eficientes en su rendimiento en términos de bits cifrados por segundo. Pero también las implementaciones en software pueden ser muy eficientes.
1.2.2.1.8. Ejemplo de algoritmo de cifrado en flujo
1.2.2.2. Algoritmos de cifrado en bloque.
1.2.2.2.1. En una cifra de bloque, el algoritmo de cifrado o descifrado se aplica separadamente a bloques de entrada de longitud fija b, y para cada uno de ellos el resultado es un bloque de la misma longitud.
1.2.2.2.2. Muchos de los algoritmos del cifrado de bloque se basan en la combinación de dos operaciones básicas: sustitución y transposición.
1.2.2.2.3. Confusión y difusión
1.2.2.2.4. Ejemplos de algoritmos de cifrado en bloque
1.2.3. Uso de los algoritmos de clave simétrica.
1.2.3.1. Cuando se utiliza el cifrado simétrico para proteger las comunicaciones, se puede escoger el algoritmo que sea más apropiado a las necesidades de cada aplicación normalmente, a más seguridad menos velocidad de cifrado, y viceversa.
1.2.3.2. Modos de operación al cifrado en bloque.
1.2.3.2.1. El modo ECB (Electronic Codebook) es el más simple, y consiste en dividir el texto en bloques y cifrar cada uno de ellos de forma independiente.
1.2.3.2.2. En el modo CBC (Cipher Block Chaining), se suma a cada bloque de texto en claro, antes de cifrarlo, bit a bit, con XOR el bloque cifrado anterior. Al primer bloque se le suma un vector de inicialización (VI).
1.2.3.2.3. En el modo CFB (Cipher Feedback), el algoritmo de cifrado no se aplica directamente al texto en claro sino a un vector auxiliar inicialmente igual al VI. Del resultado del cifrado se toman n bits que se suman a n bits del texto en claro para obtener n bits de texto cifrado.
1.2.3.2.4. El modo OFB (Output Feedback) opera como el CFB pero en lugar de actualizar el vector auxiliar con el texto cifrado, se actualiza con el resultado obtenido del algoritmo de cifrado.
1.2.4. Funciones hash seguras.
1.2.4.1. Son algoritmos basados en técnicas criptográficas que se usan para garantizar la autenticidad de los mensajes.
1.2.4.2. En general, podemos decir que una función hash nos permite obtener una cadena de bits de longitud fija, relativamente corta, a partir de un mensaje de longitud arbitraria.
1.2.4.3. Se entiende que una función hash o de resumen es segura si cumple las siguientes condiciones:
1.2.4.3.1. Es unidireccional: es decir, si tenemos H =h (M) es computacionalmente inviable encontrar M a partir del resumen H.
1.2.4.3.2. Es resistente a colisiones: es decir, dado un mensaje M cualquiera es computacionalmente inviable encontrar un mensaje M1 ¡= M talque h(M1) = h(M).
1.2.4.4. Ejemplos de funciones hash seguras
1.2.4.4.1. MD5 (Message Digest5).
1.2.4.4.2. SHA-1 (Secure Hash Algorithm-1).
1.3. Criptografía de clave pública.
1.3.1. Algoritmos de clave pública.
1.3.1.1. En un algoritmo criptográfico de clave pública se utilizan claves distintas para el cifrado y el descifrado. Una de ellas, la clave pública, se puede obtener fácilmente a partir de la otra, la clave privada, pero por el contrario es computacionalmente de muy difícil obtención la clave privada a partir de la clave pública.
1.3.1.2. Los algoritmos de clave pública típicos permiten cifrar con la clave pública y descifrar con la clave privada. Pero también puede haber algoritmos que permitan cifrar con la clave privaday descifrar con la pública.
1.3.1.3. Los algoritmos de clave pública se basan en problemas matemáticos “fáciles” de plantear a partir de la solución, pero “difíciles” de resolver.
1.3.1.4. Ejemplos de algoritmos de clave pública
1.3.1.4.1. Intercambio de claves Diffie-Hellman: Es un mecanismo que permite que dos partes se pongan de acuerdo de forma segura sobre una clave secreta.
1.3.1.4.2. RSA: Es el algoritmo más utilizado en la historia de la criptografía de clave pública.
1.3.1.4.3. DSA (Digital Signature Algorithm): Publicado por el NIST en distintas versiones del Digital Signature Standard (DSS), la primera de ellas en 1991.
1.3.2. La criptografía de clave pública se suele utilizar en:
1.3.2.1. Los mecanismos de intercambio de claves permiten que dos partes se pongan de acuerdo en les claves simétricas que utilizaran para comunicar-se, sin que un tercer que esté escuchando el diálogo pueda deducir cuales son estas claves.
1.3.2.2. La autenticación basada en clave pública se puede utilizar si el algoritmo permite utilizar las claves a la inversa: la clave privada para cifrar y la clave pública para descifrar.
1.3.3. Uso de la criptografía de clave pública.
1.3.3.1. Las principales aplicaciones de la criptografía de clave pública son el intercambio de claves para proporcionar confidencialidad y la firma digital para proporcionar autenticidad y no repudio.
1.3.3.2. Una firma digital es básicamente un mensaje cifrado con la clave privada del firmante. Pero, por cuestiones de eficiencia, lo que se cifra no es directamente el mensaje a firmar, sino solamente su resumen calculado con una función hash segura.
1.4. Infraestructura de clave pública (PKI).
1.4.1. Certificados de clave pública.
1.4.1.1. Es el documento que afirma que la llave pública es de determinada persona y se publica para que todas las personas lo sepan. Y es la base de lo que se conoce como infraestructura de clave pública.
1.4.1.2. Partes de un certificado de clave pública:
1.4.1.2.1. Una identificación de usuario como, por ejemplo, su nombre.
1.4.1.2.2. El valor de la clave pública de este usuario.
1.4.1.2.3. La firma de las dos partes anteriores.
1.4.1.3. Formatos de certificados
1.4.1.3.1. El más usado es el de los certificados X.509, especificados en la definición del servicio de directorio X.500. El X.500 define un protocolo de acceso al servicio que permite realizar operaciones de consulta, y también operaciones de modificación de la información de los objetos. Solo para ciertos usuarios autorizada.
1.4.2. Cadenas de certificados y jerarquías de certificación.
1.4.2.1. Es una cadena de firmas de certificado es como que un certificado tenga la firma de uno que si confiamos y el otro que firmo tenga la firma de otro y así sucesivamente.
1.4.2.2. Cadena de certificados.
1.4.2.2.1. Un usuario nos puede enviar su certificado, más el certificado de la CA que lo ha emitido, más el de la CA que ha emitido este otro certificado, etc. hasta llegar al certificado de una CA raíz. Por tal se le llama cadena de certificados
1.4.2.2.2. Los certificados de las CA raíz tienen la propiedad de ser auto-firmados, es decir, están firmados por ellas mismas.
1.4.3. Listas de revocación de certificados (CRL)
1.4.3.1. Es una estructura definida por la recomendación X. 509. Una lista de este tipo sirve para publicar los certificados que han dejado de ser válidos antes de su fecha de caducidad.
1.4.3.2. Algunos Campos de un CRL.
1.4.3.2.1. toBeSigned version (opc.) signature algorithm parameters issuer thisUpdate nextUpdate (opc.) revokedCertificates (opc. rep.)
2. Sistemas de autenticación
2.1. Definición
2.1.1. Es uno de los servicios de seguridad que se requiere en muchas aplicaciones. Este servicio permite garantizar que nadie ha falsificado la comunicación.
2.2. Tipos de autentificación.
2.2.1. La autenticación de mensaje o autenticación de origen de datos: permite confirmar que el originador A de un mensaje es auténtico, es decir, que el mensaje no ha sido generado por un tercero Z que quiere hacer creer que lo ha generado A.
2.2.2. La autenticación de entidad permite confirmar la identidad de un participante A en una comunicación, es decir, que no se trata de un tercero Z que dice ser A.
2.3. Autenticación de mensaje.
2.3.1. Códigos de autenticación de mensaje (MAC).
2.3.1.1. Un código de autenticación de mensaje o MAC se obtiene con un algoritmo a que tiene dos entradas: un mensaje M de longitud arbitraria, y una clave secreta k compartida por el originador y el destinatario del mensaje.
2.3.1.2. Grupos de técnicas para proporcionar autenticación de mensaje:
2.3.1.2.1. Los códigos de autenticación de mensaje o MAC: basados en claves simétricas.
2.3.1.2.2. Las firmas digitales: que se basan en la criptografía de clave pública.
2.3.2. Firmas digitales.
2.3.2.1. Es para confirmar ante un tercero que A realizo dicho mensaje en este caso A autentica los mensajes adjuntándoles la firma digital calculada con su clave privada, y así todo el mundo podrá verificarlos con su clave pública.
2.3.2.2. Servicio de no repudio, efecto adicional proporcionado por las firmas digitales. Esto quiere decir que un destinatario B puede demostrar fehacientemente ante un tercero que un mensaje ha sido generado por A.
2.4. Autenticación de entidad.
2.4.1. Se utiliza cuando en una comunicación una de las partes quiere asegurarse de la identidad de la otra. Normalmente, esta autenticación es un requisito para permitir el acceso a un recurso restringido.
2.4.2. Grupos de técnicas que se pueden utilizar para la autenticación de entidad:
2.4.2.1. Las basadas en contraseñas, también llamadas técnicas de autenticación débil.
2.4.2.2. Las basadas en protocolos de reto-respuesta también llamadas técnicas de autenticación fuerte.
2.4.3. Contraseñas.
2.4.3.1. La idea básica de la autenticación basada en contraseñas es que el usuario A manda su identidad (su identificador de usuario, su nombre de login, etc.) seguida de una contraseña secreta una palabra o combinación de caracteres que el usuario pueda memorizar.
2.4.3.2. Maneras de autentificación de contraseña para evitar determinados ataques:
2.4.3.2.1. Lista de contraseñas en claro: La manera más simple de comprobar una contraseña es que el verificador tenga una lista de las contraseñas asociadas a los usuarios, es decir, una lista de pares (A,xA).
2.4.3.2.2. Lista de contraseñas codificadas: Que cada contraseña esté codificada con alguna transformación C de manera que no se pueda deducir su valor real.
2.4.3.3. Ataque de diccionario.
2.4.3.3.1. Se le llama así pues el atacante puede, pues, limitarse a probar palabras de un diccionario o combinaciones derivadas a partir de estas palabras.
2.4.3.4. Técnicas para dificultar los ataques de diccionario:
2.4.3.4.1. Ocultar la lista de contraseñas codificadas
2.4.3.4.2. Reglas para evitar contraseñas fáciles
2.4.3.4.3. Añadir complejidad a la codificación de las contraseñas.
2.4.3.4.4. Añadir bits de sal a la codificación de las contraseñas.
2.4.3.4.5. Uso de passphrases.
2.4.4. Protocolos de reto-respuesta.
2.4.4.1. Maneras de generar los retos por parte del verificador:
2.4.4.1.1. Secuencialmente: en este caso el reto es simplemente un número que se va incrementando cada vez no se repetiré nunca.
2.4.4.1.2. Aleatoriamente: el reto puede ser generado con un algoritmo pseudoaleatorio, pero la propiedad que tiene en este caso es que no es predecible para los atacantes.
2.4.4.1.3. Cronológicamente: el reto se obtiene a partir de la fecha y hora actuales con la precisión que sea adecuada para el protocolo.
2.4.4.2. Grupos de protocolos de reto-respuesta
2.4.4.2.1. Los basados en técnicas simétricas: en las cuales la clave secreta es compartida por el usuario A y el verificador B.
2.4.4.2.2. Los basados en técnicas de clave pública: en las cuales A utiliza una clave privada para calcular la respuesta.
2.4.4.3. Protocolos de reto-respuesta con clave simétrica
2.4.4.3.1. Autenticación con marca de tiempo
2.4.4.3.2. Autenticación con números aleatorios
2.4.4.3.3. Autenticación mutua con números aleatorios
2.4.4.3.4. Autenticación con función unidireccional
2.4.4.4. Protocolos de reto-respuesta con clave pública
2.4.4.4.1. Descifrado del reto.
2.4.4.4.2. Firma del reto
3. Protección del nivel de red: IPsec.
3.1. La arquitectura IPsec.
3.1.1. Arquitectura IPsec diseñada para proteger el protocolo de red usado en internet, es decir, el protocolo IP.
3.1.2. La arquitectura IPsec (RFC 2401) añade servicios de seguridad al protocolo IP (versión 4 y versión 6), que pueden ser usados por los protocolos de niveles superiores (TCP, UDP, ICMP, etc.).
3.2. Protocolos seguros en que se basa IPsec.
3.2.1. El protocolo AH (Authentication Header, RFC 2402) ofrece el servicio de autenticación de origen de los datagramas IP (incluyendo la cabecera y los datos de los datagramas).
3.2.2. El protocolo ESP (Encapsulating Security Payload, RFC 2406) puede ofrecer el servicio de confidencialidad, el de autenticación de origen de los datos de los datagramas IP (sin incluir la cabecera), o los dos a la vez.
3.3. Los agentes que intervienen en la arquitectura IPSec.
3.3.1. Los nodos extremos de la comunicación: el origen y el destino final de los datagramas.
3.3.2. Los nodos intermedios que suporten IPsec: llamados pasarelas seguras.
3.4. Modos de uso de los protocolos IPsec.
3.4.1. En el modo transporte: la cabecera AH o ESP se incluye después de la cabecera IP convencional, como si fuera una cabecera de un protocolo de nivel superior, y a continuación van los datos del datagrama.
3.4.2. En el modo túnel, el datagrama original se encapsula entero, con su cabecera y sus datos, dentro de otro datagrama. Este otro datagrama tendrá una cabecera IP en la cual las direcciones de origen y de destino serán las delos nodos inicio y final de la SA. Por tanto, se dice que entre estos dos nodos hay un “túnel” dentro del cual viajan intactos los datagramas originales.
4. Protección del nivel de transporte: SSL/TLS/WTLS.
4.1. Un método alternativo que no necesita modificaciones en los equipos de interconexión es introducir la seguridad en los protocolos de transporte. La solución más usada actualmente es el uso del protocolo SSL o de otros basados en SSL.
4.2. Grupo de protocolos SSL o basados en este.
4.2.1. El protocolo de transporte Secure Sockets Layer (SSL).
4.2.2. La especificación Transport Layer Security (TLS).
4.2.3. El protocolo Wireless Transport Layer Security (WTLS).
4.3. Características del protocolo SSL/TLS.
4.3.1. Confiabilidad.
4.3.2. Autenticación de entidad.
4.3.3. Autenticación de mensaje.
4.3.4. Eficiencia.
4.3.5. Extensibilidad.
4.4. El transporte seguro SSL/TLS.
4.4.1. División de capa de transporte seguro
4.4.1.1. La subcapa superior se encarga básicamente de negociar los parámetros de seguridad y de transferir los datos de la aplicación. Tanto los datos de negociación como los de aplicación se intercambian en mensajes.
4.4.1.2. En la subcapa inferior, estos mensajes son estructurados en registros a los cuales se les aplica, según corresponda, la compresión, la autenticación y el cifrado.
4.4.2. El protocolo de registros SSL/TLS.
4.4.2.1. Es el que permite que los datos protegidos sean convenientemente codificados por el emisor y interpretados por el receptor.
4.4.3. El protocolo de negociación SSL/TLS.
4.4.3.1. Tiene por finalidad autenticar el cliente y/o el servidor, y acordar los algoritmos y claves que se utilizaran de forma segura, es decir, garantizando la confidencialidad y la integridad de la negociación.
4.5. Ataques contra el protocolo SSL/TLS
4.5.1. Lectura de los paquetes enviados por el cliente y servidor.
4.5.2. Suplantación de servidor o cliente.
4.5.3. Alteración de los paquetes.
4.5.4. Repetición, eliminación o reordenación de paquetes.
4.6. Aplicaciones que utilizan SSL/TLS.
4.6.1. HTTPS (HTTP sobre SSL/TLS): el protocolo más utilizado actualmente para la navegación web segura.
4.6.2. NNTPS (NNTP sobre SSL): para el acceso seguro al servicio de News.
5. Redes privadas virtuales (VPN).
5.1. Definición de VPN.
5.1.1. Una VPN es una red lógica o virtual creada sobre una infraestructura compartida, pero que proporciona los servicios de protección necesarios para una comunicación segura.
5.1.2. Una red privada virtual (VPN) es una configuración que combina el uso de dos tipos de tecnologías:
5.1.2.1. Las tecnologías de seguridad: que permiten la definición de una red privada, es decir, un medio de comunicación confidencial que no puede ser interceptado por usuarios ajenos a la red.
5.1.2.2. Las tecnologías de encapsulamiento de protocolos: que permiten que, en lugar de una conexión física dedicada para la red privada, se pueda utilizar una infraestructura de red pública, como Internet, para definir por encima de ella una red virtual.
5.2. Tipos de VPN
5.2.1. VPN entre redes locales o intranets.
5.2.2. VPN de acceso remoto.
5.2.3. VPN de acceso remoto.
5.3. Configuraciones y protocolos utilizados en VPN.
5.3.1. En las VPN entre intranets, la situación más habitual es que en cada intranet hay una pasarela VPN, que conecte la red local con Internet.
5.3.2. En las VPN de acceso remoto, a veces llamadas VPDN, un usuario se puede comunicar con una intranet a través de un proveedor de acceso a Internet, utilizando tecnología convencional como por ejemplo a través de un módem ADSL.
5.3.3. El caso de las VPN extranet puede ser como el de las VPN entre intranets, en que la comunicación segura se establece entre pasarelas VPN, o bien como el de las VPN de acceso remoto.