Pular para o conteúdo
ecdsa.com

ECDH (Diffie–Hellman de curva elíptica)

Acordo de chaves em que cada parte combina a própria chave privada de curva elíptica com a chave pública da outra para calcular o mesmo segredo compartilhado, a coordenada x de d_A·d_B·G.
Também escrito comoElliptic Curve Diffie-HellmanECDH key agreementECC CDH

Cada lado tem um escalar privado d e um ponto público Q = d·G; os dois calculam Z, a coordenada x de d_A·Q_B = d_B·Q_A. O valor Z não é uma chave: ele passa por uma função de derivação de chave, como o HKDF (TLS 1.3), o KDF de uma etapa da SP 800-56C ou o Concat KDF (JOSE ECDH-ES). A NIST SP 800-56A Rev. 3 especifica a primitiva e as variantes do esquema (efêmero-efêmero, efêmero-estático etc.).

O receptor deve validar o ponto da outra parte: que ele está na curva, que não é o ponto no infinito e que pertence ao subgrupo correto (SP 800-56A §5.6.2.3). Pular essa etapa abre caminho para ataques de curva inválida, que extraem uma chave privada estática em algumas centenas de consultas e atingiram o ECDH-ES de várias bibliotecas JOSE em 2017. O design do X25519 reduz a verificação a rejeitar um resultado só de zeros.

As chaves efêmeras (ECDHE) garantem forward secrecy e são as únicas que o TLS 1.3 usa; o ECDH com destinatário estático aparece no ECIES, no ECDH-ES do JWE e no HPKE. Os grupos em uso são secp256r1, secp384r1, x25519 e x448. O ECDH e o ECDSA compartilham curvas e formatos de chave, mas a SP 800-57 Parte 1 recomenda usar cada chave para um único propósito. O NIST IR 8547 (rascunho) propõe proibir o ECDH depois de 2035; híbridos como o X25519MLKEM768 são o caminho de migração.

Padrões e referências

Todos os termos