Las claves juegan un papel imprescindible en el ecosistema de las cadenas de bloques. Como ya te contamos en este artículo, la función básica y fundamental del wallet no es otra que almacenar las claves pública y privada que nos proporcionan acceso y control a nuestras anotaciones en la cadena de bloques. Y como seguramente ya sepas o hayas deducido, el hecho de que las criptomonedas tenga el prefijo «cripto» se debe al empleo de la criptografía en su gestión.
Así, es importante conocer, sino en profundidad, si al menos en su base, cómo funcionan los sistemas criptográficos empleados en todas las operaciones que se realizan con las cadenas de bloques, por qué es imprescindible el cifrado asimétrico, cuán importante es está tecnología en nuestro día a día (aunque no operemos con criptomonedas ni con cadenas de bloques), a qué amenazas se enfrenta en el futuro (si es que las hay) y, en resumen, por qué el cifrado asimétrico lo cambió todo.
Cifrado simétrico
Seguramente ya habrás deducido que para que exista un cifrado asimétrico, también debe existir un cifrado simétrico. Y no te equivocas. Es más, durante prácticamente toda la historia de la criptología, y nos tenemos que remontar bastantes siglos para llegar al mismo, todos los sistemas de cifrado que se han empleado han sido simétricos.
Desde el Cifrado César hasta la sofisticación de las temibles máquinas Enigma empleadas por los alemanes para sus comunicaciones durante la Segunda Guerra Mundial, e incluso el uso por parte del ejército norteamericano de indios navajos para sus comunicaciones en la campaña del Pacífico (una muy interesante historia recogida en la película Windtalkers, de 2002), todos los sistemas que han existido eran simétricos.
¿Y qué es lo que define un sistema de cifrado como simétrico? Pues algo tan sencillo y tan común como que la clave empleada para cifrar el mensaje es la misma que debemos emplear para descifrarlo. Esto tiene una implicación obvia, y es que emisor y receptor tienen, necesariamente, que compartir la misma clave. Y esto, aunque no lo parezca, ha sido en muchísimas ocasiones el problema de seguridad que ha permitido que una comunicación cifrada acabara como texto plano en otras manos distintas a aquellas a las que se dirigía.
Tanto es así que, desde hace ya mucho tiempo, los expertos en criptología (primero lingüistas y posteriormente también matemáticos) han contemplado la distribución de claves como un elemento crítico de la criptología. De nada sirve emplear una clave muy compleja, si los sistemas empleados para que tanto A como B dispongan de la misma no son seguros. Recordemos que en el ámbito de la seguridad hay un máxima que nunca caduca: la seguridad de un sistema, por complejo que sea, viene siempre determinada por su eslabón más débil.
Esto ha sido un problema desde los tiempos de los emperadores del Imperio Romano, pero su relevancia ha ido creciendo de manera exponencial a medida que las comunicaciones seguras se han convertido en un elemento importante de las vidas de más y más personas. Y en este punto las redes telemáticas, y fundamentalmente Internet, han democratizado la necesidad de comunicaciones seguras para prácticamente todo el mundo.
De Diffie y Hellman a Rivest, Shamir y Adleman
Aunque la búsqueda de un sistema de cifrado que evitara los problemas de la distribución de claves había estado en la mente de los criptólogos desde hace siglos, es en la década de los sesenta del siglo pasado cuando se empiezan a formular primero las bases teóricas y luego los protocolos que permitirían algo que, hasta ese momento, parecía imposible, establecer una comunicación segura (cifrada) sin que emisor y receptor hubieran compartido la clave de cifrado y descifrado. ¿Y cómo se podía lograr eso? Con un sistema que empleara dos claves distintas, una para cifrar y otra para descifrar. Un sistema asimétrico.
Las funciones matemáticas pueden ser de una vía o de doble vía (o bidireccionales). Éstas últimas son reversibles. Por ejemplo, la función duplicar, que consiste en multiplicar por dos, es reversible, tan solo tendremos que dividir entre dos para obtener el valor que fue duplicado inicialmente. Basta con saber qué función se ha aplicado y tener el resultado de la misma.
Una función de una sola vía, sin embargo, no es reversible. Pongamos que sabemos que la función matemática empleada es la multiplicación de A por B y que el resultado de la misma es 375. Podemos especular sobre los valores de A y B, pero no tendremos manera de determinar, de manera inequívoca, qué valores se emplearon para llevar a cabo la multiplicación.
Ahora bien, ¿qué pasaría si hubiera funciones que, en principio, son de una sola vía, pero que con determinada información (no la de la operación original, claro) pueden ser revertidas? Ese fue, precisamente, el punto de partida primero de Whitfield Diffie y Martin Hellman, que con su teoría formularon las bases del cifrado asimétrico y la criptografía moderna.
New Directions in Cryptography, el texto publicado por Diffie y Hellman cobró cierta popularidad en la comunidad científica, aunque el caso más relevante es el de tres inventadores que trabajaban en el octavo piso del laboratorio de Informática del MIT. El primero en verlo fue Ron Rivest, que vio en dicho texto un desafío interesante.
En ese momento Leonard Adleman entró en su despacho a hablar de otro asunto, pero Rivest consiguió convencer a Adleman del interés del desafío propuesto por Diffie y Hellman: encontrar una función de una sola vía pero que, en circunstancias excepcionales, fuera reversible. Poco después Adi Shamir se sumaría al equipo, dando lugar a uno de los conjuntos de iniciales más relevantes de la historia de la seguridad: RSA.
Cuenta la leyenda (no por figurada, sino por histórica) que en abril de 1977 y tras celebrar la Pascua Judía, en la que los tres se permitieron cierta indulgencia a base de vino Manischewitz (un vino kosher dulce), Rivest fue incapaz de conciliar el sueño y, en su lugar, llegaron las musas de la inspiración. De repente una revelación, y el resto de la noche redactando un paper con el desarrollo de la idea que, quizá gracias al vino kosher, le permitió encontrar una solución.
Clave pública-Clave privada
El sistema planteaba una necesidad de dos claves: una pública y otra privada. De este modo la primera podría distribuirse libremente, sin ningún tipo de limitaciones y por todo tipo de canales, tanto seguros como inseguros. Por su parte, la clave privada debería permanecer siempre bajo custodia y no tendría que ser compartida con nadie. Y es que un elemento clave de este sistema es que la clave empleada para cifrar no se puede emplear para descifrar. Un mensaje cifrado con la clave pública solo puede ser descifrado con la clave privada, tal y como habían establecido Diffie y Hellman poco tiempo atrás.
No entraremos a explicar en profundidad a explicar la solución ideada por Ron Rivest y secundada por sus colegas, pues como ya puedes suponer es bastante compleja. Podemos resumirlo en que el emisor elige dos números primos (pongamos A y B) y multiplica uno por el otro. Pongamos, por ejemplo, 1.439 y 3.121 (en realidad esta operación se realiza con números mucho más altos, pero empleo estos para mejorar la legibilidad).
El resultado de dicha multiplicación es 4.491.119. Este número será la clave pública y, por lo tanto, la que el emisor puede (y debe) compartir con todas las personas que le quieran enviar mensajes cifrados, pues es la clave que tendrán que emplear para dicha operación.
Esta multiplicación parece, en primera instancia, una función de una sola vía… pero no lo es por completo. No lo es si disponemos de una información clave: A y B, los dos números primos empleados para obtener la clave pública. ¿Y podemos entonces intentar deducir los números primos empleados para crear la clave pública? La respuesta es que sí pero, en determinadas circunstancias, y en las condiciones actuales, necesitaríamos una cantidad de tiempo superior a la que se calcula para la vida total del Universo.
Si la clave pública es, pongamos, 35, mentalmente tardaremos menos de un segundo en determinar que los primos empleados han sido 5 y 7. ¿Pero qué ocurre si elegimos dos números primos en el orden de magnitud de 10320? Factorizar el número resultante de la multiplicación de A y B en este caso será, con los medios y la tecnología actual, un proceso que llevará mucho, muchísimo tiempo de cómputo. Y sin embargo, con la clave privada generada con A y B, el proceso de descifrado es instantáneo.
La capacidad de proceso, tanto de sistemas independientes como mediante sistemas distribuidos, se mantiene en constante crecimiento, por lo que aquello que hace 20 años resultaba una magnitud adecuada para la creación de cables, a día de hoy puede resultar insuficiente. Entre principios y mitades de los noventa, se estableció que 10 308 podía proporcionar en nivel de seguridad necesario para proteger operaciones bancarias y otro tipo de contenidos comprometidos. Sin embargo, a día de hoy el estándar es RSA256, que se traduce en 10 2048.
Ahora mismo estás empleando cifrado asimétrico
¿No lo crees? Pues puedes comprobarlo ahora mismo si estás leyendo este artículo desde el ordenador. Localiza el icono del candado en la parte izquierda de la barra de direcciones. Haz click en él, en el menú que se mostrará pincha en «La conexión es segura» y, a continuación, en «El certificado es válido».
En la ventana que se abrirá pincha en la pestaña «Detalles» y, al repasar sus campos, podrás ver la referencia a RSA256 y, un poco más abajo en la lista, la clave pública de 2048 bits empleada en la conexión. Y es que, como indicaba al principio, el cifrado asimétrico está muy presente en nuestras vidas, pues lo empleamos, entre otras ocasiones, siempre que accedemos a una página web seguro (que son la inmensa mayoría).
Con el paso de los años, es posible que veamos como estos estándares se elevan, tanto en respuesta al incremento en las capacidades de cómputo de los sistemas como a hipotéticos avances en los métodos para factorizar, por lo que el cifrado asimétrico seguirá siendo la solución perfecta para establecer conexiones seguras a corto y a medio plazo… ¿pero y a largo?
Seguro que en algún momento, en los últimos tiempos, has escuchado hablar sobre la computación cuántica. Cada cierto tiempo se producen anuncios sobre nuevos pasos en este sentido, si bien es cierto que parte de ellos suelen ser refutados y que, en todo caso, esta tecnología actualmente se encuentra en estado embrionario, por lo que todavía será necesario esperar mucho tiempo hasta que la ciencia sea capaz de solventar los mil y un desafíos a los que se enfrenta su desarrollo.
Un principio básico de la física cuántica es la superposición cuántica, que plantea que un sistema físico cualquiera (pongamos un electrón), que puede oscilar entre distintos estados, podrá adoptarlos todos de manera simultánea. No obstante esa superposición de estados no sería mesurable, pues en el momento de observarlo, devolverá un único estado. El ejemplo más extendido (aunque paradójicamente nació como una burla a la cuántica) de la superposición de estados es la paradoja del Gato de Schrödinger: el gato entra en una superposición de estados (vivo y muerto) hasta que abrimos la caja.
No habría imaginado el académico austriaco-irlandés que este ejercicio mental, nacido en sus conversaciones con Einstein para poner la cuántica en tela de juicio, se convertiría en uno de los elementos más reconocidos, culturalmente, de la misma. La paradoja que dio lugar a una paradoja.
El caso es que cuando un sistema informático intenta factorizar el producto de dos primos debe valorar cada posibilidad de manera secuencial, pues el estado de los bits, el elemento básico de información empleado en los mismos, puede ser cero o uno. Sin embargo, en la informática cuántica cambiamos el bit por el qbit, y su estado no es cero o uno, es cero Y uno de manera simultánea. Dicho de otra manera, teóricamente un sistema cuántico sería capaz de probar todas las combinaciones posibles en un único ciclo de proceso.
Esto, claro, tendría unas consecuencias equiparables, en el mundo de la seguridad y las redes telemáticas, al que tuvo el meteorito de Chicxulub, hace sesenta y seis millones de años, en la vida en nuestro planeta. No acabó con ella por completo, pero sí que la cambió por completo. Ya se han formulado sistemas de cifrado cuántico que, llegado el momento, podrán implementarse. Pero todavía falta tiempo para que eso empiece a ser importante. De momento el cifrado asimétrico goza de muy buena salud, y seguirá siendo la clave de las comunicaciones seguras durante bastante tiempo.
Cifrado asimétrico y cadenas de bloques
La criptografía de clave pública juega un papel fundamental en el ecosistema de las cadenas de bloques. Como recordarás, al principio del artículo hemos hablado de los wallet. Pues bien, es cierto que es el elemento responsable de almacenar las claves pública y privada de su usuario, y seguro que ahora entiendes mucho mejor la importancia de que éste sea seguro y de mantenerlo protegido.
Pero claro, para que el wallet pueda proteger las claves hay un paso imprescindible. Efectivamente, las claves deben ser creadas, y eso también es responsabilidad del wallet. Así, al crear un monedero, observarás que el software (o servicio, si es que empleas un wallet como servicio) el sistema puede pedirte que lleves a cabo determinadas acciones, como mover el ratón de forma arbitraria o teclear «a lo loco», es decir, sin sentido. Dichas acciones proporcionarán al software datos aleatorios empleados para la elección de los dos números primos que se emplearán para crear las claves.
El funcionamiento de las claves en blockchain no difiere del que podemos encontrar en otras áreas: la clave pública permite generar información cifrada que solo nosotros, con la clave privada, podremos modificar. La clave pública acredita nuestra propiedad sobre lo referenciado en una anotación en la cadena, pero solo con la clave privada podremos «desbloquear» su contenido para operar con él.