Pular para o conteúdo
ecdsa.com

HKDF

A função de derivação de chave da RFC 5869, baseada em HMAC e no modelo extrair e expandir, que transforma um segredo compartilhado, como a saída de um ECDH, em uma ou mais chaves uniformemente aleatórias vinculadas a uma string de contexto.
Também escrito comoHMAC-based Key Derivation FunctionHKDF-ExpandHKDF-ExtractRFC 5869

A extração (Extract) comprime o material de chave de entrada, com um salt, em uma chave pseudoaleatória PRK = HMAC(salt, IKM); a expansão (Expand) a estende em material de chave de saída OKM = T(1) ‖ T(2) ‖ …, com T(i) = HMAC(PRK, T(i−1) ‖ info ‖ i), até 255 vezes o tamanho do hash (8.160 bytes com SHA-256). A string info separa as chaves de finalidades diferentes, para que um segredo nunca gere a mesma chave duas vezes.

Todo o escalonamento de chaves (key schedule) do TLS 1.3 é HKDF com rótulos (HKDF-Expand-Label, RFC 9846 §7.1); HPKE, Signal, Noise, MLS e QUIC também o usam, e o NIST aprova a mesma construção em duas etapas no SP 800-56C Rev. 2.

O HKDF não é um hash de senha: ele é rápido de propósito, então passar a ele uma senha de baixa entropia não dá nenhuma proteção contra tentativas de adivinhação. Use Argon2id, scrypt ou PBKDF2 para senhas e HKDF para segredos de alta entropia.

Padrões e referências

Todos os termos