Diffie-Hellman
Explicación del intercambio de claves Diffie-Hellman y del concepto de grupos de Diffie-Hellman. Conviene tener un conocimiento básico de teoría de grupos y estructuras algebráicas.
Fuentes
Intercambio de claves de Diffie-Hellman
Partimos de la base de que Zp es el cuerpo de los enteros módulo p, con p primo.
El algoritmo DH clásico opera sobre el conjunto {1,2,...,p−1} y usa la operación de multiplicación mod p.
Dos personas, Alice y Bob, quieren acordar un número secreto mientras todos los demás les escuchan. Para ello:
Eligen dos números (que el resto sabe):
p: Un número primo muy grande que forma Zp.
g: Una raíz primitiva mod p.
Eligen claves privadas:
Alice elige un entero secreto a.
Bob elige un entero secreto b.
Intercambian públicamente:
Alice calcula A: A=ga (mod p) y lo comparte públicamente.
Bob calcula B: B=gb (mod p) y lo comparte públicamente.
Calculan el valor secreto:
Alice toma el valor B de Bob y lo eleva a su valor secreto a: S=Ba (mod p)
Bob toma el valor A de Alice y lo eleva a su valor secreto b: S=Ab (mod p)
Dado que la multiplicación es conmutativa:
Resultado de Alice: S=Ba=(gb)a=gab
Resultado de Bob: S=Ab=(ga)b=gab
Un oyente externo conoce p,g,A y B, sólo necesita conocer a o b para conseguir la clave S. Para números normales (en el campo, de, p.ej, R), un oyente podría calcular lo siguiente:
B=gb Si B y g son conocidos, y se busca b:
b=logg
Esto es sencillo de calcular si estamos en R, pero para conjuntos como Zp se hace mucho más difícil.
En números reales, si buscas g, pruebas con un valor, y da un resultado bajo, sabes que debes probar con uno mayor. En Zp no pasa nada parecido, por ejemplo:
31≡3 (mod 17)
32≡9 (mod 17)
33≡10 (mod 17)
34≡13 (mod 17)
35≡5 (mod 17)
...
No se sigue un patrón, no hay nada que indique si el resultado está más arriba (mayor a o b) o más abajo.
Grupos de Diffie-Hellman
Los grupos de Diffie-Hellman que se pueden ver, por ejemplo, en configuraciones y transformaciones IKE, son simplemente valores estandarizados de p y g.
Cada vez que se crea una SA no es práctico generar un nuevo número primo grande p, así que para ello hay varios precalculados, con diferentes niveles de complejidad.
P.ej:
Grupo 2: p tiene 1024 bit. Ahora mismo obsoleto y débil contra tablas pre-calculadas.
Grupo 14: Estándar. p tiene 2048 bit. Mucho más seguro.
Grupos 19 y superiores (ECDH): Usan algoritmos de curva elíptica (similar al DH, usando puntos de una curva en el espacio), son igual de seguros que el DH pero más eficientes. (Una clave de 256bit de ECDH es igual de segura que una de 2048 de DH).
Última actualización