Manual de supervivencia en Internet (I): Cifrar el correo electrónico

“To believe is very dull. To doubt is intensely engrossing. To be on the alert is to live, to be lulled into security is to die.”

Oscar Wilde

Como dijo Wilde, vivir obsesionado por la seguridad es un poco ridículo, es casi peor el remedio que la enfermedad. Todo esto nos lleva a la manida frase de “la seguridad total no existe”. Sin embargo, sí que podemos hacer bastantes cosas para mejorar la seguridad de nuestros ordenadores fácilmente y sin mucho esfuerzo, como comentaremos.


Cuestiones como comprender por qué una contraseña es buena y otra es mala, cómo poder proteger un documento privado de forma segura, cómo navegar sin ir dejando rastro en todas las páginas web que visitemos, por qué alguien puede entrar en nuestro ordenador remotamente y destrozarlo o utilizarlo como trampolín para atacar a otro, etc. serán las que trataremos aquí, poco a poco e intentando no centrarnos en los tecnicismos sino en ideas sencillas de entender y prácticas fáciles de hacer.

 

Un pequeño repaso a la criptografía

Criptografía, criptoanálisis, cifrado… palabras que suenan a complicadísimas operaciones matemáticas y a científicos de bata blanca llenando pizarras y pizarras de fórmulas imposibles. Sí, eso es una parte de la verdad, pero la criptografía ha sido hasta hace relativamente poco algo mucho más rudimentario y casi divertido.

Criptografía viene del griego “kryptos”, oculto, y “graphos”, escritor: el arte de escribir de forma oculta. Como es lógico, todo método criptográfico se ha asociado mucho a épocas en las que el envío de mensajes ocultos era muy importante, como sucede típicamente en las guerras. Si alguien del bando enemigo lograba interceptar un mensaje, las consecuencias podrían ser desastrosas. Durante el imperio romano, por ejemplo, el problema tenía solución (un cambio de estrategia), porque era muy fácil detectar que un mensaje había sido interceptado (normalmente el mensajero no vivía para contarlo). En nuestros días, esta situación cambia bastante, porque actualmente es posible interceptar un mensaje sin que el emisor ni el receptor se den cuenta. Por esta razón, es importante proteger mediante medios criptográficos la información privada que queramos enviar por la red.

Cifrar un texto no es algo muy espectacular. Sólo hace falta aplicar un “algoritmo”, es decir, una receta para cifrar. Por ejemplo, vamos a cifrar el texto “La acción será mañana en la plaza” con una receta muy sencilla, “sumar 2 a todas las letras”:

 texto original: "La acción será mañana en la plaza"
 texto cifrado:  "Nc ceekqo ugtc ñcpcoc go nc rncbc"

Al principio puede parecer un poco confuso, pero vamos a verlo por partes:

  1. El alfabeto que hemos utilizado es este: “ABCDEFGHIJKLMNÑOPQRSTUVWXYZ”.
  2. Cuando queremos cifrar una letra, lo que tenemos que hacer es coger la letra que está dos posiciones hacia la derecha en ese alfabeto. Por ejemplo, para cifrar la “A”, avanzamos dos posiciones hasta la “C”.
  3. Para descifrar, tenemos que hacer el proceso contrario, restar dos posiciones a todas las letras. Por ejemplo, para descifrar “N”, retrocedemos dos posiciones en el alfabeto hasta la “L”.
  4. Cuando estamos en los bordes del alfabeto (al principio -”A”- o al final -”Z”-), si tenemos que cifrar o descifrar, continuamos por el otro lado. Es decir, por ejemplo, para cifrar una “Y” tenemos que avanzar dos posiciones hacia la derecha: avanzamos una hasta la “Z”, y como ahora no podemos avanzar más, continuamos por el otro lado, “A”. Cuando tengamos que descifrar esa “A”, tendremos que ir dos posiciones hacia la izquierda, pero como no hay, continuamos por el otro lado: una posición hasta la “Z”, y otra hasta la “Y”.

De esta manera podemos cifrar y descifrar cualquier texto de forma muy sencilla. Con este ejemplo hemos podido ver unos cuantos elementos dentro del cifrado:

  1. El algoritmo o receta empleado, en este caso “sumar”.
  2. La clave utilizada, en este caso “2″. Si la clave fuese “5″, habría que sumar 5 para cifrar y restar 5 para descifrar, por ejemplo.
  3. El texto original.
  4. El texto cifrado.
 texto original ---> algoritmo de cifrado ---> texto cifrado
                       ^
                      /
 clave ---------------

Este algoritmo que hemos utilizado para cifrar y descifrar es el que empleaba Julio César para enviar mensajes cifrados. Tiene el problema de que en el otro lugar hacia donde se enviaba el mensaje, también necesitaban saber la clave con la que ha sido cifrado para poder descifrarlo. Esto se resolvió utilizando pergaminos enrollados sobre una vara de madera de diferente longitud. En función de esa longitud, el receptor del mensaje ya sabía cuál había sido la clave empleada. Por ejemplo:

 Longitud de la vara		Clave
 10 cm				1
 11 cm				2
 12 cm				3
 13 cm				4
 ...

Este truco sirvió en su momento, pero es bastante peligroso, porque cualquiera que se diese cuenta de ello, podría descifrar todos los mensajes. Ahí reside el problema fundamental de esta clase de algoritmos, necesitan que tanto el emisor del mensaje como el receptor conozcan la clave que se ha utilizado. Por esto mismo se los conoce como algoritmos de “secreto compartido” (el secreto es la clave utilizada) o algoritmos simétricos.

¿Cómo transmitimos el secreto o clave para que tanto el emisor como el receptor sepan como cifrar y descifrar? Normalmente se utiliza otro método que se considera seguro. Por ejemplo, si queremos enviar a un amigo 200 documentos privados por carta, un método seguro sería guardarlos en una caja fuerte y enviar la caja fuerte por correo. Bien, el problema está en que si alguien nos intercepta habitualmente la correspondencia, no podemos enviar la llave de la caja fuerte por ese mismo medio, así que necesitaremos quedar en persona con el destinatario de todos esos documentos, para darle la llave en mano. Una vez que los dos tengamos una copia de la llave, podríamos utilizar la caja fuerte para enviarnos documentos privados por un canal inseguro (el sistema de Correos y Telégrafos estatal, que nos sigue la pista).

Pero claro, esto en Internet no tiene mucho sentido. No puedes ir a una tienda con tu clave en un diskette a decirles que les vas a mandar los datos cifrados con esa clave. Necesitamos una manera de pasar de forma segura a través de la red ese “secreto compartido” que es la clave. Podríamos utilizar otro algoritmo de cifrado totalmente diferente para pasar la clave, pero al final estaríamos en las mismas: ¿y cómo pasamos la clave de ese otro algoritmo por la red? Esto supuso un problema muy grande, pero se ha solucionado con un nuevo tipo de algoritmos de cifrado, los algoritmos asimétricos o algoritmos de clave pública y clave privada.

Entender los algoritmos asimétricos suele costar un poco, porque estamos muy acostumbrados a utilizar algoritmos simétricos, en los que la clave para cifrar y para descifrar es la misma: guardamos algo en una caja fuerte y la combinación para cerrarla es la misma que para abrirla, utilizamos un candado para la bicicleta y la llave para cerrarlo es la misma que para abrirlo, parece lógico, ¿no? Bien, pues los algoritmos asimétricos o de clave pública y privada no funcionan así, sino que utilizan una clave para cifrar, y otra diferente para descifrar. En realidad lo que tenemos es un par de claves: la clave privada y la clave pública.

Lo curioso de estas dos claves es que ”todo lo que cifre una clave, lo descifra la otra y sólo la otra”, y viceversa. Es decir, tenemos un candado con dos llaves, una roja y otra negra. Si cierro el candado con la llave roja, sólo lo podré abrir con la negra. Y si lo cierro con la llave negra, sólo lo podré abrir con la roja. ¿Qué utilidad tiene esto? ¿No es complicar más la manta innecesariamente? No, sigamos con el ejemplo del candado: todos los candados que se cierren con tu llave roja, sólo podrán ser abiertos con tu llave negra y con ninguna más. Entonces lo que haces es regalar copias de tu llave roja a todo el mundo (ésta será tu clave pública), y guardar tu llave negra en casa sin dejársela a nadie (ésta será tu clave privada). Cuando alguien te quiera enviar algo privado no tiene más que coger una copia de tu llave roja, proteger el paquete con un candado cerrado con tu llave roja y así se asegurará que sólo el que tenga la llave negra complementaria podrá abrir el paquete, es decir, sólo tú podrás abrirlo, porque tienes la llave complementaria.

De esta forma podemos utilizar un medio inseguro como Internet (para mandar información i digital) o el sistema de Correos y Telégrafos (para enviar paquetes), sin ningún miedo a mandar copias de la clave pública o la llave roja del candado, porque cuando un mensaje sea cifrado con tu clave pública o cuando un paquete sea protegido con tu llave roja, SOLAMENTE tu clave privada podrá descrifrarlo o tu llave negra podrá abrir el paquete.

Cifrado y firma de ficheros y correos (GnuPG / PGP)

Todo el proceso de cifrado y firmado digital a nivel doméstico está irremediablemente asociado a tres siglas: PGP. PGP significa “Pretty Good Privacy”, “Privacidad Bastante Buena”, y es un conjunto de programas que permiten crear pares de clave pública / clave privada, almacenarlos de forma segura, enviar correos electrónicos cifrados, firmarlos digitalmente, etc.

PGP se ha convertido en un estándar de facto dentro de la privacidad a nivel doméstico. Además de esto, su creador, Phil Zimmerman, se ha esforzado por crear OpenPGP, una especificación de cómo hacer programas compatibles con PGP. Actualmente PGP es una herramienta comercial propiedad de NAI (Network Associates), empresa que permite descargarse una versión personal de PGP para su evaluación.

En enero de 2001, Phil Zimmerman abandona NAI por problemas respecto a la línea que debería seguir PGP. En ese momento Zimmerman realiza unas declaraciones históricas:

“Let me assure all PGP users that all versions of PGP produced by NAI, and PGP Security, a division of NAI, up to and including the current (January 2001) release, PGP 7.0.3, are free of back doors,”.

(http://www.theregister.co.uk/content/archive/17064.html)

Es decir, aseguraba que hasta la versión 7.0.3 de PGP, no había ninguna puerta trasera que permitiera a ningún gobierno conseguir descifrar nuestros datos de forma indirecta. Esto es un acto de fé, claro está. Podemos creer o no creer a Zimmerman, pero su reputación estaba en juego y no creemos que mintiese en esa ocasión. El caso es que a partir de esa versión ya no hay un experto en criptografía mundialmente reconocido como Zimmerman llevando el producto PGP, y nadie nos asegura que PGP 8.0 y sucesivos no contengan puertas traseras que puedan ser utilizadas por los gobiernos para descifrar nuestros correos electrónicos y nuestros ficheros cifrados. Podemos descargar una copia de la última versión certficada por Zimmerman de este dirección: ftp://ftp.es.pgpi.org/pub/pgp/7.0/7.0.3/PGPFW703.zip

Podemos seguir fiándonos de los programadores de NAI o podemos optar por una versión libre de PGP, GnuPG. GnuPG es un proyecto similar a PGP y compatible con el estándar OpenGPG que tiene la característica de ser Software Libre. Esto nos proporciona muchas ventajas, pero entre ellas hay una muy importante en este punto: tenemos el código fuente del programa, podemos ver cómo está hecho y buscar posibles puertas traseras. Es como si en lugar de fiarnos de que el búnker que nos vende una empresa es seguro y sin puertas traseras, consiguiéramos los planos de un búnker y nos lo hiciéramos nosotros, asegurándonos que no las tendrá.

Utilizando GPG (GnuPG)

Con la idea de que comencemos a utilizar GPG para cifrar todos nuestros correos electrónicos (es convieniente cifrar todos los correos que podamos, no sólo los importantes, para que sea más difícil para quien nos espíe diferenciar los datos cifrados importantes de los irrelevantes), veremos el proceso de instalación de GPG en Microsoft Windows y GNU/Linux, así como la creación de nuestra clave pública y privada.

La instalación y utilización de GPG en Microsoft Windows es muy sencilla si empleamos un paquete de instalación como WinPT (http://winpt.sourceforge.net/es/index.php). Mediante WinPT, la instalación de GPG se reduce a seguir los pasos guiados de un asistente:

1) Arrancar el programa de instalación

Una vez que nos hayamos descargado el programa de instalación , símplemente deberemos hacer doble-clic sobre él y comenzará a ejecutarse. La primera pregunta es acerca del idioma en el que queremos instalar GPG:

/images/WinPT01.jpg

Elegiremos castellano y continuaremos con el asistente de instalación:

/images/WinPT02.jpg

Después de darnos la bienvenida, el programa nos muestra la licencia de GPG. Al contrario que la mayoría del software para Microsoft Windows, WinPT y GPG son Software Libre, bajo la licencia GPL. Esto nos permite tener más libertades al utilizar y redistribuir este software, y en este caso en concreto, nos proporciona la garantía de que no contiene software espía o malintencionado, lo cual es crítico dentro del software orientado a la privacidad:

/images/WinPT03.jpg

2) Elegir el lugar qué componentes instalaremos

Un punto importante dentro de la instalación es decidir la carpeta en nuestro disco en la que instalaremos el programa. Por defecto el asistente nos sugiere “C:\Archivos de Programa\Windows Privacy Tools”. Si no tenemos problemas de espacio en la unidad C:, esa es una ubicación idónea.

/images/WinPT04.jpg

Seguidamente decidiremos qué módulos instalaremos. En caso de duda lo mejor en seleccionar todos, fijándonos especialmente en el apartado “Módulos de correo electrónico”, donde podremos seleccionar módulos para integrar GPG con nuestros clientes de correo favoritos:

/images/WinPT05.jpg

En el siguiente paso del asistente se nos pide un nombre para crear una carpeta en el menú Inicio. Lo dejaremos como está y pulsaremos “Siguiente”:

/images/WinPT06.jpg

3) Configurar inicialmente GPG

Una vez instalado en disco, el asistente nos solicitará que definamos las opciones iniciales de GPG. Lo más razonable es dejarlo tal y como viene por defecto, teniendo cuidado de que está seleccionada la opción “GnuPG oficial” en “Versión de GPG a instalar”, dentro de “Opciones avanzadas”:

/images/WinPT07.jpg /images/WinPT08.jpg

4) Instalar en disco

Una vez definido todo lo anterior, no queda sino copiar los ficheros a disco y dar por concluido el proceso de instalación:

/images/WinPT09.jpg /images/WinPT10.jpg

Lo siguiente que deberemos hacer, es crear nuestro primer par de claves personal. Si es la primera vez que instalamos GPG en nuestro ordenador, el asistente de instalación detectará que no hay ningún llavero de llaves GPG en el sistema y nos pedirá que creemos uno nuevo:

/images/WinPT11.jpg

Dentro de las opciones que inicialmente se nos ofrecen, tenemos: generar un nuevo anillo o “llavero” de llaves, importar un anillo ya existente (si no es la primera vez que instalamos GPG y queremos conservar el anillo de llaves que creamos la primera vez) o importar las llaves desde un servidor. La opción que deberemos elegir es la primera, que WinPT genere un nuevo anillo de llaves:

/images/WinPT12.jpg

Para generar nuestro par de llaves o claves pública y privada (es decir, crear una copia de la “llave roja” que daremos a todo el mundo y de la “llave negra” que no daremos a nadie), deberemos rellenar una serie de datos: el tipo de cifrado y tamaño de la clave que queremos (dejaremos el tipo tal y como viene -DSA and ELG (default)- y modificaremos el tamaño a 2048 bits de clave), nuestro nombre, un comentario (podemos poner lo que queramos), dirección de correo electrónico, la fecha en la que queremos que caduque el par de claves y la passphrase. Normalmente la fecha indica el tiempo de vigencia de ese par de claves, aunque es habitual decir que no expira nunca. La passphrase es una contraseña más larga de lo normal que sirve para proteger nuestra clave privada. Aunque nos roben la clave privada, deberán adivinar esta passphrase para utilizarla, así que conviene poner una buena contraseña (para más indicaciones sobre cómo elegir una buena contraseñas, mira el apartado siguiente):

/images/WinPT13.jpg

Una vez definidos todos estos datos, pulsamos “Aceptar” y el programa generará las claves a través de cálculos complejos (suele tardar un par de minutos):

/images/WinPT14.jpg

/images/WinPT15.jpg

Finalmente se nos indica que es muy recomendable guardar una copia de seguridad del llavero o anillo de llaves públicas y el anillo de llaves privadas (“pubring” y “secring” respectivamente). El “secring” deberá ser guardado en un lugar seguro, en un diskette que guardemos en una caja fuerte o algo similar, por ejemplo. El anillo de llaves públicas es menos crítico en cuanto a seguridad y podremos guardarlo donde nos apetezca.

/images/WinPT16.jpg

/images/WinPT17.jpg

Y ya está. Eso es todo. Ya tenemos nuestro sistema de privacidad GPG listo para ser utilizado. Esto nos permitirá proteger mediante cifrado ficheros importantes de nuestro disco, correos electrónicos, etc. Vamos a ver ahora como utilizar GPG para cifrar y descifrar datos dentro de nuestro ordenador.

Para empezar, vamos a abrir un Bloc de Notas y escribir una frase cualquiera. La seleccionamos y la copiamos en el portapapeles para poder hacer Copiar&Pegar (es decir, pulsamos Control+C o elegimos “Editar -> Copiar” en el menú del Bloc de Notas):

/images/WinPT23.jpg

Seguidamente vamos a la esquina inferior derecha de nuestro escritorio y justo al lado de donde se muestra la hora, hay un icono como una lupa, del GPG. Pulsamos con el botón derecho y se nos muestra el siguiente menú:

/images/WinPT24.jpg

Elegimos “Clipboard”, es decir, portapapeles, y dentro de ahí, seleccionamos “Encrypt”. Se nos muestra un menú con las claves de cifrado disponibles en nuestro ordenador, y elegimos la nuestra, por ejemplo:

/images/WinPT25.jpg

Haciendo esto habremos encriptado lo que previamente guardamos en el portapapeles haciendo Control+C. Volvemos al Bloc de Notas y hacemos Control+V para pegar el resultado de nuestra operación:

/images/WinPT26.jpg

El resultado es un bloque ininteligible de números y letras, precedido de un encabezado que muestra que eso es un bloque de datos cifrado con GPG.

Vamos a hacer ahora el proceso inverso. Supongamos que alguien nos ha mandado un correo cifrado y lo que hemos recibido es un bloque GPG lleno de símbolos extraños. Lo primero que tenemos que hacer es copiarlo al portapapeles, seleccionándolo y pulsando Control+C o “Edición -> Copiar” dentro del menú:

/images/WinPT27.jpg

Volvemos a acceder al menú que está en la esquina inferior derecha, junto a la hora del sistema, y seleccionamos “Clipboard -> Decrypt/Verify” para descifrar el contenido del portapapeles:

/images/WinPT28.jpg

GPG comprueba que el texto ha sido cifrado con nuestra clave y nos muestra un diálogo para que introduzcamos la “passphrase” que protege nuestra clave privada:

/images/WinPT29.jpg

Si la introducimos mal, GPG no será capaz de acceder a la clave privada necesaria para descrifrar el texto, y se producirá un error:

/images/WinPT30.jpg

Si por el contrario hemos introducido bien la passphrase, el contenido del portapapeles se habrá descifrado correctamente y podremos copiarlo (con Control+V o eligiendo “Edición -> Pegar”) en el Bloc de Notas para leer el texto en claro:

/images/WinPT31.jpg

Si hemos seguido los pasos correctamente hasta aquí, ya sabremos cifrar y descrifrar todos los textos que queramos mediante GPG, ya sean correos electrónicos o textos guardados en el ordenador. El método que hemos empleado es el más genérico y el más manual, para poder utilizarlo en multitud de ocasiones y con muchos programas diferentes. No obstante, algunos programas como el Outlook Express o el Eudora tienen módulos propios para cifrar y descrifrar correos electrónicos cifrados con GPG de forma automática y mucho más cómodamente. En definitiva, el camino que hemos seguido es el más “rudimentario”, pero entendiendo esto bien es mucho más fácil encontrar los diferentes “atajos” que tiene el sistema GPG para utilizarlo más agilmente :-)

Por último vamos a ver cómo poder exportar nuestra clave pública a un fichero de texto, para poder pasárselo a todos nuestros compañeros y que ellos sepan como nos gusta que nos cifren los datos (recordemos todo el asunto del candado que se cierra con una llave y se abre con la otra: nosotros regalamos a todos nuestros compañeros una copia de la llave roja -la pública- y cuando la usen, sólo nuestra llave negra -nuestra llave privada- podrá abrirlo, haciendo imposible cualquier intercepción de la información). Para exportar nuestra clave pública, lanzamos el “Administrador de claves” de GPG y seleccionamos nuestra clave. Una vez hecho esto, elegimos “Key -> Export…” en el menú:

/images/WinPT20.jpg

Y se nos mostrará un diálogo en el que nos piden un nombre de fichero para guardar la clave. Elegimos “miclaveGPG.pub” o algo similar y pulsamos “Aceptar”:

/images/WinPT21.jpg

/images/WinPT22.jpg

Ahora ya sólo queda distribuir este fichero a todos los compañeros que nos quieran enviar algo cifrado con GPG. Alguna gente incluye su clave pública en todos los correos electrónicos que envía, otros ponen un enlace a una página web que contiene su clave pública, otros dejan una nota diciendo que utilizan GPG y que les pidas la clave pública si la necesitas.

GPG en GNU/Linux

El proceso para utilizar GPG en GNU/Linux es muy similar. Aquí nos centraremos en un asistente para GnuPG llamado KGPG, basado en el entorno de ventanas KDE (The K Desktop Environment). Muchas distribuciones de GNU/Linux lo tienen preinstalado desde el principio, en otras es necesario instalarlo. Para distribuciones basadas en Debian GNU/Linux, como Debian, Knoppix, GNOME/Live-CD, Linex, Guadalix, X-evian, etc. basta con hacer lo siguiente (como root):

 apt-get install kpgp

Una vez que está intalado, lo lanzamos escribiendo “kgpg” en una terminal del entorno de ventanas KDE. Si es la primera vez que utilizamos el programa, y no hay ningún anillo de claves creado, se nos mostrará un diálogo solicitándonos que creemos un nuevo par de claves:

/images/kgpg01.png

El diálogo para crear un nuevo par de claves es exactamente igual que el que hemos comentado para WinPT (GPG para Windows), así que lo rellenamos de igual forma:

/images/kgpg02.png

Seguidamente se nos pide la passphrase (recordemos que conviene que sea una contraseña potente):

/images/kgpg03.png

Y ya tenemos el KGPG funcionando, como muestra el icono con un candado al lado de la hora del sistema:

/images/kgpg04.png

Para realizar todas las operaciones de cifrado, descifrado, firma digital, etc. debermos pulsar sobre el candado de la barra de tareas, de forma similar a cuando pulsábamos en el icono de GPG en Windows. KGPG dispone además de un programa de “Administración de claves” como en Windows, desde el que podremos exportar nuestra clave pública para que nuestros compañeros puedan utilizarla y cifrar datos exclusivamente para nosotros:

/images/kgpg05.png

Para más información, conviene consultar:

Esteganografía

La esteganografía es un caso particular dentro de la criptografía. La palabra también proviene del griego y significa “escritura encubierta” (“stegos” es cubierto). El nombre es muy apropiado, puesto que mediante la esteganografía conseguimos ocultar un mensaje dentro de otro, que hará de “encubridor”. Veámoslo con un ejemplo:

 texto original: Evidentemente, siempre tienes organizada esta sala tan
                 alegremente como Iñigo Freire recomendó antes de octubre.
 texto encubierto: Esto esta cifrado.

El texto encubierto se consigue tomando la primera letra de cada palabra de la frase original. De esta manera, el mensaje original no parece contener información adicional y no suele levantar sospechas. Obviamente este ejemplo es muy simple, pero es posible encubrir información importante de formas mucho más sofisticadas. Hoy en día se utiliza mucho la esteganografía para ocultar mensajes dentro de fotos o ficheros de música.

La idea es más o menos sencilla: las fotos y los ficheros de música se comprimen para que ocupen mucho menos que el original. Todos sabemos que un fichero MP3 ocupa mucho menos que el fichero que contiene la canción en un CD de audio. Esto se consigue a través de ciertos trucos, como reducir la paleta de colores utilizados en una foto cuando hay muchos colores que son casi iguales, u obviar cambios muy pequeños de frecuencias altas dentro de un MP3. Por esa misma razón, si cambiásemos un poco el color en un punto de una imagen o si cambiásemos la frecuencia un poco en un instante de una canción, no lo notaríamos. Esto se utiliza para ocultar en esos pequeños cambios información confidencial.

Una imagen dentro de un fichero del ordenador está formada por una tabla con numeros. Cada uno de esos números indica qué color hay que poner en cada punto de la imagen para formar la imagen total. Es como aquellos cuadernos en los que había un dibujo sin colorear que tenía numeritos y nosotros teníamos que ir con las pinturas y pintar donde ponía un 1 en rojo, donde ponía un 2 en azul, etc. Pues el ordenador hace lo mismo con las imágenes: tiene una tabla con un montón de puntos y los números con los que se tienen que pintar esos puntos. Imaginemos que tenemos una imagen que tiene un lago muy grande y en una esquina hay una parte que es casi toda del mismo color de azul. Eso dentro del fichero estaría indicado como que cada uno de los puntitos que están en esa zona tienen el color 140, el 140, el 141, el 141, el 141, el 140, el 140, y el 139, que son diferentes tonos de azul, casi iguales. Por otro lado nosotros queremos esconder la letra “A”, por ejemplo, dentro de esa foto. Para escribir una letra como la “A” es necesario que el ordenador utilice 8 bits. En concreto para la “A” el código ASCII es el 65, así que en binario sería 01000001. lo que vamos a hacer es sumarle a aquellos números de azul que teníamos en esa parte de la foto los números de guardar una letra “A”:

 fragmento de foto azul: 140 140 141 141 141 140 140 139
 letra "A" (01000001)  :   0   1   0   0   0   0   0   1
 -------------------------------------------------------
 resultado             : 140 141 141 141 141 140 140 140

El fragmento de la foto ha cambiado en dos puntitos, pero sólo ha cambiado un tono en esos puntos, así que no desentona para nada. La foto se percibe prácticamente igual y nosotros hemos conseguido guardar una letra dentro de ella. Si el mensaje es mucho más grande, pues deberíamos escoger fotos con mucha resolución o ficheros de audio de muchos megas, para que no se note la diferencia con el original.

Existen incluso sistemas de ficheros esteganográficos que permiten tener ficheros enteros dispersos por otros ficheros diferentes. Por ejemplo, podríamos tener un fichero con contraseñas repartido en 600 MB de ficheros de música. Podríamos copiar esos ficheros de música en un CD, pasárselos a un amigo y que además de disfrutar de la música, pueda leer el fichero guardado esteganográficamente.

La herramienta más utilizada para encubrir datos dentro de ficheros en el mundo Windows ha sido “camouflage” (http://www.camouflagesoftware.com). Típicamente se ha utilizado para guardar ficheros MP3 como si fueran imágenes y poder colgarlos de servidores web gratuitos. La esteganografía así conseguida no consigue engañar más que al ordenador que hace de servidor web, porque cualquier persona se daría cuenta de que esas imágenes no son reales. En un MP3 de 3 MB, por ejemplo, hay tanta información que encubrir que la imagen final queda totalmente distorsionada. Es fácil ocultar una aguja en un pajar, pero es bastante difícil hacer lo mismo con 7 toneladas de agujas. En cuanto a herramientas de software libre, existen varios programas que pueden ocultar información dentro de otros ficheros:

  • steghide: consigue ocultar información en JPEG, BMP, WAV y AU, cifrando el mensaje con mcrypt.
  • outguess: la herramienta más utilizada para esteganografía, oculta información de diversas maneras.
  • stegdetect: dentro de outguess existe una herramienta de detección de esteganografía que busca patrones

esteganográficos dentro de imágenes y demás ficheros. Normalmente detecta versiones anteriores de outguess y otros programas similares.

26 pensamientos en “Manual de supervivencia en Internet (I): Cifrar el correo electrónico

  1. meneame.net

    Manuales de supervivencia en internet

    Serie de tres manuales (este el primero) que explican de manera clara el uso del correo seguro,la elección de contraseña segura y navegación segura,para evitar ser víctimas de espionaje,robo de claves y tomar conciencia,que no porque se sea una…

    Responder
  2. B3TO

    No manches… hasta que hubo alguien quien pusiera en lenguaje facil de entender este tipo de temas!!!

    Mil gracias!!!

    Responder
  3. Txopi

    Impresionante el artículo! Menudo curro explicarlo todo paso por paso. Se agradece el trabajo de dejarlo todo bien explicado para que la criptografía sea accesible a más gente.

    Como siempre, aprovechando que me lo he leido, un par de comentarios:

    Cuando hablas de PGP y la declaración de Zimmerman antes de su salida de Network Asociates sobre la versión 7.0.3 de PGP, das a entender que la diferencia principal entre PGP y GnuPG es que el segundo tiene el código fuente disponible porque es software libre. Aunque pueda entenderse como una sutileza, yo creo que hay que explicar un poco más la razón de esa declaración y el hecho de que hasta entonces el código fuente de todas las versiones de PGP había sido publicado regularmente. Cuando NAI compró PGP esto empezó a no complirse de todo, a aparecer pegas, etc. lo que sin duda provocaría unas discusiones de órdago por parte de Zimmerman. Pero bueno, a lo que iba, que el código fuente de PGP sí estaba disponible (lo sacaban de EE.UU. impreso para eludir ciertas leyes y luego lo digitalizaban) y en este caso la diferencia fundamental entre PGP y GnuPG eran el resto de libertades que el software libre proporciona aparte de poder leer el código fuente.

    Cuando hablas de WinPT hay una referencia a una imagen llamada WinPT16.jpg que no existe.

    Responder
  4. txipi

    Muchas gracias por los comentarios, Txopi, muy oportunos. Creo que ya he arreglado lo de la imagen que faltaba O:-)

    B3TO y Viktor, muchas gracias por vuestras opiniones ;-)

    Responder
  5. Txopi

    Me gustaría extender un poco el comentario que puse el otro día.

    Sobre la disponibilidad del código fuente de PGP para su revisión pública y muchas otras anécdotas, hay más información disponible en el taller de criptografía de Arturo Quirantes:
    http://www.ugr.es/~aquiran/cript...

    Sobre las razones de Zimmermann para escribir aquella carta explicando su salida de NAI (y por tanto dejando a su suerte el programa PGP), en mi opinión no eran en absoluto porque su reputación estuviese en juego. Después de la lucha que mantuvo durante años contra el gobierno de los Estados Unidos para seguir con PGP y hacer accesible la criptografía a todo el mundo sin limitaciones, su reputación en la comunidad estaba fuera de toda duda. Es por ello que en mi opinión, la verdadera motivación de Zimmermann era dejar bien claros los motivos de su marcha (una decisión que sorprendería a muchos) y alentar a la comunidad criptográfica a apostar por estándares abiertos y programas libres (en detrimento de su hasta el momento querido y mimado PGP).

    Responder
  6. Lucas

    Excelente, tu artículo es claro y sencillo. Tal vez didáctico sea la palabra, permitiendo a uno investigar más y estar consciente de los pros y contras de la comunicación via internet (y afines).

    Los comentarios complementarios también los agradezco.

    Otra vez gracias.

    Responder
  7. Bray

    Acabo de inmiscuírme en el mundo de la criptología gracias a un libro que me estoy leyendo y tú pequeña introducción es la mejor que he visto hasta ahora en cuanto a nociones básicas.

    Se agradece que haya gente como tú por el mundo ^^

    Responder
  8. dolphin

    Excelente tutorial, muy trabajado y útil. Agradezco mucho el esfuerzo txipi. Me ha ayudado ha entender muchas cosas acerca de la criptografía además de poder aplicarlo.

    Responder
  9. LUIS

    quisiera saber si existe algun programa para descifrar contreseña de correos electronicos; como por ej. de este tipo de correos (ejemplo_@hotmail.com), agradecere me envie su respuesta con nombre de programa si es q existe.

    gracias

    Responder
  10. txipi

    @LUIS: lo siento pero no existe ningún programa para descifrar las contraseñas de hotmail. Como mucho puedes investigar a una persona para saber qué contraseñas suele usar o algo así, pero poco más.

    Responder
  11. lokord

    Excelente tutorial. Muy aclarador y sencillo.

    Para los que preguntáis por las contraeñas de hotmail; entrar aquí para preguntar cosas de esa índole, es como ir a una escuela para aficionados en aviación y preguntar como se puede robar un avión, ¡urgentemente! xDDD Lo más seguro es que dijeran: “…primero tendrás que aprender a pilotar un avión y luego ya se verá…”. Es un ejemplo un poco exagerado pero espero que os aclare un poco las cosas de por donde tenéis que empezar para conseguir vuestro objetivo.

    Saludos.

    Responder
  12. Pingback: Manual de supervivencia en Internet en Clementebl.com

  13. [DoodoM]

    Hola, he encontrado hoy este tutorial mientras navegaba desde la oficina y si tuviera sombrero no podría sino quitármelo ante el estupendo trabajo que hiciste con este Manual de supervivencia en Internet. Explica muy bien las cosas a los novatos, y a mí que últimamente andaba metido un poco en esto de la criptografía, porque me gusta y me interesa, me ha aclarado bastantes dudas. Deberías juntar este tipo de artículos en una especie de e-book PDF con licencia Creative Commons y distribuirlo de manera gratuita. Sería un éxito sin lugar a dudas.

    Por último me gustaría añadir un poquito más de información para aquellos que utilicemos la versión CLI (Command Line Interface) de GnuPG. Este artículo explica de manera clara y concisa todas las posibles cosas que se pueden hacer con el programa en cuestión: http://www.estrellateyarde.es/discover/gpg

    Y para los usuarios de Firefox 3.x existe una extensión/complemento llamado FireGPG, que recientemente he descubierto, y que junto a GnuPG en GNU/Linux o WinPT/GnuPG en Windows harán de Firefox además de un magnífico navegador, una versátil herramienta de cifrado, descifrado y gestión de claves, tanto privadas como públicas. He aquí la dirección de descarga: http://es.getfiregpg.org/index.html

    Saludos y enhorabuena por tu blog. :-)

    Responder
  14. Pingback: Cuida tu seguridad en el correo electrónico

  15. Peter

    Enhorabuena!!!!….por fin encuentro una “explicación” razonable al tema de la criptografia a nivel usuario. No voy a comprarme un sombrero para quitarmelo ante ti (que seria lo propio), pero si voy a poner un enlace en mi web (http://www.cuidatusdatos.com) para que los usuarios puedan leer este artículo (si te parece bien)……mi website es un portal especializado en protección de datos que ofrece gratuitamente información para que la gente pueda entender y aplicar estos temas, por lo que aportaciones como la tuya son muy bien recibidas. Un saludo

    Responder
  16. Ignacio

    Agradezco la aportacion que haces, se me hace super fantastica, he leido articulos sobre todo esto, pero nunca tan bien explicados como por ti, gracias lo aplicare, asi como lo describes se ve facil, pero creo que solo practicandolo se comprendera las funciones que tiene este programa pictografico.
    Un saludo

    Responder
  17. Pingback: Cifrar el correo electrónico | Curso Manual Tutorial

  18. Unlock

    Muchas gracias por todo. Casi 6 años después sigue siendo de utilidad para muchos que nos iniciamos en nuestra autoprotección en la red.
    Gracias!

    Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>