GPG

De FdIwiki ELP
Saltar a: navegación, buscar

GPG es un sistema multiplataforma de gestión de llaves utilizado para el cifrado y firma digital de mensajes y archivos. Es un software libre liberado bajo la licencia GPL e implementa el estándar OpenPGP.

GPG puede comunicarse con la versión actual de PGP y con cualquier otro sistema que implemente el estándar OpenPGP.

GPG es un software híbrido de encriptación que combina tanto criptografía simétrica o de clave privada y criptografía asimétrica o de clave pública.

Historia

Lo comenzó a desarrollar Werner Koch en 1997, recibiendo grandes ayudas y subvenciones por parte del gobierno alemán pero su primera versión productiva no apareció hasta 1999 . Surgió como una alternativa de software libre a PGP debido a los conflictos que rodearon durante un tiempo a este sistema y a que cerraron su código.

En 1991 surgió PGP (Pretty Good Privacy) de la mano de Philip Zimmermann. Zimmermann creó un sistema criptográfico híbrido que usaba el algoritmo de clave asimétrica RSA para encriptar la clave generada al encriptar de forma simétrica lo requerido a través del algoritmo de su propia invención Bass-O-Matic. Zimmerman se encontró con muchos problemas por parte de la NSA y del gobierno de EEUU ya que en aquella época era ilegal exportar software fuera del país pero no código fuente. De esta manera surgieron versiones internacionales de PGP.

PGP a su vez pasó por manos de diversas empresas, las cuales mantuvieron su código abierto hasta que, en 1999 y debido a que EEUU decidió relajar su política sobre exportación de software,NAI (Network Associates) la empresa que adquirió PGP Inc. decidió cerrar su código.

Aquí fue donde surgió GPG como la alternativa de software libre a PGP.


Clasificación

  • La criptografía simétrica esta basada en el uso de una clave privada, que solo deberían conocer el emisor y el receptor, utilizada tanto para encriptar como para desencriptar los archivos o mensajes.
  • La criptografia asimétrica esta basada en un sistema de pares de llaves, una pública y una privada. La llave privada solo es conocida por su dueño y solo ha de ser accesible por el mismo mientras que la clave pública es accesible por el resto de usuarios. Además los métodos criptográficos utilizados para su generación garantizan que ese par de llaves solo puede generarse una vez. Muchos de los algoritmos utilizados están basados en aritmética modular y utilización de números primos aleatorios de gran tamaño.


Funcionamiento y Algoritmos

Una vez generado un par de claves también se puede generar un certificado de revocación con el fin de invalidar las claves en caso de que sean robadas u olvidadas.

Para que la clave pública sea accesible por otros usuarios es usual subirlas a servidores de claves. Los servidores se mandan entre ellos los datos permitiendo que la búsqueda de la clave sea independiente del servidor al que accedas. De esta manera se puede buscar la clave de cualquier usuario a través de sus datos o dirección e-mail.

Para cifrar mensajes, el emisor encripta el contenido utilizando la clave pública del receptor, y este mensaje solo podrá ser desencriptado con la clave privada del receptor.

Así mismo, el método para firmar digitalmente los mensajes es análogo pero intercambiando las claves. A la hora de firmar un mensaje el emisor utiliza su clave privada y el receptor puede verificar que el mensaje ha sido escrito por el emisor gracias a que posee la clave pública de este y coinciden, además, se asegura la integridad del mensaje (no ha sido modificado) desde que fue firmado.

Para asegurar que la clave pública de un usuario verdaderamente pertenece a él se utilizan los denominados anillos de confianza. Un usuario puede firmar la clave pública de otros usuarios para indicar que verdaderamente su “dueño” es quien dice ser. Para aumentar y mejorar los anillos de confianza, los usuarios pueden llevar a cabo key signing party.

GPG tiene diversos algoritmos de encriptado tanto simétricos como asimétricos. Entre ellos se encuentran RSA, IDEA, SHA1, ELG, DSA, 3DES, CAST5, AES o BLOWFISH entre otros. Por defecto el utilizado por GPG es CAST5 aunque esto puede ser modificado y ser indicado por el usuario que algoritmo quiere utilizar para encriptar.

GPG posee una interfaz de linea de comandos, pero también existen pluggins como por ejemplo Enigmail para Thunderbird, o software con interfaz gráfica que lo integran.


Comandos Principales

  • Generar par de llaves : gpg --gen-key

Este comando solicitará una serie de datos con el fin de generar las claves. Al final del mismo será necesario generar entropía para dotar al equipo de una elevada carga computacional que utilizará para crear los números aleatorios utilizados para obtener las claves.


  • Ver la lista de claves: gpg --list-keys

Muestra todas las claves almacenadas.


  • Generar una salida ASCII: gpg -a

Opción que genera un archivo binario encriptado en código ASCII. Se puede añadir a cualquiera de los comandos de encriptación tanto de mensajes o contenido como de claves.


  • Encriptado simétrico: gpg -c archivo

En este caso se generará un archivo con el mismo nombre que el original y extensión .gpg . Sin embargo se puede añadir la opción -o NuevoNombre para indicar el nombre del nuevo archivo generado.


  • Desencriptado: gpg archivo

Solicitará la clave privada para poderlo desencriptar el archivo indicado.


  • Subir clave a un servidor: gpg --send-keys claveID

Sube la clave al servidor keys.gnupg.net . Se puede elegir a que servidor subirlo añadiendo la opción --keyserver nombreServidor .


  • Exportar clave: gpg --export identificador

Muestra por pantalla la encriptación de la clave pública asociada al identificador (puede ser el Id de una clave o el e-mail asociado a la misma). Permite la opción -a y -o para que sea guardada en el fichero indicado.


  • Importar una clave: gpg -- import archivo

Importa a nuestra lista de claves la clave pública que se encuentra almacenada en el archivo indicado junto a los datos de la misma.


  • Busqueda de clave en un servidor: gpg --search-keys identificador

Busca en los servidores la clave asociada al identificador (puede ser la Id de una clave o un e-mail). Se puede especificar en que servidor buscar con la opción --keyserver.


  • Encriptado asimétrico : gpg -e -r idReceptor archivo

Encripta el archivo indicado con la clave pública del receptor ( opción -r). Admite las opciones -a y -o.


  • Firma de una clave: gpg --sign-key identificador

El usuario firma con su clave privada la clave pública asociada al identificador para generar un anillo de confianza.


  • Firma digital: gpg -se archivo

Firma y cifra el archivo indicado. Admite la opción -r para especificar el destinatario además de las opciones -a y -o.


  • Modificar algoritmo: gpg --cipher-algo nombreAlgoritmo

Con esta opción se puede cambiar el algoritmo con el que cifrar el mensaje o archivo. Normalmente por defecto vienen algoritmos más debiles para evitar probemas de compatibilidad. Se puede añadir al resto de opciones.


Se pueden ver todas las opciones consultando el manual desde una terminal de Linux o mediante el comando gpg --help.

Enlaces Externos

Autor

  • Pablo Gordillo