Introducción
PGP son las siglas de Pretty Good Privacy; con ellas se hace referencia a la aplicación criptográfica más popular entre toda la comunidad informática.
Con PGP obtenemos la herramienta adecuada para asegurar la privacidad y la autentificación de la información en redes de comunicaciones inseguras como puede ser Internet.
Con la privacidad conseguimos que únicamente el destinatario de la información pueda hacer uso de ella. Si esta información cayera en manos de otra persona le resultaría totalmente inútil ya que no podría desencriptarla.
Con la autentificación se puede asegurar que una cierta información generada por una persona proviene efectivamente de ella y no ha sido manipulada o falsificada por ninguna otra.
El PGP se basa en un sistema criptográfico conocido como de llave pública, que puede ser usado en canales inseguros, lo que le hace perfecto para asegurar la privacidad de la información que es transmitida por redes como Internet.
No hace falta estar involucrado en una trama de espionaje industrial :) para querer privacidad en tus comunicaciones y por tanto tener necesidad de usar una herramienta criptográfica. Algo tan simple y útil como el E-Mail puede ser la razón perfecta para comenzar a usar PGP. Veamos por qué:
- Podemos comparar al E-Mail con las postales. Todo el mundo por cuyas manos pasa una postal puede leerla, ya que no hay ningún obstáculo físico para ello. En cambio, con una carta dentro de un sobre obtenemos más privacidad. La gente maneja el sobre, pero no ve la carta, y si quiere leer la carta debe romper el sobre.
- Podemos hacer una analogía entre el sobre de nuestras cartas y PGP, que actuaría como el sobre de nuestro E-Mail, ya que no permite que nadie excepto el receptor legítimo del mismo pueda leerlo; esta es una de las muchas ventajas que, como más adelante veremos, tiene usar PGP.
Cómo funciona la criptografía de llave pública
En sistemas de llave pública, cada persona tiene dos llaves que son complementarias entre sí, una es la llave pública y otra la llave privada.
La llave pública puede y debe ser difundida libremente, ya que será con ella con la que el resto de personas podrán enviarte información de manera privada. A través de la llave pública no se pone en peligro la privacidad de tu llave privada.
Supongamos dos amigos, Juan y Pedro. Juan podrá enviar información privada a Pedro si conoce su llave pública. Por otro lado, Pedro podrá desencriptar el mensaje que le ha enviado Juan con su propia llave privada. Supongamos que hay otra persona, Marcos, que intercepta el mensaje que ha enviado Juan a Pedro, pues bien, Marcos no va a poder hacer nada con ese mensaje porque desconoce la llave privada de Pedro. Incluso Juan que es quien ha generado el mensaje no puede desencriptarlo, únicamente podrá hacerlo Pedro.
La seguridad del sistema se basa en que cada uno guarde su llave privada, aunque la llave pública pueda ser ampliamente conocida. Si alguien se plantease romper el sistema desconociendo la llave privada del receptor, tardaría tantos años en hacerlo que sería inútil.
Como se ha comentado en la introducción, además de privacidad, PGP también ofrece autentificación de la información. Veamos por qué:
Nuestra llave privada, además de para encriptar los mensajes, también puede ser usada para "firmar" la información enviada, de forma análoga a las firmas que realizamos a menudo sobre documentos en papel.
Un documento que haya sido firmado digitalmente con nuestra llave privada, podrá ser autentificado por cualquiera que disponga de nuestra llave pública. Esto es útil para comprobar que el documento proviene efectivamente de quien se supone y que nadie lo ha manipulado o falsificado.
Ambos procesos, encriptación y firma, pueden ser realizados para ofrecer privacidad y autentificación. Primero se firma el documento con nuestra llave privada para después encriptarlo usando la llave pública del receptor.
El receptor al recibir el documento invierte los pasos, desencriptando primero el documento con su llave privada y comprobando después nuestra firma con nuestra llave pública.
Todos estos procesos se pueden automatizar como veremos más tarde.
Una llave pública es almacenada por PGP en lo que llama certificado de la llave (key certificate), que no es más que la propia llave pública junto al nombre de la persona a la cual pertenece la llave y la fecha en la cual fue generada.
La llave privada está protegida con una contraseña, que impide su utilización por cualquier usuario ilegítimo.
Las llaves son guardadas juntas en un fichero denominado llavero (key ring), que almacena varios certificados de llave. Tendremos normalmente un llavero para las llaves públicas y otro para las privadas.
Las llaves son internamente referenciadas por un identificador (key ID) que son los últimos 64 bits de la llave. Al mostrar la información de la llave únicamente se mostrarán los últimos 32 bits. Estos identificadores serán usados, por ejemplo, para que PGP localice una llave a la hora de desencriptar un mensaje.
Cuando firmamos un documento, PGP genera 128 bits que representan al documento. Esta firma es una especie de checksum o CRC que va a permitir detectar cambios en el documento. A diferencia de un CRC o checksum normal, un posible impostor no va a ser capaz de regenerar esta firma para que se adecue a los cambios que ha podido introducir en el mensaje original, ya que la firma se realiza usando la clave privada del emisor; y el impostor normalmente la desconocerá.
Versiones de PGP
Una vez que ya sabemos para qué nos va a ser útil PGP, seguramente tengamos como mínimo ganas de probarlo.
Llegados a este punto hay que destacar el considerable desconcierto que aparece con las diferentes versiones de PGP existentes. Debido a la política existente en Estados Unidos en lo referente a exportación de material criptográfico, han ido surgiendo diferentes versiones de PGP y diferentes legislaciones para su uso. Con la intención de aclarar un poco todo este lio expondré a continuación las diferentes versiones de PGP existentes a fecha de hoy. Versiones Freeware de PGP:
- PGP 2.3a
Es la versión "clásica" de PGP. Se puede seguir usando hoy día aunque se pueden surgir algunos problemas de compatibilidad al procesar llaves y mensajes generados con las versiones 2.6.x y posteriores o cuando se usan llaves mayores de 1280 bits. Se supone que PGP 2.3a no se puede usar fuera de Estados Unidos debido a restricciones en la patente.
- PGP 2.6ui
Es una versión no oficial de PGP 2.3a que corrige los problemas de incompatibilidad antes comentados. Esta versión no es una versión 2.6.x ya que se basa en los fuentes de la 2.3a.
- PGP 2.62ui
Se basa en los fuentes de la 2.6ui, es una modificación que intenta ser compatible con las últimas novedades incorporadas en las versiones 2.6.x.
- MIT PGP 2.6.2
Es la última versión oficial de PGP. Sus mensajes no pueden ser leidos por versiones anteriores a la 2.5 y usa la librería de encriptación RSAREF. Es ilegal exportar esta versión fuera de los Estados Unidos, pero curiosamente una vez exportada puede ser usada libremente.
- PGP 2.6.3i
Se basa en los fuentes del MIT PGP 2.6.2 los cuales sido modificados para su uso internacional. Uno de esos cambios es la no utilización de la libreria RSAREF anteriormente comentada. El uso de esta versión dentro de los Estados Unidos es ilegal.
- PGP 5.0
PGP 5.0 (anteriormente conocido como PGP 3.0) es una versión de PGP totalmente nueva, sus fuentes han sido reescritas desde cero. Añade nuevas opciones, incluyendo soporte para otros algoritmos de encriptación además del RSA y el IDEA. Incluirá un GUI para simplificar su manejo. Se espera que esté disponible para su uso internacional a mediados de este verano.
Versiones comerciales de PGP (para Estados Unidos y Canadá únicamente):
- ViaCrypt PGP 2.7.1 y 4.0
Al ser comercial incluye manual, licencia de uso individual. No incluye fuentes.
- PGP 4.5 y 5.0
En Junio de 1996 PGP Inc. compra ViaCrypt y comienza a desarrollar versiones comerciales de PGP para los Estados Unidos y Canadá. La versión más reciente es PGPMail 4.5.
En nuestro caso, si nos encontramos fuera de Estados Unidos, la versión correcta a usar es la 2.6.3i, si estamos en Estados Unidos debemos optar por la 2.6.2 o la 2.6.3.
Hay que tener en cuenta que aún hay algunos paises como Francia, Iran, Iraq, Rusia y China donde el uso de la criptografía está regulado legalmente o prohibido.
Algunos links interesantes para conseguir la versión 2.6.3i para diferentes distribuciones de Linux:
Instalación de PGP
Ya hemos obtenido el PGP. Suponemos que hemos obtenido el fichero con el código fuente de la versión 2.6.3i de tal forma que en nuestro disco duro tenemos el fichero pgp263is.tar.gz
Lo primero es crear un directorio para descomprimir el fichero:
mkdir pgp
A continuación descomprimimos el fichero:
tar -C ./pgp -xzvf pgp263is.tar.gz
Nos cambiamos al directorio que hemos creado y donde hemos descomprimido el fichero:
cd pgp
A continuación descomprimimos el fichero pgp263ii.tar que contiene la documentación y el código fuente del programa, para ello ejecutamos el comando:
tar -xvf pgp263ii.tar
El siguiente paso es compilar el PGP. Si no hemos obtenido las fuentes, sino la versión compilada ya sea a.out o ELF, podemos saltarnos este paso. Si hemos optado por la versión con las fuentes, para compilarlas deberemos realizar las siguientes operaciones:
cd src
make linux
Si todo va bien, tendremos en este directorio un fichero pgp ejecutable. Si estamos haciendo una instalación global para el sistema, podemos copiarlo a /usr/local/bin a /usr/bin o donde mejor creamos. En caso contrario podemos dejarlo en nuestro directorio personal.
De igual manera, podemos copiar la pagina de manual pgp.1 a /usr/man/man1 en caso de que estemos haciendo una instalación para todo el sistema.
Configuración Básica
PGP usa por defecto el directorio ~/.pgp para encontrar los anillos de llaves y algunos ficheros de configuración así que como primer paso deberemos crear este directorio en nuestro directorio personal:
cd
mkdir .pgp
Si nos fijamos en los ficheros que tenemos, veremos un fichero config.txt que sirve para configurar algunos aspectos de PGP. Para tener una configuración personalizada podemos copiar este fichero a nuestro recién creado directorio ~/.pgp
Opcionalmente, en vez de ~/.pgp/config.txt podemos llamarlo .pgprc y almacenarlo en nuestro directorio, es decir, ~/.pgprc
Entre otras cosas, en este fichero se puede especificar el lenguaje a usar con el parametro Languaje, podemos tener:
Languaje = en (Inglés)
Languaje = es (Castellano)
Languaje = ja (Japonés)
... y otros más que vienen especificados en este fichero. Para sacar provecho de esta opción deberemos copiar el fichero languaje.txt a ~/.pgp
Otra cosa recomendable es copiar también el fichero de ayuda personalizado para nuestro lenguaje a ~/.pgp en nuestro caso para el fichero en castellano copiariamos el fichero es.hlp
Creación del par de llaves
El siguiente paso para poder comenzar a usar PGP es crear nuestro par de llaves (Pública/Privada). Para ello ejecutaremos el comando:
pgp -kg
Se nos pide que elijamos el tamaño de la llave (512, 768 o 1024), cuanto mayor sea la llave más seguridad obtendremos a cambio de una pequeña penalización en velocidad.
Tras elegir el tamaño de la llave, se nos pide el identificador que queremos darle a nuestra llave pública. Aquí se suele poner nuestro nombre y dirección de E-Mail, en mi caso por ejemplo he puesto: Angel Lopez Gonzalez <alogo@mx2.redestb.es>
A continuación se nos pide una contraseña para proteger nuestra llave privada, elige como contraseña una frase que te sea fácil de recordar. Esto se hace para proteger tu llave privada en caso de que te la roben, ya que no se puede usar sin introducir primero esta contraseña.
A continuación deberemos pulsar aleatoriamente varias teclas con el fin de ayudar a crear una secuencia de bits que el programa usará para generar números aleatorios. El programa se basa en el intervalo de tiempo pasado entre cada una de nuestras pulsaciones para crear esta secuencia de bits.
PGP generará las llaves tras unos segundos de espera y se nos notificará con un mensaje. Podemos comprobarlo cambiando a nuestro directorio ~/.pgp y viendo que se han creado dos ficheros nuevos: pubring.pgp y secring.pgp
El primero, pubring.pgp, es el anillo con las llaves públicas, por el momento solo tiene la nuestra.
El segundo, secring.pgp, es como te imaginas el anillo con las llaves privadas, que también contiene solo la que acabamos de crear.
Hay que recordar que toda la seguridad de los métodos de llave pública se basa en la privacidad, valga la redundancia, de nuestra llave privada; por tanto, asegúrate que nadie más en el sistema puede acceder a tu anillo con llaves privadas, fíjate en los permisos de secring.pgp y asegúrate que únicamente tú tienes acceso de lectura y escritura, el resto no deben tener ningún acceso.
Por último decir tanto la información, que sirve de identificación para las llaves, como las contraseñas de las llaves privadas, pueden ser editadas y modificadas con el comando:
pgp -ke identificador [anillo]
Añadiendo llaves a un anillo
Llegados a este punto, seguramente quieras añadir las llaves públicas de tus amigos en el anillo de llaves públicas. Para ello has debido de conseguir estas llaves públicas de algún modo: en un servidor de llaves, directamente de la persona en cuestión, haciendo un finger a su cuenta, por E-Mail, etc... recordemos que la llave pública puede distribuirse libremente y no hace falta que sea transmitida por un canal seguro, como en los métodos de encriptación de una sola clave.
Supongamos que tenemos una llave en el fichero llave.pgp, para añadirla a uno de los anillos haremos:
pgp -ka llave [anillo]
Por defecto se toma la extensión .pgp para el fichero con la llave, y los nombres pubring.pgp y secring.pgp para los nombres de anillo dependiendo de si la llave es pública o privada.
Cuando se añade una llave, PGP puede avisar de que la llave que se está añadiendo no está completamente certificada, con esto nos está avisando de que la llave que tenemos en nuestra mano pueda ser falsa y no pertenecer realmente a quién se supone que es su dueño.
Si tenemos la seguridad de que la llave es correcta, ya sea porque nos la ha dado en persona o por un canal seguro, entonces podemos certificarla nosotros mismos, lo que significa que estamos firmando esa llave nosotros.
Esto posibilita que si pasamos esta llave a otra persona y ella confía en nosotros, tenga la seguridad que la llave que le estamos pasando sea buena y pertenezca realmente a quién dice pertenecer.
Este matiz tiene incluso un nombre, y es web trust o red de confianza. En Estados Unidos incluso se hacen reuniones entre usuarios de PGP donde se intercambian las llaves públicas y se las firman entre ellos :)
Pongamos un ejemplo con nombres para aclarar este concepto. Imaginemos a dos amigos, Juan y Pedro. Juan da a Pedro su llave pública. Pedro está seguro que la llave que tiene de Juan es correcta y no es de ningún impostor ya que el mismo Juan se la ha dado en mano. Cuando llega a su casa y la añade a su anillo de llaves públicas puede certificar que la llave de Juan es correcta firmándola con su propia llave privada.
Ahora entran en escena otras dos personas Luis y Maria. Luis recibe de Pedro la llave de Juan y más tarde Luis se la pasa a María. María no se fía mucho de Luis pero ve que la llave de Juan está certificada por Pedro. María puede comprobar la llave pública de Juan gracias a la firma que Pedro puso en ella. María tiene la llave pública de Pedro y éste se la dió en mano con lo que María confía en ella y puede comprobar la veracidad de la llave de Juan a través de la firma de Pedro aunque no haya confiado en Luis.
Todo este lío :) se monta para intentar asegurar el único punto débil de la criptografía de este tipo y es el echo de que las llaves públicas puedan ser falsificadas.
Quitando llaves de un anillo
Siguiendo con nuestra pequeña guía de uso del PGP, el siguiente paso tras saber cómo añadir llaves a un anillo, es saber como eliminarlas, esto lo podemos hacer con el comando:
pgp -kr identificativo [anillo]
Por ejemplo: pgp -kr juan elimina la llave que tenga la cadena "juan" en alguna parte de su identificativo. Por defecto se toma el anillo de llaves públicas.
Extrayendo una llave
Ya hemos guardado la llave de alguno de nuestros amigos en nuestro anillo de llaves públicas, pero ahora tenemos que mandarle la nuestra. Para ello debemos extraerla de nuestro anillo:
pgp -kx identificativo fichero [anillo]
Por ejemplo: pgp -kx angel millave extraería la llave pública identificada por la subcadena "angel" al fichero millave.pgp
Si hacemos un cat de millave.pgp veriamos que no es un fichero ASCII, si queremos que la llave se represente en ASCII para poder enviarla por E-Mail o ponerla como información adicional para un finger, se haría:
pgp -kxa identificativo fichero [anillo]
Por ejemplo: pgp -kxa angel millave extrae la llave pública identificada por la subcadena "angel" al fichero millave.asc
Junto con la llave se extraen también todos los certificados que se hayan hecho de ella.
Contenido de un anillo
Para ver las llaves contenidas en un anillo basta con el comando:
pgp -kv [identificativo] [anillo]
De nuevo por defecto se toma el anillo de llaves públicas, pubring.pgp De no indicar identificativo se mostrarán todas las llaves del anillo.
Si se quieren ver también todos los certificados para cada llave, se usaría:
pgp -kvv [identificativo] [anillo]
Encriptando un mensaje
Ya sabemos manejar las llaves, así que podemos empezar a usarlas en serio, para ello vamos a ver como encriptariamos un fichero:
pgp -e fichero identificativo
Pongamos un ejemplo. Un profesor quiere mandarle a otro por E-Mail un examen, y lo quieren encriptar para que ningun alumno lo intente coger :) supongamos que el segundo profesor se llama Marcos y el identificativo de su llave pública como es su nombre contiene por tanto esta cadena, el primer profesor haría:
pgp -e examen.doc marcos
Este comando produce un fichero de nombre examen.pgp que contiene el fichero de texto examen.doc encriptado de tal manera que únicamente lo podrá desencriptar Marcos ya que se ha usado su llave pública.
Únicamente resaltar que el fichero examen.pgp obtenido no es un fichero ASCII, si quisiéramos mandarlo por E-Mail añadiríamos la opción -a, para que la salida fuese ASCII, de la siguiente manera:
pgp -ea examen.doc marcos
Al encriptar el fichero nos puede interesar, por motivos de seguridad, que PGP borre el original automáticamente una vez que lo ha encriptado, para ello añadimos la opción -w:
pgp -eaw examen.doc marcos
Encriptando un mensaje para varios receptores
Imaginemos ahora que el profesor del ejemplo anterior quiere enviar el examen a todos sus compañeros de departamento, para ello únicamente tiene que indicar varios identificadores en vez de uno solo:
pgp -ea examen.doc marcos juan alicia
Notese como incluimos el parámetro -a para que la salida sea un fichero ASCII para que pueda ser enviado como mensaje de correo.
Cómo firmar un mensaje
Ya hemos comentado con anterioridad que la firma digital de un mensaje es análoga a la firma que podemos realizar en un documento de papel. El que firmemos un documento va a permitir que el receptor del mismo pueda verificar que el documento no ha sido modificado y que realmente viene de nosotros.
Para firmar un documento con nuestra llave privada haremos:
pgp -s fichero [-u identificador]
Si tenemos varias llaves privadas en nuestro secring.pgp podemos elegir una de ellas con el identificador.
Para que nuestro profesor del ejemplo firme el examen digitalmente de tal manera que el resto de profesores no piense que algún alumno gracioso ha hecho un examen y se lo ha mandado a ellos :) podría hacer:
pgp -s examen.doc
Con el comando anterior se crearía un fichero examen.doc.pgp que no está en ASCII ya que se intenta comprimir después de firmarlo. Si lo que se quiere es firmar un documento pero que se pueda seguir leyendo directamente y que la firma aparezca al final del mismo, se puede hacer con el comando:
pgp -sta examen.doc
Este último comando puede ser muy útil para firmar correo electrónico de tal manera que pueda seguir siendo leido incluso para aquellos que no tengan PGP o no quieran comprobar la firma.
Podemos firmar un documento y posteriormente encriptarlo con el siguiente comando:
pgp -es fichero identificador_receptor
[-u mi_identificador] Por ejemplo:
pgp -es examen.doc marcos -u angel
Encripta y firma el fichero examen.doc creando el fichero examen.pgp, la llave pública usada para encriptar el fichero es la identificada por la cadena "marcos" por lo que unicamente el dueño de tal llave pública podrá desencriptar este mensaje, identifico mi llave privada con la cadena "angel" ya que en mi anillo de llaves privadas puedo tener varias llaves.
De nuevo podría usar la opción -a para obtener como resultado un fichero ASCII.
Quizás otra opción que nos interese sea generar la firma en un fichero a parte del de datos, para ello se usa la opción -b:
pgp -sb examen.doc
Con este comando se crearía un fichero examen.sig que contiene únicamente la firma.
Desencriptando
Para desencriptar un fichero y/o para comprobar la firma usaremos el comando:
pgp fichero_entrada [-o fichero_salida]
El fichero de entrada se asume que por defecto tiene la extensión .pgp El fichero de salida es opcional y es donde se almacenaría el fichero desencriptado, si no se especifica la salida se guarda en el fichero de entrada pero eliminando la extensión.
Al desencriptar un fichero podemos indicar que la salida sea a la salida estandard en vez de a un fichero, esto lo conseguimos con la opción -m:
pgp -m fichero
También podemos usar pipes para entrada y salida, con la opción -f:
pgp -fs identificador < fichero_entrada >
fichero_salida
Se puede dar el caso de que deseemos desencriptar un mensaje firmado que nos llegue pero nos interesa que siga manteniendo su firma, quizás porque queramos encriptarlo de nuevo para mandárselo a una tercera persona, esto se puede lograr usando la opción -d:
pgp -d examen
Tomaría el fichero examen.pgp y lo desencriptaría, pero dejaría la firma en el fichero. Podriamos entonces volver a encriptarlo con la clave pública de una tercera persona y ésta podría seguir comprobando la autenticidad del fichero ya que la firma original no se ha tocado.
Tratando ficheros de texto
Frecuentemente se usa PGP para encriptar el correo electrónico, que normalmente es únicamente texto. Un problema con el texto es la representación que toma en diferentes máquinas, por ejemplo, en MSDOS todas las líneas terminan en un retorno de carro y en un avance de linea. En Linux unicamente con avance de linea, en Macintosh únicamente con retorno de carro... para evitar problemas entre plataformas podemos indicar a PGP que vamos a encriptar un fichero de texto no un fichero binario, y que al descomprimir lo adapte a las particularidades del sistema en donde se está ejecutando, para ello usamos la opción -t. Si quisieramos encriptar un fichero de texto con esta opción para mandarlo por E-Mail haríamos:
pgp -sta mensaje_texto identificador
Huellas dactilares
Una huella dactilar (fingerprint) es una secuencia de 16 bytes que identifican una llave unívocamente. Se puede comprobar que tenemos la llave correcta de alguien comprobando estos 16 bytes en vez de comprobar uno a uno los 1024 bytes que podría llegar a tener una llave.
Para ver la huella de una llave usamos el comando:
pgp -kvc identificador [anillo]
Usando PGP en shells
Hay algunas opciones de PGP que pueden resultarnos útiles a la hora de usarlo desde shells cuando queremos automatizar algún trabajo. batchmode
Con esta opción no se preguntará nada que no sea estrictamente necesario. Es útil cuando se quiere comprobar la firma de un mensaje automáticamente, cuando el fichero no tiene firma el codigo de error devuelto es 1, si el fichero tenía firma y era correcta devuele un 0.
pgp +batchmode fichero
force
Con esta opción hacemos que ante una pregunta de sobreescritura de un fichero o eliminación de una llave se tome como respuesta "Sí".
pgp +force +kr marcos
En shells es muy útil evitar que PGP nos pida la contraseña cuando vamos a encriptar un fichero, por ejemplo, para evitar que nos la pida interactivamente en el proceso de encriptación podemos dejarsela indicada en la variable de entorno PGPPASS.
Por ejemplo:
PGPPASS="contraseña"
export PGPPASS
pgp -s fichero.txt marcos
Otra forma de pasar la contraseña a PGP de manera no interactiva es usando la opción -z
Por ejemplo:
pgp -sta examenes.txt angel -z "contraseña"
Puede ser útil en los shells hacer que PGP saque los mensajes imprescindibles y nada más, esto se consigue con la opción +verbose, por ejemplo, para establecer el quiet mode, es decir, sin mensajes informativos, únicamente los de error:
pgp fichero.pgp +verbose=0
Integración de PGP con lectores de correo
La integración de PGP con los lectores de correo, para desencriptar el correo automáticamente así como encriptar o firmar los mensajes que escribamos, es sencilla; aunque depende en gran medida del programa que estemos usando.
Como ejemplo práctico se comentará la integración de PGP con Pine. Espero que este ejemplo sirva como base para que integres PGP con cualquier otro lector que estés usando tú en tu sistema.
La filosofía a seguir es sencilla y aunque se expondrá para realizarlo con Pine, con cualquier otro lector sería igual, salvando las diferencias en las opciones de configuración.
Para lograr desencriptar el correo automáticamente antes de leerlo, se va a usar un filtro que tome el mensaje antes de visualizarlo por pantalla. Otra opción sería crear una macro que automatizase la toma del mensaje actual, y lo desencriptase mostrándolo en pantalla.
En el caso de Pine tenemos una opción para definir filtros que se ejecutarán antes de visualizar el mensaje, es la opción display-filters del menú de configuración. En esta opción debemos añadir un nuevo filtro que sea algo como lo siguiente:
_BEGINNING("-----BEGIN PGP MESSAGE-----")
_ /usr/local/bin/pgp
Todo mensaje encriptado aparece entre dos marcas legibles que son "-----BEGIN PGP MESSAGE-----" y "-----END PGP MESSAGE-----" de tal manera que si queremos identificar si un mensaje tiene un texto encriptado en su cuerpo nos basta por buscar por alguna de las dos cadenas anteriores. El filtro definido en el pine hace exactamente eso, antes de visualizar el mensaje actual mira si en el cuerpo del mismo existe la cadena "-----BEGIN PGP MESSAGE-----" con la restricción de que debe aparecer al comienzo de cualquier linea. Si aparece se ejecuta el programa /usr/local/bin/pgp
Por tanto si hay un mensaje encriptado dentro del cuerpo del mensaje se ejecuta pgp, nos pediría nuestra contraseña y podríamos ver el mensaje. Si queremos automatizar este proceso aún más, ahorrándonos el tener que introducir nuestra contraseña cada vez que queramos desencriptar un mensaje, podemos hacerlo de las dos formas anteriormente expuestas: estableciendo la variable de entorno PGPPASS o con la opción -z
Ya sólo nos queda definir un filtro que se ejecute opcionalmente antes de enviar un mensaje que hayamos escrito y que lo que haga sea encriptar el mensaje escrito con las claves públicas de los destinatarios del mensaje, esto lo podemos hacer definiendo un filtro en la opción de configuración sending-filters de la siguiente manera:
/usr/local/bin/pgp -etaf _RECIPIENTS_
Cuando escribamos un mensaje y pulsemos CTRL-X para grabarlo, Pine nos preguntará si queremos enviar el mensaje directamente sin pasarlo por ninguno de los filtros que tenemos definidos. Si no queremos encriptarlo aceptaremos esta opción, pero si queremos encriptarlo pulsaremos CTRL-N o CTRL-P para movernos por la lista de filtros definidos hasta que encontremos el que nos interese, en este caso el que hemos definido para PGP.
De esta manera tan sencilla, y con únicamente dos filtros hemos integrado PGP con Pine a un nivel básico.
Para obtener más información de cómo integrar PGP con otros sistemas puedes consultar los siguientes enlaces: elm | GNU Emacs | tin | mailx | MH | Pine | sendmail | vi | zmail
|