Diffie-Hellman permite que dos partes generen un valor secreto que no se puede reconstruir al observar sus comunicaciones. El tamaño del valor secreto resultante del intercambio de claves ( g ab mod p ) es de hecho el mismo tamaño como principal, sin embargo, su entropía puede ser menor si se eligen a y b en un espacio más pequeño. Escoger a y b para obtener números aleatorios de 256 bits le brinda seguridad de 128 bits para el valor secreto resultante.
En principio, el valor secreto resultante tiene alguna estructura matemática, y no deberías usarlo como está. En su lugar, debe marcarlo y utilizar el resultado como su clave simétrica. Más precisamente, debe usar el secreto compartido como entrada para una función de derivación de claves . No es una función de derivación de clave basada en contraseña : el valor secreto tiene suficiente entropía y no necesita ser fortalecido, solo estirado.
RFC 2631 especifica una manera de derivar material clave del secreto compartido: SHA-1 (ZZ || tipo || ctr) donde ZZ es una codificación de bytes del secreto compartido, tipo indica qué tipo de material se está derivando, y ctr es una codificación de bytes de un contador. Obviamente, está bien usar otra función de hashing como SHA-256 o SHA-512 en lugar de SHA-1.
La forma exacta en que se deriva el material clave no es realmente importante, siempre y cuando las dos partes estén de acuerdo. Por ejemplo, si solo necesita 256 bits, entonces SHA-256 (ZZ) estaría bien. El punto de virar en un contador es cuando necesita más de lo que puede proporcionar una ejecución de la función hash. En el interés de proteger su protocolo en el futuro, sería recomendable seguir el RFC. Si solo necesita derivar una clave ahora, puede codificar la codificación ASN.1 correspondiente del tipo y el contador como un literal de cadena en su aplicación.
En realidad, resulta que usando el secreto compartido de DH directamente es " no está mal ". No obstante, debe exprimirlo a través de un KDF (al menos, trocearlo): es fácil, rápido, más seguro, más estándar y más seguro para el futuro.