Calcular Secreto Compartido
Este es el paso final y más importante. Aquí, ambas partes utilizarán su propia clave privada y la clave pública de la otra parte para calcular de forma independiente el secreto compartido. Si el protocolo es exitoso, ambas llegarán exactamente al mismo valor secreto.
Primero, calculemos el secreto compartido desde la perspectiva de la Parte A. La Parte A utiliza su clave privada (a_private_key.pem) y la clave pública de la Parte B (b_public_key.pem).
Ejecute el siguiente comando:
openssl pkeyutl -derive -inkey a_private_key.pem -peerkey b_public_key.pem -out a_shared_secret.bin
pkeyutl: Una utilidad para realizar operaciones de clave pública.
-derive: Esta acción le indica a la utilidad que derive un secreto compartido.
-inkey a_private_key.pem: Especifica la clave privada propia de la Parte A.
-peerkey b_public_key.pem: Especifica la clave pública de la otra parte (el "par" o "peer").
-out a_shared_secret.bin: Guarda el secreto binario resultante en un archivo.
A continuación, calcule el secreto compartido desde la perspectiva de la Parte B. La Parte B utiliza su clave privada (b_private_key.pem) y la clave pública de la Parte A (a_public_key.pem).
Ejecute el siguiente comando:
openssl pkeyutl -derive -inkey b_private_key.pem -peerkey a_public_key.pem -out b_shared_secret.bin
Ahora, tiene dos archivos, a_shared_secret.bin y b_shared_secret.bin. Para verificar el éxito del intercambio de claves, estos dos archivos deben ser idénticos. Puede usar el comando cmp (comparar) para verificar esto.
cmp a_shared_secret.bin b_shared_secret.bin
Si los archivos son idénticos, este comando no producirá ninguna salida y terminará silenciosamente. ¡Este silencio significa éxito!
Para una confirmación más visual, también puede calcular el hash criptográfico de ambos archivos. Los hashes deben coincidir.
sha256sum *.bin
Debería ver una salida donde ambos archivos tienen el mismo hash SHA256 exacto. Los valores de hash reales variarán entre ejecuciones, pero deben ser idénticos para ambos archivos:
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec a_shared_secret.bin
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec b_shared_secret.bin
(Nota: Sus valores hash serán diferentes a los de este ejemplo, pero lo importante es que los hashes para a_shared_secret.bin y b_shared_secret.bin deben ser idénticos, probando que ambas partes derivaron el mismo secreto compartido).
¡Felicidades, ha realizado con éxito un intercambio de claves Diffie-Hellman!