PROYECTO FINAL SEGURIDAD DE REDES
GRUPO 1 EMISOR DE MENSAJES ENCRIPTADOS
Introducción La seguridad en las redes siempre ha sido un tema importante, y no está de más tener algo más de conocimiento sobre la base de esta seguridad: la criptografía. En este tutorial vamos a ver una pequeña introducción a la criptografía… Aunque no entraremos en temas matemáticos (Será difícil, la criptografía es TODO matemáticas jeje) intentaré abriros el apetito para que cotilleis por vuestra parte, y poder sentar las bases de futuros tutoriales.
Para la mayor parte de los ejemplos necesitaremos a dos buenas personas que quieran comunicarse y alguien malvado y amoral que quiera armarla gorda. En mi caso me gustan Alicia, Bob y Darth. Muchos usan Mallory o Mata Hari como malvado amoral,
Breve historia de Kleopatra La criptografía es tan antigua como la escritura: siempre que ha habido comunicación entre dos personas, o grupos de personas, ha habido un tercero que podía estar interesado en interceptar y leer esa información sin permiso de los otros. Además, siempre que alguien esconde algo, hay personas interesadas en descubrirlo, así que ligado a la ciencia de esconder (la criptografía), se encuentra casi siempre la de descifrar (el criptoanálisis). El primer cifrado que puede considerarse como tal (por tener evidencias no sólo del cifrado, sino también una metodología e instrucciones para llevarlo a cabo) se debe a Julio César: su método consistía en sustituir cada letra de un mensaje por su tercera siguiente en el alfabeto. Parece ser que también los griegos y egipcios utilizaban sistemas similares. Civilizaciones anteriores, como la Mesopotamia, India y China también utilizaban sus propios métodos. Estos sistemas tan simples evolucionaron posteriormente a elegir una reordenación cualquiera (una permutación) del alfabeto, de forma que a cada letra se le hace corresponder otra, ya sin ningún patrón determinado (ss. XV-XVI). Durante la I Guerra Mundial se utilizaron extensivamente las técnicas criptográficas, con no muy buen resultado, lo que impulsó al final de la guerra, el desarrollo de las primeras tecnologías electromecánicas. Un ejemplo de estos desarrollos es la máquina Enigma, utilizada por los alemanes para cifrar y descifrar sus mensajes. Todos los métodos comentados anteriormente pueden ser más o menos seguros, dependiendo de la complejidad del sistema, del tiempo y la información adicional de que disponga el atacante; en cualquier caso, todavía tienen los siguientes inconvenientes:
Solamente dan cuenta del problema de la confidencialidad (primer punto de los comentados anteriormente): sirven para dificultar las escuchas, pero no sirven para afrontar ninguno de los otros tres problemas reseñados. Hacen falta dos claves por persona con la que nos queremos comunicar (la que nos dé él, y la que usamos para él). Para intercambiar las claves, es preciso un contacto personal, o bien, una comunicación a través de un medio seguro y no interceptable.
Como ventajas, cabe destacar su simplicidad y rapidez, que la hace fácil de usar en muchos contextos. Afortunadamente, la criptografía actual tiene resueltos estos problemas, mediante la codificación basada en sistemas de clave pública. Cada persona tiene dos claves: una privada (esto es, sólo la conoce y maneja él) y una pública (esto es, accesible
por quien la solicite). Estas claves (junto con el sistema de cifrado) satisfacen la siguiente propiedad: lo que se codifica utilizando una de ellas, se decodifica con la otra, de manera que utilizando las dos de modo consecutivo obtenemos el mensaje original.
Confidencialidad Cuando queremos enviar un mensaje a una persona, lo codificamos con su clave pública. De esta forma sólo él puede descifrarlo, utilizando su clave privada. Autenticidad Sólo nosotros podemos codificar el mensaje con nuestra clave privada, y cualquiera puede leerlo con la pública. Esto sirve para garantizar el origen del mensaje. Habitualmente, en lugar de cifrar el texto del mensaje completo, se extrae un resumen del texto (mediante su adecuada transformación: nótese que no sirve cualquier resumen puesto que para mensajes diferentes deberíamos poder obtener resúmenes diferentes que imposibiliten la confusión) y es este resumen lo que se codifica y adjunta al final del mensaje. En este caso hablamos de firma digital. Integridad Si la forma de obtener el resumen del punto anterior es correcta, dos mensajes diferentes tendrán resúmenes diferentes. En consecuencia, un mensaje modificado tendría un resumen diferente del original. No repudio Cuando el mensaje lleva nuestra firma, o está cifrado con nuestra clave privada, sólo podemos haberlo generado nosotros.
La criptografía es la ciencia que resguarda documentos y datos que actúa a través del uso de las cifras o códigos para escribir algo secreto en documentos y datos que se aplica a la información que circulan en las redes locales o en Internet. Características principales Una de las características principales de Kleopatra es mostrar y editar el contenido de la caja de claves local, que es similar al concepto de los anillos de claves de GPG, aunque no se ajuste demasiado a esta analogía.
Buscar e importar certificados: La mayoría de las veces, adquirirá los certificados nuevos al verificar las firmas de los correos electrónicos, porque los certificados están empotrados en las firmas que se hacen al usarlos. Sin embargo, si necesita enviar un correo a alguien con el que no se haya puesto en contacto todavía, tendrá que obtener el certificado de una carpeta LDAP (aunque puede GpgSM hacerlo automáticamente), o desde un archivo. También tendrá que importar su propio certificado tras recibir la respuesta de la CA a su petición de certificación.
Crear un nuevo par de claves: Los pares de claves OpenPGP se crear localmente y se certifican por sus amigos y conocidos. No hay una autoridad central de certificación, en su lugar, cada individuo crea una red de confianza certificando otros pares de claves de usuario con su propio certificado. Usted tiene que introducir un Nombre, Correo y opcionalmente Comentario. Crear un par de claves personales X.509 y una solicitud de certificación: Los pares de claves X.509 son creadas localmente, pero certificados centralizada-mente por una autoridad de certificación (CA). Unas CA pueden certificar otras CA, creando una cadena de confianza central y jerárquica. Ventajas de la criptografía de clave simétrica La criptografía de clave simétrica tiene varios beneficios. Este tipo de cifrado es muy fácil de usar. Además, es muy útil para el cifrado de archivos de datos personales, ya que sólo se requiere de una clave. La criptografía de clave simétrica es rápida y utiliza menos recursos informáticos que otras formas de cifrado. Esta forma de cifrado también se puede utilizar para ayudar a prevenir riesgos en la seguridad. Si utilizas diferentes claves compartidas con diferentes personas, cuando una de las claves está en peligro, sólo una persona se ve afectada en lugar de todos.
Desventajas de la criptografía de clave simétrica Hay varias desventajas en el uso de la criptografía de clave simétrica. El mayor inconveniente es la necesidad de comunicar la clave compartida. Esto debe hacerse con mucho cuidado para asegurarse de que la clave no sea revelada a usuarios no autorizados. También puede haber un problema con el número de claves utilizadas. Cuando se tiene un gran número de claves, puede llegar a ser difícil de gestionar. La criptografía de clave simétrica también es vulnerable a ataques de fuerza bruta y ataques de diccionario. Según la "Guía CWNA a las LAN inalámbricas", los ataques de fuerza bruta se producen cuando un usuario intenta descifrar la clave mediante el uso de un programa que cambia sistemáticamente un carácter a la vez hasta que se consigue la llave correcta. Un ataque de diccionario es cuando un usuario codifica palabras del diccionario y luego las compara con el mensaje codificado. Esto se hace hasta que el atacante encuentra una coincidencia y conoce la palabra que conforma la contraseña.
Ventajas de la criptográfica asimétrica La mayor ventaja de la criptografía asimétrica es que la distribución de claves es más fácil y segura ya que la clave que se distribuye es la pública manteniéndose la privada para el uso exclusivo del propietario
Desventajas de la criptográfica asimétrica
Para una misma longitud de clave y mensaje se necesita mayor tiempo de proceso. Las claves deben ser de mayor tamaño que las simétricas. El mensaje cifrado ocupa más espacio que el original.
Cuadro acerca de ventajas y desventajas de la criptografía simétrica y asimétrica
Que son llaves públicas y privadas La encriptación o cifrado es un concepto que se ha convertido en algo común con la proliferación de las redes inalámbricas domésticas, donde se quiere evitar que la información protegida sea del conocimiento de todos. En realidad, el cifrado existe desde hace siglos. Uno de los ejemplos más tempranos es el cifrado César, en honor a Julio César. Este proceso de cifrado de sustitución consistía en que una persona tomaba el alfabeto y cambiaba los caracteres por ciertos números basándose en un algoritmo. Por lo tanto, si el resultado era de cinco caracteres a la derecha, una "a" sería una "f", "c" a "h", etcétera. Si bien este algoritmo puede que no sea utilizado actualmente, el cifrado de clave pública y privada son dos métodos comúnmente utilizados en la actualidad. Fundamentos de la encriptación El cifrado toma una serie de algoritmos matemáticos, o declaraciones, para codificar los datos desde un formato original hacia uno indescifrable. La información inicial se denomina texto simple, sobre el cual se aplica la encriptación y da como resultado un texto cifrado. El mismo no puede ser entendido en condiciones normales sin que el proceso inverso, o descifrado, sea aplicado al texto cifrado. Cuando se descifra, uno se queda con un texto simple. ¿Qué es una clave? En criptografía la clave es la información necesaria para llevar los datos de un formato hacia otro. En el caso del cifrado César, la clave sería el conocimiento que tienes para cambiar los cinco caracteres correctamente en el alfabeto para descifrar un mensaje. Con los sistemas de cifrado modernos, un archivo contiene la información necesaria para cifrar o descifrar la información. Cifrado de clave privada El cifrado de clave privada o cifrado simétrico se basa en que una clave puede cifrar y descifrar la información. La ventaja de este enfoque es que el proceso es muy rápido y una sola tecla se utiliza para ambos extremos de la cadena de cifrado. La preocupación es la protección de la clave como un punto único de fallo para la seguridad. La gestión de claves es la principal preocupación cuando se utiliza el cifrado de clave privada. Cifrado de clave pública PUBLICIDAD El cifrado de clave pública, o cifrado asimétrico, es una solución al problema percibido de gestión de claves que se encuentra en el cifrado de clave privada. Hay un par de claves utilizadas, una clave pública y privada. La clave pública se distribuye ampliamente a cualquiera que quiera comunicarse en privado con la otra parte. Esa parte tiene la clave privada, que está asociada a la clave pública.
Si bien la clave pública está ampliamente disponible, la clave privada nunca será compartida. A pesar de que el cifrado con clave pública tiene que lidiar con la gestión de claves en cifrado privado, suele ser más lento que el cifrado con clave privada. Esto es debido al hecho de que hay sobrecarga adicional con varias claves que necesitan ser administradas. Ejemplos de cifrado privado y público DES o Data Encryption Standard, es un ejemplo de un esquema de cifrado actual. En la mayoría de las aplicaciones, especialmente en las transacciones comerciales a través de la web, el cifrado de clave pública es algo común. Cuando vas a Amazon.com para hacer una compra, estás usando lo que se denomina SSL, o Secure Sockets Layer, que es el cifrado de la sesión entre tú y Amazon. Este proceso utiliza el cifrado de clave pública. Adicionalmente, hay enfoques híbridos para el cifrado. Un ejemplo popular de esto es el uso de PGP o Pretty Good Privacy, que utiliza una combinación de claves privadas y el cifrado de clave pública. Cuál es la función del emisor y receptor Para encriptar los datos necesitamos un algoritmo de encriptación y una llave. Los datos que se intercambian se encriptan para preservar su confidencialidad.
El algoritmo más utilizado es DES (Data Encryptation Standard) que se ha mostrado vulnerable. Una variante de este algoritmo es 3DES que utiliza los mismos principios de encriptación pero con 3 llaves. Es decir, es más seguro. Estos 2 métodos de encriptación se ven cada vez más sustituido por otro llamado AES, más seguro aún. La desventaja de ese método es que intercambiamos una llave entre emisor y receptor que podría ser interceptada. Se utiliza principalmente por su rapidez de ejecución (por ejemplo cuando montamos un túnel VPN-IP). Se llama método simétrico.
Para evitar el intercambio de claves entre emisor y receptor podemos utilizar un método de encriptación basado en una clave pública y una clave privada. Funciona de la siguiente manera:
El receptor del mensaje descifra la información con su clave privada. La intercepción de su clave pública no permite deducir la clave privada. Se evita también el intercambio de claves entre emisor y receptor. El protocolo que se utiliza en ese caso se llama RSA. Se trata del método asimétrico. La gran ventaja de trabajar con este mecanismo es que podemos utilizarlo a la inversa:
El emisor envía su mensaje cifrado y el receptor (o cualquier otro) puede descifrarlo utilizando su clave pública. Además, el receptor deduce que el mensaje recibido solo podía venir del emisor (porque es capaz de descifrarlo). Existen organismos que se encargan de crear y difundir claves públicas. Cuando se emite una clave pública se encriptan además unos datos propios del usuario para crear lo que llamamos un certificado (clave pública + datos de usuario). Los organismos que generan esa clave se llaman PKI (Public Key Infrastructure).
¿Qué es la criptografía? ¿Qué objetivos tiene? La criptografía es un conjunto de técnicas, métodos y algoritmos que tienen como objetivo tradicional cifrar mensajes para hacerlos ininteligibles para quien no debe leerlos. Actualmente la seguridad en la red se centra en 5 pilares, algunos de los cuales veremos cómo se pueden asegurar gracias a distintas técnicas criptográficas:
Autenticación: Queremos asegurarnos de que el mensaje que nos envían tiene el origen que nos han dicho. Bob tiene que ser capaz de recibir un mensaje y saber que su emisor es Alicia, y no Darth con peluca.
Control de acceso: No queremos que nadie acceda a recursos sin tener autorización.
Confidencialidad: Queremos asegurarnos de que el mensaje enviado solo lo lee quien debe. Alicia quiere que sus intimidades solo las conozca Bob.
Integridad: Los mensajes no deben poder ser modificados. ¿De qué sirve asegurar el origen y el destino del mensaje si cualquiera puede cambiar su contenido?
No repudio: Una vez enviado el mensaje, no vale negarlo. Se podría considerar una forma más extrema de Autenticación.
¿Con que herramientas contamos? Bueno acabamos de ver que tenemos una lista de objetivos que lograr. Veamos a ver tres técnicas criptográficas para enfrentarnos a esto: Criptografía simétrica, criptografía asimétrica y hash.
Criptografía simétrica La base de cualquier técnica criptográfica es agarrar el texto plano y aplicar sobre él una función F que lo modifique, normalmente a nivel de bits (así de chulos somos los informáticos). Esta función suele ser pública, principalmente para que todo el que pase pueda intentar atacarla y verificar que es súper segura. Lo que permite que es mensaje cifrado de Alicia y Bob sea indescifrable para Darth (que también conoce la función F) es la clave.
Los mejores ejemplos para esto son los tradicionales. Por ejemplo el Cifrado César consiste en reemplazar cada letra del abecedario por la letra situada X posiciones después. En este caso la función F consiste en ese desplazamiento, pero sin saber el número de posiciones que toca desplazar no se puede obtener el mensaje original a partir del cifrado.
Acá vemos un ejemplillo con clave=2:
La criptografía simétrica consiste en que la clave de cifrado sea la misma que la de descifrado. Estas técnicas criptográficas suelen ser rápidas de computar, y de hecho son las más usadas en la mayor parte de mensajes. Solo tienen un pequeño defecto… para poder ser usadas se necesita que Alicia y Bob tengan la clave! Parece una tontería, pero lo que garantiza la seguridad es la clave… no puedes enviarla por WhatsApp. Alicia podría susurrársela al oído a Bob, pero es poco eficiente y desde luego escalabilidad 0.
Esto nos lleva al siguiente tipo de criptografía: la criptografía asimétrica.
Criptografía asimétrica Si la criptografía simétrica consiste en tener una única clave para descifrar y cifrar, la criptografía asimétrica consiste en lo contrario: una clave encripta y otra distinta desencripta. Y aún tiene más miga, si encriptas con la segunda clave se puede obtener el mensaje desencriptando con la primera!
Mucho me temo que no hay ejemplos históricos comprensibles de este tipo de criptografía, de hecho este tipo de criptografía tiene explicaciones matemáticas complejas (pista). A diferencia de la criptografía simétrica, estas técnicas suelen tener costes computacionales mucho más altos, por lo que suelen usarse principalmente para distribuir las claves simétricas que codificarán el mensaje en sí.
Una vez que tenemos el algoritmo y las claves, el procedimiento es el siguiente. Alicia tendrá una de las claves, que llamará clave privada, mientras que pregonará al resto del mundo la otra, la clave pública.
Bob tendrá otro par de claves y hará los mismos: guardará con celo una privada y repartirá alegremente la otra. Veamos a ver que conseguimos con esto:
Si Alicia encripta un mensaje con su clave privada, solo se podrá desencriptar con la clave pública. Con esto se logra que todo el mundo sepa quien ha encriptado un mensaje: Autenticación.
Si Alicia encripta un mensaje con la clave pública de Bob, solo Bob podrá desencriptarlo (nadie más tiene su clave privada). Con esto se logra que el mensaje solo lo lea Bob: Confidencialidad.
Bueno, llevamos 2 de los 5 pilares de la seguridad… Vamos a por la última técnica criptográfica que veremos: Funciónes Hash Criptográficas.
Función Hash Criptográfica Una función Hash permite, a grandes rasgos, convertir un conjunto de datos de tamaño variable en un dato de tamaño fijo. A los informáticos nos gusta usarlas para acceder a datos de forma rápida (HashMap, HashTable) y por ejemplo en Java todos los objetos tienen un método hashCode() que nos proporciona su hash.
Una buena función hash tiene características como:
Determinista: Un mismo input siempre produce el mismo output.
Resistencia a colisiones: Cuantos menos inputs produzcan el mismo output, mejor. No queremos que la mitad de los mensajes que codifiquemos produzcan el mismo resultado.
Fácil de calcular: Fácil, rápida y para toda la familia.
A estas características se suman las siguientes para las funciones hash usadas en criptografía:
Imposible calcular el mensaje de a partir de su hash: Somos humanos… lo dejamos en computacionalmente inviable.
Imposible encontrar dos mensajes con el mismo hash: Una vez más, que sea muy muy difícil.
¿Y qué uso le damos a las funciones hash en criptografía? Checksums! La idea original de los checksums es comprobar que los datos no se han corrompido al ser transportados de acá para allá… pero sirven perfectamente para comprobar que Darth no ha modificado el mensaje: Integridad. Se envía el mensaje concatenado con su propio hash, de tal manera que Bob puede comprobar que el hash del mensaje coincide con el enviado.
Si además encriptamos el hash enviado con la clave privada de Alicia, nos aseguramos de que el mensaje no ha sido modificado y de que Alicia lo emitió: Firma digital!
Ejemplo en Kleopatra Jordi quiere que Marta le envíe un archivo encriptado que solo él puede leer, entonces: 1. Jordi crea su par de claves PGP pública/privada 2. Jordi sube su clave PGP pública a un servidor de claves PGP 3. Jordi y Marta comparten la clave PGP pública de Jordi 4. Marta encripta un archivo con la clave PGP pública de Jordi 5. Marta envía el archivo encriptado a Jordi 6. Jordi descifra el archivo con su clave PGP privada Marta copia la clave PGP en su portapapeles:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: SKS 1.1.5 Comment: Hostname: pgp.mit.edu
mQENBFdNjWABCADDksNVxBob9ZNeFQM6zcQkbKQlo0H8R/ijhDgm2nZsi4nkCn45gfcgumm R UPL8Cbp6FbMIFOWhFXH2o9XPoOFiqWRNO4EgGiLloUUNDbuAtWJlwoZDC6ZT5p5+E36mH xix oo3JhCpBJGlDoFhFWpyGMw78Y0r+eeqBGyjgDzf/zEmWCl8l+qABu/XmiFe/Hmml4M/uZ3F7 9HH4Nb3Absyi5Cup9fxpv9XS2a6xzqjcSWxIok4CYRm+3C3GmWxNh1+ZNlQdDujDTHOX49Dt /eoDn4EYDegzzeguqeQjkUXD5/H4tyE6EG2P1lxDSJXnyIqz/yKPJoErX9OQHil6bNNzABEB AAG0KUpvcmRpIEJhc3NhZ2HDsWFzIDxpbmZvQHByb2dyYW1hcml2bS5jb20+iQE/BBMBCA Ap BQJXTY1gAhsDBQkB4QbABwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AACgkQV5/CP4 32UGWQ pggAoFFlXFYRgtbA5RxcVkG2K7Zca0rjAlIB4DBhaCrBO85XJ6ekXwSMMhNfADOHuVM2Lk4 9 NCowBtKgR+XFymoyYxzTLt213CgH8EMjm3KXKghG+hGb2iJeqpZ571N9U+UXRCd2bRDhme E4 R6AWYr3YFsO/9xt0lAoFdXcDEUQUSdDHBWnvgq3wdzh5aT1c4YMaT6qqj/0FfMa0MIvlcYa/ bb4Ms8sxicVVeLdyDiRdlE+LduWZ5jaOw8uFcLgPuArMoEyF0kY9anMSmR/4qnJYDvwSqC9W Fs55GnljvkmkbrEaB+BnQCkvs2W1N7qJPYfEl7O/aAp+tY1kY7iSa2h4+LkBDQRXTY1gAQgA q57R5S5Hr7noF1n6L7wgT77LB4FqzA6lSqBmj793+16lVMtRH4sn6bxVtt0W1YM2Z5LxWVT7 AqjuOa1rgRbTvD9GYCxxd0kSKWVNCtTLOAf9dZpGmISUfwkJQMR6Q/C1ok1y6nSqPsP9rvF3 BNr3sn3LlkUFma9CFmr3HkmE7Mbk7z0y1HZgW6CfQoTkTL4hgmvDjNOgBNzk38TnYpuGRU VF zUMcsMgYljqrVCBsWot1soka9wSKuyZKBy3Nv29KvtFcY6rXgB9LFdZircD0CtabGqeCX2cB
AP N9
nz0S2H1VoTGh9PTiEwvO2YNZfd8e+46P0lxwlnBIIXK3EqAHWIm23QARAQABiQElBBgBCA
-----END PGP PUBLIC KEY BLOCK-----
BQJXTY1gAhsMBQkB4QbAAAoJEFefwj+N9lBlP5kH/i4q9PQtxqTZ8QVeN/tQyNSX6n7z1yJS mGDAZ03lousb81UqClSVmHzgtwXxHgIoxDi+TG6fMXc3MZ+5UjXt2RGiq91hYYOA7bzi/seA 0a7Z0+7uGYUAmSYPI///tKHIw8cJT43oyyNEQ+jkb53EZGjd3Ku9Er3cERvCsXO+CqRawdeU 3WtTOhUEh8CYJnIbm1PDbD5BYf2/KCrBXxgKDvPT5g1+1dharRTc2BWa7M2QimfZKTZHG7 BlrNUP85MKegcsFKYxCgWS6l/ILb8nDEaQ9D+St4Jw0OmVjcXKo/7VEhiDti9mv/SCuU2rLx zsFkFMXwPBxNWI06OYSK2HM= =ckeb
Y justo a continuación, abre su Bloc de notas de Windows y pega el contenido del portapapeles, creando el archivo jordi.asc. ¡Bien! Marta ya tiene en su ordenador la clave PGP de Jordi y ya puede encriptar archivos. 4. Marta encripta un archivo con la clave PGP pública de Jordi Ahora nos metemos en el papel de Marta como emisora de un mensaje. Lo primero que hace es crear el siguiente archivo de texto con el Bloc de notas de Windows.
Figura 19. Mensaje a encriptar
Y lo guarda en su escritorio con el nombre mensaje.txt. Ahora importa la clave pública de Jordi en su Kleopatra.
Figura 20. Clic en el botón Import Certificates Con la clave de Jordi importada, ya puede encriptar archivos.
Figura 21. Marta va a File > Sign/Encrypt Files… Tras seleccionar el archivo mensaje.txt obtiene este cuadro de diálogo.
Figura 22. Marta clica en Next
Figura 23. Selecciona la clave PGP pública de Jordi y clica en Encrypt
Figura 24. Marta obtiene el mensaje Encryption succeeded y clica en Finish ¡Todo ha ido bien! Marta ha conseguido crear el archivo encriptado mensaje.txt.gpg 5. Marta envía el archivo encriptado a Jordi Marta envía el archivo mensaje.txt.gpg a Jordi con su programa de correo electrónico favorito, enviándolo como archivo adjunto.
Conclusión