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
|