-
Necesitamos un procedimiento numérico que sea sencillo en un sentido
-
y difícil en el otro.
-
Esto nos lleva a la aritmética modular, también conocida como aritmética de reloj.
-
Por ejemplo, para encontrar 46 mod 12, podemos coger una cuerda de longitud 46 unidades
-
enrollarla alrededor de un reloj de 12 unidades denominado modulador,
-
y donde la cuerda acabe está la solución.
-
Así que decimos que 46 mod 12 es congruente con 10.
-
Eso es fácil. Ahora, para hacerlo funcionar, usamos un modulador primo, por ejemplo 17.
-
Entonces encontramos una raíz primitiva de 17, en este caso 3.
-
Que tiene esta importante propiedad de que cuando se eleva a distintos exponentes
-
la solución se distribuye uniformemente alrededor del reloj.
-
3 es conocido como el generador. Si elevamos 3 a cualquier exponente x
-
la solución tiene las mismas probabilidades de ser un entero entre 0 y 17.
-
Ahora, el procedimiento inverso es difícil.
-
Esto es, partiendo de 12, encuentra el exponente al que 3 debe elevarse.
-
Este problema es conocido como el problema del logaritmo discreto.
-
Y ahora tenemos nuestra función unidireccional.
-
Fácil de realizar, pero difícil de invertir.
-
Dado 12, tendríamos que recurrir al método de ensayo y error para encontrar exponentes adecuados.
-
¿Cómo de difícil es esto?
-
Bueno, con números pequeños es fácil, pero si usamos un modulador con cientos de dígitos
-
se vuelve imposible de resolver en la práctica.
-
Incluso si tuvieras acceso a toda la potencia computacional de la toerra, te podría tomar miles de años
-
recorrer todas las posibilidades.
-
Por ello, la fortaleza de una función unidireccional parte del tiempo necesario para revertirla.