Cómo encriptar archivos y mensajes en Ubuntu

La encriptación o cifrado de archivos, textos, etc. es una herramienta que todos los usuarios de Linux deberíamos conocer y que, lamentablemente, pocos conocen y utilizan a diario. Esto es especialmente llamativo si tenemos en cuenta la reputación que tiene Linux como “sistema operativo seguro”; esta es una herramienta más que Linux pone al alcance de tu mano para mejorar tu seguridad. ¿Por qué no la usás? ¿Por ignorancia? Bueno, este post viene a llenar ese “hueco”.El método más sencillo para encriptar información es utilizando GNU Privacy Guard (GPG). Este mini how-to describe su instalación y manejo en Ubuntu de pies a cabeza. Me llevó casi 2 días escribirlo, así que espero que les sea de utilidad.

Cómo funciona GPG

GPG utiliza un sistema híbrido que combina encriptación simétrica y asimétrica.

La encriptación asimétrica trabaja siempre con un par de claves. Una de ellas será tu clave “pública” y la otra tu clave “privada”. Como bien lo indica su nombre, la clave pública se la podés dar a aquellas personas a las que les querés mandar mensajes encriptados y no hay ningún peligro si una persona ajena la ve, es más, suelen publicarse en servidores públicos para facilitar su acceso; la clave privada, en cambio, debe ser secreta y no tenés que compartirla con nadie. Lo más bello de todo esto es que, como veremos a continuación, ambas claves son creadas directamente por GPG en base a tus datos personales. El último paso es “sellar” esas dos claves a través de una “passphrase”. Así que, al final, la única contraseña que vas a tener que acordarte es tu “passphrase”.

Pasando en limpio, gracias a la encriptación asimétrica, si el remitente usa la clave pública del destinatario para cifrar el mensaje, una vez cifrado, sólo la clave privada del destinatario podrá descifrar este mensaje, ya que es el único que la conoce. Por tanto, se logra la confidencialidad del envío del mensaje: nadie salvo el destinatario puede descifrarlo. Si el propietario del par de claves usa su clave privada para cifrar el mensaje, cualquiera puede descifrarlo utilizando su clave pública. En este caso se consigue por tanto la identificación y autentificación del remitente, ya que se sabe que sólo pudo haber sido él quien empleó su clave privada (salvo que alguien se la hubiese podido robar).

Un último comentario que me parece interesante mencionar es que los sistemas de cifrado asimétricos se inventaron con el fin de evitar por completo el problema del intercambio de claves de los sistemas de cifrado simétricos. Con las claves públicas no es necesario que el remitente y el destinatario se pongan de acuerdo en la clave a emplear. Todo lo que se requiere es que, antes de iniciar la comunicación secreta, el remitente consiga una copia de la clave pública del destinatario. Es más, esa misma clave pública puede ser usada por cualquiera que desee comunicarse con su propietario.

¿Qué tan seguro es GPG?

El algoritmo utilizado por GPG es DSA/ElGamal, ya que es “libre” y no recaen sobre él patentes “privativas”.

Respecto de la longitud de la clave, depende de los requerimientos del usuario. Es necesario balancear entre la seguridad y la optimización de los procesos. Cuanto mayor sea una clave, menor será el riesgo de que el mensaje sea descodificado si es interceptado, pero también aumentará el tiempo que empleará para el cálculo de los procesos. El tamaño mínimo que requiere GnuPG es de 768 bits, aunque mucha gente opina que debería ser de 2048 (que es el máximo con GnuPG en este momento). Cuando la seguridad es una prioridad más alta que el tiempo, la opción es elegir el tamaño de clave más grande que se permita.

Instalando GPG en Ubuntu

Ubuntu ya viene “de fábrica” con GPG y una interfaz gráfica para GPG llamada Seahorse. Para acceder a Seahorse sólo tenemos que ir a Aplicaciones > Accesorios > Contraseñas y claves de cifrado.

Antes de eso, les recomiendo abrir un terminal y escribir:

sudo aptitude install seahorse-plugins
sudo killall nautilus

Esto lo que hace es permitirnos integrar GPG a Nautilus. De ahora en más, si hacemos clic derecho en un archivo, veremos que aparecen dos opciones más: “Encriptar” y “Firmar”. Más abajo veremos cómo utilizar estas nuevas herramientas.

Crear las claves

Antes de comenzar a encriptar mensajes y archivos, como vimos, es necesario crear primero nuestras claves asimétricas y nuestro “passphrase”. Para ello vamos a Aplicaciones > Accesorios > Contraseñas y claves de cifrado. Una vez allí vamos a Archivo > Nuevo > Clave PGP.

El sistema nos pedirá a continuación que introduzcamos nuestro nombre, dirección de correo electrónico y un comentario. Éste último es opcional, mientras que los dos primeros son obligatorios. La dirección de correo electrónico que se escoja debería ser una válida, ya que ésta será usada para firmar el identificador de usuario. Si esta dirección se modifica en algún modo, la firma no corresponderá. Las claves serán generadas en base a estos datos.

En el apartado Opciones avanzadas de clave, podés seleccionar un tipo diferente de cifrado. La recomendada es “DSA Elgamal de 768 bits” pero te recomiendo que la cambies a “DSA Elgamal de 2048 bits” ya que es considerada lo suficientemente segura y flexible. La fecha de caducidad es la fecha en la que la clave dejará de ser útil para realizar cifrado u operaciones de firma. 6 meses es un tiempo razonable para ello. Vas a tener que cambiar la fecha de caducidad o generar una nueva clave o subclave después de que pase este lapso de tiempo.

El último paso consiste en introducir una contraseña. Nótese la diferencia entre los términos anglosajones para la palabra «contraseña»: el término “password” indica una “palabra de paso”, mientras que el término “passphrase” indica una “frase de paso”. Por tanto esta contraseña se debe componer de más de una palabra. Para que una contraseña sea efectiva (segura), deberá:

ser larga;
combinar mayúsculas, minúsculas y números;
contener carácteres especiales (no alfanuméricos);
ser difícil de adivinar. Por lo tanto, que no sean nombres, fechas significativas, números de teléfono, números de documentos, …

En general, para crear una contraseña fuerte es aconsejable intercalar maYúsCUlas con mInúsCulas, números, otros carácteres no alfanuméricos, etc. Al escoger las palabras y frases debemos evitar aquellas palabras demasiado obvias, o fechas significativas, y nunca usar citas de libros o frases famosas. Dicho esto, debemos asegurarnos de que la contraseña que elijamos sea lo suficientemente difícil para que no pueda ser traspasada por un «ataque de fuerza bruta», ni siquiera por un «ataque de diccionario», pero lo suficientemente fácil como para que la recordemos. Si olvidáramos una contraseña nuestra clave quedaría totalmente inutilizada, y los criptogramas con ella cifrados, indescifrables. Ante esta posibilidad se recomienda crear siempre certificados de revocación junto con las claves.

Una vez introducidos todos los datos requeridos, empieza el proceso de generación de las claves, que tarda un tiempo considerable dependiendo del tamaño de éstas y la velocidad de tu compu. Durante este proceso el programa recoge datos aleatorios que usará para generar las claves. Una vez terminado, cerrá Seahorse.

Servidores de claves públicas

Publicar mis claves públicas
Los servidores de claves públicas son utilizados para distribuir, precisamente, las claves públicas. De ese modo, es muy fácil buscar a alguien (por su nombre o correo electrónico) en la base de datos y encontrar sus claves públicas para enviarle mensajes encriptados (que sólo él/ella podrá descifrar).

Para “subir” tus claves públicas a estos servidores, sólo tenés que abrir Seahorse, seleccionar tu clave e ir a Remota > Sincronizar y publicar claves. Aparecerá una alerta avisándonos que esto provocará la publicación de las claves públicas seleccionadas.

Obtener las claves públicas de mis amigos

Abrí Seahorse y andá al menú Remota > Buscar claves remotas. Ingresá el nombre o el correo electrónico de la persona que buscás. Luego, seleccioná la clave correspondiente. Cuando termines vas a ver que la nueva clave se agregó a la pestaña “Otras claves”.

(Des)Cifrando archivos y carpetas

Una vez que el par de claves ha sido generado, cifrar y descifrar archivos es bastante simple. Solo tenés que seleccionar un archivo, hacer clic derecho y seleccionar “Cifrar”.

En el diálogo que aparece, seleccioná la clave que creaste anteriormente, y clic en OK.

Si seleccionaste una carpeta para cifrar, te va a preguntar si querés cifrar cada archivo dentro de la carpeta por separado o si preferís que se cree un archivo ZIP que luego será cifrado. La segunda opción es la mejor en la mayoría de los casos.

Si estás cifrando un archivo, una vez que el cifrado esté completo, deberías crearse un archivo del mismo nombre pero con la extensión .pgp. Una vez terminado el proceso, podés borrar el archivo viejo. Si cifraste una carpeta, deberías encontrar dos nuevos archivos: la versión cifrada con la extensión .pgp y un archivo .zip con la versión original de la carpeta. Tanto el ZIP como la carpeta original, pueden ser borrados después del cifrado.

Por razones de seguridad, las versiones no cifradas de los archivos deben ser eliminados permanentemente, en vez de simplemente enviarlos a la papelera de reciclaje. Pero antes asegurate de probar descifrando el archivo cifrado, para ver que todo va bien.

Para ello, sólo tenés que hacer doble clic en el archivo .pgp e ingresar la contraseña cuando te la pida. El archivo original reaparecerá entonces. En caso de ser una carpeta, el archivo .zip aparecerá, y deberás luego extraer el contenido del mismo.

Descifrando archivos en mi otra compu

Este no es un sistema diseñado para crear archivos cifrados portables (como TrueCrypt). Para descifrar tus propios archivos en otra compu, tenés que exportar tu clave y luego importarla en la segunda compu. Esto representa un riesgo de seguridad. Sin embargo, algunas veces puede ser necesario realizar esta tarea (por ejemplo, si tenés una PC y una notebook y querés tener un único par de claves GPG y no una para cada compu como si se tratase de “identidades” diferentes). Así que, aquí van los pasos a seguir en ese caso:

En la compu en la que creaste las claves, iniciá Seahorse (Aplicaciones > Accesorios > Contraseñas y claves de cifrado), y hacé clic derecho en tu clave personal y seleccioná “Propiedades”.

En el cuadro de diálogo que aparece, clic en la pestaña “Detalles”, y luego en el botón “Exportar” al lado de “Exportar la clave completa”. Guardá el archivo en el escritorio. Encontrarás que un nuevo archivo ha sido creado con la extensión .asc. Son tus claves en texto plano.

Copiá el archivo .asc a una memoria USB, y de ahí a la segunda compu. Ahora en esa compu iniciá Seahorse y hacé clic en el botón “Importar”. Navegá hasta donde guardaste el archivo .asc, y hacé clic en “Abrir”. Esto importará la clave. Cerrá Seahorse y hacé doble clic sobre cualquier archivo cifrado con tu clave para descifrarlo. Te va a preguntar el “passphrase”, así que escribilo. Después de esto, el archivo original se guardará en la misma carpeta donde está el archivo .pgp.

Por último, tené en cuenta que la hora y fecha de los computadores donde crees/importes/exportes las claves debe ser correcta. Por varias razones técnicas, Seahorse y el comando gpg no pueden importar una clave si la hora y fecha en el PC es menor que la fecha en la que aparece creada. Por supuesto, esto significa que si la compu donde creaste la clave tiene una fecha errónea, podría darte bastante problemas la creación y uso de la clave.

Cifrar texto

Existe un complemento de Gedit para cifrar el texto seleccionado. Para habilitarlo, andá a Editar > Preferencias > Complementos. Elegí “Cifrado de texto”. Una vez habilitado el plug-in, se habilitarán las opciones en Editar > Cifrar/Descifrar/Firmar.

GPG y Firefox

Existe un plug-in para Firefox (FireGPG) que brinda una interfaz gráfica integrada para aplicar operaciones de GPG (incluyendo (des)cifrado, firma y verificación de firma) sobre cualquier texto en una página web.

FireGPG también permite trabajar con webmails (Gmail, etc.), aunque en el momento en que yo lo probé la integración con Gmail estaba “rota”. Para ver una lista completa de webmails con los que trabaja FireGPG: http://getfiregpg.org/s/webmails

Bajar FireGPG: http://getfiregpg.org/stable/firegpg.xpi

Acelerando un poco el proceso de cifrado…

Para (des)cifrar información utilizando siempre una misma “identidad”, te recomiendo que vayas a Sistema > Preferencias > Cifrado y depósitos de claves. Luego accedé a la pestaña “Cifrado”, y donde dice “Clave predeterminada” seleccioná la clave que siempre vas a utilizar para (des)cifrar información. Si sos curioso, te recomiendo que también le pegues una mirada a la pestaña “Frase de paso PGP” para tunear al máximo tu GPG.

Firmar y Verificar

Muchas veces, uno no quiere mandar un mail cifrado, pero sí quiere que el destinatario tenga la certeza de que fui yo quien lo mandó. Para eso, se utilizan las firmas digitales. Todo lo que hace falta hacer es verificar el mail utilizando GPG y la clave pública del emisor.

Para encriptar un mail, como vimos, se utiliza un par de claves. Una de ellas es secreta y la otra pública. En el caso de la firma digital, todas las personas que reciban un mail firmado por mi podrán comprobar que ese mail fue escrito por mi y que el mail no fue alterado maliciosamente en el camino, utilizando mi clave pública, ya que yo lo firmé utilizando mi clave privada.

Por ese motivo, uno de los grandes problemas de la encriptación es, precisamente, que el emisor tiene que estar bien seguro que la clave o, en el caso de la firma digital, que ésta perteneza realmente a la persona que dice ser la dueña de la firma. Después de todo, yo puedo afirmar que soy “Monica Lewinsky” y poner su nombre en mi firma digital. Para resolver este problema, existe la firma de las claves públicas. Así, cuando alguien firma mi clave pública, está confirmando que esa clave me pertenece. En otras palabras, están dando fe de que esa clave es mía. La firma mutua de claves conforma, al decir de Robert De Niro, una: “web of trust” o “red de confianza”. Para más información sobre el tema les recomiendo visitar http://www.rubin.ch/pgp/weboftrust.


Para firmar una clave en tu depósito de claves:

1) Seleccioná la clave que querés firmar de las pestañas Claves confiadas u Otras claves reunidas,

2) Elijí Firmar en la barra de herramientas o Archivo > Firmar,

3) Seleccioná con qué minuciosidad comprobaste la clave,

4) Indicá si la firma debería ser local a tu depósito de claves y si tu firma puede revocarse,

5) Hacé clic en Firmar.

GPG y Thunderbird

Existe un plug-in para Thunderbird y Seamonkey llamado Enigmail que te permite escribir y recibir mensajes firmados y/o encriptados utilizando GPG.

La primera vez que corras este plug-in aparecerán una serie de formularios que deberás completar. También incluye guías que explican cómo utilizar GPG.

Para más información sobre GPG les recomiendo leer:


24 comentarios

  1.   Anonymous dijo

    Writing allows me to mastermind my thoughts, planetary and Digital erudition standards by
    share-out their ideas with one another on the classroom Web log situation
    blogging with Mrs. Lanphear. gift bags are Component
    part of all acknowledge that isn’t the way to deal switching to something new.

    Also visit my page: click here

  2.   Soymuyguaytollenodechele! dijo

    Esta muy linda su tutorial!! Que bueno wey, yeve tiempo buscando ayuda! Que ricoo!!
    pD: Los que tengan dudas leed bien pendejos! que buena onda!!

  3.   matao de mierda dijo

    DALE CHIDO MAN!!! MUY BUEN TUTO QUE ONDAAAAA

  4.   Xexu Ortiz dijo

    Buenas Pablo! No se si es cosa de mi navegador, pero el texto de este tutorial me sale cortado, es decir me falta el final de cada linea. Gracias por la ayuda!

  5.   Soymuyguaytollenodechele! dijo

    Chee!! yenoo mis b0las de cheleee!! papahuevoo!! Que ric000 frut000 papitoo!! la conxa de la l0ra pendej00s!!

  6.   Usemos Linux dijo

    En Firefox se ve bien…

  7.   pakete207 dijo

    buen articulo! muy interesante. esta noche me lo releo con más tiempo

  8.   cessarr1 dijo

    Agradecido amig@..Un saludo desde Venezuela.

  9.   dlas dijo

    Estimado,
    Estoy muy agradecido por tu excelente trabajo y, tambien, por compartir la compilacion del procedimiento para generar èste tutorial.
    Saludos Cordiales,
    D.
    Buenos Aires.

  10.   JaD! | Ferrer dijo

    Wow! Muy buen tutorial!

    Sólo me ha quedado una duda… Al exportar mi clave al archivo .asc, me exporta tanto clave pública como privada? Tengo ese temor de perder la privada, pues la pública ya está en línea, pero la privada estpa en alguna parte del sistema que desconozco; quiero sacarle copia y tener las dos llaves en una USB secreta. Además, quisiera tener esa “sincronización” de indentidades entre 2 máquinas.

    Si son tan amables de aclararme la duda, o decrime dónde esta mi clave privada (ya busqué en ~/.gnupg pero no sé cuál es) les estaré muy agradecido 🙂 si se puede al correo, mejor, lo hallarán en mi perfil de Disqus.

    Saludos!
    JaD!

  11.   JaD! | Ferrer dijo

    Creo que ya te agarré la onda; después haré pruebas al respecto…

    Entonces, ahora queda saber cómo rescatar mi clave privada y pública por terminal, pues creo que ahora le envié las dos al servidor en Launchpad!! D: (lo digo porque le envié el texto que me da por “exportar” mi clave -que al parecer son las dos llaves-)

    Gracias por tu respuesta!
    JaD!

  12.   Luis dijo

    Hola:
    GnuPG usa algoritmos libres de patentes, pero me gustaría saber si SMIME usa algoritmos que no son software libre.
    Gracias

  13.   Usemos Linux dijo

    Mirá, x lo que tengo entendido, s/mime es un “estándar abierto” y GNUPG (desde la versión 2) tiene soporte para s/mime. En definitiva, yo creo que si la gente de GNUPG lo incorporó es porque sus algoritmos son libres y el estándar abierto, así que podés usarlo sin problemas.

  14.   Usemos Linux dijo

    La verdad que no sé. Igual, no te parece que es hora de actualizar? Saludos! Pablo.
    El 06/12/2012 18:06, “Disqus” escribió:

  15.   Trosky dijo

    … todavía le queda soporte (LTS) … 😉 … gracias de todas formas.
    salu2.

  16.   Trosky dijo

    Sabes si existe algún bug de seahorse sobre la 10.04?¿ … en otra versión va perfecto pero en la 10.04 da error al generar la clave.

  17.   Piter dijo

    PEDAZO DE TUTORIAL! Ahi va mi practica final de Fundamentos del Hardware xD

  18.   Usemos Linux dijo

    Gracias Piter! Me alegro que te haya servido. Era la idea… 🙂
    Un fuerte abrazo! Pablo.

  19.   yuyo dijo

    no me gusto para nada es un asco!!!!!!!!!!!!!!!!!!!

  20.   Martha G dijo

    También pueden utilizar el servicio de FNIB, correo encriptado a través del uso de Swiftcoins.
    http://www.youtube.com/watch?v=U3_pMGXlOMM

  21.   guest dijo

    hola

    muy buen post

    pero tengo unas dudas…

    actualmente estaba en maivelope pero me esta dando problemas

    no consigo desencriptar los correos que me mandan usando PGP

    resulta que tengo un contacto que me ha enviado un mensaje usando PGP pero no consigo descifrarlo me sale esto: ¡Error! No se encontró clave privada para este mensaje. Identidades de clave privada requeridas: 187C3E990A964C30 o BDA0CFE6BF5E5C1C yo ya probe con enviar un mensaje con la clave privada y aun asi me aparece eso… que estoy haciendo mal??

    y me he pasado a Portable PGP pero no se cual es la passphrase…

    no recuerdo que en maivelope me lo pidiera o hacer yo algo para que apareciera…

  22.   Ignacio dijo

    ¡Genial el tutorial!
    El que dice que es un asco no sabe de que va el asunto

  23.   Anónimo dijo

    Hola.
    No consigo que me aparezca tras clickear el archivo o carpeta a cifrar el desplegable (mediante el click en botón secundario) para que aparezca cifrar pero no lo hace. Me ocurre tanto en lubuntu 16.04 como en xubuntu 16.04

  24.   Santiago· dijo

    Hola, no puedo usar el primer código “sudo aptitude install seahorse-plugins” me dice: “sudo: aptitude: orden no encontrada”.

Deja un comentario

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