Privacidad + encriptación = PGP por Daniel Sentinelli


Cuando uno comprende el funcionamiento y los alcances de PGP, sufre una
experiencia casi mística. Es común ver a los nuevos adeptos con la
mirada perdida en el vacio imaginando aplicaciones del sistema, o
explicándolo eufórico a quien se le cruce por delante.

Desde la noche de los tiempos el hombre tuvo necesidad de guardar un
secreto o intercambiar información sin que caiga en manos de terceros
indeseables. Los militares y los niños aman intercambiar mensajes "en
clave", los empresarios temen que ciertos datos caigan en manos de sus
competidores de la DGI, o de sus mismos socios, los bancos mantienen
confidencial la información de sus clientes, y los organismos de
inteligencia y seguridad estampan el sello TOP SECRET hasta en el papel
higiénico. Por motivos legales o ilegales, éticamente legítimos o no,
todos sentimos en algún momento la necesidad de resguardar la privacidad
de nuestra información. Para ello se han inventado diversas técnicas que
permiten codificarla haciéndola incomprensible a quien no tenga la clave
correcta. La disciplina que estudia y desarrolla estos métodos recibe el
nombre de criptografía y ha alcanzado niveles de complejidad
sorprendentes. La mayoría de las técnicas de encriptación consisten en
aplicar un algoritmo con operaciones matemáticas a los datos, utilizando
en estas operaciones alguna variable que actúa como "clave". Para
recuperar la información original, se aplica el algoritmo inverso
utilizando la misma clave. Un ejemplo burdo podría ser: tomo cada letra
de un texto y a su código ASCII le sumo 8, con lo que obtengo un mensaje
incomprensible. Para desencriptarlo, tomo cada letra del texto en clave
y le resto 18, con lo que vuelvo a obtener el mensaje original. La
operación de sumar un cierto valor al código ASCII de cada letra es el
algoritmo, y el valor que elija es la clave, en este caso "8".

ENCRIPTAR
Mensaje original Mensaje encriptado
        -------------
-------- | Algoritmo | --------
| MAMA | -----> | | -----> | UIUI |
-------- | + clave | --------
-------------

DECRIPTAR
Mensaje encriptado Mensaje original
        -------------
-------- | Algoritmo | --------
| UIUI | -----> | inverso | -----> | MAMA |
-------- | + clave | --------
-------------

Dado que la operación matemática en este ejemplo es muy sencilla, y que
los valores posibles para la clave son muy limitados, es suceptible de
ser atacado por "fuerza bruta", esto es, probando todas las claves hasta
dar con la correcta. Por este motivo las técnicas criptográficas reales
usan claves mas largas y algoritmos mucho mas complejos, para que probar
todas las combinaciones lleve millones de años aún con
supercomputadoras. El principal inconveniente de estos métodos es que
hacen necesaria la existencia de un "canal seguro" para intercambiar la
clave, ya que si esta cae en manos del "enemigo" este estaría en
condiciones de descifrar todos los mensajes. Muchas veces esto resulta
muy difícil o directamente imposible; y en el caso de que pueda
establecer fácilmente un canal a prueba de espias, ¿para que necesito
mandar los mensajes en clave? Por otra parte, aunque un algoritmo no
pueda ser atacado por fuerza bruta, puede tener debilidades internas que
hagan posible "violarlo" a través de estudios matemáticos. Aquí es donde
aparece una nueva técnica radicalmente distinta y aparentemente
inviolable llamada RSA (por sus autores Rivest, Shamir y Adleman) que
revoluciona el campo, y su implementación en un programa llamado PGP,
iniciales de Pretty Good Privacy, desarrollado por Philip Zimmerman. El
sistema que utiliza PGP es completamente diferente de los métodos
clásicos, y consiste en lo que se conoce como "sistema de claves
publicas y privadas". Cada usuario corre por única vez un proceso que
genera un par de claves. Este es lo suficientemente complejo como para
que a partir de una de las claves no sea posible calcular la otra. Las
claves son complementarias, de forma tal que al aplicar el algoritmo
adecuado, la información que se encripta con una de ellas solo puede ser
desencriptado con la otra, y viceversa. Una de estas claves queda en
poder del usuario y no sera entregada nunca a nadie. A esta clave la
llamaremos "clave privada". La otra, a la que llamaremos "clave
publica", se difunde abiertamente a todo el mundo. Ahora, si el señor A
quiere enviarle un mensaje al señor B, lo encripta con la clave PUBLICA
de B, conocida por todos. Este mensaje solo puede desencriptarse con la
clave complementaria, que es la clave PRIVADA de B, conocida solo por B.
De la misma manera, B puede encriptar su respuesta con la clave publica
de A, y solo desencriptarse con la clave privada de A.

ENCRIPTAR
Mensaje de A a B Mensaje encriptado para B
       -----------------
-------- | Algoritmo + | --------
| MAMA | -----> | clave publica | -----> | X0wR |
-------- | de B | --------
-----------------

DECRIPTAR
Mensaje encriptado Mensaje Original
para B -----------------
-------- | Algoritmo + | --------
| X0wR | -----> | clave privada | -----> | MAMA |
-------- | de B | --------
-----------------

Como puede notarse, este sistema no exige que A y B intercambien una
clave secreta por un canal seguro, sino que por el contrario, las únicas
claves que se intercambian son las claves publicas, que deben difundirse
lo mas posible. Este solo hecho amplia enormemente la utilidad de un
sistema criptográfico. Pero este método permite una posibilidad que es
quizás aun mas interesante. Si A encripta un mensaje con su clave
PRIVADA, este no tiene nada de confidencial ya que todo el mundo posee
la clave PUBLICA de A y por lo tanto cualquiera puede decriptar el
mensaje. Pero justamente por el hecho de la clave PUBLICA de A
desencripta el mensaje, quiere decir que este fue encriptado con la
clave PRIVADA de A, y por lo tanto podemos estar seguros que fue A quien
encriptó el mensaje.

Si el señor A escribe algo, y luego lo encripta con su clave PRIVADA, el
desencriptarlo con su clave PUBLICA nos da la seguridad de que quien lo
escribió es efectivamente A, y no alguien que se hace pasar por el. En
la vida cotidiana, nuestra firma caligráfica cumple esta función de
certificación, y es por eso justamente que a esta forma de encriptación
se la llama FIRMA PGP.

ENCRIPTAR
Mensaje de A Mensaje con firma PGP de A
       -----------------
-------- | Algoritmo + | --------
| MAMA | -----> | clave privada | -----> | z3Yk |
-------- | de A | --------
-----------------

DECRIPTAR
Mensaje con firma Mensaje Original
PGP de A -----------------
-------- | Algoritmo + | --------
| z3Yk | -----> | clave publica | -----> | MAMA |
-------- | de A | --------
-----------------

Como cualquiera puede notar, este mecanismo puede ser aplicado a
transacciones comerciales informáticas, operaciones bancarias,
certificaciones notariales, y una lista interminable de etcétera. De
hecho este es el sistema de validación de identidad electrónica mas
perfecto que conozco hasta el momento. Para evaluar hasta que punto
puede ser confiable PGP, tengamos en cuenta algunos hechos. En primer
lugar, el algoritmo RSA ha sido estudiado profundamente por matemáticos
y criptógrafos, sin que hasta ahora se le haya encontrado ninguna
debilidad intrínseca. En segundo lugar, el código fuente del programa
PGP es de acceso publico, con lo que cualquiera puede verificar que no
existan "backdoors" o defectos evidentes de implementación.

Por supuesto, siempre existe la posibilidad de problemas debidos al uso
incorrecto o descuidado del sistema, pero esto depende exclusivamente
del usuario. Quienes deseen comenzar a utilizar e investigar PGP pueden
obtenerlo de diversas fuentes, incluyendo varios BBS locales. Existen
versiones de PGP para distintas plataformas, incluyendo DOS, OS/2, MAC,
varias versiones de UNIX (incluyendo Linux), etc. Es altamente
recomendable leer atentamente la documentación, ya que en ella se
explican claramente todos los aspectos operativos y de seguridad
necesarios para usar correctamente PGP.

Las capacidades y posibilidades de PGP exceden el espacio de una nota, y
posiblemente continuemos tratándolas en artículos futuros.

Daniel Sentinelli dirige la consultora DATAFRONTier especializada en
comunicaciones, redes y seguridad informática; y es un ferviente
entusiasta de PGP y su clave publica se encuentra disponible en varios
"PGP pubkey servers" locales y mundiales. Puede ser contactado por
e-mail en Internet en [email protected], o en Fidonet en
4:900/131. Su PGP fingerprint es 14 fe 06 10 f2 7b b3 3b e0 cb 5e 53 a7
d3 5b a9.