Algunas ideas sobre el criptoanálisis cuántico
(Esquema de unas notas de A. Ekert, Centre for Quamtum Computation, Oxford University)

Como hemos visto la dificultad matemática esencial de la descriptación de un mensaje en el sistema RSA consiste en la imposibilidad, hoy por hoy, de factorizar un número N de, por ejemplo, 100 dígitos.

Si tratamos de efectuar la factorización por el camino tradicional de un número N de L dígitos, esto nos lleva a la realización de un número de divisiones que aproximadamente es de 10^(L/2), es decir (un crecimiento exponencial con L).

Supongamos que N es de L= 100 dígitos y que disponemos de un ordenador que hace 10^10 divisiones por segundo. El ordenador tardará en factorizar N por el método tradicional  aproximadamente 10^50/10^10=10^40 segundos. Demasiado tiempo ya que la edad estimada del universo es de 3,8*10^17 segundos (12.000 millones de años)

En el sistema RSA esto nos lleva a tratar de resolver la ecuación en r

a^r=1 (mod N)
conocidos a y N, cuando N es un número de, por ejemplo, 300 cifras y a un número moderadamente grande (aunque no tanto como N).

Resolver a^r=1 (mod N) es equivalente a hallar el período de la función en x

F(x)=a^x (mod N)
Efectivamente tal período es el r que satisface  a^r=1 (mod N)

Pero si se logra obtener r, resulta que en el caso que nos ocupa N es el producto de MCD(N,a^(r/2)+1) y MCD(N,a^(r/2)-1).
***********************************************************
Veamos cómo se puede proceder en un ejemplo sencillo.
Tratamos de factorizar 15.
Escogemos un número entero entre 0 y 15, por ejemplo 7. Lo elevamos a 1,2,3,4,...,14 sucesivamente y hallamos el resto de la división de estos números por 15. Resulta

7^1=7 (mod 15)
7^2=4 (mod 15)
7^3=13 (mod 15)
7^4= 1 (mod 15)
7^5= 7 (mod 15)
.........................
Así resulta que r=4 y por tanto MCD(15, 7^2+1)=5, MCD(15,7^2-1)=3 y se tiene 15=5*3

Si para un N de 300 cifras pudiéramos elevar cada número 1,2,3,4,...,N-1 y hallar su resto al dividir el resultado por N...

Para la tarea efectuada del modo secuencial clásico se necesita demasiado tiempo, pero no para el ordenador cuántico.

Con el ordenador cuántico el tiempo de cálculo no crece exponencialmente con el número de dígitos L de N sino como una potencia cuadrática de L y así la tarea de factorizar un número de 300 cifras es cuestión de menos de un segundo. ¿Cómo lo hace?

El ordenador clásico acepta como entrada números de uno en uno y los va tratando de forma secuencial.

El ordenador cuántico puede aceptar como entrada una superposición coherente de muchos números y los puede tratar todos ellos simultáneamente.
***********************************************************

Una idea del algoritmo de Shor

Un bit cuántico (qubit) es un sistema cuántico de dos estados posibles.
Un registro cuántico es un conjunto de un cierto número de qubits.
Consideramos dos registros cuánticos.
Tomamos el primer registro y lo situamos en superposición cuántica de todos los números enteros que contiene

Supongamos que el primer registro tiene dos qubits. Después de esta primera operación el registro estará en superposición de los cuatro números que puede contener

Realizamos a continuación una operación aritmética que utiliza el paralelismo cuántico calculando la función F(x)=a^x (mod N) para cada número x en la superposición.
Los valores de F(x) se colocan entonces en el segundo registro de modo que después de este calculo los dos registros aparecen enmadejados (entangled)

A continuación realizamos una medición del segundo registro. Tal medición nos proporciona un valor aleatorio de F(k) para algún k. El estado del primer registro después de la medición efectuada en el segundo, debido a la periodicidad de F(x), es una superposición coherente de todos los estados 
tales que x=k,k+r,k+2r,..., es decir para los x tales que F(x)=F(k). Como el valor k es seleccionado aleatoriamente en la medición resulta que el estado del primer registro es transformado mediante una operación unitaria
que lleva k a 0 (es decir  se convierte en  más un factor de fase) y modifica el período de r a un múltiplo de 1/r (transformada de Fourier cuántica).

Ahora se hace una medición en el primer registro que proporciona la mejor aproximación a un múltiplo de 1/r. Se calculan así r y los factores de N como se ha indicado antes.



La dificultad principal de la realización de un ordenador cuántico consiste en que requiere una evolución controlada y coherente durante un período de tiempo que permita realizar las operaciones que necesitamos hacer con los números de los registros cuánticos.

Muchos piensan que esto es un obstáculo insalvable, ya que la coherencia del sistema cuántico se pierde con la observación. Pero esta dificultad se está atacando mediante métodos diversos de los que se puede esperar que conduzcan al momento en que la construcción de un ordenador cuántico sea una realidad.



Bibliografía

Criptología

       D. Welsh, Codes and Cryptography (Clarendon Press, Oxford, 1988).
       B. Schneier, Applied cryptography: protocols, algorithms, and source code  in C.,(John Wiley & Sons, New York 1994).
       G. Brassard, Modern Cryptology: A Tutorial, (Springer, Berlin 1988).
       D.E. Denning, Cryptography and Data Security, (Addison-Wesley,1982).

Computación cuántica

        D. Deutsch, 1985, Proc. R. Soc. London, Ser. A: 400, 97.
       D. Deutsch, 1989, Proc. R. Soc. London, Ser. A: 425, 73.
       D. Deutsch and R. Jozsa, 1992, Proc. R. Soc. London, Ser A: 439, 553.
       R. Jozsa, 1991, Proc. R. Soc. London, Ser. A: 435, 563.
 

Las referencias principales:

       P.W. Shor, ``Algorithms for quantum computation: Discrete logarithms and factoring'', in Proceedings of the 35th Annual Symposium on the Foundations of Computer Science, edited by S. Goldwasser (IEEE Computer Society Press, Los Alamitos, CA), pages 124-134 (1994).
       P.W. Shor, ``Polynomial-time algorithms for prime factorization and discrete logarithms on a quantum computer'', SIAM J. Computing 26, pages 1484-1509 (1997).