En el mundo digital actual, la capacidad de poder proteger las comunicaciones, de asegurarse que lo que estás leyendo viene de quién lo envía y no de otra persona, de verificar que nadie está escuchando una conversación que estás teniendo con otra persona, etc., es crucial. Por suerte, contamos con una tecnología fiable y probada para ello: GPG. En este documento, veremos cómo nació GPG, cómo se hizo, algunas de sus capacidades, dónde y cómo usarlo.

Historia

«Solo hay dos cosas difíciles en la ciencia computacional: la invalidación de la memoria caché y nombrar cosas.»
– Phil Karlton

Cuando empezamos con GPG, una de las primeras preguntas que surgen es: ¿es GPG o PGP? ¿Son cosas diferentes? Y si te empiezas a fijar en el término y en su historia, descubrirás que tiene aún más variaciones: PGP, GPG, OpenPGP, GnuPG, RFC 4880, GPG4Win… ¿Son nombres distintos para definir una misma cosa? ¿Hay alguna diferencia entre ellos? ¿Son algunos lo mismo y otros cosas distintas?

Para resolverlo, debemos fijarnos en la historia de GPG (y en algunas anécdotas).

Phil Zimmerman - CAPSiDE

Este es Phil Zimmerman. Era un pacifista y un activista antinuclear en EE. UU. En 1991 escribió PGP: Pretty Good Privacy. Para compartirlo, subió una primera versión a un proveedor de servicios de Internet llamado Peacenet, y entonces un amigo lo subió a un grupo de Usenet. Tenía la etiqueta de “US only”, pero en Usenet no aplicaba (era una etiqueta puramente informativa) y se terminó distribuyendo por todo el mundo bastante rápido. En ese momento, la criptografía con claves de 40 bits se consideraba munición en EE. UU. y, por ende, estaba sujeta a restricciones de exportación. PGP usaba claves de 128 bits, por lo que hubo una investigación federal para decidir si Zimmermann exportaba munición ilegalmente. Para solucionar este problema, decidió publicar el código fuente en un libro. Así, todo el mundo podría comprarlo, escanear su contenido y compilar el código. En EE. UU., la exportación de libros está protegida por la primera enmienda, por lo que era legal.

GPG Introduction - CAPSiDE

Zimmermann creó la compañía “PGP Incorporated” para desarrollar y comercializar PGP. Esta fue posteriormente adquirida por NAI, que dejó de publicar el código en 2001 (en 2010, Symantec adquirió NAI por 300 millones de dólares). De nuevo en los noventa, extrabajadores de PGP Inc crearon “PGP Corporation”, que ha continuado trabajando en el software. Zimmermann y el resto de personal querían una versión de PGP sin licencia de pago. Sugirieron crear un grupo de trabajo en el IETF (Grupo de Trabajo de Ingeniería de Internet) llamado OpenPGP, cuyo objetivo sería crear un estándar (RFC 4880) que todo el mundo pudiera usar. Bajo este estándar, dentro del proyecto GNU, nació GnuPG (GNU Private Guard). PGP, OpenPGP y GNUPG son todos compatibles en versiones actuales.

Así, la parte de nomenclatura queda un poco más clara:

¿Qué es GPG?

Vamos a ser más precisos, ¿qué es GPG? Según Wikipedia, tenemos las siguientes definiciones:

Sus características clave son:

Veamos cada una de estas características en más detalle.

Confidencialidad, autenticación e integridad

Usando GPG te aseguras de que la confidencialidad, la autenticación y la integridad se mantienen en tus comunicaciones.

Por confidencialidad entendemos que la información cifrada solamente la ve la persona que debe visualizarla. Eso se asegura con GPG a través del cifrado y el descifrado, ya que solamente el destinatario legítimo de la información la puede descifrar con su clave privada. Por otro lado, la autenticación asegura que el remitente del mensaje es quien dice ser y no ha sido reemplazado por un atacante. Esto se garantiza con GPG a través de las firmas digitales, ya que el receptor puede verificar la firma del remitente. Estas también aseguran la integridad, ya que el remitente puede firmar el hash del mensaje y el receptor puede verificar que no ha sido manipulado.

Criptografía híbrida

Pasando ahora a aspectos más técnicos, ahora hablaremos de cómo GPG se aprovecha de criptografías tanto simétricas como asimétricas (más conocidas como claves públicas), razón por la cual se usa la criptografía híbrida.

En la criptografía de claves simétricas, el mensaje está encriptado con un secreto compartido. Los datos cifrados se transfieren a través de canales no seguros, y el secreto compartido se transmite de forma segura. Uno de las maneras más populares de transmitirlo es con el método de Diffie-Hellman.

GPG Introduction - CAPSiDE

En la criptografía asimétrica o de clave pública, los agentes generan un par de claves, una pública y otra privada. El receptor hace saber su clave pública, que el remitente usa para cifrar el mensaje. Solamente el receptor podrá descifrarlo con su clave privada, asegurando de esta manera la confidencialidad.

GPG Introduction - CAPSiDE

Con la criptografía híbrida, usamos la criptografía de la clave pública para cifrar el secreto compartido que encripta nuestros datos para enviarlos de manera segura. El problema con la criptografía de clave simétrica es el paso del secreto compartido entre ambos lados. El problema con la criptografía de clave pública es el coste computacional que se requiere para cifrar los datos. Si los mezclamos en la criptografía híbrida, se solucionan ambos problemas: aseguramos el secreto compartido y reducimos el coste computacional encriptando solo la clave y no los datos en su totalidad.

GPG Introduction - CAPSiDE

Firmas digitales

Otro uso muy extendido de GPG es firmar digitalmente la información. Cuando firmamos una porción de datos con nuestra clave privada, quien lea esa información puede confirmar con nuestra clave pública que nosotros la hemos firmado. Así, se asegura no solo la autenticación sino también la integridad del mensaje. Tomemos, por ejemplo, un mensaje que Bob escribe a Alice. El mensaje no tiene que estar encriptado, pero es importante que llegue a Alice sin que nadie lo modifique. Bob puede crear un hash del mensaje y añadirlo a un archivo. Entonces puede firmar ese archivo y enviar el mensaje y el archivo hash a Alice, quien asegurará que fue Bob quien firmó el hash y lo hará coincidir con el que puede calcular ella misma.

GPG Introduction - CAPSiDE

Red de confianza

La red de confianza es una manera alternativa para generar confianza en una clave. Otro método ampliamente utilizado es la jerarquía, más evidente cuando usamos certificados validados por una autoridad de certificación.

La red de confianza se basa en la firma de claves, lo que significa que alguien (tantas personas como sea posible) verifica o verifican la asociación entre un nombre de usuario y una clave. Cuantas más firmas tiene una clave, más confiaremos en que es de fiar. Cuantas más firmas tengan personas que tienen muchas firmas, más se confiará en esa clave. A eso se le llama reputación.

¿Cómo funciona la firma de claves? Digamos que Alice ha generado una clave y la ha asociado a su dirección de correo. Esta imprime la huella digital de la clave y se dirige a Bob, enseñándole la huella digital con la dirección de correo y su documento de identidad. Bob confirma que el documento de identidad es de Alice y toma la huella digital y la dirección de correo. Luego se descarga la clave pública buscándola en los servidores de claves (hablaremos de ello más adelante) con la huella digital y firma con su clave. Seguidamente, puede enviar su clave firmada de vuelta a la dirección de correo de Alice, para que ella pueda añadirla a su llavero y así usarla en otro momento. Ya que su clave ahora ha sido firmada por Bob, otras personas confiarán en ella. Ya que Bob, al firmarla, asegura que la clave pertenece realmente a Alice.

Existen encuentros dedicados exclusivamente a esto, llamados fiestas de claves. Una fiesta de claves es una ocasión en la que varias personas de juntan, armadas con la huella digital de su clave y su documento de identidad, y coleccionan huellas digitales de claves de otras personas para firmarlas, tras validar con el documento que la clave les pertenece. Recuerda: esto se hace para garantizar que una clave en cuestión pertenece a cierta persona. No hace falta que seáis amigos, solamente necesitas la huella digital y un documento de identidad.

GPG Introduction - CAPSiDE

Esta aproximación tiene ciertos problemas, ya que tener más firmas no significa que sean de más confianza. Coleccionar firmas es relativamente fácil, y algunas personas no ponen demasiada atención en verificar la identidad de la otra persona. De esta manera, la confianza en la red se ve alterada. Si entendemos esto, probablemente prestaremos más atención a la hora de firmar una clave, asegurándonos que es legítima, ya que de cierto modo estaremos respondiendo por aquella persona.

Para hacer que todo esto funcione, existen los servidores clave que almacenan claves públicas y permiten a los usuarios buscarlas y descargarlas. La mayoría pertenecen a un grupo llamado SKS. Estos servidores se sincronizan de manera que, si subes una clave a un servidor, rápidamente estará disponible en el resto de los servidores. Sin embargo, se sabe que los servidores de claves normalmente no se encuentran disponibles (debido a cargas, ataques, etc.).

Huellas digitales e identificaciones

En la sección anterior hemos hablado de huellas digitales. Veámoslas ahora más de cerca.

En criptografía de clave pública, una huella digital es una versión reducida de la clave pública, escrita en hexadecimal y dividida en grupos para favorecer la legibilidad. Por ejemplo: 43:51:43:a1:b5:fc:8b:b7:0a:3a:a9:b1:0f:66:73:a8. La identificación de la clave, a su vez, es una parte de la huella. Una identificación de una clave corta está compuesta de los 64 bits más bajos de la clave (en el ejemplo previo, 0F6673A8) y la identificación de la clave larga se compone de los últimos 128 bits (en el último ejemplo, 0A3AA9B10F6673A8).

Las huellas y las identificaciones de clave son prácticas (así como pasar o referenciarlas) ya que evitas escribir la clave entera, pero son producto de un hash, lo que significa que siguen siendo vulnerables de cara a ataques de colisión.

GPG Introduction - CAPSiDE

Un ataque de colisión iría de la siguiente manera:

Esto es un ataque real que, de hecho, pasó a varios centenares de personas en 2016.

GPG Introduction - CAPSiDE

En este caso, les falsificaron las claves a Linus Torvalds y otros desarrolladores del kernel de Linux.. El impacto de un ataque exitoso en el proyecto hubiera sido devastador a muchos niveles. Así que, tal y como se menciona en el mensaje de la lista del kernel, no confíes en nada más que en una huella digital.

GPG Introduction - CAPSiDE

Subclaves

Una característica astuta y útil que tiene GnuPG es el hecho de poder usar subclaves. Las subclaves son como las claves normales en todos los sentidos, excepto por el hecho de que están vinculadas a una clave maestra. GnuPG usa una clave de solo firma como clave maestra y crea una subclave de cifrado de manera automática. La motivación tras las subclaves es usarlas para llevar la gestión de claves de manera más fácil y segura. La idea es proteger la clave maestra no usándola y manteniéndola alejada (en desconexión) y crear tantas subclaves anuladas como sea necesario.

En esta imagen podemos ver dos subclaves (las que llevan el prefijo “sub” a principio de línea). Una subclave se puede usar para el cifrado ([E]), creada cuando la clave maestra se crea) otra para firmar ([S]).

GPG Introduction - CAPSiDE

TAGS: ciberseguridad, Claves, Código fuente, Criptografía, Encriptación, GnuPG, GPG, Labs, PGP, Pretty Good Privacy, privacidad

speech-bubble-13-icon Created with Sketch.
Comentarios

Deja un comentario

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

*
*