Revista Tecnología

Cifrado Asimétrico con GNU Privacy Guard

Publicado el 07 febrero 2013 por Zenkaweb @zenkaweb

CifradoAs

Los algoritmos seguridad de cifrado asimétrico, están basados en la utilización de dos claves para el cifrado/descifrado de mensajes. Esto supone que cada una de las partes involucradas en en intercambio de información (emisor y receptor) deben de disponer de una pareja de claves pública y privada. En la anterior práctica utilizamos el software GNU Privacy Guard (GPG) de Linux para cifrar simétricamente archivos, podéis verlo aquí

Creación de Claves Pública-Privada en Cifrado Asimétrico

Usuario Emisor David

Para generar ambas claves dispones del siguiente comando: $ gpg --gen-key Como se puede apreciar en la captura, el programa nos guiará de forma interactiva por las distintas preguntas de seguridad, para la creación de las claves de cifrado. En  nuestra práctica, serán las respuestas por defecto:
  • Tipo de claves: RSA y RSA
  • Longitud claves: 2048 bits
  • Período de validez: Nunca Caduca

Generar Claves Cifrado Asimétrico

A continuación se creará el identificador (ID usuario) de nuestras claves seguras con los siguientes datos:
  • Nombre y Apellidos
  • Dirección de correo electrónico
  • Comentario
Por último GPG nos requería una contraseña maestra para proteger nuestra clave

Generar Claves Cifrado Asimétrico

Como podemos observar se a han creado nuestras claves de seguridad satisfactoriamente

Claves Cifrado Asimétrico

Podemos observar nuestras Claves seguras con los siguientes comandos $ gpg --list-keys à Clave Pública $ gpg –list-secret-keys à Clave Privada La key_id esta justamente detras del valor de longitud de la clave (2048R), la hemos marcado en rojo en la siguiente captura para que no haya dudas

Key_id Cifrado Asimétrico

Para observar el valor de nuestra clave podemos utilizar las opciones -a --export

$ gpg -a --export key_id

Valor Clave  Cifrado Asimétrico

Exportar e Importar Claves Públicas Seguras

A continuación vamos a exportar la clave directamente a un archivo, al que vamos a llamar miclave.asc. Este archivo lo vamos a enviar a alguien de confianza, para que pueda obtener nuestra clave pública contenida en este archivo y así poder enviarnos mensajes cifrados con la dicha clave

$ gpg -a --export -o miclave.asc key_id

Exportar Clave Cifrado Asimétrico

Ahora lo único que nos queda, es hacer llegar a nuestro usuario de confianza el archivo miclave.asc por cualquier medio, ya sea correo electrónico, un pen USB, etc.

Usuario Receptor Pedro

Como podemos ver en la captura de pantalla, el usuario pedro ya dispone del archivo miclave.asc en su directorio home

Cifrado Asimétrico

Ahora debemos de incluir la clave pública contenida en el archivo, en el almacén de claves públicas del GPG o anillo de claves (keybring). Para ello utilizamos el siguiente comando: $ gpg --import clavepublica.asc

Importar Clave Cifrado Asimétrico

Verificamos la operación con: $ gpg –kv

Verificar Clave Cifrado Asimétrico

Creamos un archivo de prueba con datos personales para enviarlo al usuario David. Lo llamaremos DocParaDavid, e incluiremos ciertos datos ficticios susceptibles para la práctica, de modo que podría ser un archivo que requiera una alta seguridad, por los datos que incluye

Cifrado Asimétrico

Vamos a utilizar la clave pública que importamos en Pedro, para ecriptar el archivo creado y poder enviarselo con seguridad al dueño de las claves simétricas, David, que será el único que pueda descifrar el contenido. Lo hacmos con el siguiente comando: $ gpg -a -r David --encrypt documento

Encriptar Documento Cifrado Asimétrico

Esta orden crea el archivo DocParaDavid.asc cifrado. Lo comprobamos

Documento Encriptado Cifrado Asimétrico

Una vez que el usuario David dispone del archivo cifrado DocParaDavid.asc, lo puede descifrar con el siguiente comando

$ gpg documento.asc

Descifrar Documento Cifrado Asimétrico

Comprobamos como se ha creado el archivo descifrado DocParaDavid y que contiene el mensaje original

Comprobar Documento Cifrado Asimétrico

Fin de la Práctica

Conclusión

Al igual que en la práctica anterior, os mostramos un protocolo de seguridad a nivel de usuario, que puede ser implementado con facilidad por usuarios de Linux. Como podemos observar en la práctica, podemos crear archivos cifrados a 2048 bits, pero podríamos llegar incluso hasta los 4096 bits, que es un nivel de cifrado altísimo. Para compararlo, podemos ver que las conexiones seguras SSH que se establecen en los protocolos de HTTP, cuando conectamos con nuestro banco por ejemplo, se establecen con un cifrado de 128 bits, así que podemos hacernos una idea de lo difícil que puede llegar a romperse un cifrado tan alto. Y al igual que se mencionó en la anterior práctica, este es un software libre, que ya viene incluido, por supuesto gratuitamente, en la mayoría de distros Linux. Sus algoritmos de seguridad no están sujetos a patentes comerciales, y se permite su uso para particulares sin restricciones legales o de uso, ya que el programa GnuPG es una implementación del estándar OpenPGP. Por ahora hemos visto algunas tareas sencillas en la implementación de seguridad con GnuPG, pero seguiremos mostrando mas tareas para en manejo de esta herramienta. Por todo ello, desde zenKa.es recomendamos a todos los usuarios de Linux utilizar esta herramienta en la implementación de protocolos seguros que necesiten, por todas las ventajas que tiene, y podemos utilizar en nuestro beneficio.

Volver a la Portada de Logo Paperblog

Revista