P GP Jacobo Bermúdez Fernández María Casanova Vázquez PGP ÍNDICE 1. Introducción a PGP…………………………………………………………………..4 1.1 Descripción………………………………………………………………….4 1.2 Motivaciones………………………………………………………………...5 1.3 Servicios que ofrece…………………………………………………………5 2. Historia de PGP………………………………………………………………………6 2.1Precedentes de PGP………………………………………………………….6 2.2 Nacimiento y evolución de PGP…………………………………………….6 3. Software: 3.1 Obtención e instalación…………………………………………………….10 3.2 Proyectos open source……………………………………………………...11 4. Principios básicos de PGP…………………………………………………………...12 4.1Sistemas de cifrado y caso concreto de PGP………………………………..12 4.1.1. Sistema de cifrado simétrico (o de clave secreta)………………..12 4.1.2. Sistema de cifrado asimétrico (o de clave pública)………………13 4.1.3. Sistema de cifrado híbrido (el que usa PGP)…………………….14 4.2 Algoritmos de cifrado………………………………………………………16 4.2.1. Algoritmos de cifrado asimétrico………………………………...16 4.2.2. Algoritmos de cifrado simétrico…………………………………20 4.2.3. Algoritmos de hash o de resumen………………………………..25 4.3 Firma digital………………………………………………………………...29 4.4 Certificados digitales……………………………………………………….31 4.4.1. Distribución de certificados……………………………………...32 4.4.2. Formatos de certificados…………………………………………32 4.4.3. Validez y confianza……………………………………………...34 4.4.4. Modelos de confianza…………………………………………....34 4.4.5. Niveles de confianza en PGP……………………………………36 4.4.6. Revocación desertificados……………………………………….36 4.5. Anillo de claves……………………………………………………………37 5. Modo de funcionamiento……………………………………………………………39 5.1 Creación y manejo de las claves…………………………………………...39 5.2 Exportación e importación de claves públicas. Servidores de claves……...42 5.3 Funcionamiento general…………………………………………………...44 5.3.1. Envío de mensajes……………………………………………….44 5.3.2. Recepción de mensajes………………………………………….48 6. Ejemplo de uso de un software concreto……………………………………………50 7. Problemas y vulnerabilidades de PGP………………………………………………55 8. Otras aplicaciones de PGP…………………………………………………………..58 8.1 Cifrado para asegurar tus propios documentos…………………………….58 8.2 Uso de PGP para borrar archivos del disco ………………………………..59 -2- PGP 9. S/MIME, PGP/MIME……………………………………………………………….60 9.1. S/MIME……………………………………………………………………60 9.2. PGP/MIME………………………………………………………………...60 10. Referencias…………………………………………………………………………61 11. Índice de figuras y tablas…………………………………………………………...63 -3- PGP 1. INTRODUCCIÓN A PGP 1.1. Descripción PGP, Pretty Good Privacy (“Privacidad bastante buena”), creado en 1991 por Philip Zimmermann, es una aplicación informática de criptografía de alta seguridad. PGP permite intercambiar ficheros y mensajes con confidencialidad, autenticación, integridad. Confidencialidad quiere decir que sólo podrán leer el mensaje aquellos a quienes va dirigido. Autenticación quiere decir que los mensajes que parecen ser de alguien sólo pueden venir de esa persona en particular. Integridad quiere decir que el mensaje no es modificado por terceras personas y llega al receptor tal cual se había enviado. No se necesitan canales seguros para intercambiar claves entre usuarios, por lo que PGP resulta mucho más fácil de utilizar. Esto se debe a que PGP está basado en la tecnología llamada criptografía de clave pública. En un sistema de clave pública, cada usuario crea un par de claves que consiste en una clave pública y una clave privada. Se puede cifrar un mensaje con la clave pública y descifrarlo con la privada y viceversa (NO se puede cifrar y descifrar con la misma clave). El usuario difunde la clave pública, poniéndola a disposición de cualquiera que quiera enviarle un mensaje. Una vez que el mensaje ha sido recibido por el usuario, éste podrá descifrarlo con su clave privada. Es evidente que la clave privada debe ser mantenida en secreto por el propietario. PGP también se basa en criptografía de clave privada, de hecho combina ambos como veremos más adelante. PGP también permite al receptor verificar que los mensajes provienen realmente de quien dice ser el emisor y no han sido alterados, ya sea accidentalmente o maliciosamente. Esto es posible gracias a que permite firmar digitalmente los documentos. PGP firma el mensaje usando la clave privada del emisor del mensaje, de tal forma que el receptor puede comprobar su autenticidad con la clave pública del emisor. De esta forma nadie que no conozca tú clave privada puede firmar por ti. La preocupación creciente por la seguridad en el correo electrónico ha llevado en los últimos años a la aparición de sistemas más o menos fiables y más o menos cómodos de utilizar. Aunque todavía no se adoptado ninguno de ellos como estándar aceptado por todo el mundo, cada vez se afianza mas la utilización de PGP como medio para garantizar la confidencialidad, autentificación e integridad en el correo electrónico. PGP es una aplicación de propósito general independiente del Sistema Operativo. Las claves de su éxito son: • • • Software de dominio público. PGP corre en una gran variedad de plataformas. Está basado en algoritmos extremadamente seguros. Resumiendo, los cuatro usos básicos de PGP son: • Cifrar un mensaje o fichero de tal forma que sólo un receptor pueda descifrarlo y leerlo, aquel al que está dirigido. -4- PGP • • • Firmar un mensaje de tal forma que el receptor sepa que viene del emisor y no de un impostor. Cifrar ficheros de tal forma que sólo los pueda descifrar el que los cifró. Borrar realmente ficheros. 1.2. Motivaciones En un artículo escrito por Philip Zimmermann en la primera edición de la guía del usuario en 1994 cuenta las motivaciones que lo llevaron a crear PGP. En este artículo defiende el derecho constitucional de la intimidad y los problemas que ponía el gobierno de Estados Unidos en aquella época para conseguirla. Según Philip el simple hecho de querer tener privacidad en nuestro correo electrónico supone ser sospechosos de estar haciendo algo ilegal. Lo que él propone es que el uso de algún sistema de cifrado de mensajes sea algo extendido entre los usuarios de correo electrónico para que se convierta en algo tan normal como mandar las cartas en sobres y no en postales. El motivo de usar PGP es simplemente obtener privacidad en nuestras comunicaciones vía e-mail, pues a nadie le gusta que lean su correo, a pesar de que los temas tratados no sean confidenciales o ilegales. El correo electrónico es actualmente menos seguro que el correo ordinario pues es habitual que un mensaje enviado a través de Internet pase por varias estafetas y un postmaster o cualquier usuario con privilegios puede acceder a estos mensajes, leerlos y/o alterarlos. Además de esto no es difícil falsificar las direcciones del emisor de un mensaje. Por eso en caso de que se desee obtener seguridad en el correo electrónico a través de Internet es necesario usar algún medio que nos proporcione garantías suficientes de confidencialidad, autentificación e integridad. 1.3. Servicios que ofrece • • • • Confidencialidad: garantiza, mediante técnicas de cifrado, que sólo el destinatario podrá descifrar y leer el mensaje. Integridad: impide cualquier tipo de manipulación sobre el contenido de mensaje por parte de terceras personas, asegurando así que el mensaje es recibido tal como fue emitido. Autenticación: permite a un usuario firmar un documento antes de enviarlo, de forma que no quede duda al destinatario sobre la procedencia de dicho mensaje y sobre la identidad del remitente. No repudio: va ligado al servicio de autenticación. Si firmamos un documento, además de garantizar al receptor que lo hemos enviado nosotros, después no podemos negar el hecho, pues nadie salvo nosotros puede firmar con nuestra clave privada. -5- PGP 2. HISTORIA DE PGP 2.1. Precedentes de PGP. La criptografía es una antigua ciencia y a la vez que los ordenadores se han hecho más y más potentes el número de gente trabajando en este tema ha crecido en gran medida. La preocupación de los gobiernos sobre la expansión de las técnicas de cifrado ha aumentado en los últimos años, aunque la codificación es de uso totalmente legítimo por parte de los ciudadanos, puede ser una potente herramienta para los criminales. En 1976 el criptógrafo y abogado Whitfield Diffie, junto con un ingeniero eléctrico llamado Martin Hellman descubre la criptografía de clave pública. De sus iniciales viene el nombre del algoritmo de creación de claves D-H = Diffie-Hellman. En 1977 Ron Rivest, Adi Shamir, y Len Adleman descubren otro sistema más general de clave pública llamado RSA (por los apellidos Rivest, Shamir, and Adleman) Los tres eran investigadores del MIT. La NSA (Agencia Nacional para la Seguridad en Estados Unidos) recomienda al MIT y a los tres investigadores no publicar nada sobre este descubrimiento ni sobre nada relacionado. El MIT y los investigadores ignoran las recomendaciones de la NSA y lo publican en Junio de 1977 en Scientific American (versión española: Investigación y Ciencia, octubre 1977), en un artículo titulado “Nuevas direcciones en criptografía”. Más tarde publican RSA en Comms ACM (febrero 1978, vol 21, nº 2, pp. 120-126, una publicación internacional). Debido a esta publicación los creadores R, S, A y los más tarde formados PGP y RSADSI (RSA Data Security Inc) pierden la patente de RSA fuera de Estados Unidos, esto es debido a que en la mayoría de los países hay que obtener la patente antes de hacer la publicación, mientras que en Estados Unidos se dispone de un año después de la publicación para solicitar la patente. Esto tendrá posteriormente repercusiones en PGP. Otro asunto es que la ley norteamericana de patentes es inusual porque permite la patente de algoritmos (lo usual es patentar un sistema completo con una determinada finalidad). El sistema de criptografía RSA probablemente no hubiese obtenido una patente en muchos otros países debido a que es un algoritmo, y por lo tanto se habría considerado impatentable, incluso si R, S y A no hubiesen tenido prisa debido a la interferencia de la NSA. IDEA fue desarrollado por Xuejia Lai y James Massey en el ETH (Instituto Suizo Federal de Tecnología) en Zurich. Hay muchos más cifradores simétricos, simplemente se menciona aquí por su relación con PGP. 2.2 Nacimiento y evolución de PGP En 1991 aparece “Senate Bill 266”, un proyecto de ley del Senado radical anticrimen, que solicita “back doors” (puertas traseras) accesibles para el gobierno en todas las herramientas de criptografía. Mientras esa ley era todavía debatida, Phil Zimmermann combina varios métodos de cifrado para crear el software que apodó Pretty Good Privacy o PGP. -6- PGP Las ideas que subyacen bajo PGP eran conocidas y entendidas por informáticos y matemáticos desde hace años, por lo tanto no hay una gran innovación en ese sentido. La gran innovación aportada por PGP es hacer posible que esas herramientas se usen en un ordenador de cualquier casa. Incluso las primeras versiones de PGP daban a la gente con el sistema operativo DOS en casa el acceso a un grado-militar de cifrado. Mientras “Senate Bill 266” todavía seguía su camino en el proceso legislativo, un amigo de Zimmermann se encargó de distribuir PGP todo lo posible antes de que la ley entrase en vigor. El software fue distribuido en una gran cantidad de sistemas BBS (“Bulletin Board System“, Sistema de Tablón de Anuncios) así como en Internet (una gran red académica y de investigación en aquel momento, pero con un alcance mundial). Su activismo contribuyó a la desaparición de la legislación en contra de la criptografía. Zimmermann, que había sido desde hacía mucho tiempo un activista antinuclear, pensaba que PGP sería usado por disidentes, rebeldes y otra gente que se encontrara en problemas debido a sus creencias, en otras palabras por mucha gente tanto dentro como fuera de Estados Unidos. Desde la segunda guerra mundial, el gobierno de Estados Unidos consideraba el cifrado “heavy-duty” (resistente) como una amenaza a la seguridad nacional y no permitía su exportación fuera del país. Exportar software de cifrado, incluido PGP, requería una licencia del Departamento de Estado, y algunos países no podrían recibir dicho software bajo ningunas circunstancias. Estas reglas eran conocidas como ITAR (“for Internacional Traffic in Arms Regulations”, regulaciones para el tráfico internacional de armas) y clasificaban las herramientas de cifrado como armas de guerra. Zimmerman decidió intentar evitar dichas restricciones aprovechándose de la diferencia entre palabras escritas y software. Fue el 5 de junio de 1991 Philip R. Zimmermann cuando publicó la versión final de PGP 1.0. Implementó el cifrado RSA, combinado con un cifrador de claves simétrico diseñado por él mismo y llamado Bass-O-Matic. Más tarde se dio cuenta de que BassO-Mastic era débil y decidió reemplazarlo por IDEA a partir de la versión 2.0. PGP 1.0 también usaba el algoritmo de resumen de mensajes MD4, posteriormente, Ron Rivest diseñó MD5 para solucionar una debilidad descubierta en MD4, así PGP2.0 y las siguientes versiones usarán MD5. Zimmerman originalmente escribió PGP en texto normal (o código fuente), simplemente como cualquier otro libro impreso, para evitar las leyes restrictivas respecto al software criptográfico ya que los libros no se consideran software, incluso aunque el libro contenga código fuente. Aunque muchos libros de criptografía tenían restricciones a la hora de ser exportados, Zimmermann consiguió un permiso para exportar su libro de código fuente. De esta forma cualquier persona, en cualquier parte del mundo tenía la posibilidad de conseguir las instrucciones para construir su propio software PGP. De hecho, enseguida se empezó a construir el software y PGP se convirtió en un estándar de-facto para el cifrado de datos. El gobierno de Estados Unidos consideró esto una táctica para evitar las restricciones en exportación de municiones. El gobierno los denunció y durante los tres años siguientes Zimmerman y la administración mantuvieron un proceso judicial. Este juicio convirtió a Zimmerman en una especie de héroe en la comunidad informática. Mucha gente descargó PGP solamente para saber de qué iba todo el -7- PGP escándalo, y algunos terminaron usándolo. La defensa de Zimmerman difundió mediáticamente el juicio en contra de PGP. En charlas sobre criptografía Zimmerman leía cartas que había recibido de gente que se encontraba en regímenes opresivos y zonas destrozadas por la guerra cuyas vidas habían sido salvadas gracias a PGP, contribuyendo gratamente a que el público se diese cuenta de lo importante que había sido su trabajo. PGP también estaba disponible en Internet antes de que el libro fuese publicado, el código era accesible desde cualquier parte del mundo. El libro era simplemente un dispositivo legal para hacer que la gente de fuera de Estados Unidos tuviese la oportunidad de usar PGP sin quebrantar las leyes del país. Tras muchas disputas legales el gobierno retiró los cargos por violación de leyes de exportación, porque a fin de cuentas, él no exportó el programa. Incluso sin el gobierno de Estados Unidos amenazando, PGP tuvo una serie de problemas técnicos que los criptógrafos de diferentes lugares del mundo observaron. El más evidente es que PGP hacía un gran uso de RSA y las técnicas de cifrado de IDEA, los cuales tenían patente. Cualquiera que quisiese usar PGP comercialmente necesitaba pagar las tasas de las licencia a los poseedores de las patentes. Muchos informáticos y profesionales de la seguridad encontraron esto inaceptable porque querían un sistema de cifrado que fuese gratis para el público general y para las empresas. El problema de las patentes se solucionó con un cambio en las librerías del programa. Durante 1991 y 1992 aparecen nuevas versiones de la primera hasta que en mayo de 1992 se publica la versión 2.0 que fue la primera versión “real”, ya como producto informático. Fue desarrollada por Zimmermann en colaboración con un grupo de programadores de todo el mundo fuera de Estados Unidos para evitar problemas legales. En siguientes fechas van surgiendo diferentes versiones 2.x hasta que en julio de 1993 se publica la versión 2.3a que se convierte en el primer sistema criptográfico de-facto de correo electrónico. En agosto de ese año Zimmermann vende los derechos para una versión comercial de PGP a la empresa ViaCrypt. En 1994 el MIT participó en el desarrollo de las versiones 2.4, 2.5 y 2.6 y en octubre se publicó la versión 2.62, a partir de la cual surgió la primera versión internacional en 1995. La creación de una versión internacional fue debido a que en USA se consideraba delito la exportación de sistemas criptográficos de gran potencia igual que lo es la exportación ilegal de armamento pesado. Para solucionar este problema un noruego llamado Stale Schumacher descubrió que el código fuente escrito del programa sí puede sacarse legalmente de Estados Unidos (consecuencia de las leyes que protegen la libertad de prensa), algo de lo que ya se había aprovechado Zimmermann con anterioridad. Así que, compró los libros que contenían dicho código, se los llevó a su país, los recompiló mediante un sistema OCR de reconocimiento óptico de caracteres, y reconstruyó el programa. El resultado es lo que se denomina "versión internacional" que lleva una i tras el número de versión para distinguirlo de las versiones exportadas ilegalmente. Esta versión internacional es legal al no haber sido compilada dentro de USA ya que el código se obtuvo digitalizando libros impresos. A pesar de que se piense que las versiones internacionales están “debilitadas” son igual de seguras que las de Estados Unidos, sólo existen algunas diferencias como que se soportan claves RSA, los -8- PGP servidores de claves están en Europa y no en Estados Unidos y se portaron a varias plataformas nuevas. La creación de múltiples interfaces (“shells”) por parte de diversos autores permiten un uso más cómodo bajo Windows 3.1 Por fin llegan las modalidades para Window 95/98: PGP 5.0, 5.5, 6.0, 6.5 y 7.0. También aparecen versiones para MAC. Todo ello gracias al trabajo de Zimmermann y de su empresa PGP Inc, creada en 1.996 para la comercialización de los productos PGP y absorbida posteriormente por Network Associates (NAI). En 1998 Zimmerman ofreció una solución a muchos de los problemas legales, cuando su compañía, PGP Corporation, presentó un diseño de PGP mejorado llamado OpenPGP al “Internet Engineering Task Force” (IETF), el organismo responsable de los estándares de Internet. OpenPGP definía estándares por los cuales diferentes programas se podrían comunicar de forma segura usando una versión realzada del protocolo PGP y diferentes algoritmos de cifrado, la descripción de este estándar está recogida en el RFC 2440. Esto llevó a que mucha gente y compañías creasen sus propias implementaciones de OpenPGP, adaptándolas a sus propias necesidades. En septiembre de 1999 el gobierno de Estados Unidos anunció el relajamiento de las regulaciones sobre exportación de software criptográfico, y en diciembre la NAI (Network Associates Inc) obtuvo una licencia de exportación de PGP hacia todo el mundo. Tras varios años conviviendo la versión internacional y la versión de Estados Unidos se empezó a usar en todo el mundo la versión estándar de PGP distribuida por la PGP Corporation. Esto sigue así hasta el día de hoy, pero PGP ha ido evolucionando con la aparición de nuevas versiones. -9- PGP 3. SOFTWARE 3.1. Obtención e instalación Actualmente los derechos de PGP son de la compañía PGP Corporation. PGP Corporation es una compañía fundada por Phil Zimmermann, uno de los más grandes expertos a nivel mundial en cifrado de datos y, como ya se ha dicho, creador de PGP. Es la mayor compañía del mundo en criptografía y seguridad de la información, proporcionando software PGP para muchas plataformas diferentes. PGP Corporation proporciona una implementación de OpenPGP que funciona sobre los sistemas operativos más populares. Proporciona un sistema PGP que se integra sin problemas con los clientes de correo estándares. PGP es un producto comercial hoy en día y PGP Corporation proporciona un gran rango de servicios relacionados. Los productos ofrecidos por PGP Corporation son: • PGP Desktop. Este módulo de PGP, incluye el cifrado de correo electrónico y de discos duros. Mediante el componente PGPDisk, el sistema cifra las carpetas que contienen los documentos de mayor sensibilidad, utilizando para ello la tecnología de “disco virtual”, complementado con los algoritmos de mayor robustez y de gran eficiencia en su ejecución, permitiendo así una operación virtualmente transparente para el usuario final. • PGP Keyserver. Este componente de PGP permite almacenar las llaves de cifrado de la organización y las políticas centralizadas de configuración del PGP Desktop instalado a cada usuario. Cada cliente se comunica con este servidor de llaves para mantenerse actualizado y constituye el punto de referencia cuando no se cuenta con la llave del usuario a quien se desea mandar correo cifrado. • PGP Admin. Este módulo de PGP constituye la herramienta de configuración del sistema. Permite al administrador definir una gran cantidad de parámetros de instalación y operación de la aplicación Desktop que se instala a los usuarios finales. • ADK y “Key Reconstruction Server”. Entre las características más importantes de PGP que se regulan desde la consola del administrador, merecen especial mención la capacidad de manejar llaves adicionales de cifrado, también llamada A.D.K (Additional Decryption Key), y el sistema de recuperación de claves perdidas. Desde la página www.pgp.com se puede bajar una versión de PGP Desktop de prueba de 30 días, la versión que te permiten descargarte es la última, la 9.6. Todas las versiones anteriores no comerciales y sus correspondientes internacionales se pueden descargar de www.pgpi.com, al igual que de otras páginas, pero ésta es la página de referencia. - 10 - PGP La primeras versiones eran por línea de comandos y eran un poco engorrosas, posteriormente se fueron integrando con los clientes de correo mediante plugins, aunque a veces había problemas de compatibilidad. Como hemos dicho la última la última versión existente es la 9.6 pero no ha sido muy bien acogida entre los usuarios ya que es bastante compleja de utilizar. Una de las más utilizadas y recomendadas es la 8.1 debido a su facilidad de uso y su fácil integración con distintos clientes de correo actuales. 3.2. Proyectos “open source” GnuPG es un proyecto de GNU, se trata de una implementación completa y libre del OpenPGP estándar tal y como está definido en el RFC2440, que comenzó a distribuirse en 1999 por el desarrollador alemán Werner Koch, la versión 1.0.0 fue publicada el 7 de septiembre de 1999. Actualmente está disponible para Windows y para Linux, así como para Mac-OS. Ya que GnuPG sigue el estándar OpenPGP, puede ser usado para comunicarse con gente que esté usando cualquier otro software que siga las especificaciones del estándar. El nombre formal es GnuPG, pero mucha gente se refiere a él simplemente como GPG. GPG es una herramienta que funciona por línea de comandos, con características que hacen fácil su integración con otras aplicaciones. Existen muchas interfaces gráficas disponibles para utilizarlo. Permite cifrar y firmar los datos, tiene un sistema de gestión de claves muy versátil y módulos de acceso a los servidores de claves públicas. La versión 2 de GnuPG también proporciona soporte para S/MIME. GnuPG es software libre, lo cual quiere que decir que puede ser usado de forma libre, modificado y distribuido, siempre bajo los términos de la a GNU General Public License (Licencia Pública General de GNU). • • Las dos versiones de GnuPG más populares son: 1.4.7: es la versión “standalone” más conocida y portable. 2.0.3: es la versión realzada y más difícil de instalar, es la más reciente. El proyecto Gpg4win es el que proporciona una versión de GnuPG para Windows y el proyecto Aegypten desarrolla la funcionalidad S/MIME en GnuPG2. El uso de algoritmos con patentes restrictivas por parte de PGP representa un problema en cuanto a la filosofía de GnuPG, la cual es la de implementar un sistema criptográfico libre. Así pues, las patentes sobre estos algoritmos imposibilitan una implementación total. Pero GnuPG también pretende cumplir con las reglas de los estándares de OpenPGP. Existen unas extensiones para RSA e IDEA que pueden ser instaladas y que permiten cierto uso de estos algoritmos. - 11 - PGP 4. MODO DE FUNCIONAMIENTO DE PGP 4.1 Sistemas de cifrado y caso concreto de PGP A parte de los sistemas criptográficos clásicos existen dos tipos fundamentalmente los simétricos o de clave privada y los asimétricos o de clave pública. PGP usa un sistema híbrido que combina los dos. Empezaremos viendo las características de cada uno por separado para después entender mejor la combinación de ambos. 4.1.1. Cifrado simétrico (o de clave privada) Cuando la clave de cifrado es la misma que la de descifrado (y, por tanto, los algoritmos de cifrado y de descifrado coinciden) se habla de algoritmo de cifrado simétrico. Este es el tipo de cifrado que ha dominado la historia de la criptografía hasta hace un par de décadas. Existen muchos algoritmos de clave simétrica resistentes al criptoanálisis: AES, familia RC, Twofish, IDEA, familia CAST, Triple-DES, LOKI, por nombrar solamente unos cuantos. Los algoritmos simétricos se clasifican en: algoritmos de cifrado en bloque (block Chipre) y algoritmos de cifrado en flujo (stream Chipre). Para cifrar, se coge el mensaje M y se le aplica la operación matemática Ck (es decir, se usa el algoritmo de cifrado C con la clave k), obteniendo Ck(M). Para descifrar el mensaje, se aplica la operación inversa Dk. Puesto que Ck y Dk son operaciones inversas, se tiene Dk(Ck(M)) = M, esto es, el mensaje original. Esto requiere que el emisor y el receptor del mensaje utilicen tanto el mismo algoritmo como la misma clave. Ahí radica uno de los problemas más importantes de este tipo de sistemas. La comunicación segura entre el emisor y el receptor pasa porque ambos, y nadie más, conozcan la clave k. En caso de que la clave se filtre en cualquier momento a un tercero la seguridad desaparece. Una clave comprometida (es decir, que está o puede estar en poder de un tercero) desbarata todo el sistema de comunicación segura basado en el cifrado, ya que un posible “fisgón” además de poder ver la información puede suplantar la identidad de los interlocutores. Fig. 1: Cifrado simétrico - 12 - PGP Los problemas de intercambiar y gestionar las claves se resuelven con los sistemas de clave asimétrica o pública, que pasamos a ver a continuación. 4.1.2. Cifrado asimétrico (o de clave pública) El problema de la distribución de claves se resuelve mediante la llamada criptografía de clave pública, o de clave asimétrica, descubierta hacia 1975. Se basa en matemáticas modulares y de exponentes. En la criptografía de clave pública se utilizan dos claves distintas, una para el cifrado y otra para el descifrado. La clave de cifrado es pública, esto es, conocida por todo el mundo; la de descifrado (clave privada) solamente es conocida por su propietario. Ambas constituyen un par de claves. La particularidad de estas claves es que son reversibles, es decir, que ambas sirven para cifrar o descifrar, pero son asimétricas, lo que supone que lo que se cifra con la pública sólo se podrá descifrar con la privada y lo que se cifra con la privada sólo se podrá descifrar con la clave pública. No es posible computacionalmente encontrar la clave de descifrado únicamente a partir del algoritmo y la clave de cifrado. Esto se puede aprovechar para enviar mensajes cifrados con la clave pública del receptor de forma que sólo él podrá descifrar el mensaje ya que es el único que debería conocer su clave privada. En realidad si es posible encontrar la clave de descifrado a partir de la de cifrado, ya que la clave pública y privada no son independientes. Pero en la práctica, el volumen de cálculos matemáticos que ha de realizarse es demasiado grande. Esto es debido a que para la generación de las claves se usan funciones matemáticas de un solo sentido (con trampa), de forma que en sentido directo los cálculos son sencillos pero en sentido inverso se complican por haber varias posibilidades. Cuantas más posibilidades haya más complicado será obtener la inversa. De ahí que la seguridad de estos sistemas se base en el tamaño de las claves, que a partir de 1024 bits es ya bastante buena. Por verlo con un ejemplo la criptografía de clave pública se asemeja a un buzón de correos. Cualquiera puede introducir una carta en el buzón, pero solamente el poseedor de la llave del buzón podrá abrirlo para acceder a su contenido. El funcionamiento de este tipo de cifrado evita los peligros de enviar la clave por un conducto inseguro, de hecho la clave pública puede ser tan diseminada como un número de teléfono. Ahora un “fisgón” si conoce la clave pública de un interlocutor sólo le servirá para enviarle mensajes y aunque conozca su clave privada sólo le permitirá conocer el contenido de los mensajes que recibe pero no toda la conversación. También permite aliviar los requisitos de almacenamiento de claves, sobre todo cuando hay más personas comunicándose. Si hay N interlocutores, el número de claves diferentes que hay que intercambiar y almacenar para comunicaciones seguras dos a dos es N*(N-1)/2. Si N=100, eso significa más de 4.950 claves distintas. Por supuesto, podemos hacer que algunas o todas las claves sean iguales, pero a lo mejor no es conveniente que un participante tenga acceso a las comunicaciones entre otros dos participantes. Con los sistemas de clave pública, cada usuario solamente necesita tener una clave privada (la suya propia) y N-1 claves públicas. - 13 - PGP En la actualidad, los sistemas de clave pública más utilizados son el RSA y el Diffie-Hellman. Más correctamente, Diffie-Hellman es un algoritmo de intercambio de claves. Su variante para criptografía de clave pública se conoce como "Algoritmo Diffle-Hellman, Variante ElGamal". Fig. 2: Cifrado asimétrico Los criptosistemas de clave pública tampoco son la panacea universal, y adolecen de diversos problemas, estos son el de la suplantación de identidad, el de autenticidad, el de integridad y el que se refiere a la eficiencia. Para solucionar los problemas de eficiencia vamos a ver ahora los sistemas de cifrado híbrido. Más adelante veremos como solucionar los problemas de la autenticidad e integridad mediante el proceso de firma digital y el de la suplantación de identidad con los certificados digitales. 4.1.3. Cifrado híbrido (el que usa PGP) Los algoritmos de clave pública son lentos, de hecho, suelen ser del orden de mil veces más lentos que los algoritmos de clave simétrica. Los ordenadores son cada vez más rápidos, pero cuando hay grandes cantidades de información por cifrar o descifrar (pensemos, por ejemplo, en una base de datos protegida mediante cifrado) puede llegar a ser una verdadera dificultad. También resulta que el tamaño del mensaje cifrado es mucho mayor que el del original. Estos problemas, y algunos otros (por ejemplo, ciertos ataques criptoanalíticos) se evitan mediante un sistema híbrido que tome lo mejor de dos mundos. La idea radica en crear una clave simétrica con la que ciframos el mensaje a enviar. A su vez, la clave simétrica es cifrada mediante la clave pública de un sistema asimétrico. A la hora de enviar el mensaje, se enviará el propio mensaje cifrado y la clave simétrica cifrada. De esta forma el receptor descifrará la clave simétrica usando su clave privada y con la clave simétrica descifrará el contenido del mensaje. Siguiendo este procedimiento hemos usado un sistema simétrico para cifrar el mensaje de forma más eficiente y hemos compartido de forma segura la clave mediante un sistema asimétrico (solucionando así los principales problemas de cada sistema). Todavía se puede mejorar el proceso descrito eligiendo la clave simétrica K de manera que sea distinta para cada comunicación, es decir, diferentes mensajes se cifran con diferentes claves. Esto mejorará la seguridad de diversas maneras. En primer lugar, - 14 - PGP un atacante puede obtener información (cuando menos, reducir la complejidad del ataque) si sabe que diversos mensajes se cifran con la misma clave, aunque el atacante no conozca cuál es dicha clave. También hay un riesgo asociado al hecho de que siempre ciframos la misma clave simétrica K con la clave pública del destinatario. Cambiar K de un mensaje a otro elimina estos peligros (reducidos pero que existen). Y si el atacante lograra, por el medio que fuese, obtener K, solamente le serviría para un solo mensaje, ya que el siguiente estaría cifrado con otra clave distinta. Por eso, la clave simétrica "de usar y tirar" se denomina clave de sesión. Por supuesto, dicha clave ha de ser aleatoria, para que no se pueda obtener información favorable a un posible atacante. Este sistema híbrido utilizando claves de sesión es el que emplea PGP realmente aunque para el usuario es transparente y se ve como un sistema asimétrico. En las siguientes figuras se observa el proceso de cifrado y descifrado: Fig. 3: Cifrado de un mensaje en un sistema híbrido Fig. 4: Descifrado de un mensaje en un sistema híbrido Mencionar también el caso en que un mensaje sea enviado a más de un receptor. Para ello basta con añadir al mensaje la clave tantas veces como receptores y cada una cifrada con la clave pública de cada uno de ellos. De esta forma cada receptor será capaz de descifrar la que haya sido cifrada con su clave pública. Cualquiera que reciba el mensaje a pesar de no ser destinado a él, como no tendrá ninguna clave privada correspondiente a alguna de las claves cifradas añadidas al mensaje, no podrá descifrar el contenido del mensaje. La capacidad de realizar esto viene dada por ADK (Additional Decryption Key) que a su vez supone un problema de seguridad (que se comentará más - 15 - PGP adelante) presente en las versiones 5.5.x a la 6.5.3. Un esquema de este caso se puede ver a continuación: Fig. 5: Mensaje cifrado para dos destinatarios diferentes El diagrama anterior es conceptualmente correcto pero en realidad las claves cifradas irían antes del comienzo del mensaje cifrado. 4.2 Algoritmos de cifrado empleados por PGP. PGP utiliza distintas familias de algoritmos para las tareas fundamentales que lleva a cabo. Éstas son la creación y cifrado de claves, el cifrado del mensaje y la firma digital. Ya se han mencionado los más importantes cuando se describían los sistemas de cifrado, ahora vamos a ver los que usa PGP. 4.2.1. Algoritmos de cifrado asimétricos. Los sistemas de cifrado asimétricos intervienen en la generación del par de llaves, en el cifrado de las claves de sesión y en el cifrado del hash del texto para obtener la firma digital. Desde sus comienzos PGP usó el algoritmo RSA para este propósito y en versiones posteriores apareció uno nuevo, una variante del algoritmo de intercambio de claves, Diffie-Hellman, que se denomina “ElGamal”. A continuación vamos a ver una descripción de ambos y los compararemos: - 16 - PGP El algoritmo RSA es un algoritmo de clave pública desarrollado en 1977 en el MIT por Ronald Rivest, Adi Shamir y Leonard Adelman. Fue registrado el 20 de Septiembre de 1983. El 20 de Septiembre del 2000, tras 17 años, expiró la patente RSA, pasando a ser un algoritmo de dominio público. Este popular sistema se basa en el problema matemático de la factorización de números grandes. El proceso de cifrado y el de firma es el mismo (en el primero se usa la clave pública y en el segundo la privada) y su funcionamiento es el siguiente: 1. Inicialmente es necesario generar aleatoriamente dos números primos grandes, a los que llamaremos p y q. 2. A continuación calcularemos n como producto de p y q: n = p * q 3. Se calcula fi: Φ(n)=(p-1)(q-1) 4. Se calcula un número natural e de manera que MCD(e, Φ(n))=1 , es decir, e debe ser primo relativo de Φ(n). Es lo mismo que buscar un número impar por el que dividir Φ(n) que de cero como resto. 5. Mediante el algoritmo extendido de Euclides se calcula d: e*d mod Φ(n)=1 Puede calcularse d=((Y*Φ(n))+1)/e para Y=1,2,3,... hasta encontrar un d entero. 6. El par de números (e,n) son la clave pública. 7. El par de números (d,n) son la clave privada. 8. Cifrado: La función de cifrado es C = M^e mod n 9. Descifrado: La función de descifrado es M = C^d mod n Para poder romper RSA basta con factorizar n, una vez hecho esto obtenemos p y q, y con estos Φ(n). Con estos datos ya podemos obtener la clave privada mediante el algoritmo de Euclides extendido. Lo que puede parecer en principio algo trivial, no lo es en absoluto. Si los números elegidos como claves son lo suficiente grandes (a partir de 1024 bits) resulta computacionalmente imposible factorizar estos números en un tiempo razonable. Pues los algoritmos de factorización son de tiempo exponencial. Actualmente uno de los algoritmos más rápidos de factorización es el conocido como Number Field Sieve (NFS) aunque existen otros algoritmos muy rápidos como los de curva elíptica, el algoritmo de Pollard, etc. Aunque suene casi a ciencia ficción, existe un algoritmo para computadores cuánticos que ha sido probado y demostrado por IBM y que permitiría reducir enormemente la complejidad del problema de la factorización entera. Éste algoritmo es conocido como “Algoritmo de Shor” y aunque facilitaría enormemente la ruptura de claves RSA, seguiría siendo un problema muy complejo para claves grandes y requeriría un ordenador cuántico bastante potente. - 17 - PGP El algoritmo ElGamal (también conocido como algoritmo Diffie-Hellman, variante ElGamal) se basa en la dificultad de calcular logaritmos discretos del grupo multiplicativo en un campo finito. Fue descrito por Taher Elgamal en 1984 y está basado en el algoritmo de intercambio de claves Diffie-Hellman (ideado en 1976), por lo que si se puede romper uno de los dos se podrá romper el otro. El algoritmo ElGamal fue ideado en un principio para producir firmas digitales, aunque después se extendió su uso para utilizarlo en el cifrado de mensajes. El algoritmo ElGamal no se encuentra patentado, sin embargo se considera que este algoritmo se encuentra cubierto por la patente del algoritmo Diffie-Hellman ya se que se basa en él. Pero de todas formas esta patente expiró el 29 de abril de 1997, por lo que ya es de libre uso. Para generar un par de claves, se elige un número primo, p, y dos números aleatorios, g y x, de modo que sean más pequeños que p. Se calcula: y = gx mod p y la clave pública será y, g y p (grupos de usuarios pueden compartir g y p, diferenciándose sólo en y). La clave privada será x. El proceso de cifrado y de firma difiere, de hecho al proceso de firma se le denomina DSS (Digital Signature Standard). Para firmar un mensaje m el firmante realiza los pasos siguientes. • Selecciona un número aleatorio k tal que 0 < k < p − 1 y gcd(k,p − 1) = 1. • Calcula • • Calcula Si s = 0 reinicia el proceso. . . El par (r,s) así obtenido es la firma digital de m. Para verificarla se hace del siguiente modo: • Se verifica que 0 < r < p y que 0 < s < p − 1. • Se verifica que . El verificante acepta el mensaje únicamente si estas tres condiciones se cumplen. Un tercero puede falsificar firmas si consigue la clave secreta x del firmante o si encuentra colisiones en la función de Hash considera que ambos problemas son suficientemente difíciles. El proceso de cifrado de un mensaje es muy similar al de firmado: • • se elige un número aleatorio, k, tal que k es relativamente primo a p-1. se calcula a como: a = g • k mod p (hasta este punto todo es idéntico) se calcula b como: b = y kM mod p - 18 - . Se PGP • • el mensaje cifrado está compuesto de a y b. El tamaño del texto cifrado es el doble que el del texto original. para descifrar el mensaje, hay que calcular: M = b/ax mod p El resultado es el mismo que el del algoritmo de intercambio de claves de DiffieHellman excepto en que y es parte de la clave y que lo cifrado se multiplica por yk. Este algoritmo es probabilístico, significando que un solo texto plano se puede cifrar a muchos textos cifrados posibles. La seguridad de ElGamal se basa, en parte, en la dificultad de solucionar el problema discreto del logaritmo. En concreto, si este problema se pudiera solucionar eficientemente, entonces ElGamal estaría roto. Sin embargo, la seguridad de ElGamal confía realmente en la asunción supuesta por DiffieHellman. Hay varias desventajas en usar DH frente a RSA: a. Expansión del mensaje. El tamaño del mensaje cifrado se dobla respecto al original. Esto sin embargo no es un obstáculo real en ElGamal ya que sólo se utiliza para cifrar la clave de sesión de cada receptor. b. Fortaleza de la firma. Las implementaciones actuales de DH sólo ofrecen DSS como algoritmo de firmado. Esto limita la longitud de la clave a sólo 1024 bits lo que podría, por si solo, ser insuficiente para la seguridad a largo plazo. Las firmas RSA utilizan una clave de hasta 2048 o 4096 bits (dependiendo de la implementación). c. Intensidad computacional. Tanto DH como DSS utilizan más intensamente el tiempo de procesador que RSA. En los procesadores modernos esta diferencia no es apreciable pero en dispositivos de poca potencia (tarjetas inteligentes o pequeños chips) DH/DSS podrían no ser utilizables. Si el tiempo de procesador o el tamaño de la clave son importantes un sistema asimétrico basado en Curvas Elípticas podría ser una mejor elección que tanto RSA como ElGamal. d. La necesidad de una "buena" aleatoriedad. El valor aleatorio "k" en DH / DSS necesita ser único e impredecible. Si se obtienen dos mensajes cifrados con el mismo "k" o se recupera "k" entonces puede obtenerse la clave privada. La otra cara de la moneda es que hay varios beneficios en usar DH/DSS frente a RSA: a. Usando RSA, alguien podría generar un primo falso o de una clase especial que facilitase su factorización. Existe un método para comprobar que los números usados en DSA/DH se calculan aleatoriamente y son de hecho primos. b. No es apropiado usar RSA en situaciones en las que la generación de la clave ocurre regularmente (en cada mensaje), como en sistemas de clave efímera. - 19 - PGP c. RSA ofrece menos seguridad por cada bit de clave que DH/DSS. d. DH parece estar basado en una teoría matemática más sólida. DH requiere siempre un Generador de Números Aleatorios (RNG) seguro, pero también lo necesita RSA. Un fallo en el RNG bajo RSA permitiría a un adversario recuperar mensajes individuales, pero un fallo en el RNG usando DH / DSS permitiría recuperar tanto el mensaje como la clave privada. - Diferencias de rendimiento entre el cifrado RSA y ElGamal: Cifrar Descifrar RSA-1024 (1024-bits) 8 93 ElGamal (1024-bits, 160-bit exp.) 109 77 Tabla 1: Tiempos de cifrado (en milisegundos en una Sparc II) - Diferencias de rendimiento al firmar con RSA o DSS: RSA-1024 (e=3) DSS-1024 43 .6 1100 0 7 27 7 6,500 Firmar Verificar Generar clave Generar param. Tabla 2: Tiempos firmado digital (en milisegundos en un Pentium Pro 200 MHz) 4.2.2. Algoritmos de cifrado simétricos. Los sistemas de cifrado simétricos intervienen en el cifrado de los mensajes y en el cifrado de la clave privada (para permitir su almacenamiento de una forma segura). PGP ofrece varios algoritmos de este tipo: AES, CAST, TripleDES, IDEA y Twofish. IDEA (Internacional Data Encryption Algorithm). Fue desarrollado en Zurich por James L. Massey y Xuejia Lai. La primera versión aparición en el año 1990 y más tarde fue reforzado, en parte debido a la aparición, por las mismas fechas, del criptoanálisis diferencial. IDEA es un algoritmo de 8 rondas con un tamaño de bloque de 64 bits que utiliza claves de longitud de hasta 128 bits. La fortaleza del cifrado la proporciona "mezclar operaciones de diferentes grupos algebraicos". Actualmente, no se conoce ninguna manera de romper IDEA aparte de la fuerza bruta, y la clave de tamaño 128 aporta una fuerte seguridad ante ataques de ese tipo. Los mejores ataques conocidos contra IDEA son: a. Ataque diferencial con clave elegida en una versión muy debilitada del algoritmo con sólo 3 rondas. - 20 - PGP b. Ataque temporizado sólo con texto cifrado y clave elegida sobre el algoritmo completo que requiere 5x217 peticiones de claves relacionadas, cada una de ellas usada para realizar 220 bloques de texto claro sin nombre y aleatorios. c. Una combinación de criptoanálisis diferencial y lineal que requiere 229 pares de texto en claro elegido y una carga de trabajo de 249 sumas módulo 216+1 en una versión muy debilitada del algoritmo con sólo 3 rondas. d. Un ataque de criptoanálisis imposible por Biham y Shamir - los detalles son esquemáticos (por decir algo) pero este es el mejor ataque contra IDEA hasta la fecha. Ninguno de estos ataques es útil para romper ninguna implementación práctica de IDEA. IDEA completo resiste ataques diferenciales, lineales y con clave relacionada o elegida, aunque hay un interesante ataque "lateral" que puede ser llevado a cabo en una implementación de IDEA que permite medir tiempos de proceso con una alta resolución. Fig. 6: Una ronda del cifrado IDEA IDEA ya no es el algoritmo por defecto en PGP debido a problemas de patente (IDEA necesita una licencia para usarse comercialmente). Triple-DES. Es una variación del algoritmo DES, pensada para aumentar su seguridad y al mismo tiempo mantener la compatibilidad con las implementaciones ya hechas de DES. Triple-DES consiste en aplicar DES tres veces con dos claves diferentes, de la siguiente manera: en primer lugar se cifra el texto en claro empleando la primera clave, después se descifra el criptograma obtenido con la segunda y finalmente se vuelve a cifrar con la primera. Para descifrar el mensaje, el proceso es el inverso: se descifra con la primera clave, se cifra con la segunda y se vuelve a descifrar con la primera. Esto equivale a un cifrado con una clave de doble longitud (evidentemente, cuando ambas claves son idénticas el cifrado sería equivalente a aplicar DES con cualquiera de ellas). Triple-DES tiene un tamaño de bloque de 64 bits y una longitud de clave de 168 (3*56) bits. Por la construcción de 3DES, se piensa que ofrece una seguridad equivalente a un cifrado de bloque de 112 bits. Los mejores ataques conocidos contra Triple-DES son: - 21 - PGP a. El ataque Meet In The Middle (MITM) (encontrarse en el medio). Este ataque puede ser teóricamente ser usado contra cualquier cifrado múltiple. En el caso de DES este ataque requiere 524.288 Terabytes de almacenamiento, 2112 cifrados y 2112 consultas de tabla. b. Ataques MITM optimizados. Algunos compromisos tiempo/memoria aplicados al ataque MITM estándar pueden hacer que MITM sea ligeramente más realizable. Se necesitan 2108 operaciones de cualquier modo para el ataque sea "realizable" en términos de memoria. c. Ataque con clave relacionada. Necesita una consulta con clave relacionada, una consulta con texto cifrado elegido y de 256 a 272 intentos de cifrado offline. Estos ataques no son útiles para romper implementaciones prácticas de TripleDES, a pesar de que el DES original fue reventado por fuerza bruta utilizando una máquina especializada en sólo 56 horas. El Triple-DES se considera 256 veces más difícil de romper que el DES original y como tal puede ser considerado seguro. Fig. 7: Esquema funcionamiento Triple-DES CAST es una familia de cifrados de bloque creada por Carlisle, Adams y Stafford Tavares. Hay varias versiones de este algoritmo, las más conocidas son CAST128 o CAST5 y CAST-256 o CAST6. CAST5 es la más estándar, al que la gente se refiere cuando dicen “CAST”. CAST-128 es un cifrador de 12 o 16 rondas que se basa en la red de Feistel con bloques de 64 bits y tamaños de clave entre 40 y 128 bits (pero con solo incrementos de 8 bits). Las 16 rondas completas se usan cuando la clave tiene un tamaño mayor de 80 bits. Incluye unas largas S-Boxes de 8x32 bits basadas en funciones bent, rotaciones dependientes de clave, adición y sustracción modular y operaciones XOR. Hay tres tipos alternativos de funciones de ronda, pero son de estructura similar y se diferencian sólo en la elección del tipo exacto de operación (XOR, adición o sustracción) en varios puntos. CAST-256 derivó de CAST-128 que fue candidato al proceso de selección para AES. Como se ha mencionado previamente, CAST es una familia de cifrados. Algunos de los algoritmos CAST con menos bits han sucumbido a ataques avanzados. Pero no hay ataques conocidos contra las versiones más fuertes de CAST (la de 128 y 256 bits) con un número reducido de rondas - parece increíblemente seguro. - 22 - PGP Fig.8: Tres rondas cifrado CAST-128 AES (Advanced Encryption Standard o estándar criptográfico avanzado) es la búsqueda del gobierno de EE.UU. de un sustituto para el viejo estándar DES (Data Encryption Standard o cifrado de datos estándar). El Instituto de Estándares y Tecnología (NIST), hizo una primera solicitud pública de algoritmos el 12 de Septiembre de 1997. Varios criptógrafos bien conocidos (Rivest, Schneier, Knudsen, Biham, Rijmen, Coppersmith etc) desarrollaron algoritmos candidatos para el AES que cumplían los criterios solicitados. Los requisitos mínimos eran: - El algoritmo debe ser de clave secreta (simétrico). - El algoritmo debe ser un algoritmo de bloque. - El algoritmo debe ser capaz de soportar las combinaciones clave-bloque de los tamaños 128-128, 192-128 y 256-128. De los 15 algoritmos iniciales, cinco (Mars, RC6, Rijndael, Serpent y Twofish) fueron seleccionados para pasar a la segunda ronda. Finalmente el NIST en Octubre del 2000 adoptó el algoritmo diseñado por Joan Daemen y Vincent Rijmen como algoritmo criptográfico no militar. Su elección, desarrollo y estudio se realizó de forma pública y abierta. - 23 - PGP Fig.9: Etapas cifrado AES Twofish es un método de cifrado por bloques desarrollado por Counterpane Labs y presentado al concurso AES del NIST. El tamaño de bloque en Twofish es de 128 bits y el tamaño de clave puede llegar hasta 256 bits. Twofish llegó a la ronda final del concurso del NIST, pero no fue elegido para la estandarización. TwoFish quedó tercero, tras Rijndael y Serpent. Twofish fue diseñado por Bruce Schneier, John Kelsey, Doug Withing, David Wagner, Chris Hall y Niels Ferguson. Twofish se relaciona con el método de cifrado por bloques anterior Blowfish. Las características distintivas de Twofish son el uso de S-boxes pre-computadas con llaves dependientes, y una llave-horario relativamente compleja. Twofish coge prestados algunos elementos de otros diseños: por ejemplo, el Pseudo-Hadamard Transforman (PHT) de la familia SAFER de cifrado. Twofish utiliza la misma estructura de Feistel que el DES. En la mayoría de las plataformas de software Twofish es levemente más lento que Rijndael (el algoritmo elegido para AES) para las llaves de 128 bits, pero algo más rápido para las llaves de 256 bits. En fecha 2004, no se conoce un ataque contra Twofish más eficiente que la búsqueda de claves por la fuerza bruta. - 24 - PGP Fig.10: Funcionamiento TwoFish Es difícil saber cuál es el mejor y más seguro de estos algoritmos pero ninguno de ellos ha sido roto ni existen dudas serias sobre su fortaleza. PGP usa por defecto el cifrado AES ya que ha sido fuertemente analizado y seleccionado de los mejores algoritmos de cifrado simétricos. Pero PGP ofrece, además, todos los algoritmos comentados arriba lo que da una mayor tranquilidad ya que en caso de que alguno fuera roto, lo cual parece improbable actualmente, se podría deshabilitar y usar uno de los que todavía fueran seguros. 4.2.3. Algoritmos de hash o de resumen. Los algoritmos de hash intervienen en los procesos de firma digital (la firma será el resultado de cifrar el resultado de la función hash) y el cifrado/descifrado de la clave privada (se aplica hash a la frase de paso para genera una “huella digital” que es la que se usa como clave para el cifrado/descifrado de la clave pública). Una función hash o de resumen genera a partir de un mensaje, M, un resumen del mismo, H(M). Esta función debe cumplir las siguientes características: 1. Unidireccionalidad: conocido un resumen H(M), debe ser computacionalmente imposible encontrar M a partir de dicho resumen. 2. Compresión: a partir de un mensaje de cualquier longitud, el resumen H(M) debe tener una longitud fija. Lo normal es que la longitud de H(M) sea menor que el mensaje M. 3. Facilidad de cálculo: debe ser fácil calcular H(M) a partir de un mensaje M. 4. Difusión: el resumen H(M) debe ser una función compleja de todos los bits del mensaje M, de tal forma que simplemente modificando un solo bit del mensaje M, el hash H(M) debería cambiar radicalmente (al menos la mitad de sus bits). 5. Colisión simple: conocido M, será computacionalmente imposible encontrar otro M’ tal que H(M) = H(M’). Esto se conoce como resistencia débil a las colisiones. - 25 - PGP 6. Colisión fuerte: será computacionalmente imposible encontrar un par (M, M’) de forma que H(M) = H(M’). Esto se conoce como resistencia fuerte a las colisiones. PGP ofrece varias funciones de hash MD-5, RIPEMD-160, SHA-1 y varias versiones de de SHA-2 (de 256, 384 y 512 bits). MD5 (acrónimo de Message-Digest Algorithm 5, Algoritmo de Resumen del Mensaje 5) es un algoritmo de reducción criptográfico de 128 bits ampliamente usado. Fue diseñado por Ronald Rivest cuando un análisis indicó que el algoritmo MD4 era inseguro y se decidió a programar el MD5 para sustituirlo en 1991. Las debilidades en MD4 fueron descubiertas por Hans Dobbertin. En 1996 Dobbertin anunció una colisión de hash de la función de compresión del MD5. Esto no era un ataque contra MD5, pero hizo que los criptógrafos empezasen a recomendar el reemplazo de la codificación MD5 a otras como SHA-1 o RIPEMD-160. En Agosto de 2004 unos investigadores chinos encontraron también colisiones hash en el MD5. Actualmente el uso de MD5 es muy amplio y se desconoce cómo afectarán estos problemas a su uso y a su futuro pero para empezar a pesar de haber sido incluido desde el principio en PGP, ahora no se recomienda su uso por razones de seguridad. Los siguientes cinco pasos son efectuados para calcular el resumen de un mensaje. • Paso 1. Añadiendo bits. El mensaje será extendido hasta que su longitud en bits sea congruente con 448, módulo 512. Esto es, el mensaje se extenderá hasta que se forme el menor número múltiplo de 512 bits. Esta extensión se realiza siempre, incluso si la longitud del mensaje es ya congruente con 448, módulo 512. La extensión se realiza como sigue: un sólo bit "1" se añade al mensaje, y después bits "0" se añaden hasta que la longitud en bits del mensaje extendido se haga congruente con 448, módulo 512. En todos los mensajes se añade al menos un bit y como máximo 512. • Paso 2. Longitud del mensaje Una representación de 64 bits de 'b' (la longitud del mensaje antes de añadir los bits) se concatena al resultado del paso anterior. En el supuesto no deseado de que 'b' sea mayor que 264, entonces sólo los 64 bits de menor peso de 'b' se usarán. En este punto el mensaje resultante (después de rellenar con los bits y con 'b') se tiene una longitud que es un múltiplo exacto de 512 bits. A su vez, la longitud del mensaje es múltiplo de 16 palabras (32 bits por palabra). Con M[0 ... N-1] denotaremos las palabras del mensaje resultante, donde N es múltiplo de 16. - 26 - PGP • Paso 3. Inicializar el búfer MD Un búfer de cuatro palabras (A, B, C, D) se usa para calcular el resumen del mensaje. Aquí cada una de las letras A, B, C, D representa un registro de 32 bits. Estos registros se inicializan con los siguientes valores hexadecimales, los bits de menor peso primero: palabra A: 01 23 45 67 palabra B: 89 ab cd ef palabra C: fe dc ba 98 palabra D: 76 54 32 10 • Paso 4. Procesado del mensaje en bloques de 16 palabras Primero definimos cuatro funciones auxiliares que toman como entrada tres palabras de 32 bits y su salida es una palabra de 32 bits. Los operadores respectivamente. son las funciones XOR, AND, OR y NOT En cada posición de cada bit F actúa como un condicional: si X, entonces Y sino Z. La función F podría haber sido definida usando + en lugar de v ya que XY y not(x) Z nunca tendrán unos ('1') en la misma posición de bit. Es interesante resaltar que si los bits de X, Y y Z son independientes y no sesgados, cada uno de los bits de F(X,Y,Z) será independiente y no sesgado. Las funciones G, H e I son similares a la función F, ya que actúan "bit a bit en paralelo" para producir sus salidas de los bits de X, Y y Z, en la medida que si cada bit correspondiente de X, Y y Z son independientes y no sesgados, entonces cada bit de G(X,Y,Z), H(X,Y,Z) e I(X,Y,Z) serán independientes y no sesgados. Nótese que la función H es la comparación bit a bit "xor" o función "paridad" de sus entradas. Este paso usa una tabla de 64 elementos T[1 ... 64] construida con la función seno. Denotaremos por T[i] el elemento i-ésimo de esta tabla, que será igual a la parte entera del valor absoluto del seno de 'i' 4294967296 veces, donde 'i' está en radianes. RIPEMD-160 (acrónimo de RACE Integrity Primitives Evaluation Message Digest, primitivas de integridad del resumen del mensaje) es una función criptográfica de hash de 160 bits desarrollado en Europa por Hans Dobbertin, Antón Bosselaers y - 27 - PGP Bart Preneel, publicada en 1996. Es una versión mejorada de RIPEMD, que estaba basado sobre los principios del diseño del algoritmo MD4, y es similar en seguridad y funcionamiento al SHA-1. También existen versiones de 128, 256 y 320 bits de este algoritmo, llamadas RIPEMD-128, RIPEMD-256 y RIPEMD-320 respectivamente. La versión de 128 bits fue pensada solamente como un reemplazo para el RIPEMD original, que eran también de 128 bits, y en la que habían sido encontradas razones para cuestionar su seguridad. Las versiones de 256 y 320 bits solamente disminuyen la posibilidad de colisiones hash accidentales, y no tienen niveles más altos de seguridad con respecto a RIPEMD-128 y RIPEMD-160. En agosto del año 2004, una colisión hash fue divulgada para el algoritmo RIPEMD original que no afecta al resto de algoritmos. RIPEMD-160 fue diseñado en la comunidad académica abierta, en contraste con el algoritmo SHA-1, diseñado por la Agencia de Seguridad Nacional estadounidense (NSA). Por otra parte, RIPEMD-160 es un diseño menos popular y por lo tanto está peor estudiado. No existe ninguna patente asociada al RIPEMD-160. La familia SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es un sistema de funciones hash criptográficas relacionadas de la Agencia de Seguridad Nacional de los Estados Unidos y publicadas por el National Institute of Standards and Technology (NIST). El primer miembro de la familia fue publicado en 1993 y es oficialmente llamado SHA. Sin embargo, hoy día, no oficialmente se le llama SHA-0 para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes más que se han publicado desde entonces cuyas diferencias se basan en un diseño algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (todos ellos son referidos como SHA-2). SHA-0 y SHA-1 producen una salida resumen de 160 bits de un mensaje que puede tener un tamaño máximo de 264 bits, y se basa en principios similares a los usados en el diseño de los algoritmos de resumen del mensaje MD4 y MD5. En 1998, un ataque a SHA-0 fue encontrado pero no fue reconocido para SHA1, se desconoce si fue la NSA quien lo descubrió pero aumentó la seguridad del SHA-1. SHA-1 ha sido examinado muy de cerca por la comunidad criptográfica pública, y no se ha encontrado ningún ataque efectivo. No obstante, en el año 2004, un número de ataques significativos fueron divulgados sobre funciones criptográficas de hash con una estructura similar a SHA-1; esto ha planteado dudas sobre la seguridad a largo plazo de SHA-1. La resistencia del algoritmo SHA-1 se ha visto comprometida a lo largo del año 2005. Después de que MD5, entre otros, quedara seriamente comprometido en el 2004 por parte de un equipo de investigadores chinos, el tiempo de vida de SHA-1 quedó visto para sentencia. El mismo equipo de investigadores chinos, compuesto por Xiaoyun Wang, Yiqun Lisa Yin y Hongbo Yu (principalmente de la Shandong University en China), ha demostrado que son capaces de romper el SHA-1 en al menos 269 operaciones, unas 2000 veces más rápido que un ataque de fuerza bruta (que requeriría 280 operaciones). Los últimos ataques contra SHA-1 han logrado debilitarlo hasta 263. A pesar de que 263 - 28 - PGP suponen aún un número alto de operaciones, se encuentra dentro de los límites de las capacidades actuales de cálculos, y es previsible que con el paso del tiempo romper esta función sea trivial, al aumentar las capacidades de cálculo y al ser más serios los ataques contra SHA-1. A pesar de que el NIST contempla funciones de SHA de mayor tamaño (por ejemplo, el SHA-512, de 512 bits de longitud) se habla de buscar una nueva función hash estandarizada que permita sustituir a SHA-1. Actualmente, en PGP por defecto vienen deshabilitadas las funciones MD5, SHA-1 y RIPEMD-160, dando preferencia a las de SHA-2, pero se pueden usar cualquiera de ellas. Este hecho de tener varias funciones de hash donde escoger, igual que en el caso de los algoritmos de cifrado, dota de mayor seguridad a PGP ya que si una pasa a ser insegura se podrá usar cualquiera de las otras. 4.3 Firma digital. Mencionamos con anterioridad que los problemas de integridad y autenticidad (el de no repudio va asociado a éste) quedaban sin resolver en los sistemas asimétricos e híbridos. En un principio para poder conseguir estos tres servicios se nos podría ocurrir realizar un hash del mensaje a enviar y adjuntarlo a dicho mensaje. En este caso la integridad se cumpliría ya que en caso de modificar cualquier dato del mensaje el hash dejaría de coincidir con el enviado. Pero la autenticidad no se cumple (y, por consiguiente, el no repudio tampoco) dado que cualquiera podría generar el hash del mensaje. En realidad tampoco se conseguiría realmente la integridad ya que cualquiera podría capturar el mensaje, modificarlo, recalcular el hash y reenviarlo sin que el destinatario tenga forma de saber que la modificación ha ocurrido. La característica más importante de una firma es que sólo pueda ser producida por un único firmante, de forma que una firma concreta identifique unívocamente a un usuario, de igual forma, que una secuencia de ADN concreta pertenece a una persona en concreto y sólo una. Por lo tanto necesitamos algo que sea inherente a la persona. Si pensamos en algo que sea único en los sistemas asimétricos a poco que conozcamos de ellos nos daremos cuenta que ese algo es la clave privada. Debido a la característica de que las claves pública y privada son reversibles (lo que cifra una lo descifra la otra) podríamos cifrar parte del mensaje con la clave privada. Haciendo esto se garantizaría que el mensaje sólo puede haber sido enviado por una única persona, el poseedor de la clave privada. Ese algo que se cifra va a ser el hash del texto inicial, ya que cifrar todo el mensaje sería poco eficiente ya que el documento resultante aumenta de tamaño. Además podría ser el origen de algún ataque criptoanalítico ya que cifrando un mensaje cuidadosamente compuesto se podría obtener mucha información sobre la clave privada del que cifra. Y evidentemente si ciframos y firmamos el mensaje (en ese orden o en el inverso) estaríamos aplicando la clave privada y la pública al mismo texto, con lo que ambos procesos se anularían acabando con el mensaje original tal cual, así que habría que escoger entre cifrar o firmar. - 29 - PGP El hash es una función H que toma un mensaje M y produce un condensado de éste H(M)=h. Está función se denomina también de resumen y ya se han comentado sus propiedades en el apartado de algoritmos, además de ver ejemplos concretos de éstos. En resumen, el proceso de firma consiste en: - Tomar el mensaje M que se desea enviar y aplicarle la función resumen, obteniendo H(M)=h. - Aplicar al resumen la clave privada ks del usuario que envía el mensaje. El resultado es la firma digital: Cks(h). Fig. 11: Proceso de firma Se enviará conjuntamente el mensaje M y la firma Cks(h). Para verificar la firma se procederá del siguiente modo: - Aplicar la clave pública kp del usuario que envió el mensaje a la firma Cks(h). El resultado es Ckp(Cks(h))=h. - Aplicar al mensaje la función resumen, obteniendo H(M)=h'. - Comparar el resultado de los dos pasos anteriores. Si coinciden (h=h´), la firma será correcta. Fig. 12: Proceso de verificación de la firma digital La verificación de la firma dependerá tanto de que haya sido realizada con la clave correcta como de que el mensaje no se haya alterado. De ese modo comprobamos a la vez que el mensaje fue firmado efectivamente por el usuario que envía el mensaje (autenticidad) y por lo tanto no podrá negar que lo haya enviado él (no repudio) y que dicho mensaje no ha sido alterado con posterioridad (integridad). Si deseamos efectuar las operaciones de cifrar y firmar, podemos hacerlo sin problemas. El orden seguido por PGP es primero firmar y luego cifrar. Es decir, el - 30 - PGP usuario primero creará su firma Cks(h), y posteriormente cifrará el paquete M´ = {M, Cks(h)}. Como ya hemos dicho con la firma digital se solucionan los problemas de integridad y autenticidad (y por lo tanto el no repudio) pero aún nos queda el problema de suplantación de identidad, es decir, saber si las claves que se están usando pertenecen realmente al usuario con el que se establece la comunicación. Esto se solucionará con los certificados digitales y los mecanismos de validez y confianza usados en PGP. 4.4 Certificados digitales Una cuestión a tener en cuenta acerca de los sistemas criptográficos de clave pública es que un usuario debe de asegurarse que está cifrando los mensajes con la clave correcta. En un entorno donde se intercambian claves a través de servidores públicos se está expuesto a ataques. Alguien podría enviar un mail cifrado con una clave falsa asociada al nombre e identificador de usuario del receptor previsto, con lo que supone que el mail irá al receptor deseado, pero lo que ocurre es que los datos cifrados son interceptados por el dueño de la clave falsa. Es decir es vital asegurarse que la clave pública con la que ciframos el mensaje es, realmente, la clave pública de la persona a la pretendemos mandarlo. A este problema se le llama problema de la suplantación y es el talón de Aquiles de la criptografía de clave pública. Los certificados digitales simplifican la tarea de establecer si una clave pública realmente pertenece a su aparente dueño. Un certificado es una forma de credencial, como podría ser el carne de conducir, el DNI…, los cuales tienen información identificándote y dicha información ha sido confirmada por alguien, de tal forma que asegura que te pertenece realmente. Un certificado digital es algo similar a un certificado físico. Un certificado digital es la información de una persona junto con su clave pública que ayuda a otros a verificar que la clave es válida. Los certificados digitales son usados para evitar intentos de sustitución de la clave de una persona por otra falsa. Un certificado digital consiste en tres cosas: • Una clave pública. • Información del propietario. • Una o más firmas digitales. El propósito de la firma digital de un documento es establecer que la información del certificado ha sido avalada por alguna otra persona o entidad. La firma digital no avala la total autenticidad del certificado, sino que sólo responde por el hecho de que la información va con la clave. - 31 - PGP Fig.13: Anatomía de un certificado 4.4.1. Distribución de de certificados Los certificados se utilizan cuando es necesario intercambiar claves públicas con alguien más. Para pequeños grupos de gente que desean comunicarse de forma segura es fácil cambiar las claves públicas en persona o a través de medios seguros, esto se llama distribución manual de claves públicas. Más allá de ese punto es necesario poner sistemas que proporcionen los necesarios mecanismos de seguridad, almacenamiento e intercambio, para que la gente pueda comunicarse en caso de ser necesario. Pueden ser en forma de repositorios de almacenamiento llamados ‘Servidores de Certificados’, o sistemas más estructurados que proporcionen características de manejo de claves, los cuales se llaman ‘Infraestructuras de Clave Pública’ o Public Key Infrastructures (PKIs). 4.4.2. Formatos de certificados Como ya se ha dicho, un certificado digital es básicamente una colección de información de identificación, junto con clave pública, y todo esto firmado por una tercera parte de confianza, para probar su autenticidad. Un certificado digital puede tener distintos tipos de formatos. Actualmente PGP reconoce dos tipos de formatos de certificados, aunque en su origen sólo eran reconocidos los certificados PGP. Los dos tipos de formatos reconocidos por PGP son: • Certificados PGP: podemos verlo como una clave pública con una o más etiquetas vinculadas a ella. En estas ‘etiquetas’ encontrarás información que identifica al propietario de la clave y la firma de éste, mediante su clave privada, con lo que establece que la clave y la identificación van juntas (esta firma se llama ‘self-signature’, propia firma, todos los certificados poseen este tipo de firma). Esta firma establece autenticidad, por lo menos para el usuario de la - 32 - PGP clave. Desde PGP 5.0 cada identificador de usuario es automáticamente firmado con la clave privada del propio usuario, en las anteriores versiones había que hacerlo manualmente. Otro aspecto del formato de un certificado PGP es que un único certificado puede contener múltiples firmas. Diferentes personas pueden firmar el par clave/identificador para avalar que la clave pertenece sin duda al dueño especificado. Los certificados pueden tener más información sobre el usuario, a parte del identificador, como pueden ser su nombre, empresa, foto… Fig. 14: Un certificado PGP • Certificados X.509: es otro formato muy común de certificados. Todos los certificados X.509 siguen el estándar internacional ITU-T X.509, de esta forma (teóricamente), certificados X.509 creados por una aplicación pueden ser usados por cualquier aplicación que siga el estándar de este tipo de certificados. En la práctica hay compañías que han creado sus propias versiones de X.509, por lo que no se pueden usar esos certificados en otras aplicaciones. Para obtener la validez del certificado es necesario que alguien asegure que la clave pública y el identificador del propietario van juntos. Con los certificados PGP, cualquiera puede llevar a cabo ese papel, pero los certificados X.509, deben validados siempre una Autoridad Certificadora o alguien designado por esta. Para obtener un certificado X.509, debes solicitarlo a una Autoridad Certificadora. Tienes que proporcionarles tu clave pública, una prueba de que posees la correspondiente clave privada y alguna información sobre ti mismo. Posteriormente firmas digitalmente la información y mandas el paquete a la Autoridad Certificadora. La autoridad correspondiente realiza las gestiones necesarias para verificar que los datos que le has proporcionado son correctos, y en caso de que lo sean, genera el certificado y te lo envía. - 33 - PGP Fig. 15: Un certificado X.509 4.4.3 Validez y confianza Cada usuario de un sistema de clave pública esta expuesto a confundir una clave falsa con una real. Validez es la propiedad que certifica que una clave pública pertenece al aparente propietario. La validez es esencial en los entornos de clave pública donde hay que comprobar constantemente si un certificado es o no auténtico. Cuando te has asegurado de que el certificado perteneciente a alguien es válido puedes firmar su copia en tu anillo para avalar el hecho de que has comprobado que el certificado es auténtico. Si quieres que otros sepan que has avalado a esa persona puedes exportar la firma a un servidor de certificados, de tal forma que los otros podrán verlo. La confianza se refiere al propietario de la clave. Tienes confianza en una clave si crees que el dueño es responsable a la hora de asegurarse de que los datos son correctos antes de firmar un certificado. Si confiamos en una persona y esa persona valida un certificado, nosotros consideraremos ese certificado válido, a pesar de no habernos asegurado nosotros mismos que los datos eran correctos. No debemos de confundir validez y confianza, ya que se refieren a cosas distintas, la validez a la clave y la confianza al propietario. Por ejemplo una clave puede ser válida porque está asociada al usuario correcto, pero sin embargo tú no tienes la confianza suficiente en ese usuario para fiarte si te dice que otra clave es válida. 4.4.4. Modelos de confianza El modelo de confianza es la forma en la que se confía en la validez de certificados. Hay tres modelos diferentes de confianza: - 34 - PGP • Confianza directa (Direct Trust): es el modelo más sencillo. En este modelo un usuario considera una clave válida porque sabe de donde viene. En PGP sería alguien que sólo considera válidas las claves que valida él y nunca confía en claves validadas por otras personas. Fig. 16: Confianza directa • Jerarquía de confianza (Hierarchical Trust): en este modelo hay un número de certificadores raíz de los cuales se extiende la confianza. Estos certificadores pueden validar certificados ellos mismos o delegar en otros certificadores para que lo hagan. Podemos verlo como un árbol de confianza donde la validez de los certificados de las hojas tiene que ser proporcionada por alguien en una posición superior en el árbol, subiendo por el árbol se acabará en una certificadora raíz. Fig. 17: Jerarquía de confianza • Red de confiaza (Web of Trust): este modelo engloba los dos anteriores, pero también añade el concepto de que ‘la confianza está en los ojos del que mira’ y la idea de cuanta más información mejor. Es un modelo de confianza acumulativo. Se puede validar directamente en un certificado o a través de una cadena. Este es el modelo más utilizado en PGP, en el cual cualquier usuario puede validar el certificado de otro. De todas formas ese certificado sólo será válido para otro usuario si confía en el que lo validó. De esta forma cada uno construirá su propia red de confianza. - 35 - PGP PGP permite adaptarse igual de bien a una estructura jerárquica basada en ACs que a una red de confianza descentralizada, aunque fue creado pensado en esta última posibilidad. En palabras de su autor, "PGP es para aquellas personas que prefieren plegar su propio paracaídas." Permite una mayor flexibilidad y capacidad de elección. 4.4.5. Niveles de confianza en PGP Existe en PGP un nivel de confianza, llamado confianza implícita, el cual es la confianza en tu propio par de claves. PGP asume que si tú posees la clave privada debes confiar en todas las acciones relativas a tu clave pública. Hay tres niveles de confianza que se pueden asignar a la clave pública de alguien: • • • Confianza completa. Confianza marginal. No confianza. También hay tres niveles de validez en PGP: • • • Válido. Marginalmente válido. Inválido. Para definir la confianza en una clave pública: • • La clave debe ser válida, ya haya sido validada por ti o por alguien de tu confianza. Estableces el nivel de confianza el propietario de la clave. PGP permite configurar lo que entendemos por una firma fiable, por ejemplo con una firma de confianza completa sería suficiente para validar una clave, pero serían necesarias varias marginales, el número podría depender, según nuestra propia elección. 4.4.6. Revocación de certificados Los certificados sólo son útiles mientras son válidos. Es inseguro asumir que un certificado es válido para siempre. En la mayoría de las organizaciones y en todas las PKIs, los certificados tienen un tiempo de vida limitado. Este tiempo suele ser el que se consideraría necesario para que la clave se viese comprometida. Los certificados son creados con una duración determinada, tienen una fecha de comienzo y una fecha de caducidad. Durante todo ese tiempo el certificado puede ser utilizado. Cuando caduque no será válido, ni se podrá usar el par clave/identificador. De todas formas el certificado puede ser usado para recuperar información cifrada o firmada durante el periodo de validez. - 36 - PGP Hay también situaciones donde puede ser necesario invalidar un certificado, a pesar de que no se haya alcanzado la fecha de caducidad de éste. Esto es llamado revocación. Cualquiera que haya firmado un certificado puede revocar su firma en él, siempre que sea con la misma clave privada con la que lo firmó. Se revocará un certificado en caso de sospechar que haya sido comprometido. Los certificados revocados no son ya usables y carecen de los compromisos de los caducados. Con los certificados X.509, el hecho de revocar una firma quiere decir prácticamente lo mismo que revocar el certificado, debido a que solamente está firmado por una Autoridad Certificadora. Sólo el dueño del certificado (el poseedor de la clave privada) o alguien al que éste ha designado como ‘revocador’ puede revocar un certificado PGP. Cuando un certificado es revocado es importante hacer conocedora al resto de la gente de que el certificado ya no es válido. Con los certificados PGP la forma más sencilla de comunicarlo es publicarlo en un servidor de certificados, para que los demás usuarios estén advertidos y no usen la clave pública. Con los certificados X.509 es la Autoridad Certificadora la encargada de enviar regularmente a todos los usuarios una Lista de Revocación de Certificados (CRL, ‘Certification Revocation List’). 4.5 Anillo de claves. PGP guarda las claves de forma cifrada en dos ficheros en el disco duro, uno para claves públicas y otro para claves privadas. Estos ficheros se llaman anillos o llaveros. Las claves públicas de todos tus receptores se almacenarán en tu anillo público y tus claves privadas en tu anillo privado. Si se pierde el anillo privado será imposible descifrar cualquier información cifrada con claves de dicho anillo. Estructura del anillo de claves privadas (tabla 3): Sellado de tiempo Clave ID* Clave pública Clave privada cifrada ID usuario T1 e1 mod 264 Clave púb. 1 Clave priv. 1 Usuario 1 --- --- --- --- Ti ei mod 264 ei EH(FPi)(di) --- --- --- --- Tn en mod 264 Clave púb. n Clave priv. n --Usuario i --Usuario n Campos del los anillo de claves pivadas: • Sellado de tiempo: Fecha y hora de la generación del par de claves. • Clave ID: Identificador de clave (últimos 64 bits de la clave pública “e”). • Clave pública. • Clave privada cifrada: Cifra EH (FPi) de la clave privada d con un algoritmo simétrico y la función hash de la frase de paso del propietario como clave secreta. - 37 - PGP • ID usuario: Identificación del usuario, normalmente dirección de email. Estructura del anillo de claves públicas (tablas 4 y 5): Sellado de tiempo Clave ID* Clave pública Confianza propietario ID usuario T1 e1 mod 264 Clave púb. 1 flag_confianza 1 Usuario 1 --- --- --- --- Ti ei mod 264 ei flag_confianza i --- --- --Tn en --mod 264 Clave púb. n flag_confianza n Legitimación de clave Firma(s) Confianza de Firmas flag_confianza 1 ••• ••• --- --- --- flag_confianza i ••• ••• --- --- --- flag_confianza n ••• ••• --Usuario i --Usuario n (*) Se usa este campo para la indexación de la tabla en ambos anillos. Campos nuevos en el anillo de claves públicas: • • • • Confianza propietario: el nivel de confianza del usuario en el propietario de la clave. Legitimación de la clave: validez de la clave por parte del usuario. Firmas: otros usuarios que han firmado el certificado. Confianza: nivel de confianza en esas firmas. - 38 - PGP 5. MODO DE FUNCIONAMIENTO 5.1 Creación de las claves Una clave es un valor que trabaja con un algoritmo criptográfico para cifrar un texto. Las claves son básicamente números realmente grandes. El tamaño de la clave está medido en bits. En criptografía de clave pública cuanto más grande es la clave, más seguro es el cifrado. Aunque la clave pública y la privada están matemáticamente relacionadas, es muy complicado obtener una a partir de la otra, de todas formas dando el tiempo y los recursos computacionales necesarios es posible averiguarla. Esto hace que sea muy importante elegir correctamente el tamaño de la clave, lo suficientemente larga para que sea segura, pero lo suficientemente corta para que sea aplicada lo suficientemente rápido. Las claves privadas son almacenadas de forma cifrada. PGP guarda las claves en dos archivos en el disco duro, uno para las claves públicas y otro para las privadas, estos archivos se llaman anillos. Cada usuario debe generar su pareja de claves. Para ello es necesario introducir el nombre, la dirección de correo electrónico, se elegirá el algoritmo con el que se desea que creen las claves y posteriormente se cifre la clave de sesión, el tamaño de las claves y la fecha de expiración, en caso de que queramos que expire. Los métodos de cifrado más importantes entre los que se pude elegir son RSA y DH/DSS, RSA fue el primer sistema, al que luego se agregó otra alternativa denominada DH/DSS. Los que todavía tienen programas PGP antiguos solo pueden utilizar las RSA, por lo que las otras son menos "universales". Posteriormente es necesario introducir una frase de seguridad que quedará asociada a la clave privada y será necesario introducir cada vez que usemos la clave privada. Partiendo de los datos introducidos y de otras variables aleatorias el programa generará la pareja de claves con el algoritmo seleccionado, y la huella dactilar correspondiente, una especie de resumen de la clave pública. El programa pedirá que mientras se generan las claves se vaya tecleando algo o moviendo el ratón para obtener más información aleatoria. Es conveniente, porque eso hará que la pareja de claves sea más distinta a cualquier otra existente. Hay otras claves, llamadas claves de sesión, las cuales son generadas aleatoriamente cada vez que se manda un mensaje, y con la cual se cifrará ese mensaje. La frase de paso o “passphrase”, es como una clave más larga, y en teoría, más segura. Típicamente está compuesta de múltiples palabras, la frase de paso es más segura en contra de ataques de diccionario, en los cuales los atacantes prueban con todas las palabras del diccionario para intentar averiguar la contraseña. Las mejores frases de paso son relativamente largas y complejas y contienen una combinación de mayúsculas, minúsculas, números y signos de puntuación. - 39 - PGP PGP utiliza la frase de paso para cifrar la clave privada almacenada en el ordenador. Más concretamente se usa una función hash de la frase de paso para cifrarla. Es necesaria la frase de paso para descifrar y usar la clave privada. La frase de paso debe ser algo fácil de recordar para el usuario y difícil de averiguar por los demás, pues si un usuario olvida su frase de paso su clave privada es totalmente inútil. Las claves pueden ser vistas y manejadas a través de una única ventana llamada “PGPKeys”, en la que también podremos ir añadiendo posteriormente las claves públicas de otras personas. Un usuario puede tener más de un par de claves. Cada par puede estar asociado a varias direcciones de correo electrónico, y la misma dirección de correo electrónico puede tener varios pares asociados. Es muy importante no perder las claves. Con la pública no hay mucho peligro puesto que seguramente la has puesto en algún servidor y también la tienen tus amigos, lo que te permitirá recuperarla si pierdes tus archivos. Pero la privada solo la tienes tú. Si la pierdes eso inutilizaría tu pareja de claves. Es muy conveniente hacer una copia de seguridad de tu clave privada (o de las dos), lo cual consiste en copiar los archivos pubring.pkr y secring.skr, pero hay que tener prudencia con donde se guardan, sobre todo el archivo de claves privadas. Ya se ha comentado que al generar la pareja de claves intervienen ciertos factores aleatorios que son imposibles de controlar. Por lo tanto es imposible reproducir las claves intentando generarlas de nuevo; eso no funcionará aunque uses el mismo ordenador con el mismo software y con los mismos parámetros, obtendrás otras dos claves distintas. Esta característica de "imposible repetición" es una de las que dan seguridad al sistema. Los especialistas han calculado que si el más potente ordenador se dedicase exclusivamente a generar claves, tardaría cientos de años en obtener una pareja de claves igual a la que ya tienes. No es recomendable compartir la clave privada con otra persona, pero a veces es necesario. Las clave de firma corporativas, por ejemplo, son claves privadas usadas por una compañía para firmar. En este caso la clave será conocida por múltiples miembros de la compañía, lo cual significa que cualquiera puede actuar en nombre de la compañía. Para solucionar ese problema se divide la clave entre múltiples personas de tal forma que si hay pocas partes de la clave, ésta no puede ser usada. Una opción sería dividir la clave en tres trozos y que fuesen necesarios al menos dos de ellos para poder usarla, o dividirla en dos y que fuesen necesarios los dos. Si hay una conexión segura a la hora de reconstruir la clave, no es necesario que todos los que posean una parte estén físicamente presentes en el momento de la reconstrucción de la clave. La huella es un resumen de la clave pública, se suele incluir en los mensajes de correo electrónico y por lo tanto puede ser utilizada para comprobar que la clave obtenida por otros medios coincide con esa huella indicada en el mensaje de correo. La huella, que no es más que un conjunto de caracteres hexadecimales característicos de la clave. La huella es algo del tipo "EA10 F561...". La huella se puede convertir en un conjunto de palabras. Esto es un añadido para facilitar su lectura por teléfono. Muchas veces, dos personas que deseen intercambiar claves se limitan a darse mutuamente sus "huellas" en lugar de la clave entera. Puede por ejemplo incluirse en la tarjeta de visita. - 40 - PGP Es posible generar una pareja de claves que no esté asociada a ninguna dirección electrónica. Aunque PGP está orientado a la transmisión de datos por correo Internet, también es posible utilizar sus posibilidades en otros sentidos. Aspecto ASCII de una clave pública: -----BEGIN PGP PUBLIC KEY BLOCK----Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com> mQCNAzVm2RwAAQEEAL/DN79rhWIz3895L0/FiPkgdXyGXVuRv2SMD9nD7hgkxGCD WgosKEymkqqjXk/s8SK6vYXNipu+SoTgLVcJ266ryd2V7Gkl5ZIPRXPGeF7Ufbob LyE96LeDAZUY16yFAL6Grna8koFzAfdhJX5CXNMiHMQFB25IXKarQCE08evfAAUR tBhQZXBpdG8gR3JpbGxvIDxub0Buby5ubz6JAJUDBRA1ZtkcpqtAITTx698BAfk2 BACZP8yIQsXNiWZ7lbeKNrAGO6lWaJxutu6OlVI/gXRcUw6sSECv6Yj64FvDkU4r DbSu/TTSKkCPdcT9hf0QHjD2pY1780s9C6jXHmNJFmssVDLJuayAOPpfMOumsdUQ MX9iWsGJC6JPdQbfDBBSG6lnpHEEf6Ph8dgzRECjC6G8Xw===rhQ/ -----END PGP PUBLIC KEY BLOCK----- Huella correspondiente: D5DB 274E 2B68 7D73 194C 9BCF 4ABB B158 Fig.18: Ventana PGPKeys Esta ventana sirve para la administración de claves. Si activamos todas las opciones del menú View (ver) veremos toda la información que nos da la ventana. Veremos las siguientes columnas: • Keys (claves): se ve un conjunto de líneas con un icono en forma de llave y un nombre. • Validity (validez): nos indica si la clave se considera válida. Una clave válida se representa con un círculo verde y una no válida por uno gris en algunas versiones, como en la 6.5.8, y en otras como en la 8.1 (a la cual pertenece la Fig.16) se representa con una barra de color gris oscuro la validez y con una barra blanca la no validez. • Size (tamaño): indica el tamaño de la clave en bits. Si la clave es de tipo RSA, con un icono de llave de color gris, aparecerá un solo número, sin - 41 - PGP embargo si es de tipo Diffie-Hellman, con un icono de llave de color marrón, aparecerán dos, el primero de ellos es el tamaño de la clave del certificado y el segundo el tamaño de la clave de firma. • Description (descripción): nos indica que tenemos ahí. Los mensajes indican claves públicas (RSA public key o DH/DSS public key), claves caducadas (Expired RSA public key o Expired DH/DSS public key) y nuestro propio par de claves (RSA key pair o DH/DSS key pair). Pero al pinchar en el cuadradito que hay a la izquierda del icono con la llave, aparecerán más cosas (ID de usuario, firmas exportables y a veces hasta fotografías). • Trust (confianza): se refiere al propietario de la clave. Se representa mediante una barra gris. Si la confianza en esa persona es tota la barra es gris oscura, si está mitad gris oscuro y mitad gris claro la confianza será marginal, y si es totalmente de color gris claro es que no tenemos confianza en el dueño de la clave. En tu clave la barra será gris oscura con franjas inclinadas, esto indica confianza implícita, ya que la creaste tú. • KeyID (identificador de clave): es un conjunto de ocho caracteres hexadecimales, precedidos por “0x”, y que identifican la clave. • ADK (Clave de Descifrado Adicional): como ya se ha explicado anteriormente la clave pública cifra una clave simétrica, la clave de sesión, la cual a su vez cifra el mensaje. Una de las cosas que se puede hacer es cifrar con más de una clave pública, con el objeto de que diversos destinatarios puedan descifrar el mismo mensaje. La ADK es un sistema por el que cualquier mensaje se cifra siempre con dos claves: la del destinatario y una segunda (la ADK) controlada por la empresa o el administrador de red. Este sistema está diseñado para entornos empresariales, con objeto de que la empresa pueda tener cierto control sobre los mensajes cifrados por el. Hay versiones de PGP que no poseen esta opción, una clave con ADK viene indicada por un círculo rojo, sin ella, el círculo es gris. • Creation (creación) y Expiration (caducidad): indican, la fecha de creación de la clave y la de caducidad. Si la clave no veremos un Never (nunca). 5.2 Exportación e importación de claves públicas. Servidores de claves. Para que otras personas tengan acceso a tu clave pública puedes subirla a algún servidor de los dedicados a almacenar claves públicas de cualquier usuario. El programa facilita la tarea, pues puede conectar directamente con los servidores. Puedes enviar la clave a varios servidores, pero basta con que la entregues a uno de ellos, esto es porque los servidores se comunican periódicamente para entregarse unos a otros las novedades que cada uno haya recogido, de esta forma es muy probable que tras un tiempo tu clave esté en muchos servidores públicos de claves. Tú seguirás siendo el único que puedas descifrar los mensajes, porque serás el único que tenga en su poder la clave privada, por tanto no debes preocuparte de que tu privacidad se vea comprometida por el hecho de hacer pública tu clave pública. - 42 - PGP Pueden hacerse modificaciones en las claves almacenadas en un servidor, por ejemplo añadir nuevas firmas de otros usuarios de PGP o revocar una clave. Hay que tener cuidado porque no es posible borrar una clave de un servidor, y esa información quedará allí para siempre. Esto es porque si borramos la clave de un servidor, ésta reaparecerá cuando el servidor se conecte con otros para actualizarse y le comuniquen que existe esa clave que el no posee, no hay mensajes estandarizados que se puedan mandar unos servidores a otros para comunicar que una clave ha sido borrada, por lo tanto no es posible hacerlo de este modo. La única forma de cancelarla es revocarla (cancelar su validez) pero para hacerlo necesitarás tu pareja de claves y también tu frase de seguridad. Luego puedes enviar al servidor la clave pública revocada, de forma que dicha revocación es añadida a la clave que ya existía en ese almacén. La revocación también se propagará a los otros servidores y así quedará patente que esa clave ya no es operativa. Posteriormente puedes generarte otro juego de claves y enviar la nueva pública al servidor. No olvides que para revocar la clave necesitas tenerla operativa y además necesitas la frase de seguridad. Si dejas de usar la cuenta de correo a la que está asociada esa clave surge algún problema. La clave podría seguir funcionando, pero usar la clave teniendo otra dirección electrónica puede crear mucha desorientación y recelo en los otros usuarios. Además, es posible que alguna otra persona utilice el servidor de claves para localizar tu dirección de correo electrónico. Para evitar estas dificultades, tienes dos alternativas. La primera consiste en revocar la clave y publicar esa revocación para luego generarte una nueva clave. La segunda alternativa consiste en agregar a la clave la nueva dirección electrónica y volver a publicar tu clave con este añadido. En principio una clave se asocia a una sola persona y a una sola dirección, pero es posible añadir más usuarios y/o más direcciones. Cuando necesites la clave pública de otra persona igualmente puedes buscarla en sus páginas web o en cualquier servidor de claves. Cuando la encuentres ya la puedes añadir a tu anillo de claves públicas. Si la clave ya estaba en tu anillo no es añadida de nuevo, pero si tenía nuevas firmas o ha sido modificada se añadirán las modificaciones a la existente. A partir de ese momento ya podrás enviarle información cifrada y verificar sus firmas digitales. Sin embargo, PGP seguirá advirtiendo de que esa clave no es segura ("Invalid Key"). Cuando obtengas una clave y puedas garantizar totalmente que esa clave corresponde a la persona que aparece como titular, entonces puedes "validar" esa clave recibida y eso se consigue haciendo tu firma digital sobre ella, así avalas la validez de esa clave, y PGP dejará de mostrar el aviso de advertencia. Para firmar otra clave necesitarás usar tu frase de seguridad y, como ya se ha dicho, sólo debes hacer esto sobre aquellas otras claves que te merezcan confianza respecto a su relación con la persona o entidad correspondiente. Las claves públicas de otros usuarios las irás almacenando en tu anillo público. En el servidor puedes querer mirar también el estado de tu propia clave o mirar si alguien nuevo ha firmado una clave que ya tienes…, tiene múltiples opciones. - 43 - PGP 5.3 Funcionamiento general 5.3.1. Envío de mensajes El envío de mensajes consiste básicamente de 4 pasos: 1. Firma digital: este primer paso es opcional. Partiendo de un texto normal lo primero que hace PGP es la creación de una "firma digital", la cual garantiza tanto la integridad del mensaje como la autenticidad de su origen. El funcionamiento es el siguiente: • • • • Al texto se le aplica un algoritmo hash. A la frase de paso se le aplica el mismo algoritmo de hash, con esa clave y mediante un algoritmo simétrico se descifra la clave privada del remitente. Se cifra el resultado de la función hash con un algoritmo asimétrico y la clave privada descifrada. Ya tenemos la firma digital creada, ésta será añadida al documento (cifrado o en claro) antes de transmitirlo. Fig. 19: Funcionamiento firma digital En la figuras 19, 20, 22 y 23 se usan algoritmos concretos pero se podrían usar cualquiera de los de la familia correspondiente. En lugar de MD5 se usaría una función de hash, en lugar de RSA un sistema de cifrado asimétrico y en lugar de IDEA un sistema de cifrado simétrico. Mensaje firmado mediante PGP: -----BEGIN PGP SIGNED MESSAGE----La Universidad de Lepe acaba de publicar un estudio en el que se demuestra que utilizar Windows prolonga la esperanza de vida. Investigaron la salud y la longevidad de dos millones de personas. - 44 - PGP La mitad eran europeos que cotidianamente utilizan ordenadores con el sistema Windows. El otro millón eran africanos que jamás han usado un ordenador. Los que emplean Windows viven más años y tienen mejor salud que los otros. -----BEGIN PGP SIGNATURE----Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com> iQCVAwUBNWbZpaarQCE08evfAQHL6wQAsNPP+HamC8i9HVmwwOWgXEy8d69Rcsfi t4U8+321MYBt+A3o4sycE06b8dZJ2KuosjYl1T0KJba/oolyeUVBICEEXwAUK7/D cUtEzE6Gf8vHfmSn4aE0Ta68RqUYe4aq1lo/yIMbkmxMh5A/7/e9qzN01mwipqQA Sz0xh5vzlhs= =fkrF -----END PGP SIGNATURE----- Aquí podemos ver que hay una marca que delimita el comienzo del texto firmado, y luego se añaden otras dos señales para acotar la información cifrada que lleva la firma digital correspondiente a ese texto. La firma digital no aumenta de tamaño cuando afecta a una mayor cantidad de información. El texto de partida podría ser mucho más largo, y sin embargo la firma seguiría siendo igual de extensa. La firma digital también incorpora información respecto al momento en que se efectuó la firma. Es posible sólo usar esta característica de PGP y mandar el texto en claro junto con la firma, así no tendríamos privacidad, pero si los ventajas que proporciona la firma digital. 2. Compresión: este paso es automáticamente ejecutado por PGP a no ser que el usuario no desee hacerlo. Se obtiene una reducción notable del tamaño del mensaje, sobre todo si es texto. PGP usa un algoritmo compresión. Por defecto, sólo las partes que van a ser cifradas son comprimidas. Las dos ventajas fundamentales de utilizar el algoritmo de compresión son: o El ahorro en el tiempo de transmisión y espacio de almacenamiento o Fortalece la seguridad: reducción de patrones y por lo tanto mayor resistencia al criptoanálisis. 3. Cifrado del mensaje: PGP utiliza un algoritmo simétrico para cifrar, combinado con uno asimétrico. Se genera una clave de sesión, de forma aleatoria. Mediante el algoritmo simétrico y esta clave de sesión, se cifra el mensaje. La clave de sesión se cifra a su vez mediante el algoritmo asimétrico y la clave pública del receptor, es decir debemos de conocer ésta previamente. El motivo de no usar el algoritmo asimétrico para todo el mensaje es que no sería eficiente, especialmente si tiene varios receptores (habría que incluir un mensaje cifrado completo por receptor, mientras que con el sistema elegido sólo hay que incluir un cifrado de la clave de sesión por receptor). Para ver el aspecto que tiene la información cifrada, primero necesitamos tener un texto de referencia, el documento original de ejemplo: - 45 - PGP La Universidad de Lepe acaba de publicar un estudio en el que se demuestra que utilizar Windows prolonga la esperanza de vida. Investigaron la salud y la longevidad de dos millones de personas. La mitad eran europeos que cotidianamente utilizan ordenadores con el sistema Windows. El otro millón eran africanos que jamás han usado un ordenador. Los que emplean Windows viven más años y tienen mejor salud que los otros. Ahora veamos el aspecto del mismo texto, pero ya cifrado: -----BEGIN PGP MESSAGE----Version: PGPfreeware 5.5.3i for non-commercial use <http://www.pgpi.com> hQCMA6arQCE08evfAQP8CbOMO5vfadHRJo8kwNnM5HHG7C30dWmNxu5CPA+m+LQY bJBYFjMQqNK/NPjvkdjqU2mCWPhJa2nSH+X5xuneLfXnXAxzwvjP7w4a/NFILgyo VDQzMQScheakDWxScApi4pi/CxfFLVKXOPunFHssJLy5ZcHFWlQfABNuRTI/Gzil ARuCla0XDs32A/wvChx2SYlkZnQySzjYehcsRISHXlzkX5H7LoUSgaHW6xW/4tYx nN8N3+VBTyZ7Nxa78dEa3AShWRW3F1IvOj+zv8x+l5OwHZsXYotVYl20b2EVUMF5 bzzkQsFBFt/m4T0Ndg/sFThh7uOGxedBSiV4PrdLO6Wbl92XeLIYI1OHnWAeAkqd GOr5lZj+TfJTvLHdVfK+7WpTa/vgaYp1w3pASGNCdnThFlQMn5VCKSgD8d6u5KNX Y6l5YRbaXhatqH1io3XLuGzs6M1MskJ/VFCTQLvpxxU74VVkcZ0ebWO/OaX/cDVt CbnFphtoAUoe70M0AkgHsxZz1wtSviE8Z/4dJOG8x+maNhPTGw8KBHvH/aDy =uA7n -----END PGP MESSAGE----- Se pueden apreciar las características marcas de comienzo y final que son usadas por PGP para delimitar la información cifrada. En el caso de un documento muy pequeño como -el expuesto- la información cifrada ocupa más espacio que el original. En el caso de un documento grande, el cifrado ocupará algo más que ésta, pero siempre será menor que el escrito original; cuanto mayor es el texto de partida, mayor es también el ahorro de bytes que supondrá la transmisión cifrada, porque el cifrado necesita un tamaño mínimo, pero implica también una especie de compresión. Es posible que una información sea cifrada para varios destinatarios. Cualquiera de ellos podrá descifrarla, independientemente de los otros. Evidentemente, eso también hará que la información cifrada aumente su volumen. 4. Codificación: firma, compresión y cifrado no generan un fichero de texto sino binarios. Como la aplicación principal de PGP es el correo, que requiere caracteres ASCII, PGP puede codificar el documento resultante mediante el algoritmo BASE64 automáticamente. Resumen del proceso de compresión y cifrado con la clave pública de destino: • • • El mensaje en claro se comprime con un algoritmo de compresión. Se genera aleatoriamente una clave de sesión. Se cifra el mensaje comprimido con la clave de sesión mediante un algoritmo simétrico. - 46 - PGP • • Se busca la clave pública del destinatario en el anillo de claves públicas, y con ella, mediante el algoritmo asimétrico se cifra la clave de sesión. La clave de sesión cifrada se añade al mensaje cifrado. Fig.20: Proceso de cifrado Fig. 21: Formato de un mensaje PGP - 47 - PGP 5.3.2. Recepción de mensajes Para la recepción de mensajes PGP simplemente se invierten todos los pasos del proceso de envío: 1. Paso de ASCII a binario, si el mensaje fue codificado. 2. Si el mensaje está cifrado PGP recupera la clave de sesión, la cual fue cifrada usando un algoritmo asimétrico con la clave pública del receptor. Por lo tanto el receptor usará su clave privada para obtener la clave de sesión. Con la clave de sesión PGP descifra el mensaje usando el algoritmo de descifrado simétrico. El proceso completo de descifrado es el siguiente: • • • Con la frase de paso, tras haberle aplicado una función hash, y mediante el algoritmo simétrico, se descifra la clave privada de destino. Con la clave privada descifrada y mediante el algoritmo asimétrico, se descifra la clave de sesión cifrada. Con la clave de sesión descifrada y mediante el algoritmo simétrico se descifra el mensaje. 3. Descompresión del mensaje, si estaba comprimido. Los tres pasos anteriores se ven en la figura 20: Fig. 22: Proceso de descifrado 4. Si el mensaje fue firmado PGP verifica la firma, la cual fue cifrada con la clave privada del emisor del mensaje por lo que PGP usará la clave pública de este usuario. Se extrae el hash del mensaje y PGP lo compara con el que ha calculado; si los dos encajan la firma es verificada. - 48 - PGP Proceso de comprobación de la firma digital: • Se busca la clave pública del emisor y con ella y el algoritmo asimétrico se descifra la firma. • Se calcula el hash del mensaje, y se compara con el que se ha obtenido al descifrar la firma: • Si son iguales la firma es correcta, si no lo son la firma es incorrecta. Fig. 23: Verificación de la firma digital - 49 - PGP 6. EJEMPLO DE USO DE UN SOFTWARE CONCRETO. A continuación vamos a ver un ejemplo de utilización de PGP. Se ha instalado la versión 8.1, nos da a escoger entre varios plugins para integrarlo con diferentes clientes de correo. Nosotros hemos escogido el Outlook. Lo primero que debemos hacer es crear nuestras claves. Para ello existe un asistente de creación de claves: Fig. 24: Asistente de creación de claves(1) En esta primera pantalla, introduciremos nuestro nombre y dirección de mail. Elegiremos el tipo de algoritmo asimétrico entre uno de los siguientes: DiffieHellman/DSS, RSA y RSA Legacy (se usa para que sea compatible con versiones anteriores). Se especifica también el tamaño de la clave, que podrá ser entre 1024 y 4096 bits. Por último podremos decidir si queremos que nuestra clave dure para siempre o tenga una fecha de expiración determinada. En esta pantalla se escoge la frase de paso que protegerá la clave privada del usuario. Fig. 25: Asistente de creación de claves(2) Aquí ya tenemos nuestro par de claves creado. Fig. 26: Asistente de creación de claves(3) - 50 - PGP Ahora en la utilidad PGPKeys vemos nuestra clave recién creada. Vemos que está validada por nosotros mismos, ya que está firmada con la propia clave privada, las versiones actuales de PGP ya hacen esto por si mismas. En la pantalla de Certificate Properties se puede ver la propia firma sobre esta clave, de la misma forma se podría ver cualquier otra firma realizada sobre una clave. En la pantalla KeyProperties (la que aparece a la izquierda) se pueden ver las propiedades de la clave, nos da la opción de cambiar la frase de paso, aparece la huella digital, que la podemos ver en hexadecimal o mediante una serie de palabras y también se puede ver la validez de la clave y la confianza que tenemos depositada en su propietario (que en este caso es implícita ya que se trata de nuestra propia clave). Fig.27: Ventana PGPKeys tras creación de claves Una vez importada una clave pública deberemos validarla firmándola. Para ello seleccionamos la clave y con el botón derecho del ratón escogemos “Sign…”. La pantalla que nos aparece es la siguiente: - 51 - PGP Fig. 28: Ventana para validar una clave Como la propia ventana nos advierte, firmando una clave se está certificando que se tiene un conocimiento directo sobre el hecho de que la clave pertenece realmente al identificador asociado, por lo tanto debemos asegurarnos bien de eso antes de firmar. Para poder firmar nos solicita la frase de paso ya que la firma se realiza usando la clave privada. Todas las operaciones que conllevan el uso de la clave privada necesitan ser autorizadas con la frase de paso ya que la clave privada se encuentra cifrada basándose en dicha frase de paso. Fig. 29: Ventana de solicitud de frase de paso Una vez realizados estos pasos, ya podremos enviar un correo, vamos a ver como se realizaría. Fig. 30: Ventana de envío de mensaje Usaremos los dos botones que proporciona el plugin de PGP para Outlook para cifrar y firmar el mensaje (los que aparecen marcados en naranja en la parte superior derecha de la ventana). Para cifrar se usará la clave pública correspondiente a la dirección destino del mensaje si se encuentra en el anillo público. Para firmar se nos solicitará nuestra frase de paso ya que se necesita nuestra clave privada para ello. Ahora el receptor procede a recibir el mensaje, para ello se le solicitará la frase de paso porque descifrará el mensaje con su clave privada. - 52 - PGP Fig. 31: Ventana de recepción de mensaje Además de descifrar se comprobará la firma (si se hizo), en caso de no disponer de la clave pública del emisor del mensaje en el anillo de claves no se podrá verificar la firma digital. Aquí vemos el resultado de verificar la firma y descifrar el mensaje: Fig. 32: Mensaje verificado y descifrado - 53 - PGP A continuación vemos las posibilidades que nos ofrece el programa en si, en la versión 8.1: Fig. 33: Menú PGPmail Significado de los iconos: 1. Abre el menu PGPkeys. 2. Cifrar un fichero. 3. Firmar un fichero. 4. Cifrar y firmar un fichero. 5. Descifrar y verificar un fichero. 6. Wipe: borrado seguro de ficheros. 7. Freespace wipe: eliminar datos en todas las zonas libres del disco. - 54 - PGP 7. PROBLEMAS Y VULNERABILIDADES DE PGP Ningún sistema de seguridad de datos es impenetrable. PGP puede burlarse de diversas maneras. Los posibles puntos vulnerables que hay que tener en cuenta son, entre otros, el compromiso de la contraseña o de la clave secreta, la manipulación de las claves públicas, los ficheros que se han borrado pero que siguen todavía en el disco, los virus y caballos de Troya, los fallos en la seguridad física, las emisiones electromagnéticas, la exposición en sistemas multiusuario, el análisis de tráfico, y quizá incluso el criptoanálisis directo. A continuación vamos a ver algunos de los fallos de mayor relevancia detectados en PGP, y algunos de los problemas y vulnerabilidades que el sistema tiene. Algunos fallos de relevancia en PGP son los siguientes: • Bug aleatorio 5.0i: un fallo en una sola línea de programación hizo que el generador de datos aleatorios de PGP 5.0i (versión para Linux) leyese de forma errónea. Como resultado, las claves usadas podrían ser averiguadas sin mucha dificultad. • Fallos menores. Hay un bug en PGP 6.0.1 por el cual el cifrado de su componente PGPdisk es más débil de lo que debería ser (la clave usada, en teoría de 128 bits, es en la práctica más débil). Otro elemento en la versión 5.5.3i hacía que el borrado seguro (Wipe) no fuese realmente seguro. Ambos fallos fueron fácilmente corregidos en versiones posteriores. • ADK bug: Ralph Senderek descubrió en Agosto de 2000 un fallo asociado a la llamada clave de descifrado adicional, ADK, ya mencionada. Un nuevo formato de clave, incorrectamente diseñado, permitía incorporar a escondidas una clave ADK sin que la alteración fuese detectada. Este bug, grave desde el punto de vista de la seguridad, aparecía en las versiones 5.5.x a la 6.5.3. Tras estudios de las claves existentes en los servidores, parece ser que dicho bug nunca ha sido aprovechado por un atacante. El bug fue corregido en la versión 6.5.8. • Ataque checo (o ICZ): en Marzo de 2000, los investigadores checos Vladimir Klima y Tomas Rosa, publicaron un nuevo ataque no solamente contra PGP, sino también contra su estándar abierto OpenPGP. Este ya no era solamente un fallo de programación, sino un serio ataque criptográfico. Resulta muy interesante en teoría, pero en la práctica requiere acceso físico al ordenador de la persona atacada, y en ese caso sería más fácil obtener la clave mediante un troyano. Si se siguen las recomendaciones habituales sobre protección de las claves privadas, este ataque no es factible. Este ataque no funciona con versiones posteriores a la 7.0. • Armadura ASCII: descubierto en Abril de 2001, permite ocultar un fichero malicioso (un troyano, o una librería dinámica DLL) en un archivo "recubierto" con armadura ASCII. A pesar de la gravedad potencial del bug, hay que ser justo: este fallo no es de PGP en sí, sino del sistema operativo bajo el que opera (Windows). Esto nos recuerda algo muy importante: la seguridad global de una cadena es solamente la del eslabón más débil. Hay parche para las versiones - 55 - PGP 7.0.3 y 7.0.4; los usuarios de versiones anteriores para Windows pueden protegerse mediante el uso de elementos de seguridad adicional (cortafuegos y antivirus). • Ataque de Otterloo: en septiembre de 2001, Sieuwert van Otterloo mostró un fallo que permite "jugar" con la validez de una clave. En claves con más de un identificador, y bajo ciertas circunstancias, un usuario puede ser engañado a pensar que una clave es válida cuando realmente no lo es. Problemas: • • Muchas veces sucede que el mensaje es auténtico pero la firma digital no puede ser comprobada satisfactoriamente por problemas técnicos. Los caracteres especiales (acentos, eñes, etc.), los sistemas de codificación del mensaje y los diferentes programas de correo pueden rechazar la firma digital, de forma que parezca un mensaje falso sin que realmente lo sea. El uso de PGP impone ciertas exigencias o limitaciones incómodas. Por ejemplo, sin PGP puedes configurar tu sistema de correo para que transmita párrafos verdaderos (líneas tan largas como quieras, que luego son recompuestas en la pantalla del receptor, para facilitar su visualización). PGP no funciona bien con este sistema, y exige líneas de un tamaño máximo (normalmente, menos de 80 caracteres). El usuario no tiene que preocuparse de hacer las líneas cortas porque el PGP se encarga de "fragmentarlas" automáticamente. Pero al final esto genera nuevos problemas. Por ejemplo, si yo quiero poner una URL de 96 caracteres como ... http://www.mcafee-at-home.com/international/spain/products/pgp-personalsec u rity/default.asp?M=6 ... sucede que esa URL quedará rota en dos líneas y el receptor que "pinche" en esa dirección no podrá acceder a la página que yo estaba queriendo sugerirle; se hace necesario recomponer las dos líneas e introducir el resultado en el navegador, manualmente. Vulnerabilidades: • Vulnerabilidad de la validez de claves: una clave PGP puede tener más de un identificador de usuario y más de una dirección de correo electrónico. Es posible que un atacante añada un identificador falso a una clave pública legítima. Aunque ese identificador de usuario no está firmado como propietario de la clave, la clave aparecerá como válida porque el dueño ha firmado por lo menos uno de los identificadores. Otro usuario puede añadir la clave a su anillo público y firmarla, posteriormente puede mandar un mensaje a la dirección falsa, con lo que llegará al atacante. El atacante no puede descifrar el mensaje, pero el usuario verdadero no puede recibirlo. De esta forma el atacante utiliza esta vulnerabilidad para romper una comunicación segura entre dos usuarios de PGP. Protegerse contra esta vulnerabilidad es fácil, siempre que comprobemos, que en una clave están - 56 - PGP firmados todos los identificadores. Esta vulnerabilidad muestra la importancia de la ‘self-signature’. - 57 - PGP 8. OTRAS APLICACIONES DE PGP 8.1 Cifrado para asegurar tus propios documentos. Se puede usar el programa PGP para cifrar cualquier fichero, ya sea cifrándolo, firmándolo digitalmente, o ambas operaciones conjuntas. Si cifras el fichero deberás usar la clave pública de la persona a la que va dirigido. El fichero cifrado puede ser transportado en disquete, transmitido a un servidor de FTP, adjuntado a un mensaje de correo (el mensaje puede ir cifrado o sin cifrar) o por cualquier otro medio. Esto permite cifrar cualquier clase de fichero, vale igual para un texto que para una imagen, un archivo de sonido, un ejecutable o un fichero comprimido. El programa no destruye el fichero original (salvo que se le indique expresamente), generando otro archivo diferente. Este nuevo archivo tendrá el mismo nombre, pero añadiendo una nueva extensión -la vieja extensión pasará a formar parte del nombre-; para los archivos cifrados (con o sin firma) se usará normalmente la extensión PGP, y para los archivos que solo incorporen firma digital se usará preferentemente la extensión SIG. Si el fichero está cifrado (con o sin firma), el receptor podrá igualmente usar su programa PGP para descifrarlo y recuperar una copia del fichero original. Las versiones más modernas de PGP permiten hacer esto activando directamente el archivo (PGP ya sabe lo que debe hacer con él, pues lo deduce de la extensión). Si se aplica a un fichero solamente la opción de la firma, el nuevo fichero generado tendrá la extensión SIG, pero lo habitual es que solo incluya la información de la firma digital, haciendo necesaria la transmisión también del fichero original. Careciendo de este último, el fichero de firma no sirve para nada. Esto puede parecer una anomalía, pero es una gran ventaja puesto que el fichero fuente queda inalterado y eso es especialmente conveniente cuando no se trata de texto puro (archivos de imágenes, ejecutables, etc.). De todas formas hay una opción para indicar a PGP que incluya en el fichero de firma también la información original, con lo que se puede transmitir, o conservar, solamente este fichero de firma; solamente con ese archivo puede hacerse la comprobación de firma y también recuperar el fichero original. También se puede cifrar un fichero que no se va a enviar a nadie, si se quiere ocultar su contenido de la vista de otras personas que accedan al ordenador, para ello bastará con cifrar el archivo considerándote a ti mismo como destinatario, y eso será suficiente para que solo tú puedas descifrarlo usando tu clave privada y tu frase de seguridad. Ten en cuenta que el programa, por omisión, no borra el fichero original, solo crea una copia cifrada, por lo que deberías responsabilizarte de eliminar correctamente el archivo sin cifrar: cualquiera que entienda el funcionamiento de un disco informático sabe que es posible recuperar un archivo borrado, incluso si no está en la papelera. PGP incluye una opción que te permite hacer un "borrado destructivo", la cual se explicará más tarde, de forma que sea imposible recuperar la información. Cuando cifras un fichero, la ventana de PGP te mostrará una opción que también te permite automatizar el borrado destructivo del fichero original, haciendo todo eso como si fuese una sola operación. Al descifrar siempre se recrea (recupera) el archivo que generó la copia cifrada y que luego fue eliminado. - 58 - PGP Los archivos no son codificados utilizando el mismo planteamiento que los textos abiertos. Los ficheros se cifran y/o firman usando un procedimiento de resultados menos visible y generan un fichero completamente distinto y totalmente ininteligible que lleva la extensión PGP o SIG. Estos archivos no se restringen a los caracteres legibles y no respetan los cambios de línea. Por lo tanto, el contenido de un fichero cifrado/firmado siempre es inutilizable e incomprensible, incluso cuando se trate de un fichero que originalmente era texto y al que solo se le ha aplicado la firma digital, en estos casos de ficheros cifrados y/o firmados (PGP o SIG) siempre se hace necesaria la recuperación del archivo original usando el proceso de descifrado de PGP. En relación con lo anterior, PGP también permite una alternativa que genera el fichero cifrado con contenido de tipo texto, en estos casos se emplea la extensión ASC (abreviatura de ASCII), y el resultado es relativamente similar al de los mensajes de correo, pero con alguna peculiaridad. La más destacable es que en los ficheros de firma digital no puede visualizarse directamente el contenido original, ni siquiera cuando la información cifrada sea texto puro y se ha incluido expresamente en el fichero de firma. Estos ficheros de extensión ASC también pueden activarse directamente para que sean procesados automáticamente por PGP. De todo lo anterior puede deducirse otra consecuencia, si recibes un mensaje cifrado con firma digital, necesitarás la clave pública del remitente para verificar la autenticidad, pero careciendo de ella igualmente puedes fiarte del contenido, leer la información y seguir adelante, el documento es igualmente comprensible y puedes usarlo prescindiendo de las marcas añadidas por PGP. Sin embargo, con los ficheros que fueron firmados (extensión SIG o ASC) nunca es posible esta utilización directa y confiada. 8.2 Uso de PGP para borrar archivos del disco Cuando se borra un archivo, los datos que éste contiene no son realmente borrados del disco. Aunque no se vea el nombre al listar los contenidos del disco este se puede recuperar de forma fácil. Cuando borras un fichero, lo único que estás haciendo es borrar el enlace al fichero de índices del disco. Es como si tienes un catálogo de libros en una biblioteca, tú puedes borrar un libro del catálogo, pero seguirás estando en la biblioteca, aunque te será más difícil de encontrar. Cuando borras un fichero es como si borrases el libro del catálogo, el fichero seguirá estando allí, aunque para ti no sea fácil de encontrar. Para borrar completamente un fichero tienes que borrar esa parte del disco, y esto es lo que la función ‘Wipe’ (borrar) de PGP hace. La función ‘Wipe’ se basa en el método DoD 5220-22.M, el cual permite una reescritura segura de los datos mediante un número de pasadas configurable desde las opciones de PGP (por defecto 3, y eso es mucho más que suficiente). Hay otros usos de PGP a los que sólo haremos referencia, sin explicarlos a fondo, como son la creación de redes privadas virtuales y los discos virtuales cifrados. - 59 - PGP 9. S/MIME, PGP/MIME 9.1. S/MIME S/MIME (Secure / Multipurpose Internet Mail Extensions, Extensiones de Correo de Internet de Propósitos Múltiples / Seguro) es un estándar para criptografía de clave pública y firmado de correo electrónico encapsulado en MIME. S/MIME fue creado en 1995 por un grupo de vendedores de software para prevenir la interceptación y falsificación de mail. Fue construido en el protocolo MIME estándar existente y de forma que fuese fácil de integrar con los productos de e-mail existentes. Como está basado en unos estándares soportados de forma general, fue implementado para una gran variedad de sistemas operativos y clientes e correo. S/MIME provee los siguientes servicios de seguridad criptográfica para aplicaciones de mensajería electrónica: • • Autenticación, Integridad y No Repudio: mediante el uso de firma digital. Privacidad y Seguridad de los datos: mediante el uso de cifrado. La funcionalidad S/MIME está construida en la mayoría de los clientes de correo electrónico modernos y son capaces de interoperar entre ellos. Antes de que S/MIME pueda usarse en alguna de las aplicaciones antes mencionadas, se debe obtener e instalar una clave/certificado individual de un Autoridad Certificadora. Esta es la diferencia fundamental con PGP, para el cual no es necesario obtener el certificado por parte de una Autoridad Certificadora, sino que los certificados se los firman unos usuarios a otros, para asegurar su validez. Es decir S/MIME funciona mediante Autoridades Certificadoras centralizadas y PGP mediante una red de confianza. 9.2. PGP/MIME PGP/MIME toma como base PGP. Se trata de una integración de PGP con MIME propuesta por Michael Elkins. PGP/MIME está pasado de moda, no porque sea malo o débil, sino porque no está estandarizado. Fue especificado en el RFC 2015 en 1996 y reformado en el RFC 3156 el en 2001. Las ventajas que proporcionaba con respecto a PGP/inline eran: • • • Los archivos adjuntos eran cifrados y firmados. Caracteres no ASCII podían ser usados. La firma PGP estaba separada del cuerpo del mensaje, es un archivo adjunto La idea no tuvo mucho éxito, muchos de los clientes de correo no lo soportaban. - 60 - PGP 10. REFERENCIAS Javier González (1999): “Todo sobre PGP” http://www.geocities.com/siliconvalley/pines/2332/ Página de PGP internacional: http://www.pgpi.org/ Del capítulo 1 del libro “Introducción a la criptografía” de la documentación de PGP 6.5.1: “How PGP Works” http://www.pgpi.org/doc/pgpintro/ Phil Zimmermann, traducido por Luis J. Claros Martin: “¿Por qué necesitas PGP? http://www.pgpi.org/doc/whypgp/es/ Death Master (2005): “Taller de criptografía” http://www.death-master.tk/ Cristina López Bravo (2006): transparencias del curso 2006-2007 de la asignatura Redes y Servicios de Comunicaciones II del Departamento de Ingeniería Telemática de la Universidad de Vigo http://www-gris.det.uvigo.es/wiki/pub/Main/PaginaRsc2/Clase6-SPT.pdf David E. Ross (2007): “Pretty Good Privacy (PGP)” http://www.rossde.com/PGP/index.html#overview Adam Back: “PGP Timeline” http://www.cypherspace.org/adam/timeline/ Traducción del anterior por Arturo Quitantes Sierra: “Historia de PGP” http://www.cripto.es/expedien/exped002.htm David Hamilton: “PGP for Absolute Beginners” http://axion.physics.ubc.ca/pgp-begin.html Kevin Henry: “Getting Started With PGP” http://www.acm.org/crossroads/xrds6-5/pgptutorial.html “Secure Mail Communication with PGP” http://www.trustprofessionals.com/edu/pgp.html Arturo Quirantes Sierra: “Taller de criptografía” http://www.cripto.es/ Arturo Quitantes Sierra (2000): “Introducción a PGP” http://www.cripto.es/pgp01.htm Arturo Quirantes Sierra (2001): “Curso Sencillo de PGP” http://www.cripto.es/cursopgp.htm Páginas de PGP en la Comunidad RedIRIS http://www.rediris.es/pgp/ - 61 - PGP Antonio Caravantes (2006): “Seguridad en el correo electrónico y PGP” http://www.caravantes.com/pgp/pgp.htm PGPCorporation http://www.pgp.com “PGP” http://www.orion.cl/partners/?id=02 Tom McCune’s: “PGP Questions & Answers” http://www.orion.cl/partners/?id=02 Bernard Jonh Poole: “PGP 6.5.8” http://www.pitt.edu/~poole/PGP.htm Servicio de Informática y Comunicaciones de la Universidad de Zaragoza: “Seguridad en el correo.PGP” http://www.unizar.es/sicuz/correo/mail_pgp.html?menu=correo#referencias “History of PGP” (1999) http://openpgp.vie-privee.org/history.htm Michael W. Lucas (2006): “The story of PGP” http://www.webmonkey.com/webmonkey/06/17/index4a.html?tw=backend “Criptografía” http://www.miginside.com/hck/?q=node/14 Wikipedia en español: http://es.wikipedia.org/ Wikipedia en inglés: http://en.wikipedia.org PGP Global Directory http://keyserver.pgp.com/ Brenno J.S.A.A.F. de Winter (versión en inglés), Horacio (versión en español):``GNU Privacy Guard'' (GnuPG) Mini Como http://webber.dewinter.com/gnupg_howto/spanish/index.html Secure e-mail clients with PGP http://www.bretschneidernet.de/tips/secmua.html PGP, PGP/MIME, OpenPGP, and S/MIME: A Short History (2000) http://www.uic.edu/depts/accc/newsletter/adn26/history.html - 62 - PGP 11. ÍNDICE DE FIGURAS Y TABLAS Fig. 1: Cifrado simétrico………………………………………………………………12 Fig. 2: Cifrado asimétrico……………………………………………………………..14 Fig. 3: Cifrado de un mensaje en un sistema híbrido………………………………….15 Fig. 4: Descifrado de un mensaje en un sistema híbrido………………………………15 Fig. 5: Mensaje cifrado para dos destinatarios diferentes……………………………..16 Tabla 1: Tiempos de cifrado (en milisegundos en una Sparc II)……………………....20 Tabla 2: Tiempos firmado digital (en milisegundos en un Pentium Pro 200 MHz)…...20 Fig. 6: Una ronda del cifrado IDEA……………………………………………………21 Fig. 7: Esquema funcionamiento Triple-DES………………………………………….22 Fig.8: Tres rondas cifrado CAST-128………………………………………………….23 Fig.9: Etapas cifrado AES……………………………………………………………...24 Fig.10: Funcionamiento TwoFish……………………………………………………....25 Fig. 11: Proceso de firma……………………………………………………………….30 Fig. 12: Proceso de verificación de la firma digital…………………………………….30 Fig.13: Anatomía de un certificado…………………………………………………….32 Fig. 14: Un certificado PGP……………………………………………………………33 Fig. 15: Un certificado X.509…………………………………………………………..34 Fig. 16: Confianza directa……………………………………………………………...35 Fig. 17: Jerarquía de confianza………………………………………………………....35 Tabla 3: Estructura del anillo de claves privadas………………………………………37 Tablas 4 y 5: Estructura del anillo de claves públicas……………………………….…38 Fig.18: Ventana PGPKeys……………………………………………………………..41 Fig. 19: Funcionamiento firma digital…………………………………………………44 Fig.20: Proceso de cifrado……………………………………………………………..47 Fig. 21: Formato de un mensaje PGP………………………………………………….47 Fig. 22: Proceso de descifrado…………………………………………………………48 Fig. 23: Verificación de la firma digital………………………………………………..49 Fig. 24: Asistente de creación de claves(1)…………………………………………....50 Fig. 25: Asistente de creación de claves(2)……………………………………………50 Fig. 26: Asistente de creación de claves(3)……………………………………………50 Fig.27: Ventana PGPKeys tras creación de claves…………………………………….51 Fig. 28: Ventana para validar una clave……………………………………………….51 Fig. 29: Ventana de solicitud de frase de paso………………………………………...52 Fig. 30: Ventana de envío de mensaje……………………………………………........52 Fig. 31: Ventana de recepción de mensaje…………………………………………….53 Fig. 32: Mensaje verificado y descifrado……………………………………………...53 Fig. 33: Menú PGPmail………………………………………………………………..54 - 63 -