Pular para o conteúdo
ecdsa.com

Assinatura com pré-hash (HashEdDSA, HashML-DSA)

Assinar um digest da mensagem em vez da própria mensagem, seja de forma implícita (ECDSA, RSA), seja por meio de variantes explicitamente distintas e com separação de domínio, como Ed25519ph e HashML-DSA.
Também escrito comoprehashHashEdDSAEd25519phHashML-DSAHashSLH-DSAexternal mu

O ECDSA e o RSA sempre assinam um hash, então o hash dos dados pode ser calculado em streaming ou em outra máquina, e um HSM só recebe de 32 a 64 bytes. Já o PureEdDSA e o ML-DSA processam a mensagem inteira junto com valores que dependem da chave (no EdDSA, tanto o nonce quanto o desafio são hashes que incluem a mensagem; o ML-DSA vincula um hash da chave pública ao seu representante da mensagem μ), então a mensagem inteira precisa chegar ao signatário.

Para esse caso existem variantes com pré-hash: Ed25519ph e Ed448ph (RFC 8032; HashEdDSA na FIPS 186-5 §7.8), HashML-DSA (FIPS 204 §5.4) e HashSLH-DSA (FIPS 205 §10.2.2), as duas últimas vinculando o OID da função de hash ao que é assinado. São algoritmos distintos, com assinaturas distintas, então um verificador da variante pura as rejeita. A FIPS 204 também permite que todas as etapas do ML-DSA, exceto a geração da aleatoriedade da assinatura, sejam executadas fora do módulo de assinatura, o que as interfaces de HSM aproveitam para aceitar um μ pré-calculado.

O pré-hash faz a segurança depender da resistência a colisões do hash, enquanto o EdDSA puro tolera colisões de hash. Use as variantes puras, a menos que o streaming ou um signatário remoto exija o contrário, e nunca misture as duas variantes sob uma mesma chave sem separação de domínio (RFC 8032 §8.6; a FIPS 204 recomenda uma variante por chave).

Padrões e referências

Todos os termos