Calcular Segredo Compartilhado
Esta é a etapa final e mais importante. Aqui, ambas as partes usarão sua própria chave privada e a chave pública da outra parte para calcular independentemente o segredo compartilhado. Se o protocolo for bem-sucedido, ambas chegarão exatamente ao mesmo valor secreto.
Primeiro, vamos calcular o segredo compartilhado da perspectiva da Parte A. A Parte A usa sua chave privada (a_private_key.pem) e a chave pública da Parte B (b_public_key.pem).
Execute o seguinte comando:
openssl pkeyutl -derive -inkey a_private_key.pem -peerkey b_public_key.pem -out a_shared_secret.bin
pkeyutl: Uma utilidade para realizar operações de chave pública.
-derive: Esta ação instrui a utilidade a derivar um segredo compartilhado.
-inkey a_private_key.pem: Especifica a chave privada da própria Parte A.
-peerkey b_public_key.pem: Especifica a chave pública da outra parte (o "par" ou "peer").
-out a_shared_secret.bin: Salva o segredo binário resultante em um arquivo.
Em seguida, calcule o segredo compartilhado da perspectiva da Parte B. A Parte B usa sua chave privada (b_private_key.pem) e a chave pública da Parte A (a_public_key.pem).
Execute o seguinte comando:
openssl pkeyutl -derive -inkey b_private_key.pem -peerkey a_public_key.pem -out b_shared_secret.bin
Agora, você tem dois arquivos, a_shared_secret.bin e b_shared_secret.bin. Para verificar o sucesso da troca de chaves, esses dois arquivos devem ser idênticos. Você pode usar o comando cmp (comparar) para verificar isso.
cmp a_shared_secret.bin b_shared_secret.bin
Se os arquivos forem idênticos, este comando não produzirá nenhuma saída e será encerrado silenciosamente. Esse silêncio significa sucesso!
Para uma confirmação mais visual, você também pode calcular o hash criptográfico de ambos os arquivos. Os hashes devem corresponder.
sha256sum *.bin
Você deverá ver uma saída onde ambos os arquivos têm exatamente o mesmo hash SHA256. Os valores de hash reais variarão entre as execuções, mas eles devem ser idênticos para ambos os arquivos:
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec a_shared_secret.bin
e3705a4ab5ae5d86f59dfe968f0177b49d5144e2d731dbd8d41b2eda318412ec b_shared_secret.bin
Parabéns, você realizou com sucesso uma troca de chaves Diffie-Hellman!