Criptografía: Protocolo de distribución de clave BB84

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

Autor: fran

8 Comentarios

  1. Hola. Te quería informar de que yo el año pasado hice un trabajo sobre la criptografía cuántica y había un estudio en proceso que permitiría la copia de un fotón sin que lo modificara (aunque esto vaya claramente en contra del principio de incertidumbre, eso ponía en el estudio).Ignoro si el estudio resultaría cierto al final o no, pero creo que no se puede afirmar tan categoricamente el hecho de que no se puede.

    Siento no poder darte ningún enlace pero ahora mismo no lo encuentro por la red.

    Saludos.

    Publica una respuesta
  2. Como ya dije en el otro post sobre criptografía cuántica, yo no tengo mucha idea del tema. De hecho, estos dos posts los ha escrito Sergio para nosotros.

    Aún así he mirado el enlace que proponía Lek en el anterior post, y resulta que hay información sobre lo que hablas kaidok, es la teleclonación cuántica, lo malo es que no me lo he leído y aunque lo lea no creo posible que lo entienda. 😛

    Aquí lo dejo para quién quiera informarse: Teleclonación cuántica

    Publica una respuesta
  3. Sólo un comentario como anécdota.
    Los portaaviones del ejército norteamericano intercambian órdenes e instrucciones con los aviones usando ‘one time pad’ para hacer el cifrado de Vernam.
    Los intercambios de claves se realizan cuando el avión aterriza en el portaaviones mediante un disco duro que es el encargado de encriptar/desencriptar las comunicaciones entre los dos elementos.

    Salut!

    Publica una respuesta
  4. Bueno, lo primero de todo espero que os hayais enterado de algo y tengais una idea de como va esto de la criptografía cuántica.

    Por otro lado, respecto al comentario de kaidok, hay que aclarar un poco el tema. En el artículo al que se llegaba mediante el comentario de Lek, hablaban de la teleclonación cuántica, pero también decían, como bien se menciona en los comentarios de slashdot y de kriptopolis, que la presencia del espía sigue siendo detectada aunque utilice esta técnica.
    Leí el artículo solo por alto, pero parece ser que usa un protocolo de teleportación cuántica para copiar las propiedades de un objeto (polarización de un fotón), en una colectividad de objetos, de manera que en esa colectividad, todos iguales, podamos medir sobre unos y enviar el resto a Bob (una técnica parecida le dió el premio Principe de Asturias de las ciencias a Ignacio Cirac).

    Esto por un lado. Por otro, decir que el teorema de no clonación, teorema muy sencillito para quien tenga bases de mecánica cuántica, dice que no se puede hacer una copia sin modificar el original, por eso necesitamos hacer varias copias, porque el fotón original quedaría inutil.

    Y la gracia está en que esto quizá consiga “romper” el protocolo BB84, que es el que aquí itenté explicar, por ser el más sencillo, pero hay infinidad de protoclos diferentes, basados en muchas propiedades de la mecánica cuántica, y no todos son sensibles a este problema. Me gustaría citar, por ser producto nacional, un protocolo basado en “intercambio de entrelazamiento” ideado hace unos años por Adán Cabello, de la Universidad de Sevilla, lamentablemente, el protocolo es algo más complicado que el BB84 y no se puede explicar sin nociones previas.

    Y después de este largo comentario, solo deciros que intetaré aclarar todas las dudas que planteeis.

    Publica una respuesta
  5. No entiendo una cosa en la cuarta tabla, en la que se ve lo que envía Alice y reciben Eva y Bob. ¿Por qué en el segundo bit Alice envía un fotón / y Eva interpreta – (y luego Bob recibe \ )?. En realidad mi duda quizá sea más profunda, porque yo lo único que veo en este sistema es que hay dos bits (0 y 1) y dos símbolos por cada uno, al 0 le corresponden / y – , y al 1 le corresponden el | y el \. Con lo cual no veo clara la incertidumbre entre la polarización de los fotones que se mandan y la la polarización de los que se reciben.

    Publica una respuesta
  6. none, intentaré responder a tu pregunta para el ejemplo que comentas 🙂

    Como ves, Alice envía /, el problema es que Eva elije la base (+) para medir la polarización de ese fotón, y como intenté explicar en el post anterior, al confundir la base, hay un 50% de posibilidades de que Eva mida – y otro 50% de que mida |. En este caso mide – y entonces le envía – a Bob. Pero claro, ahora Bob elije como base para medir (X), cuando le está llegando un fotón en la base (+), así que tendrá un 50% de posibilidades de obtener / y otro 50% de obtener \.

    Sin embargo, si Bob hubiera medido directamente en el fotón que le mandó Alice hubiera obtenido / en lugar de \.

    Y es precisamente con este tipo de errores como Alice y Bob se dan cuenta de que Eva ha estado espiando, porque (suponiendo un canal sin ruido), estos casoso en los que ambos usan la misma base pero obtienen un bit cambiado, no existirían.

    Espero que haya resuleto tu duda 🙂

    Publica una respuesta
  7. Excelente explicación, estoy trabajando en mi tesis de Ingeniería de sistemas y estoy realizando un metaanalisis de Criptografía Cuántica, quisiera saber si tienes algunas fuentes que pueda consultar. Mil gracias por tu ayuda.

    Buena forma de explicar el proceso de generación de clave cuántica

    Publica una respuesta

Trackbacks/Pingbacks

  1. ¿Qué mató al gato de Schrödinger? - La Marea - […] la nueva generación de tecnologías cuánticas, tales como la computación cuántica, la distribución cuántica de claves de cifrado o la metrología…
  2. ¿Qué mató al gato de Schrödinger? | Portal de las Culturas - […] la nueva generación de tecnologías cuánticas, tales como la computación cuántica, la distribución cuántica de claves de cifrado o la metrología…
  3. ¿Qué mató al gato de Schrödinger?LA | Lejos del tiempo - […] la nueva generación de tecnologías cuánticas, tales como la computación cuántica, la distribución cuántica de claves de cifrado o la metrología cuántica. Todas estas tecnologías se…

Puedes utilizar código LaTeX para insertar fórmulas en los comentarios. Sólo tienes que escribir
[latex]código-latex-que-quieras-insertar[/latex]
o
$latex código-latex-que-quieras-insertar$.

Si tienes alguna duda sobre cómo escribir algún símbolo puede ayudarte la Wikipedia.

Y si los símbolos < y > te dan problemas al escribir en LaTeX te recomiendo que uses los códigos html & lt; y & gt; (sin los espacios) respectivamente.

Envía un comentario

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