Pretty Good(tm) Privacy (PGP)

Por: Martín Gaynor


¿Que es PGP?

PGP, es una aplicación de alta seguridad criptográfica que puede ser utilizada bajo varias plataformas (MSDOS, UNIX, VAX/VMS), nos permite intercambiar archivos o mensajes con privacidad, autenticidad y conveniencia.

La Privacidad significa que solamente aquellas personas a las cuales se pretende enviar un mensaje puede leerlo. La Autenticidad significa que los mensajes que parecen ser de una persona en particular, solamente puede haber sido originado por esa persona. La Conveniencia significa que la privacidad y la autenticidad es dada sin la necesidad del manejo de llaves asociadas con programas convencionales de criptografía.

Con PGP no se necesitan canales seguros para intercambiar las llaves entre los usuarios, lo cual hace mas fácil su utilización; ésto es porque PGP esta basado en una tecnología llamada criptografía de llave pública.


¿Porque necesitas PGP?

Lo necesitas porque es personal, es privado y solamente es tuyo. Podemos estar planeando un campaña política, discutir nuestros impuestos, o podemos tener una relación ilícita (¡¡¡interesante verdad!!!). O podríamos estar realizando algo que no sentimos que es ilegal, pero lo es. No importa lo que esto sea, no queremos que nuestro correo electrónico privado (E-mail) o documentos confidenciales pueden ser leídos por otras personas.

Hoy en día si el gobierno desea violar la privacidad de sus ciudadanos, tiene que invertir una buena cantidad de dinero para interceptar, abrir y leer nuestro correo, escuchar y posiblemente transcribir conversaciones habladas por teléfono. Este tipo de trabajo de monitoreo intensivo no es práctico. Esto es solamente realizado en casos importantes que parecen valer la pena (espionaje, contraespionaje)...

Más y más de nuestras comunicaciones privadas están siendo enrutadas a través de canales electrónicos. El correo electrónico esta remplazando gradualmente el correo de papel convencional. Los mensajes de e-mail son muy fáciles de interceptar y revisar por palabras claves interesantes. Esto puede realizarce fácil, rutinaria, y automáticamente sin ser detectado.

Al parecer nos estamos moviendo a un futuro donde la nación estará cruzada por redes de datos de fibras ópticas de alta capacidad enlazadas a nuestras computadoras personales. Obviamente el correo electrónico (e-mail) será normal para todos, y no la novedad que es hoy en día.

En 1991 el senado de los Estados Unidos propuso una ley, que forzaba a los fabricantes de equipo de comunicaciones instalar puertas especiales en sus productos, para que el Gobierno pudiera leer cualquier mensaje encriptado. Y dice:

"Es el sentir del Congreso que los proveedores de servicios de comunicaciones electrónicas y fabricantes de equipos de servicios de comunicaciones, permitan al Gobierno obtener de los sistemas de comunicaciones, el contenido en texto de voz, datos y otras comunicaciones cuando este sea apropiadamente autorizado por la ley."

Esta medida fue desechada después de una rigurosa protesta por libertadores civiles y grupos industriales.

Si la privacidad es permitida, ¿Sólo lo permitido tendrá privacidad?. Las agencias de Inteligencia tienen acceso a muy buena tecnología criptográfica, debido al tráfico de armas y de drogas, al igual que los contratistas de defensa, compañías de petróleo y otras corporaciones gigantes; pero las personas ordinarias y las organizaciones políticas no tenían acceso a esta tecnología militar de llaves públicas criptográficas hasta ahora.

PGP da el poder a las personas de tomar su privacidad en sus propias manos. Es por eso la necesidad de la utilización de esta tecnología.


¿Como trabaja PGP?

Para saber como trabaja PGP nos ayudaría muchisimo si estuviéramos familiarizados con el concepto de criptografía en general y criptografía de llave pública en particular. Si no estamos familiarizados con éstas, aquí se mencionan unas cuantas cosas acerca de criptografía de llave pública.

Terminología Elemental. Supongamos que yo quiero enviarte un mensaje, pero no quiero que otra persona sea capaz de leer dicho mensaje; puedo encriptarlo, lo que significa que lo mezclo de una manera complicada, dejándolo imposible de leer para todos excepto tú. Posteriormente te doy una llave criptográfica para encriptar el mensaje, y tu tienes que utilizar la misma llave para descifrar o desencriptar el mensaje. Por lo menos así es como trabaja dentro de criptosistemas convencionales de una sola llave.

Dentro de los criptosistemas de llave pública, cada uno tiene dos llaves relacionadas complementariamente, una llave publicamente revelada al mundo y una llave secreta (usualmente llamada llave privada). Cada llave desbloquea el código que la otra crea. El saber la llave pública no nos ayuda para deducir la llave secreta correspondiente.

Cualquier persona puede utilizar la llave pública de la persona a quien vá el mensaje para encriptar un mensaje a una persona, y el destinatario utiliza su propia llave secreta correspondiente para desencriptar dicho mensaje. Ninguna otra persona mas que el destinatario puede desencriptar el mensaje, ya que nadie mas puede accesar a esa llave secreta. Ni la persona que encripto el mensaje puede desencriptarlo.

La autenticidad del mensaje también es proveída. La propia llave secreta del que envía el mensaje puede ser utilizada para encriptar un mensaje firmándolo. Esto crea una firma digital de un mensaje, la cual el destinatario puede checar utilizando la llave pública de la persona que envío el mensaje para desencriptarlo. Esto prueba que el enviante fue el verdadero originador del mensaje, y el mensaje no ha sido alterado por nadie mas.

Los procesos que son combinados para proveer tanto privacidad y autenticidad a un mensaje son:


¿Como instalo PGP en mi computadora?

La versión del paquete para MsDOS se encuentra en un archivo comprimido llamado de la siguiente forma: PGPxx.ZIP (cada versión liberada contiene un numero diferente para xx en el nombre del archivo). Por ejemplo, la versión 2.6 es llamada PGP26.ZIP. El archivo puede se descomprimido por la utileria de descompresión PKUNZIP, o por la utileria de UNIX unzip.

Una vez que PGP es descomprimido, una serie de archivos emergen de tal acción. Uno de los archivos extraídos es el README.DOC, que al igual que en toda instalación de un paquete, este archivo DEBE SER LEIDO como primer paso antes de comenzar toda la instalación. El archivo contiene todas las nuevas de esta versión de PGP, al igual que información de que es lo que contienen los demás archivos extraídos.

Si ya se cuenta con una versión mas vieja de PGP, debemos renombrarla para no tener conflictos con el nuevo PGP.

Para una descripción completa de como instalar PGP, hay que leer PGP Installation Guide, que se encuentra dentro de SETUP.DOC.

Rápidamente daré los pasos de instalación por si eres una persona impaciente y ya quieres comenzar a utilizar PGP.

PASOS:

  1. Copiar el archivo PGPxx.ZIP a un directorio de tu disco duro (C:\PGP).
  2. Descomprimir el archivo con PKUNZIP.
  3. Modificar el archivo AUTOEXEC.BAT, como se describe en el Manual.
  4. Si nunca antes has corrido PGP, el primer paso es crear el par de llaves para ti, con el mando pgp -kg.

    Ojo: Leer la sección del manual llamado "RSA Key Generation".

    Para instalar sobre UNIX se utiliza un proceso similar a la instalación sobre MsDOS, pero tienes que compilar el código fuente primeramente. Un archivo de compilación (Makefile) es proveído con la versión para este propósito.

    
    
    ¿Como uso PGP?

    Para ver un sumario de todas las opciones que contiene PGP lo podemos hacer con:

    pgp -h

    
    
    Manejo de las llaves

    Generación de las llaves

    Para generar tu propio y único par de llave secreta/pública de un tamaño especifico, teclea:

    pgp -kg

    PGP te muestra un menú de tamaño de llaves recomendados y te pide que indiques el tamaño de llave quieres utilizar. Entre mas grande sea la llave, obtendrás mayor seguridad, pero se paga un precio en la velocidad.

    También te preguntará por un ID de usuario, lo cual significa que escribas tu NOMBRE. Es buena idea usar el nombre completo como tu ID de usuario, debido a que es menos riesgoso que otras personas utilicen la llave pública equivocada para encriptar mensajes a ti. También se permite que utilices espacio y signos de puntuación. También ayudará si pones tu dirección de correo electrónico en < > después de tu nombre, como por ejemplo:

    • Jesús Martín Gaynor Anaya

    Si no se tiene una dirección de correo electrónico, utiliza tu número de teléfono o alguna otra información única que te ayude a asegurar que tu ID de usuario es único.

    PGP te preguntará por una frase como passwd para proteger tu llave secreta en caso de que esta caiga en manos de equivocadas. NADIE puede usar tu archivo de llave secreta. Esta frase es como un passwd, excepto de que puede ser toda una frase o un enunciado con muchas palabras, espacio, signos de puntuación, o cualquier otra cosa que desees. Hay que tener mucho cuidado de no perder esta frase de passwd, ya que no hay manera de ser recuperarla.

    Esta frase será necesitada cada vez que utilices tu llave secreta. La frase, es sensitiva a la letra, y no deberá ser muy corta o fácil de adivinar. Nunca es desplegada en la pantalla y no la dejes escrita en cualquier parte donde alguien pueda verla, ni tampoco la almacenes en tu computadora. Si no quieres una frase de passwd (eres un tonto!!!), solamente presiona el retorno de carro en el prompt de la frase de passwd.

    El par de llaves pública/secreta es derivado de números aleatorios principalmente midiendo el intervalo entre los tecleos con un temporizador (reloj). El programa te pedirá que teclees algún texto aleatorio para ayudarlo a acumular algunos bits para la generación de las llaves.

    Se recomienda que no se tecleen palabras repetidas.

    El par de llaves serán puestas en tu anillo de llave pública y secreta. Después tu puedes utilizar la opción del mando -kx para extraer una copia de la nueva llave pública y ponerla en un archivo separado de llave pública el cual puedes distribuirlo a tus amigos. Ojo, te debes de quedar con tu llave secreta. Cada una de las llaves secretas en el anillo de llaves e individualmente protegido con su propia frase de passwd.

    
    
    Agregar una llave a tu anillo de llaves

    Algunas veces vas a querer agregar a tu anillo de llaves una llave de alguna otra persona, en la forma de un archivo de llaves.

    Para agregar el contenido de los archivos de llaves públicas o secretas o anillos de llaves secretas, teclea lo siguiente:

    pgp -ka keyfile [keyring]

    La extensión por omisión del archivo keyfile es .pgp. El nombre del archivo llave anillo por omisión es pubring.pgp o secring.pgp, dependiendo si el archivo contiene un llave pública o secreta. También puedes especificar un nombre diferente para el anillo de llaves con la extensión .pgp. Si la llave que tratas de agregar a tu anillo de llaves ya se encuentra, PGP no la agregará otra vez.

    
    
    Copiando una llave de tu anillo de llaves

    Para extraer o copiar una llave de tu anillo de llave pública o secreta, teclea:

    pgp -kx userid keyfile [keyring]

    Esto es útil si deseas dar una copia de tu llave pública a otra persona. Si la llave contiene alguna firma certificada agregada a esta en el anillo de llaves, esta no es copiada junto con la llave. Si deseas que la llave extraída sea representada con caracteres ASCII para propósito de correo electrónico, usa la opción -kxa.

    
    
    Borrando una llave o un ID de usuario del anillo de llaves

    Para borrar una llave o un ID de usuario del anillo de llaves, teclea:

    pgp -kr userid [keyring]

    Este procedimiento busca el ID de usuario especificado en tu anillo de llaves, y lo borra si es que lo encuentra, hay que recordar que cualquier fragmento del ID del usuario será suficiente para cotejar. El nombre del archivo keyring se asume que es pubring.pgp, por lo que puede ser omitido o puedes especificar un nombre diferente.

    Si existe mas de un ID de usuario para esta llave, el programa te preguntará si deseas borrar solo el ID de usuario que tu especificaste.

    
    
    Encriptar un mensaje

    Para encriptar un archivo de texto con la llave publica de la persona a la que va dirigido, se escribe:

    pgp -e archivo userid

    Este mando produce un archivo cifrado llamado archivo.pgp (donde archivo es el nombre especificado). Ejemplo:

    • pgp -e letter.txt Alice

      o: pgp -e letter.txt "Alice S"

    El primer ejemplo busca en el archivo del anillo de llave pública pubring.pgp por alguna llave que certifique que contiene la cadena Alice. Y el segundo ejemplo busca cualquier identificador de usuario que contenga la cadena "Alice S". Dicha búsqueda NO es sensitiva a la letra. Si encuentra una llave pública en el archivo de llaves, la utiliza para encriptar el archivo letter.txt, y produce un archivo cifrado llamado letter.pgp. Primero PGP intenta comprimir el archivo texto antes de ser encriptado, es por eso que comúnmente el archivo cifrado es más pequeño que el archivo original. Si se quiere enviar este archivo encriptado por E-mail, hay que convertirlo a un formato de ASCII agregando la opción -a, como se describe mas adelante.

    
    
    Encriptar un mensaje para varias personas

    Si se quiere enviar un mensaje cifrado a mas de una persona, debemos especificar la encriptación para varios destinatarios, cualquiera de ellos puede desencriptar el mismo archivo cifrado. Para especificar esto, solamente hay que agregar mas ID's de usuarios en la línea de mando, como a continuación se muestra:

    pgp -e letter.txt Alice Bob Carol

    Esto creara un archivo cifrado llamado letter.pgp que puede ser desencriptado por Alice o Bob o Carol.

    
    
    Utilizando solamente encriptación convencional

    Algunas veces solamente necesitamos encriptar una archivo de manera vieja, con criptografía de una sola llave. Esto es útil para proteger los archivos que serán almacenados pero no van a ser enviados a ninguna persona. Ya que la misma persona que encripto el archivo lo desencriptara, la criptografía de llave pública no es en este caso necesaria.

    Para encriptar un archivo de texto con criptografía convencional, solamente teclea:

    pgp -c textfile

    Este ejemplo encripta el archivo textfile, produciendo un archivo cifrado llamado textfile.pgp. Nos pregunta por una frase clave para utilizarla como llave convencional para cifrar el archivo. Esta frase no debe ser la misma frase que se utilizó para nuestra propia llave secreta. Hay que notar que PGP intenta comprimir el archivo texto entes de encriptarlo.

    
    
    Desencriptando y checando firmas

    Para desencriptar un archivo encriptado, o checar la integridad de la firma de un archivo, teclee :

    pgp archivo_cifrado [-o archivotexto]

    Hay que hacer notar que los corchetes ([]) denotan un campo opcional.

    El nombre del archivo_cifrado se asume que tiene la extensión de default de .pgp. Y el archivotexto de salida especifica donde dejar el archivo de salida. Si no se especifica algún nombre, el nombre del archivo cifrado es utilizado sin extensión. Si alguna firma se encuentra anidada dentro del archivo encriptado, esta es automáticamente desencriptada y la integridad de la firma es checada y el Identificador completo del firmante es desplegado.

    Todo este procedimiento es completamente automático, sin importar si el archivo texto cifrado ha sido firmado, solamente encriptado o ambos.


Bueno estos son solamente algunos de los mandos y tareas que podemos realizar con PGP.

La pregunta es:

¿Que tan importante y confidencial es nuestra información, para permitir solamente a algunas personas tener acceso a esta?

¿Sera cierto que PGP me brinda la privacidad que yo necesito?

Solamente tu tienes la respuesta, tu sabes que tan confidencial es tu información, y si es bueno o no PGP, solamente con la utilización de este nos vamos a dar cuenta, asi que los que quieran incursionar en esto, yo estoy apuntado.


Información acerca del Autor.

El autor de PGP es un ingeniero de sotware llamado Philip Zimmermann con 19 años de experiencia, especializado en criptografía, autenticidad y comunicaciones de datos.

Su experiencia incluye el diseño e implementación de sistemas de autenticidad para redes de información financiera, seguridad en redes de datos, protocolos en el manejo de llaves, sistemas operativos y redes de área local.

Dirección: