Criptografía - Criptografía de Clave Pública 2016 Diffie – Hellman es un grupo multiplicativo de los enteros módulo un número primo. También eligen una raíz primitiva 𝛼 de 𝐺. La selección se hace a través de un medio inseguro. Fue uno de los primeros de clave pública desarrollado por Whitfield Diffie y Martin Hellman en 1976. Se le conoce como el algoritmo de Intercambio Exponencial Diffie-Hellman, el cual basa su seguridad en la dificultad de calcular logaritmos discretos en un campo finito y se emplea para distribución de claves, pero no para cifrar y descifrar información. Paso 2. Alice de manera privada selecciona o genera un número aleatorio 𝑎, el cual debe ser un número primo. De igual forma Bob debe seleccionar o generar un número aleatorio 𝑏. El algoritmo permite que dos entidades se pongan de acuerdo en un número, a través de un canal público, y con la ventaja de que dicho número no pueda, de ninguna manera, ser conocido por cualquier atacante que esté vigilando la comunicación, lo cual es de suma importancia ya que dicha cantidad representa la clave simétrica que compartirán ambas entidades en el intercambio confidencial de información. Matemáticamente, se basa en las potencias de los números y en la función módulo discreto, de manera que el cálculo de potencias discretas es fácil, pero la obtención de su función inversa (el logaritmo discreto), no tiene una solución analítica para números grandes. Descripción El algoritmo basa su robustez en la dificultad para calcular logaritmos en grupos finitos. Utiliza una raíz primitiva 𝛼 que pertenece a un grupo 𝐺 finito en módulo 𝑛; es decir, todas las potencias de 𝛼 generan a los elementos del grupo desde 1 hasta 𝑛 − 1. Esto quiere decir, que al elevar 𝛼 a una potencia se puede calcular su inverso; es decir 𝛼 𝑖 mod 𝑛 = 𝑥 ⇒ (log 𝛼 𝑥) mod 𝑛 = 𝑖 Este problema es conocido como el logaritmo discreto en un grupo cíclico (finito) lo cual computacionalmente es muy costoso; requiere de una gran capacidad informática y mucho tiempo para poder resolverlo. Generación de Claves El proceso de la generación de claves se indica en los siguientes pasos: Paso 1. Los usuarios Alice y Bob seleccionan un grupo 𝐺 de orden 𝑛 tal que 𝐺 = ℤ∗𝑛 (𝑛 es un número primo) y ℤ𝑛∗ el conjunto de los enteros menores que 𝑛 (primos relativos); es decir, 𝐺 1 Ing. Aldo Jiménez Arteaga Paso 3. Alice calcula 𝛼 𝑎 mod 𝑛 ∈ 𝐺 y lo transmite a Bob; mientras tanto, Bob calcula 𝛼 𝑏 mod 𝑛 ∈ 𝐺 y lo transmite a Alice. Las transmisiones correspondientes se realizan de manera pública. Paso 4. Alice recibe 𝛼 𝑏 mod 𝑛 y calcula (𝛼 𝑏 )𝑎 mod 𝑛; por su parte B recibe 𝛼 𝑎 mod 𝑛 y calcula (𝛼 𝑎 )𝑏 mod 𝑛. Paso 5. Alice y Bob comparten una clave privada 𝑘𝑝 y están listos para intercambiar información confidencial mediante el algoritmo simétrico de su elección. En un inicio este algoritmo no fue concebido para cifrar información, sino para la distribución segura de claves simétricas. Evidentemente, las claves están expuestas a ataques como el hombre en medio, en el cual se puede sufrir una suplantación de identidades; el ataque se nulifica por medio de firmas digitales. 𝛼, 𝑛 ⇒ ℤ∗𝑛 Alice Bob Número secreto 𝑎 𝑥𝐴 = 𝛼 𝑎 mod 𝑛 𝑘 = (𝑥𝐵 )𝑎 mod 𝑛 Número secreto 𝑏 𝑥𝐵 = 𝛼 𝑏 mod 𝑛 𝑘 = (𝑥𝐴 )𝑏 mod 𝑛 Criptografía - Criptografía de Clave Pública Ejemplo Alice y Bob quieren comunicarse a partir de un algoritmo de clave privada. Para acordar la clave de cifrado utilizarán el intercambio de claves por Diffie-Hellman con parámetros públicos 𝑛 = 6899 y 𝛼 = 200. Alice selecciona su número secreto 𝑎 = 2588, en tanto que Bob hace lo mismo y genera su número 𝑏 = 6503. A continuación, cada quien genera su número público 𝐴 = 2002588 mod 6899 𝐴 = 6520 𝐵 = 2006503 mod 6899 𝐵 = 5767 y los hacen públicos. Cada quien de manera individual eleva el número público a su propio número secreto para obtener la clave de descifrado 𝑘 = 57672588 mod 6899 𝑘 = 2793 𝑘 = 65206503 mod 6899 𝑘 = 2793 Ahora que ambos poseen un secreto compartido, la clave puede usarse para cualquier algoritmo de clave privada como Rijndael, Twofish, RC6 o Serpent. 2 Ing. Aldo Jiménez Arteaga 2016