¿Qué es el cifrado probabilístico?

La criptografía ha sido un área vital en el desarrollo de la tecnología blockchain, pero esto no sería posible sin el desarrollo de un concepto básico para la misma: el cifrado probabilístico.

Cuando hablamos de cifrado probabilístico hacemos referencia a un algoritmo que es capaz de aplicar aleatoriedad a un mecanismo de cifrado. De esta forma, lo que busca el desarrollador de esta función criptográfica es algo muy sencillo: por cada entrada de datos, obtener una salida distinta por cada interacción realizada. Así, los algoritmos de cifrado probabilístico buscan ofrecer un nivel de seguridad superior al alcanzado por técnicas deterministas actuales.

Esta idea sirve para mejorar los sistemas de criptografía asimétrica que conocemos. Y desde este punto, podemos entender su importancia: el cifrado probabilístico es el bloque fundamental para proteger la privacidad de nuestra vida digital, no solo en blockchain, sino también en Internet y cualquier otro aspecto relacionado con este mundo ahora y en el futuro próximo.

Cifrado probabilístico - Bit2Me Academy

El primer sistema de cifrado probabilístico

El origen del primer sistema de cifrado probabilístico puede rastrearse hasta el desarrollo de Ralph Merkle con su trabajo Secure Communications over Insecure Channels. Este trabajo estaba tan adelantado a su tiempo, que en su presentación inicial en la Association for Computing Machinery (ACM) en el año de 1975, fue descartado como una imposibilidad.

Pero para 1978, un año después de que se publicará el trabajo de Whitfield Diffie y Martin Hellman y su protocolo criptográfico asimétrico Diffie-Hellman, fue finalmente considerado como algo posible dejando claro una cosa: el nacimiento del cifrado probabilístico y los sistemas de clave pública eran no solo una posibilidad sino el futuro de la criptografía.

Así, las propuestas de Ralph Merkle, Whitfield Diffie y Martin Hellman se convirtieron en las primeras propuestas criptográficas que usaban elementos de cifrado probabilístico para su funcionamiento. Su éxito radica en que este nuevo esquema era capaz de asegurar cualquier canal de comunicación incluso en un ambiente de comunicación inseguro.

Este avance fue lo que llevó a la creación de uno de los primeros sistemas de cifrado asimétrico y con elementos probabilísticos más usados del mundo: el algoritmo RSA. RSA se sigue usando hoy en día en Internet y en muchos sistemas digitales en todo el mundo. Por supuesto, todo este esquema también se usa en el resto de sistemas criptográficos asimétricos, como lo son los conocidos ECDSA, EdDSA, Schnorr, entre otros, lo que deja en claro el nivel de importancia de este avance.

Mejorando el sistema

Ahora bien, el uso de algoritmos probabilísticos en RSA es en realidad bastante pequeño. Generalmente, se utiliza para una función básica: los productores de números pseudo-aleatorios o PRNG (Pseudo-random number generator). Recordemos que los PRNG son los encargados de ayudarnos a obtener los números y entropía que podemos considerar seguros y, por tanto, son la base de la seguridad de nuestros algoritmos de cifrado asimétrico actuales. Estos PRNG son creados usando algoritmos probabilísticos, y de allí que, los algoritmos de cifrado asimétrico se consideren algoritmos de cifrado probabilísticos, aunque estos no apliquen ese esquema de forma completa.

Si bien esto es lo suficientemente seguro, incluso para nuestros estándares actuales, se puede ampliar la seguridad de estos algoritmos haciendo que, el uso de la propiedades probabilísticas, se extienda al resto del algoritmo de cifrado. Es decir, aplicar no solo la aleatoriedad al generador de números, sino también a todo el sistema de cifrado, lo que sería un avance enorme comparable con el nacimiento mismo de la criptografía asimétrica.

Este fue precisamente el trabajo que dos grandes criptógrafos hicieron realidad, Shafi Goldwasser y Silvio Micali (creador de Algorand). En 1982, Goldwasser y Micali presentaron el conocido protocolo criptográfico Goldwasser–Micali. Su mayor avance es que este es el primer sistema criptográfico completamente probabilístico conocido en todo el mundo.

El trabajo de Goldwasser y Micali crea un sistema asimétrico seguro basado en el problema de residuos cuadráticos descrito por Carl Friedrich Gauss en el año de 1801. Este problema matemático es ampliamente usado en criptografía, siendo el mayor ejemplo de su implementación el algoritmo PRNG BBS (generador pseudoaleatorio de números BBS), creado en el año de 1986 por Lenore Blum, Manuel Blum and Michael Shub.

Fue en base a este sistema, que Goldwasser y Micali crearon un algoritmo capaz de generar una función de cascada probabilística en la que cada valor generado por la factorización de los números aleatoriamente generados, sirve para alimentar un algoritmo de cifrado enteramente probabilista. Así, se puede tomar un texto y cifrarse de forma secuencial, de esta forma cada secuencia da un resultado totalmente distinto, nunca verás un mismo archivo con un cifrado idéntico sin importar cuantas iteraciones de cifrado realices. Puedes leer una explicación matemática y ampliada del sistema en este enlace.

Seguridad del sistema de cifrado probabilístico

Ahora bien ¿Por qué llegar a este nivel? La respuesta a eso es simple: mejorar nuestra seguridad. El sistema de cifrado probabilístico introducido por Goldwasser y Micali es quizás uno de los mayores rompecabezas de criptoanálisis que se puedan crear.

Por poner un ejemplo, un texto de 500 caracteres tendría más de 10^100000 combinaciones de cifrado distintas, lo que supone un nivel de resultado computacionalmente no analizable en la actualidad. Eso es incluso mayor que las capacidades de cifrado que se pueden alcanzar con algoritmos como AES, ECDSA y EdDSA, juntos.

El problema de los sistemas de cifrado probabilísticos es que su creación usando máquinas deterministas siempre genera un gap o espacio en el que no podemos comprobar de forma completa su seguridad. Dicho de una forma más sencilla, teóricamente son excelentes, pero formalmente a nivel de implementación algorítmica no podemos garantizar su total seguridad. Esto en esencia se podría resolver con el próximo salto en la era de la computación: los computadores cuánticos, ya que por su naturaleza, estos son probabilísticos y podríamos comprobar la seguridad de estos sistemas criptográficos de forma completa.

Además de crear algoritmos eficientes, ya que las implementaciones de cifrado probabilísticos existentes son computacionalmente ineficientes y no compensan su seguridad con respeto al poder computacional y rendimiento que ofrecen. Dicho esto, queda mucho por investigar en esta área hasta que finalmente podamos desarrollar algoritmos complejos que exploten todo el potencial de esta nueva mejora en nuestros sistemas de cifrados, pero de momento deberemos esperar un poco más y mejorar las bases probabilísticas que ya protegen nuestras actuales implementaciones.