Como se comenta en las dos respuestas, Pollard Rho es el algoritmo más conocido para logaritmos discretos en un grupo cíclico genérico (en el que no se utiliza ninguna otra estructura especial, y no existe tal estructura especial, por ejemplo, susceptible de cálculo de índices).
El llamado paso de bebé paso de gigante también puede utilizarse con la misma complejidad temporal $O(\sqrt{n})$ donde $|G|=n,$ como Pollard Rho. Por desgracia, el bsgs también necesita memoria del mismo orden, mientras que Pollard Rho requiere una memoria insignificante.
Por lo tanto, si $p$ tiene tamaño $b$ bits, la complejidad temporal tanto para Pollard Rho como para bsgs es $O(2^{b/2}),$ y, por tanto, sigue siendo exponencial en tamaño de entrada $b.$ El bsgs se basa en una idea muy ingeniosa, véase más abajo:
Entrada: $x=g^k,$ donde $g$ es un generador de un grupo cíclico multiplicativo de tamaño $n$ , digamos $\mathbb{Z}_p^\ast$ para simplificar. El objetivo es recuperar $k,$ y $g$ es público al igual que $p$ y la operación de grupo. Sea $m=\lceil \sqrt{n}~\rceil.$
Etapa 1. Precálculo: Formar la lista $$L=\{(j,g^{jm}):j=0,1,\ldots,m-1\}$$ y almacenarlo ordenado en el segundo componente (o podría utilizar una tabla hash y una búsqueda para encontrar una entrada en el paso 2 a continuación). Complejidad: $O(\sqrt{n}\log n)$ tiempo (con la clasificación hash la complejidad del tiempo sería $O(\sqrt{n})$ pero generalmente se necesita memoria adicional para controlar las colisiones en ese caso) y $O(\sqrt{n})$ memoria.
Piense en los elementos de $G$ en un $\lceil m\rceil \times \lceil m \rceil$ (con algunas repeticiones al final): $$ \begin{array}{cccccc} 1 & g & g^2 & g^3 &\cdots & g^{m-1} \\ g^m & g^{m+1} & g^{m+2} & g^{m+3} & \cdots & g^{2m-1} \\ \vdots & & & & \vdots\\ g^{m(m-1)} & g^{m(m-1)+1} & \cdots & g^{n-1} & 1 & \cdots\\ \end{array} $$
Segundo paso. Fase en línea Tenga en cuenta que la lista $L$ tiene las entradas de la primera columna ordenados como enteros . Ahora, forme los elementos $x,xg,\ldots, xg^i,\ldots,$ secuencialmente y buscar en $L$ hasta que el elemento se encuentre en $L$ (claramente esto está garantizado, siempre y cuando continuemos hasta que $xg^{m-1}$ ya que esta operación abarca dos filas consecutivas de la matriz a partir de $x$ y terminando en $x g^m$ que está por debajo de $x$ y una posición a la izquierda).
Cuando encontramos un elemento en $L,$ en el $i_0$ iteración del paso 2, sabemos que $$ xg^{i_0-1}=g^{j_0m} $$ donde $i_0,j_0$ son conocidos. Resolviendo obtenemos $x=g^{j_0 m-i_0+1}$ así que $k=j_0 m-i_0+1\pmod n.$
Tenga en cuenta que si tiene un nuevo $x,$ puede repetir el paso 2.
Un último comentario que puede ser de interés. Hace unos 6 años se avanzó bastante en los algoritmos DLP para campos de orden compuesto con exponentes especiales (cito una pregunta de intercambio de pilas criptográficas ici más abajo):
Un trabajo reciente de Göloglu, Granger, McGuire y Zumbrägel: Solución de un DLP de 6120 bits en un ordenador de sobremesa parece "demostrar una DLP romper en el campo finito de $2^{6120}$ elementos, utilizando un único núcleo-mes". Se refieren a un artículo de 2012 de Antoine Joux: Cálculo de índices más rápido para el caso de primos medios. Aplicación a campos finitos de 1175 bits y 1425 bits. por allanar el camino que exploran. En 2013 Joux publicó Un nuevo algoritmo de cálculo de índices con complejidad $L(1/4+o(1))$ en característica muy pequeña y muy recientemente anunciado él "es capaz de calcular logaritmos discretos en $GF(2^{6168})=GF({(2^{257})}^{24})$ utilizando menos de 550 CPU.horas".
Esto pone en peligro algunos esquemas criptográficos basados en el emparejamiento que dependen de la dureza de DLP en campos de característica 2, pero no los esquemas basados en campos primos, ya sean DLP clásicos de campos de residuos enteros o DLP de curvas elípticas.
12 votos
¿Por qué es difícil factorizar números? - Porque no conocemos una forma rápida de hacerlo. Creo que aquí ocurre lo mismo. Simplemente no sabemos cómo hacerlo. Mira los puntos $g^x$ (escrito habitualmente de forma aditiva $nP$ ) y no verá ningún patrón que le ayude a construir la inversa de $f$ .
0 votos
Debo añadir que si $n=p$ o $n=p+1$ resulta que sabemos cómo hacerlo.
4 votos
Quizá valga la pena mencionar que no existe tal "teoría" en el sentido de que nadie sabe cómo demostrar que el problema del logaritmo discreto es difícil (por ejemplo, si difícil significa "no resoluble en tiempo polinómico", tal demostración implicaría que $P \neq NP$ ). Es algo que todo el mundo cree que es así. Por supuesto, eso no significa que no se pueda encontrar algún tipo de explicación heurística de por qué es difícil.
1 votos
El logaritmo discreto (así como la factorización de enteros) tienen algoritmos de tiempo polinómico para los ordenadores cuánticos (por supuesto, aún no tenemos ordenadores cuánticos que puedan ejecutar estos algoritmos). No disponemos de algoritmos de tiempo polinómico para que los ordenadores cuánticos resuelvan problemas que se sabe que son NP-completos. Esto sugiere fuertemente que el logaritmo discreto y la factorización de enteros no son NP-completos. Así que incluso si pudiéramos demostrar $P \ne NP$ no probaría que el logaritmo discreto es difícil.
14 votos
En cstheory , Peter Shor escribe "no hay buenas justificaciones para que la factorización sea difícil, aparte de que nadie ha sido capaz de descifrarla hasta ahora". cstheory.stackexchange.com/a/5098/6508 Creo que lo mismo ocurre con el registro discreto.