La Distribución Cuántica de Claves (QKD : Quantum Key Distribution) es un método por el que dos partes, que comparten un canal de comunicación no seguro pueden construir, negociar y acordar una clave secreta.
En este artículo vamos a analizar este procedimiento, sin entrar en la propia generación de la clave.
Describiremos como funciona el protocolo BB84, desarrollado por Charles Bennett y Gilles Brassard en 1984.
A través de este algoritmo podremos entender por qúe la computación cuántica puede ofrecer mejoras en el tiempo de ejecución de carácter exponencial frente a la computación clásica.
Su nombre se debe a David Deutsch, profesor de la Universidad de Oxford.
¿Y como vamos a conseguir eso objetivo?
Empecemos imaginando que tenemos una función básica, , que tiene como dominio y de igual manera tiene como imagen . Es esta una función muy básica: puede dar siempre el mismo valor, ya sea 0 ó 1, a cualquier valor de entrada, o por el contrario puede ofrecer una valor diferente segun sea el valor de x. Llamaremos constantes al primer tipo de función, y balanceadas al segundo.
El problema al que nos enfrentamos se reduce a averiguar, dada una función , de que tipo es.
Si disponemos de un ordenador clásico: ¿cuantas llamadas a la función hemos de hacer?. Es clara la respuesta : 2 veces.
Duetsch nos mostró que con un ordenador, o circuito, cuántico basta con hacer una sola llamada.
Veámoslo….
Partimos con un circuito cuántico tal cual mostramos en la figura 1.
Figura 1: esquema del circuito cuántico necesario para el Algoritmo de Deutsch
Tenemos aquí un circuito con dos qubits , el primero de los cuales llamaremos qubit de entrada, inicializado a y qubit de referencia al segundo, inicializado a , y dos qubits de salida, siendo uno de ellos el que nos indica el resultado del algortimo. A los dos primeros se les aplica una puerta de Hadamard, que ya hemos estudiado en una entrada anterior y que básicamente aplica una superposición al qubit correspondiente. El circuito en sí, que denominamos aplica al segundo quibit una suma exclusica, , entre el qubit de control y el resultado de aplicar la función al qubit de entrada.
Entremos en el detalle, calculando cada unos de los 4 estados que hemos llamado .
El primero es inmediato, pues se refiere a los qubits inicializados. Luego . Recordemos que utilizamos la convención de indicar a la izquierda el qubit con la posición superior.
Tras aplicar la puerta Hadamard a los dos qubits nos encontramos con :
vemos como la puerta de Hadamard provoca el paralelismo, al convertir un quibit de valor 0 ó 1 en una superposición.
Pasamos a calcular , para ello vamos a calcular de manera genérica , que equivale a dejar el primer termino tal cual y aplicar la suma exclusiva al segundo término y para continuar vamos a considerar dos escenarios separados :
si
si
si
Luego podemos simplificar agrupando los dos términos tal que
Estos calculos previos nos permiten avanzar con el cálculo de :
, que de igual manera que en el paso previo vamos a dividir en varios escenarios, tal que :
que se puede simplificar tal que :
Finalmente aplicamos la puerta de Hadamard de salida al primer qubit , y tendremos :
…que a su vez podemos simplificar :
¿Y que nos indica esa expresión?: que podemos medir el primer qubit de ese estado cuántico resultante, si es cero sabremos que la función es constante, y balanceada si el valor es 1.
Con un solo ciclo de ejecución de llamada a la función, con el estado de dos qubits , podremos averiguarde que tipo es, ofreciendo por tanto una gran ventaja en complejidad de computación sobre un ordenador de computación clásica que necesitará dos llamadas.
Este algoritmo se puede extender a funciones de manera que veremos en una siguiente entrada en el blog.
He preparado este trabajo leyendo el capítulo 1.4.3 del libro Quantum Computation and Quantum Informacion de Michael A. Nielsen & Isaac L. Chuang y el capítulo 7.2 del Introduction to Classical and Quantum Computing de Thomas G. Wong ,
La puerta de Hadamard es un operador de computación cuántica, muy simple a la vez que, probablemente, de los más usados. Su utilidad reside en su capacidad de convertir un qubit de un estado, tal que o , en una superposición de los mismos. Veamos los detalles.
La puerta de Hadamard se nombra con y se define de forma matricial tal que
Y efectivamente, si aplicamos una puerta Hadamard a queda tal que:
…de igual manera si aplicamos Hadamard a un qubit tendremos:
Apliquemos Hadamard sobre estados en otras bases:
como no podía ser de otra manera, ya que es unitaria y reversible.
Es muy útil hacer una pequeña transformación y escribir de manera genérica para un tal que , efectivamente
y podemos ir un paso más allá y escribir la expresión tal que :
Hadamard sobre multiples qubits..
Hadamard es una puerta que opera sobre un sólo qubit, pero en circuitos multiqubits no es infrecuente aplicar simultáneamente esta puerta sobre todos los qubits. En algunos textos se le denomina tensor Hadamard o . Hagamos un caso práctico de aplicación de este tensor a un estado cuántico genérico con
..es importante ver que se está aplicando una puerta a cada uno de los estados simples y multiplicando tensorialmento esos n resultados. Utilizando la expresión genérica que usamos en el apartado anterior podemos continuar con:
..que se puede simplificar con
La manera intuitiva de llegar a esta última expresión es viendo como cada componente de cuaquier estado de múltiples qubits lleva siempre signo positivo, ya que todo producto con será cero, y el componte lleva un signo tal que , que se suman para el estado final de multiples qubits.
Veamos un caso particular con n=3..
Hemos visto la definición de la puerta de Hadamard, su utilidad para provocar una superposición desde un estado de una sola base, y hemos trabajado un poco de álgebra para generar una expresión genérica del tensor Hadamard sobre múltiples qubits, que será muy útil en la demostración del algoritmo de Deutsch-Jozsa que veremos más adelante.
Por cierto, esta puerta debe su nombre al matemático francés Jacques Hadamard.
Uno de los pilares sobre los que se apoya la física cuántica es el principio de no clonación o no replicabilidad.
¿Qué significa eso?: que no podemos copiar el estado de un qubit, o dicho de otra manera que no podemos replicar su estado cuántico en otro qubit. Copiar bits en la computación «clásica» es una operación más que cotidiana, forma parte intrínseca de las operaciones, y no nos podemos imaginar un escenario en el que no podamos hacerlo.
«The no-cloning theorem is one of the key results in quantum mechanics that reflects the underlying non-classical nature of quantum information.»
Fuente: Deutsch, D., Ekert, A., & Jozsa, R. (1996). Quantum privacy amplification and the security of quantum cryptography over noisy channels. Proceedings of the Royal Society of London. Series A: Mathematical, Physical and Engineering Sciences, 452(1954), 1799-1824.
¿Y como podemos demostrar una cosa así?, pues con un poquito de álgebra, espacios vectoriales y productos escalares.
En primer lugar pensaremos en un operador lineal aplicable a dos qubits tal que replica el valor de uno de ellos en el otro. Lo podemos expresar en lenguaje matemático tal que :
que indica que aplicamos el operador sobre y obtenemos un par de qubits iguales. Habríamos replicado en el qubit con valor inicial . La dimensión del operador es 4×4, ya que aplica a dos qubits.
Podemos desarrollar el término de la izquierda tal que :
y si desarrollamos el término de la derecha:
Igualando ambas expresiones obtenemos estas cuatro ecuaciones :
de aquí podemos conseguir muchas soluciones, pero que siempre serán función de y . Sólo como ejemplo :
, , , , , , ,
Podemos observar como la matriz U tiene componentes función del qubit a replicar, luego no existe un operador U que replique el estado cuántico de un qubit en otro.
Demostración extraída del libro Introduction to Classical and Quantum Computing de Thomas G. Wong. Capítulo 4.4.4 No-Cloning Theorem ↩︎