Curso sencillo de PGP
Capítulo 3: Primeros pasos con PGP


por Arturo Quirantes Sierra


3.1 - Presentación formal

PGP es un programa, disponible para múltiples sistemas operativos (Windows, MacOS, Linux, ...) que permite el cifrado de datos, archivos y mensajes. Diseñado inicialmente para correo electrónico, incorpora en sus últimas versiones adiciones tales como el cifrado de archivos mediante clave simétrica, la creación de Redes Privadas Virtuales, discos virtuales cifrados y borrado seguro de datos. Su "alma" es el cifrado de mensajes mediante criptografía de clave pública.

Estrictamente hablando es un sistema "híbrido", en el que la clave pública cifra una clave simétrica (clave de sesión) que a su vez cifra el mensaje. Su utilización resulta especialmente sencilla en los programas de correo más habituales, como Eudora, Outlook, Outlook Express y The Bat! gracias a la incorporación de botones (plug-ins) para realizar cómodamente las funciones de cifrado/firmado y descifrado/verificación. También permite realizar estas opciones mediante el botón derecho del ratón, tanto en dichos programas de correo electrónico como desde el Explorador de Windows (para cifrado simétrico), e incluso desde cualquier ventana activa o desde el portapapeles mediante un programa (PGPtray) residente en la barra de tareas.

PGP utiliza dos formas diferente de clave pública: RSA (con función hash MD5) y Diffie-Hellman (con función hash SHA-1), con longitud de clave de hasta 2048 (RSA) o 4096 (DH) bits. Los algoritmos de clave simétrica que puede utilizar son: CAST (predeterminado), IDEA y TripleDES. Para obtener claves públicas, PGP puede conectarse y buscar en diversos "depósitos" llamados servidores de claves. Siempre que el usuario desee descifrar o firmar un mensaje, deberá introducir una frase de contraseña; dicha frase de contraseña protege el archivo de claves privadas, y proporciona a éstas una protección adicional.


3.2 - Presentación informal

Y ahora vamos a relajarnos un poco y a tomárnoslo con tranquilidad ... al menos aquellos de ustedes que no hayan huido espantados de la parafernalia técnica del apartado anterior. Antes de meternos en el programa en sí, desearía compartir con ustedes una pequeña historia, no sólo porque la considero interesante sino porque nos deja entrever la propia historia reciente de la criptografía. Si a usted, lector, no le interesa, pues pase al siguiente apartado, y tan amigos.

La criptografía de clave pública (CCP) nació hacia 1977, con el descubrimiento de los dos principales sistemas: RSA y Diffie-Hellman (recientes revelaciones indican, no obstante, que investigadores de los servicios secretos británicos descubrieron los principios básicos de la CCP de forma independiente en 1.975). Lo que hoy se considera piedra angular en la criptografía moderna pasó desapercibido para el común de los mortales, entre otras cosas porque la criptografía de clave pública no halló "público" que la usase. La criptografía se utilizaba fundamentalmente en aplicaciones militares y ciertos usos comerciales. Estados Unidos, por medio de su Agencia de Seguridad Nacional (NSA, encargada del espionaje electrónico y el criptoanálisis), restringía fuertemente el uso y la exportación de programas de cifrado. Sin clientes interesados y con tan fuertes ligaduras, la CCP languideció durante una década.

Los principales países industrializados, incluyendo España, colaboraban activamente con esta política mediante las restricciones sobre tecnología de doble uso plasmadas en el sistema COCOM (desde 1.998, acuerdos de Wassenaar). Hacia 1.991 no sólo la exportación de los programas de cifrado estaba prohibida por EEUU (equivalía a exportar armas sin licencia: pena de hasta diez años de prisión y/o un millón de dólares de multa), sino que el Congreso estaba dando los primeros pasos para sancionar legalmente la obligación de que todos los programas de cifrado tuviesen "puertas traseras" que permitiesen al gobierno leer cualquier mensaje cifrado. La propia criptogafía parecía estar a punto de ser ilegalizada.

Fue en este momento cuando un desconocido ingeniero de software llamado Philip R. Zimmermann entró a escena. Implementó el sistema RSA junto con un algoritmo simétrico de cosecha propia (Bass-O-Matic) y la función resumen (hash) MD4, lo combinó todo en un sistema híbrido, y creó el programa PGP (Pretty Good Privacy, Intimidad Bastante Buena) versión 1.0. Una versión posterior (2.0) incorporaría un algoritmo simétrico más fuerte (IDEA), una función resumen diferente (MD5) e incluso un algoritmo de compresión de datos diferente (ZIP en lugar de LZHuf).

Pero ya la versión 1.0 resultaba revolucionaria en sus intenciones, puesto que por primera vez existía un programa de cifrado de altas prestaciones para uso general. Zimmermann distribuyó copias de PGP 1.0 a varios de sus amigos, y uno de ellos lo diseminó en diversos tableros electrónicos BBS. De algún modo, una copia se filtró fuera de Estados Unidos. Este hecho hizo que Zimmermann fuese acusado por el gobierno norteamericano de violar las leyes de exportación ITAR. Más aún, los propietarios de los derechos del sistema RSA lo acusaron a su vez de violación de patentes.

Pero el genio ya está fuera de la lámpara. El crecimiento de Internet y la publicidad dada al caso Zimmermann no hacen sino elevar la popularidad de PGP. Se crea un fondo de defensa legal, y Zimmermann se convierte en una especie de mártir en la causa de la libertad de expresión. A la postre, los cargos por violación de leyes de exportación son retirados (a fin de cuentas, él no exportó el programa), y un cambio en las librerías del programa permite resolver los problemas de patentes.

Para resolver los problemas de exportación del programa, un avispado 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). Así que, ni corto ni perezoso, 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. Incluso eso se ha hecho ya innecesario, puesto que recientemente las leyes USA a la exportación se han suavizado, y ya no se persigue a los exportadores de programas de cifrado.

Paralelamente a estas batallitas, el programa no deja de evolucionar. Las versiones 2.6.2 y 2.6.3 (casi idénticas) para MS-DOS se convierten en las primeras que son diseminadas y usadas de forma masiva. 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 los usuarios de Mac son recompensados por su paciente espera. 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).

La diseminación de PGP y la costumbre de PGP Inc. de hacer público su código fuente (para permitir revisiones o recompilaciones del programa) han favorecido la aparición de versiones alternativas en código abierto [open source]. En este momento existe una versión estable para UNIX/Linux, y se trabaja en versiones para Windows y Mac; ver para más información la página OpenPGP: http://www.gnupg.org. La fama de PGP ha llegado hasta el extremo de que se derivado en un protocolo de Internet: RFC 2440 (http://www.ieff.org/rfc/rfc2440.txt). Actualmente, el proyecto OpenPGP persigue extender el estándar RFC 2440 (http://www.openpgp.org). Todo ello ha contribuido a que, en la actualidad, PGP sea probablemente el programa de cifrado más conocido en el ciberespacio.


3.3 - Descarga e instalación

Y ahora, a trabajar. Lo primero de todo, evidentemente, es conseguir el programa e instalarlo. Afortunadamente, el espíritu altruista de Zimmermann se mantiene y, a pesar de que NA es una empresa que evidentemente quiere ganar dinero, sigue manteniendo versiones gratuitas [freeware] con prácticamente las mismas capacidades que la versión de pago.

Tomaremos como versión "básica" la 6.5.8 freeware, ya que resulta especialmente estable y ha sido corregida contra diversos fallos [bugs]. Aunque existe una versión posterior (la 7.0), adolece en mi opinión de ciertas desventajas. Por un lado, carece de código fuente, ya que su empresa propietaria NAI rehúse hacerlo público. Esto rompe con la tradición de transparencia de PGP, y siempre ha constituido una garantía de seguridad al permitir la inspección del programa en busca de fallos de código o de "puertas traseras". Por otro lado, PGP 7.0 incorpora aplicaciones adicionales (cortafuegos, detección de intrusos) que complican su uso. Dichas aplicaciones no serán explicadas en el presente curso. No obstante, si decide usted instalar versiones posteriores a la 6.5.8, puede aprovechar las explicaciones de este curso. En lo posible, se incluirán las variaciones, cuando las haya, de funcionamiento entre ambas versiones.

En segundo lugar, escojamos el "sabor". Las versiones de PGP suelen venir en tres variantes: gratuita [freeware], individual [Personal] y comercial [Desktop]. Para no perjudicar los derechos de autor de nadie, recomiendo el uso de la variante gratuita. No obstante, si va a usar PGP con fines comerciales o en entornos empresariales, puede usted necesitar una versión con licencia.

Finalmente, el sistema operativo. El presente curso ha sido basado en PGP 6.5.8 para Windows, y ha sido específicamente comprobado en Windows 95/98. No puedo responsabilizarme de las posibles diferencias de funcionamiento en Windows Me/XP o en otros sistemas operativos (Mac), aunque tales diferencias son de poca importancia.

En cualquier caso, no existen versiones en castellano ni del programa ni de los archivos de ayuda de las últimas versiones. Por ello, en este curso pondré especial cuidado en traducir todos los términos ingleses que aparezcan. Sí existe una traducción al castellano del manual para la versión 5.5.3i, así como Informes sobre las novedades que incorporan las versiones 6.0 y 6.5. Estos textos aparecerán enlazados al final del presente capítulo.

Y ahora, a descargar. La versión 6.5.8 de PGP está disponible para los siguiente sistemas operativos en las direcciones que se acompañan:

Para otros sistemas operativos, existen versiones anteriores, a saber:

Los usuarios de Windows Me cuentan solamente con la versión 7.0.3. No obstante, se han detectado fallos en esta versión, así que quienes -en contra de mi recomendación- deseen usar dicha versión habrán de instalar con posterioridad dos parches adicionales:

Aviso para usuarios de Windows XP. En el momento de escribir estas líneas, no hay ninguna versión de PGP para Windows XP. Por sus similitudes con versiones anteriores de Windows, es de esperar que PGP 6.5.8 o 7.0.3 funcionen también en Windows XP, pero no hay garantía al respecto. Los usuarios que instalen PGP bajo Windows XP lo harán bajo su propia responsabilidad.

Ya tenemos el archivo de instalación esperando en las tripas de nuestro disco duro. Ahora, !quietos! Antes de ejecutarlo, una precaución elemental: antivirus al canto. No conozco ninguna versión de PGP que haya propagado jamás un virus, pero comprobar es siempre una precaución recomendable. Mejor prevenir que curar. ¿Libre de virus? Muy bien. Pues vamos allá. Descomprimamos el archivo .zip en un directorio temporal, y ejecutemos Setup.exe. Durante el proceso se le solicitará elegir un directorio para la instalación; supongamos para este ejemplo que escogemos C:\PGP.

A continuación se le darán a elegir diversos componentes para instalar. El primero de ellos (PGP Key Management) es el núcleo del programa, así que no lo podemos descartar. El segundo (PGPnet) es una utilidad para crear Redes Privadas Virtuales (VPN), es decir, una red local donde todas las comunicaciones estén cifradas. Usted no necesitará esta opción, sobre todo si no trabaja en redes de área local. Incluso si la necesita, recuerde que se ha informado de diversos fallos en PGPnet, que a veces interfiere con el funcionamiento normal del ordenador. Puesto que vamos a mantenernos simples, mi consejo es que NO instale PGPnet. Puede hacerlo en el futuro, si cree que lo va a necesitar.

Las tres opciones restantes son utilidades [plug-ins] para facilitar el uso de PGP en los principales programas de correo electrónico: Eudora (Light/Pro), Microsoft Exchange/Outlook y Microsoft Outlook Express. Si desea vd. utilizar un programa de correo electrónico distinto, probablemente haya un plug-in para usted. Deberá descargarlo e instalarlo. En caso se duda, consulte a su proveedor de software o al fabricante de su programa de correo

Tras la instalación, se le preguntará si tiene archivos de claves anteriores. Si esta es su primera vez con PGP, responda que no. Si le ofrece crear un par de claves, responda asimismo que no (paciencia, que ya llegaremos a ello). Y listo, el programa está instalado. Ahora, reinicie su ordenador. Antes de zambullirnos en el programa propiamente dicho, compruebe que hay ahora varias novedades en su ordenador. En la parte derecha de su barra de tareas aparece un icono con forma de candado que representa el programa PGPtray, que se carga en memoria al arrancar; si no quiere que eso suceda, puede eliminarlo quitando el icono similar que tiene ahora en la carpeta Inicio del menú Programa. Luego, apriete el botón "Inicio" en la parte inferior izquierda con el botón derecho del ratón. Aparece la palabra "PGP" y diversas opciones (Encrypt, Sign, Encrypt & Sign, Decrypt/Verify, Wipe). Estas mismas opciones aparecían pinchando cualquier archivo con el botón derecho del ratón dentro del Explorador de Windows.


3.4 - Generación de claves

Y ahora, a crear nuestro par de claves pública/privada. A pesar de la aparente complicación matemática que ello comporta, será muy fácil. Abra PGPkeys por primera vez (lo tiene en la carpeta PGP). Como aún no hemos creado ninguna clave, aparece el asistente de creación de claves (Key Generation Wizard). Lo primero que se pide es el nombre y la dirección de correo electrónico. Estos dos datos formarán el identificador (ID) de la clave. En principio, puede introducirse lo que se desee. No obstante, si alguien busca la clave pública de usted en un servidor de claves, le resultará mucho más fácil si introduce sus datos verdaderos. Usted decide. Vamos a crear una clave para Pepe Cripto, quien tiene una cuenta de correo pepecripto@micasa.com, introduciendo dichos datos

Y ahora, la pregunta del millón: ¿clave RSA o Diffie-Hellman? Las claves tipo RSA fueron usadas por las primeras versiones de PGP, hasta la 2.6.3. Al pasar a Windows, se comenzó a usar un nuevo tipo: Diffie-Hellman. Ambos tipos de claves son buenos. Se tiende ahora a usar las D-H, aunque muchos usuarios siguen fieles a las de viejo cuño. Las claves RSA se usan todavía, por ejemplo, para comunicaciones que utilizan PGP en combinación con repetidores anónimos de correo [remailers], así como en otros protocolos (OpenPGP, SSL). Mi recomendación es que prueba para empezar con las Diffie-Hellman. Y recuerde, puede usted crear tantos pares de claves como desee, de modo que nada le impide tener un par de claves de cada clase.

Nota. En PGP 7.0, las claves RSA creadas con versiones anteriores aparecen rotuladas como RSA Legacy Key

Las claves RSA se pueden elegir con longitudes de entre 1024 y 2048 bits; las Diffie-Hellman, entre 1024 y 4096 bits. En ambos casos, recomiendo elegir un tamaño de 2048 bits. Como hemos elegido las D-H, aparecerá algo del tipo "2048 Diffie-Hellman/1024 DSS" Esto se debe a que las claves D-H realmente se componen de dos sub-claves, una para cifrar (con clave de 2048 en nuestro caso) y otra para firmar (1024 bits). Suena algo complicado, pero no es nada que deba quitarnos el sueño.

Siguiente punto: elegir la fecha de caducidad de la clave. Esto resulta muy útil cuando, por las razones que sean, se desea que una clave solamente pueda ser usada en un intervalo de tiempo finito. Nosotros elegiremos claves que no caduquen (Key par never expires). Luego, algo muy importante: una frase de contraseña. Esta contraseña protegerá sus claves privadas (estrictamente hablando, la contraseña sirve para cifrar dicha clave mediante un algoritmo simétrico), así que hay que elegirla con cuidado. Use una contraseña lo bastante larga para que no se pueda obtener mediante un ataque de "fuerza bruta" (probando todas las claves posibles), que sea sencilla de recordar y no resulte fácil de adivinar. Si la barra de "passphrase quality" no se llena, es que la contraseña no es lo bastante larga.

Por favor, proteja y recuerde bien su contraseña. Si la olvida no podrá utilizar su clave privada, lo que significa que jamás podrá volver a descifrar o a firmar con ella. He perdido la cuenta del número de veces que he recibido mensajes del tipo "he perdido la contraseña, ¿qué puedo hacer?". En esos momentos, me suele venir a la memoria el aviso que aparecía en la puerta del infierno según Dante: abandonad toda esperanza aquellos que entráis aquí. Olvidar la contraseña es el mejor método para inutilizar una clave.

Tras la generación de las claves, se pregunta si deseamos enviar nuestra clave pública a un servidor de claves. Un servidor de claves es una especie de depósito donde se almacenan claves públicas. Resulta muy cómodo, pero todavía no vamos a enviar nuestra clave recién creada. Es mejor que primero se familiarice con PGP y su modo de funcionar. Así, si se equivoca (perdiendo la contraseña, por ejemplo), no hay más que borrar la clave y crear otra. Y con eso y un bizcocho ...

Presto, la comida está servida. Aparece por primera vez ante sus ojos el programa PGPkeys. Este es el alma de PGP. Pero antes de lanzarnos a saco sobre él, vamos a examinar nuestra clave recién creada.


3.5 - Así es nuestra clave

En primer lugar, busque su clave entre todas las que aparecen (no se preocupe por ellas, son claves públicas de prueba), pínchela con el botón derecho del ratón y seleccione Key properties; también puede ir al menú y elegir Key/Properties, o simplemente pulsar "Ctri+I" Aparecerán dos pestañas: General y Subkeys (esta última no aparece en el caso de claves RSA; ya veremos por qué). Comencemos por General. Como ven, aparecen muchas "cosas raras" Vamos a examinarlas, y verá como no son tan raras:

Como ve, hemos revisado de una tacada ambos tipos de claves. Si quiere usted crear una clave RSA para familiarizarse también con esa clase de claves, y para ver las diferencias, no tiene más que ir a PGPkeys/Keys/New Key y seguir los mismos pasos que cuando creó su primera clave.

Nota. Los usuarios de PGP versión 7.0 solamente advertirán las diferencias entre los formatos RSA y D-H cuando abran una clave RSA creada con una versión anterior del programa, en cuyo caso aparecerá como RSA legacy key. Las claves RSA creadas con PGP 7.0 tienen el mismo formato que las D-H, incluyendo subclaves.

A estas alturas, creo que ya estamos preparados para pasar al siguiente capítulo, en el que estudiaremos la aplicación PGPkeys y veremos cómo funciona. Sé que estará deseando cifrar, firmar y, en una palabra, sentir el poder de la criptografía de clave pública en la punta de sus dedos (vaya, qué poético me he levantado hoy). Pero vayamos por orden, no vaya a ser que metamos la pata por querer "trastear" con su nuevo programa de cifrado sin saber cómo se utiliza. Cada cosa a si tiempo.


3.6 - Para ampliar conocimientos

Como siempre, algo más de información para paladares hambrientos:

Diversos textos sobre PGP en castellano:

Finalmente, una alternativa en código libre: GnuPG


© Arturo Quirantes Sierra 2001