¿Acortando el tamaño de la clave Diffie Hellman a través de pbkdf?

2

Tengo el siguiente requisito para el software en el que estoy trabajando:

Utilice un fuerte intercambio de claves asimétricas con un tamaño de clave pública < 16 bytes.

Sé que es bastante difícil para esta cantidad de bytes, pero se me ocurrió la siguiente solución y quería algunos comentarios:

Utilice el algoritmo de intercambio de claves Diffie Hellman con el parámetro P (módulo principal) < 2 ^ 128, y luego use algún algoritmo de derivación de clave como pbkdf2 en el secreto compartido generado para generar una clave simétrica mucho más fuerte, y use esta clave para cifrar cualquier información pasada.

Quiero saber si esto mejorará la seguridad de dicho protocolo en comparación con el simple Diffie Hellman en 2 ^ 128.

    
pregunta Gregory 28.08.2011 - 22:34
fuente

2 respuestas

4

Su esquema propuesto es altamente inseguro. ¡No lo uses!

Es trivial resolver el problema del registro discreto en un módulo de 128 bits. En consecuencia, es trivial romper Diffie-Hellman si está utilizando un módulo principal de 128 bits. pbkdf2 no te salvará de ese ataque.

En cambio, esto es lo que debes hacer. Utilice la criptografía de curva elíptica de 127 bits (ECC) (es decir, trabajando en un grupo de orden alrededor de 2 ^ 127). Luego, la clave pública se puede representar en 127 + 1 = 128 bits, si utiliza compresión de puntos o métodos similares. Ahora, puede realizar un intercambio de claves con este grupo de ECC, utilizando cualquier sistema de cifrado de ECC bien aceptado (por ejemplo, ECMQV). Asegúrese de utilizar el intercambio de claves autenticado, de modo que cada parte autentique a la otra. Tenga en cuenta que esto solo proporcionará una seguridad de aproximadamente 63 bits, por lo que no proporciona una seguridad sólida, pero puede ser suficiente para muchos propósitos.

Tenga en cuenta que la criptografía sola no suele ser suficiente para resolver todas las necesidades de seguridad de los datos. Para brindar seguridad, será necesario examinar las amenazas que probablemente enfrentará el sistema y diseñar una solución completa. Crypto no es un polvo mágico de duendes que puede resolver por sí solo todos sus problemas de seguridad; por lo general, debe complementarse con un diseño de software seguro, prácticas de desarrollo seguras y otros procesos de seguridad.

    
respondido por el D.W. 29.08.2011 - 01:09
fuente
4

No creo que esta sea una buena idea.

El problema en el intercambio de claves Diffie-Hellman no es el tamaño de la clave generada (esto puede ser tan grande como se requiera), sino la necesidad de autenticar un lado para evitar ataques de intermediario.

Y esta es la razón para tener un componente de clave pública: sin esto, DH podría incluso trabajar de forma anónima (y funciona, si solo tienes que atacar a los atacantes pasivos).

Por lo tanto, mi idea sería utilizar Diffie-Hellman estándar (módulo grande) y autenticar el resultado con una firma de clave pública.

Pero entonces el problema con las pequeñas claves públicas asimétricas es que no es tan difícil derivar de ellas la clave privada correspondiente (en el caso de RSA, factorización del módulo, en el caso de DSA o Diffie-Hellman: resolver un logaritmo discreto ).

Esto debe hacerse solo una vez (para cada clave), y luego el atacante puede jugar al hombre en el medio para cada sesión siguiente autenticada con esta clave.

(Se eliminó el último párrafo sobre ECC, ya que no fue realmente pensado, y ahora estoy cansado de hacerlo bien).

    
respondido por el Paŭlo Ebermann 28.08.2011 - 23:00
fuente

Lea otras preguntas en las etiquetas