Algoritmos más eficientes para calcular exponenciaciones en
grupos multiplicativos.
Para comenzar este reporte, me gustaría repasar el concepto de
logaritmo discreto: Sea G un grupo abeliano finito (multiplicativo) y sea g un elemento de orden n de G. Dado un elemento a perteneciente al subgrupo generado por g, se define el logaritmo discreto de a en base g como el entero k, 0 ≤ k ≤ n - 1, tal que
g^k = a
Aunque el logaritmo discreto se ha definido en un grupo
multiplicativo, tambien es posible definir el logaritmo discreto en grupos aditivos como el conjunto de puntos de una curva eliptica. En este caso se habla de un logaritmo discreto eliptico.
La importancia del estudio del problema del logaritmo discreto
radica en la operacion inversa a la exponenciacion en un grupo. La exponenciacion modular es una operacion sencilla y se conocen métodos eficientes, pero el cálculo del logaritmo módulo un entero cualquiera no siempre puede realizarse de forma eficiente. Todo radica en la exponenciación. Este es el motivo por el que algunos criptosistemas y sistemas de autentificación de mensajes e intercambio de claves se basan su seguridad en el Problema del Logaritmo Discreto.
¿Cuáles son los algoritmos más eficientes para calcular
exponenciaciones?
1. Intercambio de claves de Diffie-Hellman (DH)
En 1976, Whitfield Diffie y Martin Hellman propusieron el primer
protocolo de intercambio de clave basado en la exponeicacion en cuerpo finitos.
2. Criptosistema de Massey-Omura
En este protocolo se utiliza la conmutatividad de ciertas funciones
para conseguir , en tres pasos , que dos personas intercambien un mensaje de forma segura sin compartir ninguna clave.
3. Criptosistema de ElGamal
Este criptosistema fue propuesto por Taher ElGamal en 1985. Esta
basado en la idea de diffie-Hellman y funciona de una forma parecida a este algoritmo discreto. Puede ser utilizado tanto para generar firmas digitales como para cifrar o descifrar. La seguridad del algoritmo se basa en la suposicion que la función utilizada es de un solo sentido debido a la dificultad de calcular un logaritmo discreto. El procedimiento de cifrado y descifrado esta basado en cálculos sobre un grupo cíclico cualquiera G lo que lleva a que la seguridad del mismo dependa de la dificultad de calcuar logaritmos discretos en G.
4. Alforitmo de firma de ElGamal.
Basado en la exponenciación en cuerpos finitos Fp con p primo.
5. Algoritmo de firma digital (DSA)
DSA es un estándar del Gobierno Federal de los Estados Un idos de
América para firmas digitales. Fue propuesto por el NIST (National Institute of Standards and Technology) en 1994 y el esquema de pasos a seguir para firmar un mensaje es similar al del algoritmo de firma ElGamal.
Con este algoritmo , si un usuario A quiere firmar un mensaje lo
primero que debe hacer es establecer la clave pública y la privada x.
6. Algoritmo de Blum-Micali
Es un generador de números pseudoaleatorios que basa su
seguridad en la dificultad de calcular logaritmos discretos. Las secuencias de números presudoaleatorios tienen aplicación en múltiples campos tales como la Criptografía, la simulación y la Estadística.
7. Criptosistema de Ciss-Cheikh-Sow.
Ciss, Cheikh y Sow proponen un criptosistema de clave pública
cuya seguridad se basa en los problemas de factorización y logaritmo discreto.
Estas son algunas de las aplicaciones del logaritmo discreto. Un
método eficaz para resolver el PLD pondría en jaque la seguridad de todos los sistemas basados en él que son utilizados hoy en día. Hay algunos algoritmos existentes para el cálculo del logaritmo discreto. Dichos algoritmos pueden clasificarse en tre tipos:
1. Algoritmos genéricos, esto es, algoritmos válidos en cualquier
grupo 2. Algoritmos para grupos cuyo cardinal tiene todos sus factores primos pequeños. 3. Algoritmos que utilizan propiedades particulares del grupo (en cuanto a su estructura)
Los algoritmos Genéricos:
• Fuerza Bruta. Es la manera más obvia de calcular el logaritmo discreto de un elemento a en base g es calcular las diferentes potencias de g, almacenarlas en una tabla y buscar el elemento k en dicha tabla. Este método no es eficaz cuando el orden del grupo es grande. • Algoritmo de Shanks: «Baby step-Giant step». Es un método para calcular el logaritmo de un elemento en un grupo. Es genérico, es decir, que funciona para cualquier grupo, siempre que conozcamos el orden del mismo (o buena cota para él) • Algoritmo ρ de Pollard. Consiste en construir una secuencia preudoaleatoria de elementos de G en la que existan dos términos iguales y, a partir de esos términos, calcular el logaritmo discreto. Se trata del algoritmo genérico más eficaz. • Algoritmo del Canguro de Pollard. También conocido como algoritmo λ busca el logaritmo discreto, k, en un itnervalo [c, d] ⊆ Ζ n. En caso de no conocer el intervalo al que pertenece el logaritmo discreto, se pueden establecer c = 0 y d= n-1, pero en tal caso es mas eficiente el algoritmo ρ. • Index - Calculus. Este método sólo puede utilizarse en ciertos grupos entre los que se encuentran los grupos multiplicativos de los cuerpos finitos.La pérdida de generalidad de este método se compensa con una mayor eficiencia que surge de sacar provecho de las propiedades particulares del grupo. La idea de este algoritmo consiste en explotar la representación de los elementos del grupo como producto de elementos de un subconjunto pequeño, la base de factores. Dago G de orden n, tomamos B ={p1,p2,...,pr} ⊆ G.
Index- Calculos comprende:
• Factorización de polinomios en cuerpos finitos. • Algoritmos Libre de Cuadrados • Factorización distinto grado. • Algoritmo de Berlekamp - Para factorizar polinomios libres de cuadrados. • Algoritmo de Cantor-Zassenhaus. Es un algoritmo para factorizar polinomios cuyos factores irreducibles son todos del mismo grado. Sin embargo, se puede utilizar para hallar la factorización canónica de un polinomio f(x) cualquiera.
¿Cuál es el tamaño de p en bits para el que se ha logrado calcular
un algoritmo discreto?
Hay diferentes campos numéricos para definir la operación del
logaritmo discreto. Los más utilizados son «enteros módulo a primo» y «Curvas elípticas sobre enteros módulo a primo».
El cálculo de un logaritmo discreto en ciertos campos numéricos se
hace exponencialmente más difícil a medida que el antilogartimo crece. El mayor módulo RSA factorizado públicamente (2009) a la fecha (2020) tenpía una longitud de 798 bits y requería un esfuerzo equivalente a 1500 años en un procesador AMD Opteron a 2.2 GHz de un sólo núcleo. Los autores de este logro afriman que factorizar un módulo RSA de 1024 bits requería un esfuerzo 1000 veces mayor.
El esfuerzo estimado para factorizar un módulo de 2048 bit RSA es