Criptografía eterna: cómo cifrar los datos hasta el final de los tiempos

Gonzalo Álvarez Marañón    4 febrero, 2020
Criptografía eterna: cómo cifrar los datos hasta el final de los tiempos

Se cree que Julio César, en el período entre el 58 y el 51 a.C., envió mensajes cifrados a su abogado Marco Tulio Cicerón y a otros senadores romanos usando una sustitución mono-alfabética. En el cifrado de César, cada letra del mensaje original se reemplaza por la letra situada tres lugares a su derecha en el alfabeto. De modo que sus famosas palabras:

VINI VIDI VINCI

se cifran como

YLQL YLGL YLQFL

Seguro durante siglos, hoy este cifrado es tan trivial que se enseña a los niños para introducirlos a la criptografía. Los secretos más íntimos de Julio César habrían resistido por pocos siglos así cifrados. ¿Y los secretos actuales?

Regresando a nuestros tiempos, resulta ilustrativo revisar el auge y caída de DES (Data Encryption Standard), el algoritmo de cifrado que marcó el inicio de la época moderna de la criptografía de uso público. Aprobado como estándar en el año 1976, proporcionó confidencialidad al mundo civilizado hasta que fue reemplazado por el nuevo estándar AES en 2002. ¿Qué motivó el cambio? Hoy DES puede romperse en unos pocos segundos con un ataque de fuerza bruta. Si alguien cifró información con DES esperando que el secreto se mantuviera por muchos años, se habrá llevado un gran chasco.

Surge por tanto una pregunta fundamental: ¿cómo puede protegerse un secreto a largo plazo, preservándose su confidencialidad a lo largo de los años?

El Santo Grial de la criptografía: el cifrado eterno que nunca se rompe, pero que resulta práctico

¿Qué se entiende por “secreto perfecto”?

  1. Un adversario tiene un acceso completo y perfecto al canal (autenticado o no).
  2. Dado cualquier texto cifrado, un adversario no obtiene ninguna información sobre el texto claro correspondiente por muchos recursos computacionales que posea.

¿Existe el secreto perfecto? Sí, el cifrado de Vernam o libreta de un solo uso, pero nunca se utiliza. ¿Cómo es posible? ¡Porque resulta impráctico! El cifrado de Vernam mezcla los bits del mensaje original con una secuencia de bits verdaderamente aleatoria tan larga como el mensaje y que nunca se repite. El resultado es un cifrado inatacable por ningún método actual ni futuro.

Aunque se puede demostrar matemáticamente que Vernam es 100% seguro, plantea numerosos inconvenientes de orden práctico, siendo los dos principales:

  • La generación de la clave: generar bits aleatorios no es tarea fácil, y menos aún hacerlo en cualquier tipo de dispositivo de uso cotidiano, ya que se debe recurrir a procesos físicos aleatorios. A la mente te vendrá lanzar al aire una moneda o un dado. Otros métodos más sofisticados se basan en el decaimiento de la actividad radiactiva de partículas, en el ruido térmico en una resistencia o en las turbulencias generadas por la rotación de un disco duro. El único método moderno que parece estar ganando tracción es el uso de generadores cuánticos de aleatoriedad, como los de las empresas QuSide, ID Quantique o Qrypt.
  • La distribución de la clave: por mucho que tengas una clave aleatoria para cifrar usando el cifrado de Vernam, si no puedes almacenarla y hacérsela llegar de forma segura al destinatario, no te servirá de nada. ¡El mayor obstáculo es que la clave es tan larga como el mensaje! Si estás cifrando comunicaciones a Gbits/s, ¡necesitas transportar la clave a la misma velocidad! Y si quieres guardar un secreto para siempre, necesitas igualmente guardar la clave para siempre tan larga como el propio secreto, tirando por tierra así la ventaja del cifrado. Además, no puedes reutilizarla, ni siquiera un fragmento diminuto. Por fortuna, una vez más, la física llega al rescate: la distribución cuántica de claves solventa el problema, aunque no está exenta a su vez de dificultades y obstáculos, que aún están en fase de investigación. Una vez más, la empresa ID Quantique se ha posicionado como pionera en este mercado.

En resumen, el cifrado de Vernam constituye el Santo Grial de la criptografía: el algoritmo irrompible que protege los secretos para siempre. Por desgracia, salvo en contadísimas ocasiones, no puede usarse en la práctica, así que habrá que buscar enfoques menos perfectos pero más prácticos y que envejezcan con lentitud.

Los demás algoritmos de cifrado envejecen… y mueren

¿Cómo es que un algoritmo envejezca y deje de ser seguro con los años? Existen varios avances que debilitan a todo algoritmo criptográfico con el paso del tiempo:

  • Avances en computación: todo algoritmo de cifrado depende de una clave. Un ataque de “búsqueda exhaustiva” prueba todos sus posibles valores hasta dar con el correcto. Para llevarlo a cabo solo hace falta potencia bruta de cómputo, no fineza matemática. De ahí que se llame también ataque de “fuerza bruta”. No importa lo bien diseñado que esté un algoritmo ni lo inteligentes que sean sus operaciones, el avance inexorable de la capacidad de cómputo va erosionando lentamente su seguridad, hasta que finalmente puede realizarse la búsqueda exhaustiva en tiempo y coste razonables. Por mucho que aumentes la longitud de la clave, ¿cómo preservar la confidencialidad ante un atacante armado con recursos computacionales infinitos? Salvo con Vernam, no parece posible con ningún otro algoritmo.
  • Avances en criptoanálisis: todos los algoritmos criptográficos de dominio público se someten al escrutinio despiadado de toda la comunidad científica. Con los años, terminan descubriéndose debilidades que disminuyen la complejidad de los ataques. Recordemos al pobre César. Si la clave tiene una longitud n, cualquier vía de ataque que reduzca el número necesario de pruebas por debajo de 2n supone un avance. Cuando la reducción es tan drástica que con la potencia de cómputo del momento un ataque se vuelve factible, entonces el algoritmo se considera roto. Un algoritmo bien diseñado podría no tener ningún resquicio.
  • Avances en matemáticas: las matemáticas no son inmutables. Se producen avances que permiten resolver problemas antes insolubles. Muchos algoritmos criptográficos se basan en la asunción de que P ≠ NP: hasta ahora nadie ha podido demostrar que “si resulta fácil de comprobar que la solución de un problema es correcta, entonces debe ser igualmente fácil de resolver”. No se descarta que se produzcan avances en matemáticas que permitan resolver en tiempo polinómico problemas como el del viajante, el de la factorización, el del logaritmo discreto o el de la búsqueda de los vectores más cortos en una celosía.
  • Avances en computación: problemas considerados hoy NP podrían ser de tipo P bajo paradigmas computacionales radicalmente diferentes del Silicio. El ejemplo más claro surgió con la computación cuántica y sus algoritmos de Shor, para factorizar números; y de Grover, para acelerar búsquedas en listas. Su consecuencia más devastadora para la criptografía es que arrasará con los algoritmos de cifrado de clave pública RSA, DSA, ECDSA, Diffie-Hellman y ECC, los estándares de facto actuales. Existen por supuesto otras formas de computación no convencional, como la computación biológica basada en ADN y su capacidad de paralelización masiva, o la basada en nanohilos, o en nanotubos de carbono, o en moléculas orgánicas, o en óptica, o en micro/nanofluidos, o incluso en amebas caóticas, y muchas más que se están investigando. ¿Aparecerán entre ellas algoritmos eficientes para resolver otros problemas matemáticos centrales en tiempo polinómico? Nadie lo sabe aún. El futuro está lleno de posibilidades.

Todo algoritmo conocido ha sucumbido o se cree que sucumbirá ante uno o más de los avances anteriores. Y ninguno resistiría a una infinita potencia de cómputo. Con la excepción del cifrado de Vernam, claro. Entonces, si Vernam es impráctico, ¿qué se puede hacer?

El futuro ya no es lo que era: cómo prepararse para nuevos futuros

Veamos cómo prepararnos para los ataques inesperados que nos depare el futuro:

Algoritmos capaces de resistir las amenazas conocidas: ya desde mediados de los 80 existen algoritmos criptográficos basados en la dificultad de resolver problemas matemáticos distintos de la factorización de enteros y del logaritmo discreto. Las tres alternativas resistentes mejor estudiadas (por ahora) ante los ordenadores cuánticos son:

  • Criptografía basada en hashes: como su nombre indica, utilizan funciones hash seguras, que resisten a los algoritmos cuánticos. Su desventaja es que generan firmas relativamente largas, lo que limita sus escenarios de uso. Leighton-Micali Signature Scheme (LMSS) constituye uno de los candidatos más sólidos para reemplazar a RSA y ECDSA.
  • Criptografía basada en códigos: la teoría de códigos es una especialidad matemática que trata de las leyes de la codificación de la información. Algunos sistemas de codificación son muy difíciles de decodificar, llegando a requerir tiempo exponencial, incluso para un ordenador cuántico. El criptosistema mejor estudiado hasta la fecha es el de McEliece, otro prometedor candidato para intercambio de claves.
  • Criptografía basada en celosías: posiblemente se trate del campo más activo de investigación en criptografía post-cuántica. Una “celosía” es un conjunto discreto de puntos en el espacio con la propiedad de que la suma de dos puntos de la celosía está también en la celosía. Un problema difícil es encontrar el vector más corto en una celosía dada. Todos los algoritmos clásicos requieren para su resolución un tiempo que crece exponencialmente con el tamaño de la celosía y se cree que lo mismo ocurrirá con los algoritmos cuánticos. Actualmente existen numerosos criptosistemas basados en el Problema del Vector más Corto.

Por otro lado, los nuevos paradigmas de computación proponen a su vez algoritmos criptográficos, que podrían resistir a los avances en otros paradigmas. Uno de los campos de investigación más intensos es el de la criptografía basada en DNA.

Otro enfoque radicalmente distinto en el que yo mismo trabajé durante años es el de la criptografía basada en caos (el estudio de los sistemas dinámicos no lineales). Su mayor inconveniente radica en que típicamente opera con números reales, que se llevan fatal con los ordenadores. Y aunque existen propuestas interesantes para proteger la transmisión de datos, en cuanto a cifrar datos en reposo no aportan grandes ventajas frente a otros esquemas más convencionales. Hasta el presente, estos sistemas han disfrutado de una atención marginal y nunca han llegado a entrar en el mainstream criptográfico. No obstante, no está de más mantener un ojo en su evolución.

Cifrado múltiple: se define como cifrado múltiple el proceso de tomar un mensaje ya cifrado y volverlo a cifrar una o más veces utilizando uno o más algoritmos diferentes, a poder ser basados en problemas o paradigmas muy distintos entre sí, con la esperanza de que, si uno cae, el resto siga resistiendo.

Reparto proactivo de secretos: esta técnica permite el almacenamiento seguro de la información en un entorno distribuido: el secreto se divide en partes que se distribuyen a diferentes entidades, como por ejemplo servidores de almacenamiento, de tal manera que cualquier subconjunto no cualificado de participantes no obtiene ninguna información sobre el secreto. Por lo tanto, la seguridad de la información se mantiene mientras un adversario no comprometa a un subconjunto cualificado de participantes. Una vez completado el reparto, sería necesario renovar las muestras cada cierto tiempo para que, si un atacante ha comprometido alguna, ya no resulte válida al juntarla con las partes renovadas. Presentan muchos inconvenientes prácticos: requisitos excesivos de almacenamiento, mucho tráfico generado durante las renovaciones, asunción de “servidores seguros”, complicados protocolos de verificación, etc.

Reemplazo al vuelo: otro enfoque propone la sustitución eficiente de la criptografía insegura por otra que no haya sido rota. Este enfoque requiere que todas las aplicaciones que usen criptografía la importen desde una API de criptografía dedicada: la Java Cryptographic Extensions (JCE), las clases del espacio de nombres System.Security.Cryptography en .NET o bibliotecas criptográficas independientes, como OpenSSLBouncy Castle, o NaCl, entre las más populares y robustas. Además, se necesitan protocolos que ejecuten rápidamente la sustitución de la criptografía obsoleta ante algún avance por otra aún resistente. Tales protocolos no sólo deben sustituir a las primitivas de la criptografía, también tienen que reemplazar las claves, certificados, etc.

Cuando la eternidad no es posible, el tiempo necesario es más que suficiente

En la práctica, tampoco es que sea necesario proteger la información por tiempo ilimitado. La sensibilidad de la información decae con el tiempo. Algunos datos deben mantenerse secretos hasta su publicación o desclasificación, como en el caso de patentes o informes gubernamentales, plazos que pueden oscilar entre unos pocos meses y unas docenas de años, pero no siglos. Otros deben protegerse durante un número de años estipulado por la Ley, como información privada de usuarios. Según algunas legislaciones, como la alemana, la confidencialidad de los datos de los pacientes debe preservarse incluso después de su muerte. En definitiva, el concepto de “largo plazo” es muy relativo, dependiente del contexto. En definitiva, no hay que obsesionarse con una “seguridad eterna” y buscar en cambio una seguridad por el “tiempo necesario”.

A pesar de los impresionantes avances en criptografía, la solución práctica para la confidencialidad a largo plazo sigue siendo un objetivo difícil de alcanzar. Tal vez, inalcanzable.

Deja un comentario

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