Derivação de Chave HKDF
Derivação de Chave Extract-and-Expand baseada em HMAC RFC 5869
Documentação HKDF
HKDF (Função de Derivação de Chave Extract-and-Expand baseada em HMAC) é definida na RFC 5869. Ela fornece um método robusto para derivar chaves criptográficas a partir de material de chave de entrada usando um processo de duas etapas: Extração e Expansão.
HKDF é amplamente adotado em protocolos de segurança modernos, incluindo TLS 1.3, Signal Protocol, Noise Protocol Framework e SSH. Sua clara separação das fases de extração e expansão o torna particularmente adequado para derivação de hierarquias de chaves.
Fase de Extração: HKDF-Extract(salt, IKM) → PRK
A fase de extração concentra a entropia potencialmente dispersa do Material de Chave de Entrada (IKM) em uma Chave Pseudoaleatória (PRK) de comprimento fixo:
- Recebe salt (opcional, padrão HashLen zeros) e IKM como entradas
- Calcula PRK = HMAC-Hash(salt, IKM)
- O comprimento do PRK é igual ao comprimento de saída do hash (32 bytes para SHA-256)
- O salt atua como chave para HMAC, fortalecendo a extração
Fase de Expansão: HKDF-Expand(PRK, info, L) → OKM
A fase de expansão estica o PRK em Material de Chave de Saída (OKM) do comprimento desejado:
- Recebe PRK, info (contexto/rótulo) e comprimento de saída desejado L
- Calcula iterativamente T(i) = HMAC-Hash(PRK, T(i-1) | info | contador)
- Concatena resultados: OKM = T(1) | T(2) | ... | T(N)
- Comprimento máximo de saída é 255 × HashLen bytes
Casos de Uso Comuns
- Programação de chaves TLS 1.3: derivação de segredos de tráfego, chaves de handshake e chaves de aplicação
- Signal Protocol: derivação de chaves de cadeia e chaves de mensagem a partir de segredos compartilhados
- Troca de chaves SSH: derivação de chaves de criptografia e integridade pós-ECDH
- Hierarquia de chaves: derivação de múltiplas chaves de propósito específico a partir de um segredo mestre
HKDF vs PBKDF2
| Característica | HKDF | PBKDF2 |
|---|---|---|
| Padrão | RFC 5869 | RFC 8018 |
| Tipo de Entrada | Segredos compartilhados, saídas DH | Senhas de usuário |
| Iterações | Passagem única | Muitas (10K-1M) |
| Velocidade | Rápido | Intencionalmente lento |
| Parâmetro Info | Sim (vinculação de contexto) | Não |
| Caso de Uso Principal | Entrada de alta entropia | Senhas de baixa entropia |
Considerações de Segurança
- HKDF assume que o IKM já contém entropia suficiente; não use com senhas fracas
- O parâmetro info deve identificar exclusivamente o uso pretendido da chave (separação de contexto)
- O salt é opcional, mas recomendado ao extrair múltiplas chaves do mesmo IKM
- O PRK nunca deve ser usado diretamente; sempre use a fase de expansão para derivar as chaves finais
Referências Técnicas
Ferramentas Relacionadas
Derivação de Chaves PBKDF2
Derive chaves de criptografia seguras de senhas usando PBKDF2 com SHA-256/384/512, compatível com OWASP
Gerador HMAC
Gere códigos de autenticação HMAC com algoritmos MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, SHA3 e RIPEMD-160
Criptografia/Descriptografia AES
Criptografe e descriptografe texto com segurança usando o algoritmo AES
Gerador de Hash SHA
Gerador de hash SHA online suportando algoritmos SHA-1, SHA-256, SHA-384, SHA-512