El cifrado de Vernam

El protocolo de cifrado que se usa en criptografía cuántica es posiblemente el más sencillo de todos y hasta ahora, el único que se ha demostrado que es irrompible, el cifrado de Vernam, o One Time Pad. Como ya se ha explicado anteriormente, no me extenderé demasiado, solamente diré que consiste en una clave 100% aleatoria (no vale pseudoaleatoria) de igual longitud que el mensaje y que lo único que hay que hacer para cifrar es un XOR con el mensaje y la clave. ¿Cuál es el problema? Que solo se puede usar una vez, porque si usáramos dos veces la misma clave, el problema de encontrar el texto en claro sería trivial para cualquier criptoanalista. Entonces, si no podemos usar la misma clave dos veces, tendremos que hacer llegar la clave al receptor de alguna manera, o bien quedando con él antes o a través de un canal seguro. La idea del canal seguro es inútil, porque si de verdad exisitiera no tendríamos ni que cifrar el mensaje, respecto a lo de quedar antes en persona, es lo que se solía hacer para usar este cifrado, como los cuadernos con claves de un solo uso que se usaban en la Segunda Guerra Mundial y que Stephenson narra perfectamente en su Criptonomicón. Pero hoy día, la opción de los cuadernos de un solo uso queda totalmente fuera de uso y es poco útil en comunicaciones industriales y operaciones que se realizan a diario.

En definitiva, tenemos el sistema ideal de cifrado, sencillo y eficaz, pero no podemos usarlo por un pequeño problema técnico a la hora de distribuir la clave. La mecánica cuántica viene a solucionar este problema proponiendo un método para distribuir una clave binaria, tan larga como se quiera, totalmente aleatoria y asegurándose de que solo el emisor y el receptor la poseen, justo lo que necesitamos.

Distribución de clave: protocolo BB84

Como hemos visto hasta ahora, la mecánica cuántica no proporciona un método de cifrado tal cuál, sino que complemente al cifrado de Vernam proporcionando un protocolo de distribución de clave seguro. Tampoco existe un único protocolo para conseguir esto, sino que a lo largo de los años se han ideados muchos, a cada cuál más efectivo, sin embargo el primero y más sencillo fue propuesto por Charles Bennett y Gilles Brassard en 1984 (de ahí que se le conozca como BB84), vamos allá.

Lo primero que vamos a hacer es presentar a los protagonistas de la historia, Alice y Bob. Alice quiere enviarle un mensaje a Bob, pero no sabe como hacerlo para tener la seguridad de que Eva no va a leerlo por el camino, así que recurre a la mecánica cuántica.

Lo primero que hace es llamar a Bob por teléfono, puede que Alice tenga el teléfono pinchado, pero no le importa porque no va a desvelar nada de la calve ni del mensaje, lo único que van a hacer en este primer paso es establecer un convenio de signos para la clave. En primer lugar, eligen dos bases con componentes ortonormales, es decir que si es una cosa, no puede ser la otra, el caso más sencillo es usar fotones con las bases “Horizontal/Vertical” o a partir de ahora (+) y la base “+45º/-45º” o (X), de esta manera, si usan la base (+) llegan al convenio de que vertical significa 1, (|=1) y horizontal es 0 (- = 0), y si toman la base (X) tendrán (\=1) y (/=0).

Ahora Alice tiene una máquina que elije al azar (recordemos que tiene que ser azar puro) tanto la base que va a usar como el bit que va a enviar, de manera que por ejemplo, enviará lo siguiente:

(+) (X) (X) (+) (+) (X) (+) (X) (X) (X) (+) (X) (+) (+) (+) (X)
1 0 1 1 0 0 1 1 1 0 1 0 0 0 1 0
| / \ | / | \ \ / | / | /

Y entonces Alice habrá enviado 16 fotones a Bob con esas polarizaciones. Bob usará un aparato basado en polarizadores para medir la polarización de los fotones y así saber que clave le está enviando Alice, pero Bob no sabe que base ha usado Alice para cada fotón, así que tendrá que hacer la elección al azar. Esto provocará que la mitad de las veces elija una base que no se corresponda y por tanto, obtendrá un valor que puede ser o no el valor que quiso enviar Alice, pero primero veamos lo que mide Bob.

(+) (+) (X) (+) (X) (+) (+) (+) (X) (X) (X) (+) (X) (X) (+) (X)
| \ | \ | \ / / \ / / | /
1 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0

Como vemos, las claves de Alice y Bob no son iguales, lo que no nos vale para nada, pero ahora Alice vuelve a llamar por teléfono a Bob y vuelve a hablar con él sin importarle que le escuchen, porque de nuevo, no comprometerá nada de la clave. En esta llamada, lo que hace Alice es decirle a Bob que bases ha usado, y Bob le dice en cuales a acertado. Hay que darse cuenta que Alice le comenta esto a Bob después de enviar la clave, porque si no, si que estaría enviando información útil para posibles espias.

Después de quedarse con las bases que coinciden, la clave quedará así:

(+) (X) (+) (+) (X) (X) (+) (X)
1 1 1 1 1 0 1 0
| \ | | \ / | /

Y así tenemos al fin 8 bits que coinciden tanto para Alice como para Bob.

Pero parece que hasta ahora, lo único que hemos hecho ha sido liar el asunto. Vamos a ver que pasaría si Eva estuviera escuchando en medio. Para ello, Eva que no está muy puesta en esto del espionaje cuántico, lo que va a hacer es por un lado pinchar el teléfono para enterarse de todo lo que hablan, y por otro interceptar todos los fotones y reenviarlos a Bob para hacerse con una copia de la clave.

Base de Alice (+) (X) (X) (+) (+) (X) (+) (X) (X) (X) (+) (X) (+) (+) (+) (X)
Bit de Alice 1 0 1 1 0 0 1 1 1 0 1 0 0 0 1 0
Polarización de Alice | / \ | / | \ \ / | / | /
Base de Eva (+) (+) (+) (+) (X) (X) (+) (X) (+) (+) (X) (X) (+) (X) (X) (X)
Polarización de Eva | | \ / | \ | / / \ \ /
Bit de Eva 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0
Base de Bob (+) (X) (X) (+) (+) (X) (+) (X) (X) (X) (+) (+) (X) (+) (X) (+)
Polarización de Bob | \ / | / | \ / \ | / \
Bit de Bob 1 1 0 1 0 0 1 1 0 1 0 1 0 0 1 0

Y una vez que han completado el proceso de enviar y recibir fotones, esta vez con Eva en medio espiando, pasan a la parte de la llamada telefónica para ver que bases están equivocadas. Pero claro, ahora Eva no puede meter baza, solo se puede dedicar a escuchar y ver que pasa, así que la cosa quedaría así:

Base de Alice (+) (X) (X) (+) (+) (X) (+) (X) (X) (X) (+) (+)
Bit de Alice 1 0 1 1 0 0 1 1 1 0 1 0
Polarización de Alice / \ | / | \ \ / |
Base de Eva (+) (+) (+) (+) (X) (X) (+) (X) (+) (+) (X) (X)
Polarización de Eva | | \ / | \ | / \
Bit de Eva 1 0 0 1 1 0 1 1 0 1 0 1
Base de Bob (+) (X) (X) (+) (+) (X) (+) (X) (X) (X) (+) (+)
Polarización de Bob | \ / | / | \ / \
Bit de Bob 1 1 0 1 0 0 1 1 0 1 0 0

Ahora, Alice y Bob saben que han usado las mismas bases, así que sus claves deben ser iguales, por lo que para asegurarse, toman un fragmento de prueba y las comparan. Para comparar este fragmento, tienen que hacerlo en un canal abierto, así que luego no lo usarán para el cifrado, pero les es de mucha utilidad porque van a ver lo siguiente:

Clave de Alice 1 0 1 1 0 0 1 1 1 0 1 0
Clave de Bob 1 1 0 1 0 0 1 1 0 1 0 0

Tiene que quedar claro que no comparan toda la clave en abierto, porque entonces cualquiera podría interceptarla, lo que hacen es comparar un pequeño fragmento, para comprobar el porcentajes de errores, y luego descartar ese fragmento y usar el resto de la clave.

Al comparar la clave se dan cuenta de que hay muchos errores cuando no debería haberlos y eso solo significa que alguien ha estado escuchando, ¡ajá! El espía queda al descubierto y por tanto es mejor no enviar nada hasta que quien sea deje de espiar.

Por supuesto, si tenemos un grupo de espías interceptando nuestras comunicaciones las 24 horas, no hay manera de enviar el mensaje, porque siempre estarán ahí, pero al menos sabemos que están ahí, y no se enterarán de nada. Quizá podamos usar un canal secundario para el intercambio de clave o algo por el estilo, pero queda claro que no es posible que nos espíen sin nosotros enterarnos.

¿Y si el canal tiene ruido?

Pero hasta ahora hemos supuesto el caso ideal, en el que el canal es perfecto y los fotones mantienen su polarización, pero suponer esto, es mucho suponer, el propio canal va a generar errores entre la clave de Alice y la de Bob. ¿Cómo se corrige esto? Lo primero es ver, como en el paso anterior, si hay errores. En este caso siempre los habrá, y hay que decidir si son muchos y entonces es que hay un espía, o son aceptables y es todo cosa del canal.

Una vez nos hemos decidido a usar la clave, hay que corregir los errores, para tener claves idénticas en ambos lados. Para ello se usan métodos de teoría clásica de la información, una de las cuales (aunque ni con mucho la más efectiva) consiste tomar trozos de clave en los que se estima que como mucho hay un solo error, se suman todos los bits y se compara la paridad, si coincide, la clave es idéntica en ambos lados, si no coincide, se divide a la mitad y se vuelve a comparar buscando así el bit erroneo y descartántolo al final. Después de hacer esto para toda la clave muchas veces, se tiene la clave depurada y operativa.

Otras consideraciones:

Hay quien pensará que Eva puede hacer una copia del fotón sin modificarlo para medir sobre la copia y que el original llegue a Bob, pero existe un teorema conocido como “teorema de no clonación” que impide hacer una copia de un objeto cuántico sin modificar el original. Lo que sí puede hacer Eva es aprovechar los fallos en los emisores de fotones, que no son perfectos y detectar cuando emiten pares de fotones, de maneras que ella se queda con uno y el otro lo deja pasar, haciendo así una medida indetectable puesto que son partículas distintas.

Hay infinidad de comentarios sobre este tipo de protocolos y métodos de espionaje, pero aún así, hay mucha gente trabajando en ello y se consiguen logros impresionantes.

Se que ha sido largo, y aún así ha sido muy breve para lo que podría haber sido y he tratado cosas bastante por encima. Espero que al menos tengais una pequeña idea de cómo funciona la criptografía cuántica.

(Más información en Wikipedia)

¡Muchas gracias Sergio!

Post anterior: Introducción a los cifrados cuánticos

Print Friendly, PDF & Email