Los mensajeros, los sitios con protocolo HTTPS, la autorización en los servicios de Internet, el almacenamiento seguro de archivos y, a veces, incluso los despertadores: todo esto utiliza PGP. Pero, ¿qué es? Wikipedia ofrece la siguiente definición:
Pretty Good Privacy ( PGP ) es un programa de cifrado que proporciona privacidad criptográfica y autenticación para la comunicación de datos . PGP se utiliza para firmar , cifrar y descifrar textos, correos electrónicos , archivos, directorios y particiones de disco completas, y para aumentar la seguridad de las comunicaciones por correo electrónico. Phil Zimmermann desarrolló PGP en 1991.
PGP y otros programas similares siguen el estándar OpenPGP (RFC 4880), un estándar abierto para cifrar y descifrar datos . Las versiones modernas de PGP son interoperables con GnuPG y otros sistemas compatibles con OpenPGP.
Está claro en palabras, pero veamos cómo funciona.
Imaginemos que tenemos un usuario A y un usuario B. Necesitan empezar a comunicarse, pero de forma que nadie pueda saber el contenido de su correspondencia. Aquí es donde entra en juego el cifrado.
Los sistemas modernos utilizan Rjindael (actualmente AES), DES, RC4 y algunos otros algoritmos.
No entraré en detalles sobre su funcionamiento. Todo lo que necesitas saber sobre ellos es que si les das datos de entrada y una clave, obtienes una matriz de bytes encriptada, que se puede invertir con la misma clave. Como un candado, se abren y se cierran, pero sin una clave, es casi imposible hacerlo (no hay formas efectivas de romper estos algoritmos). Estos algoritmos de encriptación se denominan algoritmos de encriptación simétrica.
Y esa es la respuesta, ¿no? Dejemos que el usuario A le dé su clave al usuario B. Entonces podréis cifrar vuestra correspondencia de ambas partes y nadie sabrá lo que se escriben.
Por supuesto, si ambos usuarios se conocen en la vida real, uno puede darle al otro una unidad flash con la clave.
Pero en Internet es imposible hacerlo, no hay dos usuarios y un servicio puede atender a millones de usuarios diferentes al día. Además, no siempre es posible dar la clave de cifrado personal a todas las personas con las que se comunica en persona durante una reunión.
Dado que pasar su clave privada desde el mismo AES es como comprometer su seguridad, surge la pregunta: ¿cómo puede el usuario A pasar de forma segura su clave al usuario B?
La solución es firmar las claves y los correos electrónicos con otra clave. Pero esta segunda clave será la de un algoritmo de cifrado asimétrico. La esencia es la misma que en el cifrado simétrico, pero ahora no hay una única clave de la cerradura, sino dos. Una es “pública”, con la que solo se pueden cifrar los datos, y la segunda es “privada”, que es capaz de descifrar los datos procesados por la clave pública de su par.
Este proceso le permite publicar libremente su clave pública sin comprometer su seguridad.
Esta es la base del principio de funcionamiento de las “Firmas Electrónicas”.
Son necesarios para que el usuario B de los datos pueda estar seguro de que los datos han sido cifrados con la clave que pertenece al usuario A, y viceversa.
La firma se crea a partir del hash de los datos originales y se adjunta al paquete enviado.
El destinatario descifra la firma con la clave pública, la compara con el hash de los datos recibidos y, si coinciden, el remitente es un usuario genuino y no un estafador.
Bien, hemos descubierto cómo realizar un apretón de manos (el apretón de manos es el proceso de formar un canal de comunicación seguro).
Ahora, imaginemos que entre los usuarios A y B, hay otro usuario, C.
“C” es un atacante que necesita conocer los detalles de la comunicación de A y B.
Crea dos pares de claves para firmar y dos claves más para cifrar los datos.
Para el usuario A, se presenta como el usuario B, y para el usuario B, como el usuario A. La realidad es que en las realidades de Internet, uno no puede estar 100% seguro de que la firma electrónica y la clave resultantes sean auténticas.
Entonces, si tal escenario es realmente posible, ¿no estarán seguros nuestros A y B?
¡Existe la salvación! Ahora hemos llegado al tema principal: la “Red de confianza”.
Esta red consiste en que todos los usuarios conocen las claves públicas de las firmas electrónicas de los demás, y a cada miembro de la red se le puede preguntar: “¿Esta clave, que me envió el usuario B, le pertenece a él y no a algún intruso?”
En este caso, una red de confianza puede ser muy eficiente incluso con un número reducido de participantes, ya que si uno conoce al otro, el tercero, al preguntarle al primero, conocerá la clave pública del segundo. Como las raíces de un roble, la Red de Confianza está entrelazada, lo que permite a los usuarios compartir datos.
Ahora, nuestro usuario C ya no puede hacerse pasar por otros usuarios. Solo si lo intenta, el usuario A, preguntando a cualquiera de los miembros de la red, se dará cuenta de que alguien se interpone entre él y el usuario B e intercepta los mensajes.
Ahora, combinemos todos estos conceptos en un esquema simple.
El usuario A y el usuario B están en la misma red de confianza y desean iniciar una comunicación segura.
“A” solicita a varios miembros de la red la clave pública de “B”. Con esta clave, envía una solicitud de enlace al usuario B. “B”, a su vez, obtiene la clave pública del usuario A, genera una clave simétrica para una comunicación posterior y, con la clave pública del usuario A, envía la clave simétrica de vuelta.
Todos los mensajes de este esquema también están firmados con firmas electrónicas.
Con esta comunicación no es posible ninguna interferencia externa y nuestros usuarios finalmente pueden comenzar a comunicarse.
No tiene sentido utilizar este esquema manualmente: ya está integrado en todos los protocolos de comunicación de Internet posibles de sus navegadores y aplicaciones.
Ningún sistema es perfecto. Los ataques MITM (Man in the middle, en nuestro caso, una forma de falsificar certificados verificando claves falsas con firmas en las que confía el navegador del usuario víctima) todavía se llevan a cabo hoy en día.
Pero si ve ese “candado verde” cerca de la barra de direcciones de su navegador, sus datos están en manos seguras del algoritmo PGP.