PGP y RSA

«Las matemáticas son el alfabeto con el cual Dios ha escrito el Universo».
Galileo Galilei.

En la prensa podemos encontrar que los datos del ordenador, del terrorista ‘Txeroki’, «están protegidos por el programa PGP, que blinda y codifica el contenido de los PC» (elmundo.es, 21/11/2008).

PGP es un software de encriptación, que combina varios métodos tanto de criptografía simétrica como asimétrica. El tipo de metodología es importante.

Hasta finales del siglo pasado, cuando se quería encriptar un mensaje se atendía más a la seguridad de la clave que al algoritmo para encriptar los datos. El prototipo era, por ejemplo, una maquina (Enigma), un libro (La clave está en Rebeca) o una lengua nativa (la navaja, como en Windtalkers). Si el descifrador poseía grandes cantidades de texto cifrado, y el algoritmo de cifrado, le era fácil deducir la clave para el cifrado, y consecuentemente descifrar cualquier otro mensaje. Incluso muchas veces el trasiego de las claves posibilitaba su mayor acceso en manos no deseadas.

Esta manera de proceder se denomina criptografía simétrica: se usa la misma clave para cifrar que para descifrar. Hoy en día, con las grandes computadoras, su seguridad es cuestionable.

El otro tipo de criptografía que se utiliza es la asimétrica o de clave pública (en contraposición al anterior que se suele denominar de clave privada). En este método lo importante no es proteger la clave, de hecho parte de ella es pública (de ahí el nombre). Lo importante es el método de encriptación.

En la década de los 70 del pasado siglo los científicos observaron que, por muy buenos que fueran los criptogramas simétricos, la potencia de los nuevos computadores elevaba  exponencialmente su posibilidad de resolverlos sin grandes trabas. Había que encontrar un método de transmitir la clave que garantizase su correcta difusión y al tiempo que si caía en manos enemigas no les sirvieran sino conocían la «maquina encriptadora». En este caso la «maquina encritadora» es un algoritmo matemático sumamente eficiente.

En 1977 Ron Rivest, Adi Shamir y Len Adleman trabajaban en el MIT y desarrollaron un algoritmo equivalente al que había escrito Clifford Cocks, un matemático británico, cuatro años antes. El problema de este super-algoritmo era la computación; en 1973 costosa, en 1977 más sencilla. El algoritmo de los del MIT, que a partir de ese momento, pasa a denominarse RSA es tremendamente sencillo de ejecutar y imposible de romper. Aquí hay dos palabras que no se deben utilizar: sencillo e imposible. Sencillo, lo que se dice sencillo, no lo es. Sencillo era el método de Cesar para cifrar sus mensajes. Desplazaba tres unidades las letras del alfabeto y ya está. Ahora, el RSA es sencillo, porque encriptar un mensaje con el algoritmo solo necesita de una pequeña computadora y desencriptarlo resulta igual de fácil. La otra palabra es: imposible. El RSA no es imposible romperlo; es decir, puede alguien sin conocer todas las claves desencriptar un mensaje cifrado con RSA. Sí, demosle paciencia y años y lo hará. Pero no en un tiempo razonable.

La base del RSA reside en la factorización de números compuestos en producto de primos, y, hoy en día, no existe algoritmo eficaz que encuentre los factores un numero compuesto suficientemente grande. Me explico, factorizar 1073602561 resultar sencillo:

1073602561 = 8191 * 131071

Sin embargo, pruébense a factorizar

1537228672809129311.

PGP tiene la gran ventaja de combinar varios algoritmos, como IDEA y el RSA. La ventaja de algoritmo IDEA es la «facilidad» de su ejecución, frente a la complejidad de tratamiento que presenta el RSA, de ahí que PGP utiliza IDEA para los datos y RSA para las claves. Precisamente el buen hacer al combinar algoritmos de criptografía simétrica y asimétrica es lo que ha proporcionado su gran uso. PGP es un acierto, aún siendo más vulnerable que un RSA puro, pero…, bueno que se peleen las empresas que se crearon para distribuir PGP y RSA en decidir quién es mejor.

Resumiendo, de esta entrada me interesa un detalle. Decir que un sistema criptográfico  es indescifrable no es cierto. PGP y RSA solo tiene una verdad inamovible: son matemáticas.