Con el desarrollo de la computación cuántica, se han
generado nuevos retos para la criptografía donde varias
de las primitivas criptográficas clásicas van a
ser menos seguras por lo que es necesario desarrollar
nuevas primitivas criptográficas con este nuevo tipo
de computación en mente. Para lograr esto, debemos
diferenciar la complejidad de los problemas computacionales
por lo que exploraremos los problemas
utilizados en criptografía clásica y en criptografía
post-cuántica, desde el punto de vista de complejidad
computacional.
Complejidad de algoritmos de criptografía clásica y post-cuántica.
1. mayo 2022, No 36
CyTe - Infosec Technology Newsletter
Con el desarrollo de la computación cuántica, se han
generado nuevos retos para la criptografía donde va-
rias de las primitivas criptográficas clásicas van a
ser menos seguras por lo que es necesario desarrollar
nuevas primitivas criptográficas con este nuevo tipo
de computación en mente. Para lograr esto, debemos
diferenciar la complejidad de los problemas compu-
tacionales por lo que exploraremos los problemas
utilizados en criptografía clásica y en criptografía
post-cuántica, desde el punto de vista de complejidad
computacional.
Complejidad de problemas de criptografía clá-
sica y post-cuántica
por José Darío Flórez
Conceptos básicos de complejidad computacional
Empezaremos repasando algunos de los conceptos básicos que
necesitaremos para clasificar los distintos tipos de problemas
y su complejidad computacional. A lo largo de este artículo
solo nos referiremos a la complejidad temporal (tiempo para
resolver un problema) y no a complejidad espacial (espacio
utilizado para resolver un problema).
Notación O: Decimos que la complejidad de un problema
A está en O(f(n)) si el número de operaciones necesarias
para resolver el problema A (que depende de una entrada n)
es g(n) y cumple la propiedad de que existen c > 0, n0 > 0
tal que para todo n ≥ n0, g(n)
f(n) ≤ 0. Como podemos ver esta
definición es similar a la del límite matemático; lo que nos
quiere decir esta definición es que a partir de un n0 lo suficien-
temente grande, la fracción g(n)
f(n) no crece más que la constante
c o dicho de otra manera que la función f(n) crece igual o
más rápido que la función g(n) para un n lo suficientemente
grande.
Modelos de máquinas de Turing: Para evitar las definicio-
nes completas y todos los detalles matemáticos de la definición
de una máquina de Turing vamos a definir intuitivamente 3 ti-
pos de máquinas de Turing que utilizaremos en el artículo. Las
definiciones formales de estas máquinas las puede encontrar
en [5].
Máquina clásica de Turing: Para efectos prácticos consi-
deraremos la máquina básica de Turing como los compu-
tadores clásicos que utilizamos día a día, con operaciones
de escritura y de guardar valores en memoria.
Máquina de Turing no determinista: Una máquina de
Turing no determinista es una máquina de Turing clásica
con la diferencia de que mientras la máquina de Turing
clásica tiene que realizar una acción detrás de otra, la
máquina de Turing no determinista puede realizar varias
acciones a la vez y por cada una de esas acciones con-
tinuar realizando acciones hasta que en alguna de esas
ramas llegue a la solución esperada; la diferencia entre
ambas máquinas de Turing se puede ver en la siguiente
imagen:
CyTe - Infosec Technology Newsletter
m cyte.co T +57(1)745-0272 B Calle 24 No 7-43 Of 704. Edificio Siete 24. B info@cyte.co linkedin.com/in/josedarioflorez/ Pág 1
2. Figura 1: Máquina de Turing determinista vs no determinista
Máquina de Turing cuántica: Esta máquina de Turing
es el equivalente a un computador cuántico, donde la
máquina puede realizar operaciones de mecánica cuán-
tica en lugar de operaciones clásicas. Las bases de cómo
funciona un computador cuántico se pueden encontrar
en el video [2].
Clases de complejidad: Ahora que definimos las máquinas
de Turing, vamos a dar una definición de algunas clases de
complejidad con el objetivo de clasificar varios problemas de
criptografía.
Clase de complejidad P: estos son los problemas que se
pueden resolver en un orden de complejidad polinomial
en una máquina de Turing determinista, es decir los
problemas que se pueden resolver en O(p(n)), donde
p(n) es un polinomio.
Clase de complejidad NP: estos son los problemas que se
pueden resolver en un orden de complejidad polinomial
en una máquina de Turing no determinista. Equivalen-
temente, son los problemas tales que verificar que una
solución dada sea la solución del problema en una má-
quina de Turing determinista se puede realizar en orden
polinomial (es decir O(p(n))). Evidentemente, si un pro-
blema se puede resolver en tiempo polinomial, entonces
su solución se puede verificar en tiempo polinomial por
lo que P ⊆ NP
Clase de complejidad NP completo: Un problema X está
en la clase de complejidad de NP completo si:
• Está en NP.
• Cualquier otro problema en NP se puede reducir a
X en tiempo polinomial en una máquina de Turing
clásica; es decir, se puede escribir un algoritmo de
orden polinomial para resolver cualquier problema
de NP utilizando como subrutina el problema X.
Para este artículo y para mucho de lo que se realiza en cripto-
grafía vamos a asumir que P ̸= NP, ya que si fueran iguales
muchos de los problemas difíciles de criptografía se podrían
resolver fácilmente en tiempo polinomial. En la imagen 2 po-
demos ver un esquema de las clases de complejidad descritas
anteriormente.
Figura 2: Clases de complejidad
Para el resto del artículo tendremos en mente el caso
P ̸= NP.
Problemas de criptografía clásica
Uno de los problemas clásicos utilizados en criptografía
es el problema de factorización de números. Este problema
es la base del algoritmo de llave pública RSA; el problema
utilizado en RSA consiste que dado dos primos p, q es fácil
calcular r = p ∗ q pero dado r es muy difícil determinar p y q.
Llamemos a este problema PF (Prime factorization)
Al revisar la clase de complejidad encontramos varias cosas.
Lo primero es que aún no se sabe si el problema PF está en la
clase P, es decir no se ha encontrado ningún algoritmo en una
máquina de Turing clásica para factorizar primos; pero tampo-
co se ha podido probar que este problema sea NP-completo.
El segundo problema que revisaremos de criptografía clási-
ca en este artículo será el problema del logaritmo discreto
que es el que se utiliza en el algoritmo de curva elíptica. Este
problema consiste en que dado b, k ∈ Z es sencillo calcular
bk
≡ a(modq) con q primo, pero dado a y b es muy difícil
encontrar el k tal que bk
≡ a(modq). Llamemos al problema
DL. Al igual que el problema de factorización de primos, no
se sabe si el problema DL está en P, pero tampoco si es NP
completo; de este manera podríamos ver con nuestro conoci-
miento actual los problemas se encontrarían en esta parte de
las clases de complejidad:
CyTe - Infosec Technology Newsletter
m cyte.co T +57(1)745-0272 B Calle 24 No 7-43 Of 704. Edificio Siete 24. B info@cyte.co linkedin.com/in/josedarioflorez/ Pág 2
3. Figura 3: Problemas PF y DL
Viéndolo de esta manera, no tendría nada malo utilizar
los problemas PF y DL en los algoritmos de cifrado, ya que
no se sabe si están en P, por lo tanto, no se pueden resolver
de manera sencilla (en tiempo polinomial). Sin embargo, con
el auge de la computación cuántica debemos hacer nuevas
consideraciones y agregar nuevas clases a nuestra gráfica de
complejidad.
Problemas en computación cuántica
Ahora, teniendo en cuenta las máquinas de Turing cuánti-
cas mencionadas antes, añadiremos una nueva clase de com-
plejidad.
Clase de complejidad BQP: la definición matemática se pue-
de encontrar en [1]. En términos intuitivos, en esta clase se
encuentran los problemas que se pueden resolver en un compu-
tador cuántico en tiempo polinomial (es decir O(p(n))), con
una alta probabilidad. Se sabe que todo problema en P también
está en BQP, ya que los computadores cuánticos pueden utili-
zar los algoritmos de las máquinas de Turing clásicas; por otro
lado, aunque no se ha probado, muchos matemáticos creen que
los problemas NP completos no se pueden resolver en tiempo
polinomial utilizando computadores cuánticos, si asumimos
que esto es cierto el esquema de complejidad con esta nueva
clase se puede ver en 4:
Figura 4: Nuevo esquema de complejidad
Como podemos ver en el esquema 4 los problemas PF y DL
utilizados en criptografía clásica están en la clase de compleji-
dad BQP, esto es ya que se han encontrado algoritmos (como
el algoritmo de Shor para PF) que nos permite resolver estos
problemas en tiempo polinomial utilizando un computador
cuántico.
Teniendo esto en mente, resulta imperativo encontrar nuevos
algoritmos basados en problemas complicados que no se pue-
dan resolver en computadores cuánticos. Los algoritmos de
criptografía post-cuántica se basan en problemas que bien son
NP completos, o bien son problemas que reducen en tiempo
polinomial con un computador cuántico problemas que son
NP completos, por lo que son problemas que no se pueden
resolver con facilidad ni siquiera en un computador cuántico.
Como ejemplos de esto vemos el algoritmo de llave pública
Learning With Errors explicado en [3], este algoritmo se basa
en los problemas de lattices del vector más corto (Shortest
vector problem SVP) y del vector más cercano (Closest vector
problem CVP); el problema CVP es un problema NP completo
y el problema SVP reduce el problema CVP en tiempo polino-
mial con un computador cuántico por lo que son problemas
difíciles de resolver incluso utilizando computadores cuánticos
lo que asegura que estos esquemas sigan siendo seguros.
Otro ejemplo es el criptosistema de McEliece que fue inventa-
do en 1978 por Robert McEliece y que se basa en el problema
de decodificación general (General decoding problem GDP:
[4]) y que también es un problema NP completo lo que asegura
la seguridad del sistema.
Vemos entonces que al dibujar en nuestro esquema los proble-
mas utilizados en criptografía clásica y los problemas utilizados
en criptografía post-cuántica hay una clara separación en las
clases de complejidad lo que es indicativo de cuál algoritmo es
o no seguro a ataques de computadores cuánticos.
CyTe - Infosec Technology Newsletter
m cyte.co T +57(1)745-0272 B Calle 24 No 7-43 Of 704. Edificio Siete 24. B info@cyte.co linkedin.com/in/josedarioflorez/ Pág 3
4. Figura 5: Problemas de criptografía post-cuántica
Conclusión
Queda entonces claro, que los algoritmos de criptografía
clásica no son seguros ante ataques realizados por computado-
res cuánticos por lo que es imperativo empezar a prepararnos
y a utilizar nuevos algoritmos que no sean vulnerables a este
tipo de ataques.
Fuentes
[1] Quantum complexity theory
[2] Computación cuántica
[3] Cryptografia post-cuántica
[4] McEliece cryptosystem
[5]Turing machine
Consúltenos en B info@cyte.co acerca de las preguntas que pueda tener acerca de los planteamientos de este artículo y de
los productos de criptografía tradicional y criptografía post-cuántica que hemos desarrollado. Para más artículos similares
síganos en nuestro blog en https://www.cyte.co/blog
La imagen inicial usada en esta nota fue tomada de tomada de https://en.wikipedia.org/wiki/Quantum_complexity_theory#:
~:text=Quantum%20complexity%20theory%20is%20the,model%20based%20on%20quantum%20mechanics.
CyTe - Infosec Technology Newsletter
m cyte.co T +57(1)745-0272 B Calle 24 No 7-43 Of 704. Edificio Siete 24. B info@cyte.co linkedin.com/in/josedarioflorez/ Pág 4