Cifrado de documentos con

Anuncio
32-34-Shell1-L7.qxd
2/8/05
4:44 PM
Page 32
shell
PRIVACIDAD AL ALCANCE DE TODOS
Cifrado de documentos con
PARA MUCHOS, CIFRAR DOCUMENTOS
ELECTRONICAMENTE ES UNA ACTIVIDAD PROPIA
DE PELICULAS DE ESPIAS O DE GENTE QUE “ANDA
EN ALGO RARO”. EN ESTE ARTICULO TRATARE DE
DEMOSTRAR QUE NO HACE FALTA SER DISCIPULO
DE JAMES BOND PARA ENCRIPTAR DOCUMENTOS
Y QUE ESTA TAREA NO TIENE NADA DE ILICITO.
uando mandan una carta,
¿ésta viaja abierta hasta el
destinatario o en un sobre
que no permite ver su
contenido? Normalmente, queremos un
poco de intimidad y elegimos ensobrar
nuestra correspondencia. La intimidad es
un derecho, y la encriptación es la
herramienta tecnológica que tenemos
para ejercerlo. Cada vez que mandamos
un e-mail, éste viaja “abierto” durante
todo su recorrido hasta llegar a destino.
Esto significa que al menos todos los
administradores de los servidores por
donde pasa el correo pueden verlo si así lo
desean. Un mail típico quizá no tenga
valor para otra persona que no sea su
destinatario, pero si enviamos datos
personales, claves o números de tarjetas
de crédito, habrá más de uno que podrá
sacar provecho de esa información. Si
bien no podemos “ensobrar” un mensaje
de correo electrónico, sí podemos
codificarlo de una manera tal que la única
persona que pueda interpretarlo sea el
C
destinatario.
Una aplicación derivada de esta
tecnología es la firma digital. Se utiliza
para que el receptor de un mensaje pueda
tener certeza de que el emisor es quien
dice ser, y que el mensaje no fue alterado
durante su trayecto. En este momento, el
fraude que está de moda en Internet es el
phishing, una técnica que consiste en
enviar mensajes haciéndose pasar por
una entidad financiera (CitiBank y PayPal
son los blancos más comunes) y pedir al
destinatario que ingrese sus datos en su
portal siguiendo un enlace que ellos
proveen. Ese enlace está construido de tal
manera que, al seguirlo, en la barra de
direcciones del navegador, aparece el sitio
que supuestamente estamos visitando,
cuando en realidad es un sitio controlado
por quien envió el mensaje (que no es
CitiBank ni PayPal precisamente). Para
que la víctima vea en su navegador una
dirección que no es verdadera, el
delincuente aprovecha algunos de los
múltiples agujeros de seguridad de
MANEJO DE NUESTRAS LLAVES DE FORMA VISUAL.
32
GPG
Internet Explorer, por lo que los ataques de esta
clase no son algo que preocupe ahora a los
usuarios de GNU/Linux. De todos modos, no
podemos descartar la posibilidad de que se detecte
un falla similar en alguno de los navegadores de
Linux y, entonces, el phishing pase a ser una
amenaza real. Por eso, la mejor forma es cortar el
problema desde el inicio, certificando que el
mensaje sea de quien dice ser. Ha habido casos en
los que alumnos de un colegio se han hecho pasar
por un profesor en una lista de correo para decir
que se suspendía un examen, cuando eso no era
cierto. Particularmente, me hago responsable sólo
del contenido de los mails que firmo. Lo importante
que debemos tener en cuenta es que cualquier
mensaje puede no ser de quien dice que es. El
remitente, los encabezados y el cuerpo del mail
pueden alterarse a voluntad del emisor (o por
cualquier persona que lo intercepte), de modo que
de poco sirve fiarse de esas características
visuales a la hora de determinar la autenticidad de
este tipo de correspondencia. Es muy fácil tomar un
mensaje real de una entidad financiera y
modificarlo ligeramente según nuestras
necesidades, usando sus propios logos y tipos de
32-34-Shell1-L7.qxd
2/8/05
4:44 PM
Page 33
shell
letras con el fin de que conserven el
mismo aspecto que uno auténtico.
Los mensajes firmados
electrónicamente, bajo ciertas
condiciones, nos darán una razonable
garantía de autenticidad.
UN POCO DE TEORIA
La forma más conocida de encriptar
mensajes es usar una clave que sea
compartida tanto por el remitente
como por el destinatario. El remitente
la usa para encriptar el mensaje y,
luego, el destinatario la emplea para
leerlo. Nadie que no conozca la clave
podrá acceder al contenido. Si bien la
idea es sencilla, tiene problemas
prácticos, por lo cual no es
aconsejable aplicarla. La falla más
importante de esta técnica (conocida
en la jerga como criptografía
simétrica) es que ambos
participantes (emisor y receptor)
deben contar con un canal seguro
para poder intercambiar la clave
común de encriptación. Si ya hay una
forma de intercambiar la clave de
manera segura, ¿por qué no enviar el
mensaje directamente usando esa
vía? La solución ideal tiene que ser
aquella en la que dos personas
puedan enviarse mensajes sin que
haya previamente un intercambio de
claves que requiera un canal seguro.
Este sistema existe y se llama
encriptación asimétrica o
encriptación con clave pública.
Intentaré explicarlo sin recurrir al
fundamento matemático, que es
complejo e innecesario a efectos
prácticos. Cada persona debe tener
dos claves, o par de claves: una
privada, conocida solamente por su
dueño; y una pública, que cuanto más
difundida esté, mejor es. El remitente
usará la clave pública del receptor
para generar un mensaje que podrá
ser descifrado sólo por quien tenga la
clave privada asociada a aquella que
se utilizó para encriptar el mensaje.
Dicho de otra manera, si José quiere
enviarle una carta cifrada a María,
necesitará la clave pública de María.
Con ella, podrá generar un mensaje
cifrado tal que la única persona que
podrá descifrarlo será quien tenga la
clave privada de María, que,
supuestamente, debería ser María.
Como pueden ver, María y José sólo
tienen que intercambiar información
disponible en forma pública (la clave
pública de María), por lo que si
alguien pudiese interceptar todos los
mensajes entre ambos, no se
enteraría de nada nuevo. Si el
panorama todavía no está claro,
poniendo manos a la obra, se
despejarán todas las dudas.
MANOS A LA OBRA
En computación, suele haber muchas
maneras de lograr el mismo objetivo.
En este caso, usaremos una
implementación del estándar
OpenPGP denominada GnuPG o GPG.
Para facilitar la tarea, en vez de usar
GPG desde la línea de comando,
recurriremos a una interfaz gráfica
(GUI) llamada KGPG. Existen otros
programas que hacen uso de GUI
para el GPG, como Seahorse y
genomegpg, pero KGP parece ser el
más estable y el que brinda una
mayor cantidad de opciones. Vamos a
dividir el proceso de encriptación en
cinco etapas: generación del par de
claves, llenado de nuestro llavero de
claves, encriptación, envío del
mensaje encriptado y desencriptación
por el receptor.
EL TERMINO EN
ESPAÑOL
Según la Real Academia Española, el
término encriptar no existe. El
equivalente es cifrar, que significa
“transcribir en guarismos, letras o
símbolos, de acuerdo con una clave, un
mensaje cuyo contenido se quiere
ocultar”. Nuestra manía por
“castellanizar” palabras inglesas y la
fuerza de la costumbre hacen que
usemos de manera indistinta cifrar o
encriptar, y descifrar o desencriptar.
completar son nuestro nombre, e-mail y contraseña; el resto puede
dejarse como está. El tamaño de la llave (Key size) es proporcional al
grado de seguridad que queramos obtener. La que viene predefinida,
1024 bits, es más que suficiente, ya que una clave de ese tamaño
nunca pudo ser descifrada.
★ Llenado de nuestro llavero de claves (Key ring)
Si le queremos escribir a una persona usando este sistema,
necesitamos tener su clave pública. Hay dos maneras de conseguirla:
pidiéndosela al destinatario o bajándola de un servidor de claves
públicas. Por razones de espacio, vamos a considerar sólo la
posibilidad de que el destinatario nos mande su clave pública. La
opción del menú se llama Import Key, y está dentro de Key (o
CONTROL+V). Podemos incluirla desde un archivo o desde el
Portapapeles, el resultado será el mismo. En nuestro gestor de claves
veremos XXXX.
★ Generación del par de claves
Como primera medida, tenemos que
generar nuestro par de claves
(pública y privada). La primera vez
que activemos el programa, éste
notará que no tenemos un par de
claves (se fija la existencia del
directorio oculto .gnupg) y nos
presentará un asistente para
crearlas. Otra manera de generarlas
es desde la opción Generate Key Par,
en el menú Key (o CONTROL+N). Los
datos obligatorios que debemos
CUANDO QUEREMOS DESENCRIPTAR UN MENSAJE, DEBEMOS
INGRESAR LA CLAVE CORRESPONDIENTE.
33
32-34-Shell1-L7.qxd
2/8/05
4:44 PM
Page 34
shell
★ Encriptación
INTEGRACION
CON PROGRAMAS
DE CORREO
Si usamos como cliente de correo
electrónico a Evolution, Mozilla o
Thunderbird, no necesitaremos un
programa externo para utilizar
GPG de manera amigable.
En Evolution, el soporte para GPG
se activa desde
TOOLS/SETTINGS/EDIT (con la
cuenta señalada). En la pestaña
SEGURIDAD, completamos la
Identificación de clave (Key ID).
En el caso de los clientes Mozilla
y Thunderbird, hay que agregar un
módulo de encriptación llamado
Enigmail que se baja
gratuitamente por separado desde
el sitio enigmail.mozdev.org/
download.html.
La ventaja de la integración de
GPG con el cliente de e-mail es
que no hay que llamar a
programas externos para encriptar,
firmar y desencriptar mensajes.
Si recibimos un mensaje
encriptado con nuestra clave
pública, en vez de ver caracteres
incomprensibles, el sistema nos
pregunta nuestra contraseña; si la
introducimos correctamente,
decodifica el mensaje y lo
muestra como un mail más del
cliente de correo. Todo de manera
totalmente transparente. Qué
interesante, ¿no?
Usamos la opción OPEN EDITOR dentro de FILE.
Aparecerá un editor en el que podemos escribir el
mensaje o pegarlo desde otra aplicación. Luego,
debemos presionar el botón ENCRYPT.
Esto nos sirve para elegir la clave pública que se
usará en el proceso de cifrado. Hay que tener en
cuenta que debe estar marcada la opción Allow
encryption with unstrusted keys, de modo de
poder ver todas las claves. Se dice que una clave
es trusted (confiable) cuando estamos seguros de
su procedencia y, por ende, la firmamos. Firmar
una clave significa señalarla con el mouse en el
gestor de claves y luego elegir Sign key, desde el
menú contextual o desde el icono correspondiente.
De todas maneras, no hace falta firmar las claves
públicas de otro para usarlas, siempre que
marquemos la opción recién mencionada.
★ Envío del mensaje encriptado
Una vez encriptado el mensaje, es cuestión de
copiarlo y pegarlo en nuestro programa favorito
de correo.
★ Desencriptación (por el receptor)
Si el receptor no posee un sistema de
desencriptación integrado a su programa de
correo, recibirá el mensaje. La manera de
descifrarlo es copiar el texto completo y pegarlo
en la misma ventana de edición del kgpg.
Luego de apretar el botón de DECRYPT, nos
pedirá la contraseña. Si es correcta (si se
corresponde con nuestra clave privada),
podremos ver el mensaje.
COMPATIBILIDAD ENTRE PGP Y GPG
Hasta hace unos años, criptografía asimétrica
era sinónimo de PGP. Si bien este programa
siempre fue gratuito o tenía una versión sin
costo, es propiedad de una compañía de
software. Por este motivo, se creó un estándar
llamado OpenPGP. GnuPG es una
implementación GNU (libre) de ese estándar. Por
este motivo, los mensajes encriptados con GPG,
al menos con las opciones predefinidas, podrán
ser interpretados por un usuario de PGP. De la
misma manera, los mensajes encriptados con
PGP podrán ser leídos por usuarios de GPG.
LA RED DE CONFIANZA
A diferencia de otros esquemas de certificación,
en GPG no hay una autoridad certificadora
verticalista, en la que algunos pocos certifican
la identidad del resto; en realidad, ni siquiera
hay una autoridad propiamente dicha. Lo que se
usa es una “red de confianza” (Web of Trust, en
inglés): los usuarios se firman sus claves entre
ellos, certificando previamente su identidad de
manera fehaciente. Para pertenecer a esta red,
que es internacional, hay que presentar un
documento y una copia impresa de la clave
pública en forma personal a cualquier miembro
de la red. Pueden consultar en su grupo de
usuario de Linux (LUG) local para ver si hay
miembros cercanos que puedan certificar su
clave pública. La lista de LUGs de la Argentina
está en www.linux.org.ar/modules/xoopslugs.
LO QUE QUEDA EN EL TECLADO
FIRMAR Y VERIFICAR MENSAJES
Si lo que queremos es firmar el mensaje para que
el destinatario tenga certeza de que fue enviado
por nosotros y de que su contenido no ha sido
alterado, es posible hacerlo con Kgpg. Al igual
que la encriptación, hay que abrir el editor (Open
Editor, dentro de File), escribir o pegar el mensaje
y luego usar el botón FIRMAR / VERIFICAR.
El procedimiento para verificar mensajes es el
mismo, hasta se usa el mismo botón. La
diferencia es el resultado: en vez de obtener un
mensaje firmado, obtendremos la confirmación
(o no) de que éste no fue alterado.
El tema no termina aquí, pero el espacio
asignado a este artículo sí. Quienes estén
interesados en seguir investigando sobre los
procesos de encriptación pueden consultar los
siguientes recursos:
★ munitions.dotforge.net: software
criptográfico para Linux.
★ www.criptored.upm.es: red temática
iberoamericana de criptografía y seguridad
de la información.
★ directory.google.com/Top/Science/Math/
Applications/Communication_Theory/
Cryptography: directorio de información
sobre criptografía.
¡Hasta la próxima! Sebastián Bassi
34
usr★linux
Descargar