- ¿Qué es GPG?
- Instalar GnuPG
- Cifrado Simétrico
- Cifrado Asimétrico
- Creación de un par de llaves
- Cifrar y firmar mensaje como texto
- Cifrar y firmar Archivo
- Firmar Mensaje y archivo en claro
- Firmar Archivo
- Servidores de llaves
- Certificado de revocación/a>
- Cifremos nuestros datos
- Referencias
¿Qué es GPG?
GPG -o GNU Privacy Guard– es un programa, perteneciente al proyecto GNU, que permite usar cifrado y firmas digitales al implementar el estándar OpenPG, la versión libre de PGP. Lo importante, más allá del parecido de los nombres, es que GPG, el programa que usaremos para cifrar, es software libre, lo que garantiza la transparencia de lo que dice hacer, sin perjudicar los intereses del usuario. El programa permite utilizar dos tipos de cifrado, simétrico y asimétrico, cuya descripción y usos las encontramos aquí.
Instalar GPG
En GNU/linux, GPG y Kleopatra pueden estar en los repositorios oficiales de la distribución que se utilice y se instalan como los demás paquetes del sistema. Si ya se ha instalado, se puede continuar desde el uso de la herramienta. En Windows, para instalar GnuPG, debemos ir al sitio https://gnupg.org y dirigirnos a la sección descargas o Download.
Una vez ahí, buscamos la opción Gpg4win y la seleccionamos. Luego se habilitará la opción de descarga y la presionamos.
Si podemos donar al proyecto, seleccionamos el monto; si no, seleccionamos “0” para permitir la descarga.
Una vez descargado el archivo, hacemos doble clic en él, autorizamos su instalación y empezará el proceso. Luego, presionamos siguiente.
Seleccionamos los programas específicos, como lo muestra la imagen y luego presionamos siguiente hasta que aparezca la opción de instalar. Habiendo hecho eso, ya tendremos instalado GnuPG en nuestro computador y podremos empezar a usar criptografía en nuestros archivos y correos.
Cifrado Simétrico
La interfaz gráfica o el programa con el que utilizaremos GnuPG se llama Kleopatra, el cual podemos buscar en el escritorio o en el inicio de Windows o en el listado de herramientas de GNU/Linux.
Cifrando un texto
Una vez abierto el programa, veremos las opciones que ofrece. Si lo que buscamos es cifrar un mensaje o texto, debemos seleccionar la opción “Bloc de notas”, marcada en la imagen.
En esta opción, aparece una pestaña llamada Bloc de notas, que es donde podemos escribir o copiar el texto que necesitemos cifrar.
Una vez que nuestro texto esté listo para cifrar, debemos seleccionar la segunda pestaña, llamada “Destinatarios”, en donde solo debemos dejar marcada la opción “Cifrar con contraseña«, como se muestra en la imagen. Esto le indicará al programa que el cifrado que haremos es de tipo simétrico, es decir, que solo utilizará contraseña.
Podemos volver a la pestaña Bloc de Notas y, esta vez, seleccionar la opción “Cifrar Bloc de notas”, lo que activará el cifrado y solicitará la contraseña —que, por seguridad, debe ser de 20 caracteres mínimo—. Una vez introducida la contraseña, el texto original o “en claro” será reemplazado por el texto cifrado, como se observa en la imagen. Este nuevo texto puede ser guardado en un cualquier archivo de texto para poder ser guardado o transportado. Incluso, el texto cifrado podría ser visto por cualquiera, pero su contenido oculto solo podrá descifrarse para quien posea la contraseña.
El proceso de descifrado es similar, ya sea para este texto u otro. La única diferencia es que debemos pegar el texto ya cifrado en el Bloc de notas y, en vez de presionar cifrar, debemos elegir la opción de al lado, “Descifrar”. Con esto el programa analizará el mensaje y solicitará la contraseña, luego de lo cual se revelará el contenido oculto.
Cifrado un archivo
También es posible usar cifrado simétrico con archivos —de texto, imágenes, etc—, para lo cual podemos seleccionar un archivo en el escritorio, en el caso del ejemplo es una imagen.
Una vez que sepamos qué archivo cifrar, debemos presionar con el botón derecho del mouse o cursor sobre el archivo y seleccionar “Más opciones de GpgEX” y luego “Cifrar”
Posteriormente aparecerá la opción para seleccionar destinatario, en donde elegiremos únicamente “Cifrar con contraseña”. Luego, una vez que presionemos “Cifrar”, se solicitará la contraseña de cifrado.
Cuando se realice el cifrado, veremos junto al archivo original uno nuevo con la extensión .gpg —si es tenemos activada la opción para ver las extensiones—. Este es nuestro archivo cifrado que podemos guardar y que solo será accesible con la contraseña.
En el caso de que necesitemos descifrar un archivo que tenemos guardado o que recibimos, el proceso es similar, excepto por el hecho de que en esta ocasión las opciones son “Más opciones de GpgEX” y “Descifrar”.
Cambiar algoritmo de cifrado
De modo predeterminado, para el cifrado simétrico, GnuPG usa el algoritmo AES (Advanced Encryption Standard), estandarizado en el año 2001, el cual se utiliza en la mayoría de los gobiernos, agencias de seguridad y entidades bancarias para almacenar la información sensible. Sin embargo, en este caso utiliza una longitud de clave de 128 bits, longitud que puede extenderse hasta 256 para una mayor seguridad. Hasta el momento, no ha sido posible quebrar el cifrado del algoritmo AES de 256 bits en condiciones habituales.
Para hacer esta modificación con certeza, es preferible abrir una ventana del explorador de archivos y colocar en la barra de navegación %APPDATA%\gnupg
y después abrir como bloc de notas el archivo gpg.conf
Una vez abierto el documento de texto, debemos asegurarnos, al menos, de que en la línea que empieza con personal-cipher-preferences
, la serie de algoritmos que le sigue comience con AES256, como muestra la imagen. Si el archivo no existe, podemos crearlo sin problemas. Una vez guardada esta modificación, todo el cifrado simétrico que se realice utilizará el algoritmo AES256
Nota: Este procedimiento es todo lo que se necesita para realizar el cifrado simétrico en Windows. Ya podemos empezar a guardar mensajes o archivos, en nuestro sistema o en una memoria USB para resguardar nuestra información evitando que sea legibles por alguien más, ya que solo podrán acceder quienes conozcan la contraseña. Hay que recordar usar siempre una contraseña fuerte, de al menos 20 caracteres que combinen minúsculas, mayúsculas, números y signos.
Cifrado Asimétrico
Creación de un par de llaves
Para utilizar el cifrado asimétrico o de llaves, en primer lugar es necesario crear un par de llaves, una que debemos entregar a nuestros contactos para que puedan enviarnos información cifrada -llave pública- y otra que debemos guardar en secreto que sirve para descifrar los mensajes que nos envían.
Por ello, una vez que nos encontremos en la ventana principal de Kleopatra, seleccionamos “Nuevo par de claves”.
Nota: si ya tenemos llaves propias, hay que buscar la opción de generar nuevo par de llaves, claves o certificados, que son los nombres empleados para referirse a las llaves según la traducción de nuestra versión de GPG.
Con esto, se iniciará el proceso para la creación de nuestro par de llaves. Lo primero que se consultará es el nombre de nuestra identidad y la dirección de correo asociada. Es necesario indicar al menos una de esas dos identificaciones, ya sea nombre, correo o ambos.
Recordemos que el uso que le queramos dar a esta llave determinará si usamos el nombre real o seudónimo, así como si queremos indicar un correo electrónico o no. Recordemos que el uso que le queramos dar a esta llave determinará si usamos el nombre real o un seudónimo, así como si queremos indicar un correo electrónico o no. La información de identificación que coloquemos en la llave será de acceso abierto para cualquier persona a la que entreguemos nuestra llave pública. Por esto, debemos considerar esta información como una carta de presentación. Nosotros decidimos el nivel de anonimato y la información que queremos entregar. De todos modos, podemos crear tantos par de llaves como necesidades tengamos, por lo que podemos ir probando qué identidades de cifrado nos acomodan más.
Una vez que tengamos esa información seleccionada, podemos dirigirnos a la opción “Configuración Avanzada”.
En configuraciones avanzadas debemos asegurarnos de que el algoritmo RSA -utilizado para el cifrado de llaves- esté marcado en ambas opciones, además de indicar que el tamaño de la llave sea de 4096 bits (el mayor tamaño posible) en ambos casos, como lo muestra el ejemplo. Se trata de una doble elección porque, en rigor, la llave privada está compuesta por una llave general para firmar y otra sub llave para cifrar. En este momento de aprendizaje de GPG, la diferencia no es relevante aún.
También es posible elegir la fecha de expiración, que es la fecha en cuándo nuestra llave dejará de tener validez. Si bien es posible quitar la opción de fecha de expiración, es preferible mantenerla para que una llave caduque sola en el caso de no volver a usarla o no poder revocarla por falta de acceso. Por ello, es preferible pensar que cada cierto tiempo debemos renovar nuestras llaves con unas nuevas o, si lo consideramos pertinente, extender el plazo de caducidad, lo cual siempre es posible. Predeterminadamente, el plazo para su expiración es de 2 años, lo cual es un tiempo razonable.
Luego de aceptar esta configuración y posteriormente presionar en “Crear”, se solicitará la contraseña que permitirá el uso de la llave. Recordemos que es preferible usar una contraseña de 20 caracteres mínimo, con números, signos, minúsculas y mayúsculas. El proceso demorará mientras el programa busca datos aleatorios para generar la información de las llaves de la manera más azarosa posible. En este momento, mientras más ocupemos el computador, más rápido se crearán las llaves.
Finalmente, debe aparecer el mensaje de la creación exitosa de las llaves.
Ahora podemos ver, en la ventana central del programa, nuestra llave de cifrado y su información detallada si presionamos con el botón derecho sobre ella y elegimos “Detalles”.
La serie de 40 caracteres hexadecimales que aparece en la descripción de “Huella Digital” es la identidad más específica de nuestra llave. Para poder corroborar a nuestros contactos que nuestra llave de cifrado efectivamente es la que usan, deben corroborar que corresponde a esa identidad. Existe una versión abreviada con los últimos 16 caracteres llamada “ID”, que también suele utilizarse, pero siempre es preferible confiar principalmente en la huella digital o fingerprint.
Exportar llave pública
Para poder usar cifrado de llaves para comunicarnos con otra persona o para intercambiar archivos de modo seguro, primero debemos intercambiar llaves públicas. Para hacerlo, primero debemos exportar nuestra propia llave, por lo cual tenemos que elegir la opción “Exportar” sobre la información de nuestra llave. Posteriormente, hay que seleccionar el nombre que tendrá el archivo que exportamos y su ubicación antes de aceptar.
El archivo generado, con extensión .asc, es nuestra llave pública y si lo abrimos con un bloc de notas, podremos ver su contenido. Esa llave, ya sea como archivo o como texto, podemos compartirla públicamente o, si lo preferimos, solo con quienes queremos que nos contacten. Podemos hacerlo entregando directamente el archivo, enviándolo por correo o publicándola en un servidor de llaves —que veremos más adelante—. Idealmente, quien reciba esta llave, debe conocer de nuestra parte la huella digital que nos identifica, para poder tener certeza de que efectivamente corresponde a nosotros. Para hacer efectivo su uso, nuestro destinatario debe importar la llave en su sistema, del mismo modo que debemos hacerlo nosotros con las llaves públicas que recibamos.
Exportar Llave Privada
Siempre es pertinente guardar una copia de nuestra llave privada para poder seguir utilizándola en caso de que no podamos volver a acceder a nuestro computador. En este caso, la opción que se debe elegir es “Exportar claves secretas”. Se nos solicitará confirmar esta acción y también nuestra contraseña para autorizarlo. Es necesario destacar que si otra persona logra tener acceso a nuestra llave privada, es preferible asumir que su uso ya no es seguro y es necesario revocarla, lo que se verá más adelante. Este respaldo de nuestra llave privada es recomendable protegerlo con cifrado simétrico para evitar que pueda ser accesible a cualquiera, y, de ser posible, almacenarlo en una partición o dispositivo externo debidamente cifrado. Podemos usar luego un programa de borrado seguro para eliminar el archivo original creado, eliminando el rastro de la llave privada.
Para volver a usarla en otro computador o en el mismo luego de un formateo, simplemente es necesario importar la llave de la misma manera que se hace con las llaves públicas, como se verá a continuación.
Importar Llave Pública
Cuando recibimos una llave, ya sea como texto o como archivo, simplemente hay que presionar con el botón derecho sobre el archivo y elegir la opción “Más opciones de GpgEx” y luego “Importar claves”.
Esto agregará la llave pública que recibimos de nuestro contacto. Posteriormente nos pedirá verificar esta llave, es decir, indicarle al programa que esa llave tiene con nuestra confianza para ser usada.
Por ello, se nos pedirá elegir una de nuestras llaves propias para “firmar” la llave que está siendo importada, seleccionamos la llave que con la cual queremos certificar —la nuestra— y luego la llave de nuestro contacto que estamos agregando. En el proceso se pedirá nuestra contraseña para esta “firma”. Debemos verificar que la Huella digital que aparece corresponde a la que nos ha informado nuestro contacto. Si es la correcta, aceptamos la llave y seguimos con el proceso
Finalmente, se nos preguntará si queremos que esta verificación sea solo para nosotros o que sea pública, como subirla a un servidor de llaves. En esta ocasión, es preferible que sea solo para nosotros.
Con esto, ya contamos con una llave pública con la cual cifrar mensajes a nuestro contacto, el cual debe tener también nuestra llave pública para poder mantener la correspondencia.
Cifrar y firmar mensaje como texto
Para enviar un texto con cifrado asimétrico, usando las llaves que tenemos, debemos dirigirnos a la opción “Bloc de notas”.
Escribimos el mensaje que queramos enviar a nuestro contacto y luego presionamos en “Destinatarios” para especificar a quién queremos cifrar nuestro texto.
Al momento de elegir el destinatario, también podemos elegir si firmar el mensaje. Esto permite a nuestro destinatario verificar que somos nosotros quien envía el mensaje. Si la persona con la cual nos contactamos posee nuestra llave pública, podrá verificar que el mensaje es nuestro. Claro está que firmar un mensaje cifrado es opcional y depende del nivel de anonimato que queramos. Sin embargo, si se trata de mantener una comunicación segura y confiable con alguien que conocemos, siempre es preferible cifrar el mensaje para evitar que alguien más intente hacerse pasar por nosotros.
Luego, en las opciones de Cifrar, escogemos las llaves públicas de las personas a las cuales enviaremos el mensaje, es este caso se trata solo de Bob, pero podrían ser más personas en caso de tener sus respectivas llaves públicas. En este ejemplo, además, es posible elegir la opción “cifrar para mí”, lo que cifrará el mensaje también para nosotros, que en este caso es Alicia. La idea de esto es que, en caso de ser necesario, podamos volver a descifrar el mensaje una vez que lo enviemos, si es que no guardamos una copia del original.
Cuando hayamos elegido los destinatarios y nuestra firma, seleccionamos la opción “Firmar/cifrar Bloc de notas” y veremos en la pestaña “Bloc de notas” que el texto original, o en claro, se encuentra ahora cifrado. Este nuevo texto cifrado podemos copiarlo en un archivo de texto o cuerpo de correo y enviarlo a nuestro contacto para que solo él pueda descifrarlo.
Descifrar mensaje de texto y verificar firma
Si somos nosotros quienes recibimos un texto cifrado, por correo u otro medio, debemos realizar un proceso similar. Copiar el texto cifrado en el “Bloc de notas” y luego presionar “Descifrar”. Si el mensaje fue cifrado correctamente con nuestra llave, en este caso Alicia, se nos pedirá nuestra contraseña, revelando el mensaje original y la firma de quién lo envía, que en el ejemplo se trata de la llave de Bob.
Cifrar y firmar Archivo
Si lo que buscamos cifrar no es un texto, sino un archivo, del tipo que sea, lo que debemos hacer es buscarlo en la ubicación en que se encuentra y presionar con el botón derecho sobre él y elegir “Más opciones de GpgEx” y luego “Firmar y cifrar”.
Elegimos las llaves con las cuales se cifrarán, que también puede incluir la nuestra, en este caso Alicia, y también debemos marcar “Firmar como” si buscamos que nuestro destinatario sepa quién le envía el archivo. Como se señaló anteriormente, depende del grado de anonimato o confidencialidad que se quiere tener.
Luego de aceptar, se generará un archivo cifrado en la misma ubicación del archivo original. Este nuevo archivo podemos enviarlo a nuestro contacto para que solo pueda ser descifrado por él. Es recomendable comprimir previamente los archivos a enviar antes de cifrar, para resguardar lo mejor posible el nombre de los originales y su extensión.
Descifrar y verificar firmar de Archivo
En el caso de que recibamos un archivo, le procedimiento es similar. Se debe presionar el botón derecho sobre el archivo y llegar hasta la opción de “Descifrar y verificar”. Si el archivo fue cifrado con nuestra llave, en el caso de nuestro ejemplo es Alicia, se nos pedirá la contraseña y se podrá verificar, de modo similar a como se hizo cuando se descifró un texto. La única diferencia es que en este caso debe elegir el archivo.
Firmar Mensaje y archivo en claro
Como hemos visto, el cifrado de mensajes y archivos permite la seguridad y confidencialidad de la información que compartimos con nuestros contactos. Del mismo modo, las firmas digitales permiten corroborar que las personas que se están comunicando verifiquen la autoría u origen de los mensajes cifrados intercambiados. Con GPG, es posible incluso usar la firma de mensajes sin cifrado, es decir, poder comunicar o publicar algún texto o archivo que queramos que sea públicamente reconocido como de nuestra autoría. Esto es útil cuando se hace un comunicado y no se quiere dejar espacio a dudas de que somos nosotros quienes lo publicamos. En ese mismo sentido, podemos firmar un archivo o documento que queramos compartir y además indicar que la autoría es nuestra. Esta práctica es habitual y muy útil cuando se descarga un software y se necesita verificar que el programa corresponde al que dice ser, evitando instalar algún programa malicioso.
Firmar Texto
Para firmar un mensaje, solo es necesario ir al Bloc de Notas en GPG y escribir el texto que queramos publicar o compartir. Una vez terminado el texto, debemos dirigirnos a la pestaña Destinatarios.
En esta ocasión, en vez de elegir una opción de cifrado, solo debemos dejar marcada la opción “Firmar como” y seleccionar la llave que queremos utilizar. Luego, hay que volver a “Bloc de notas” y posteriormente presionar “Firmar Bloc de notas”.
Una vez que nos pida la contraseña y aceptemos usar nuestra llave, en el Bloc de notas aparecerá el texto que habíamos escrito, pero ahora junto a un texto cifrado que corresponde a nuestra firma. Se debe copiar todo el texto que aparece aquí y compartirlo o publicarlo. Así, cualquiera que posea nuestra lleva pública podrá verificar que el mensaje del texto lleva nuestra firma digital.
Firmar Archivo
Para firmar un archivo, es más sencillo aún. Solo basta con seleccionar con el botón derecho sobre el documento que queremos firmar y escoger las opciones “Más opciones de GpgEx” y luego “Firmar”.
Una vez que nos pida seleccionar la llave que usaremos, y dejando marcado solo la opción “Firmar como”, aparecerá un nuevo archivo en la misma ubicación del documento que queremos firmar. Este nuevo archivo, que es un archivo cifrado, es nuestra firma que debe acompañar al archivo original para corroborar que lo hemos firmado nosotros. Podemos firmar todo tipo de archivo, documentos, etcétera.
Servidores de llaves
Un servidor de llaves es un servicio que permite guardar llaves públicas para que cualquiera que acceda en él encuentre la llave que busca. Si queremos tener una llave con acceso público, es buena idea subirla a un servidor de llaves. Si, por el contrario, preferimos hacer un uso discreto de nuestras llaves, es recomendable solo compartirla directamente con nuestros contactos.
Primero es pertinente verificar qué servidor es el que se encuentra configurado en nuestra versión de GPG. Para ello, en la ventana principal de Kleopatra, debemos seleccionar “Preferencias” y luego escoger “Configurar Kleopatra”.
En las opciones que aparecen, debemos elegir “Servicios de directorio” y revisar qué aparece en la opción Servidor de claves OpenPGP. Independientemente de qué servidor de llaves aparezca indicado, si buscamos un servidor descentralizado que garantice la permanencia en línea de nuestra llave, es preferible especificar en esta opción la piscina de llaves hkps://hkps.pool.sks-keyserves.net
. Una piscina de llaves de cifrado es una red de servidores distribuidos por el mundo que permiten mantener siempre en línea las llaves que almacenan, ya que al no dependen de un solo servidor. Siempre habrá al menos un servidor de esa red disponible para ofrecer la búsqueda.
Buscar llave pública
Una vez indicado el servidor que queremos usar, el cual siempre es posible modificar, nos dirigimos a la ventana principal de Kleopatra y seleccionamos la opción “Búsqueda en el servidor”.
Una vez aparezcan las nuevas opciones de búsqueda, ponemos el indicador con el cual queremos buscar alguna llave en particular en el servidor registrado en nuestro programa. En este caso elegimos buscar por el nombre de la llave, pero también se puede buscar por la huella digital o por la ID. Una vez encontrada la llave que buscamos, la seleccionamos con el botón derecho y elegimos importar o agregar.
Subir llave pública
Nota: solo debemos subir llaves que queramos tener con un acceso público. Esto no tiene que aplicarse necesariamente a nuestras llaves si no lo queremos.
Para subir una de nuestras llaves públicas a un servidor, debemos seleccionarla con el botón derecho en la ventana principal de Kleopatra y luego elegir “Publicar en el Servidor”. Se nos solicitará confirmar esta acción y luego volver aceptar. Recordemos que la llave permanecerá siempre en el servidor, sin poder ser eliminada. En caso de que no queramos que tenga validez una llave pública, se debe revocar y luego volver a subir la llave pública revocada, lo que veremos a continuación.
También es posible buscar y subir llaves directamente en los sitios web de los servidores de llaves, como hkps-pool.sks-keyservers.net.
Certificado de revocación
Un certificado de revocación es un archivo digital que, una vez generado e importado en un sistema, anula la validez de nuestro par de llaves. Esta función es importante cuando queremos dejar de usar nuestro par de llaves o cuando sabemos que nuestra contraseña o llave privada ha sido comprometida. Para generarlo debemos seleccionar la opción “Detalles” de nuestra llave privada.
Luego de lo cual, al mostrarse la información de nuestra llave, seleccionamos la opción “Generar certificado de revocación”.
Luego de solicitarnos confirmar esta acción, se generará el certificado que debemos guardar donde estimemos pertinente. Es necesario destacar que cualquiera que posea este certificado puede revocar nuestras llaves, por lo que debemos mantenerlo oculto —cifrado— y en secreto mientras no lo queramos usar.
Si abrimos el archivo en un bloc de notas, veremos una breve descripción de su funcionamiento y que se encuentra “modificado” el inicio del texto del certificado. Por eso, para poder usarlo, debemos borrar los dos puntos ( : ) que se encuentran al inicio de la linea que dice “Begin PGP Public”.
Una vez eliminado los dos puntos, y si es el caso de que queramos usar este certificado, debemos importar la revocación del mismo modo en cómo se hace con una llave pública, como describimos anteriormente. Una vez hecho esto, podremos verificar que nuestra llave fue revocada en nuestro sistema.
Si queremos revocar nuestra llave publicada en un servidor de llaves, ahora podemos subir nuestra llave pública revocada. Además, podemos compartir públicamente nuestro certificado de revocación con nuestros contactos para que puedan revocar nuestra llave de sus sistemas, si es que no lo actualizan desde los servidores.
Cifremos nuestros datos
La criptografía práctica, como la que permite GnuPG, entrega a las personas la capacidad de establecer medios de comunicación seguros sin importar qué tan inseguro es el canal utilizado, defendiéndonos de la vigilancia masiva. Del mismo modo, permite crear una comunicación plenamente autónoma dentro de un canal ya existente y perteneciente a un tercero. Con el cifrado podemos contribuir a hacer efectiva la libertad de nuestras comunicaciones y la organización segura de nuestras comunidades.
Referencias
Méndez Veiga, Iyán. Microcurso para físicos y matemáticos de criptografía práctica (2016). Enlace
Riseup. Managing OpenPGP Keys. Enlace
Riseup. GPG buenas prácticas. Enlace