Segurança Digital
HKDF
Salt, input keying material e HMAC compõem a etapa Extract; uma PRK, um campo `info` e contadores compõem Expand. Essa estrutura é HKDF, definida pela RFC 5869. Comparada a PBKDF2, não foi feita para desacelerar senhas: espera material com entropia, como segredo ECDH ou chave de fábrica. O custo é pequeno e a entrega é separação de chaves por contexto. Em Matter, TLS e protocolos modernos, evita reutilizar a mesma chave para cifra, autenticação e sessões. A limitação é que não cria entropia ausente.
🛡 Níveis de Segurança
Recomendado
Extract-and-Expand com SHA-256
HKDF é uma KDF baseada em HMAC com duas etapas. Extract recebe salt e Input Keying Material, IKM, e produz uma Pseudorandom Key, PRK. Formalmente, PRK = HMAC-Hash(salt, IKM). Expand recebe PRK, `info` e comprimento L e gera blocos T(1), T(2)... com HMAC, concatenando até L. O campo info associa a chave ao contexto. HKDF-SHA-256 é comum. A saída máxima de Expand é 255 vezes o tamanho do hash, ou 8160 bytes para SHA-256. Normalmente derivam-se 16, 32 ou 64 bytes. O salt não precisa ser secreto; idealmente é aleatório ou independente. Se ausente, a RFC define uma sequência de zeros do tamanho do hash, mas usar salt contextual pode fortalecer extração e separar execuções. O IKM deve ter entropia: segredo ECDH, master key aleatória, resultado de um KEM ou chave provisionada. Não usar senha humana diretamente porque HKDF é rápido. Primeiro Argon2/PBKDF2. A PRK é chave intermediária e não deve ser usada diretamente como chave de aplicação nem exposta. Expand deriva subchaves com labels diferentes. `info='iot/v1/aead-key'`, `info='iot/v1/nonce-key'`, `info='iot/v1/exporter'`. A codificação do info precisa ser não ambígua. Usar estrutura com comprimento ou CBOR, não concatenação `ab|c` versus `a|bc`. Protocolos como TLS 1.3 definem HKDF-Expand-Label. Implementar a especificação, não inventar. Bibliotecas oferecem. O custo baixo permite por sessão. A chave derivada é efêmera. Apagar quando possível.
Arquitetura
Separação de chaves por função e dispositivo
Uma master key de 256 bits não deve ser usada diretamente para AES-GCM, HMAC, firmware e backup. HKDF deriva subchaves independentes por `info`. Mesmo que uma aplicação revele sua subchave, isso não deve permitir recuperar a master ou outras, sob as propriedades do HMAC. Em uma plataforma IoT, o fabricante pode provisionar segredo único por dispositivo. O backend usa HKDF com salt da versão e info contendo device ID e finalidade para derivar chaves de autenticação e cifra. É essencial que a master não seja global em todos os dispositivos ou que esteja protegida em HSM. Se o backend deriva a partir de uma master global e device ID público, comprometer a master compromete todos. Melhor chaves por dispositivo. O info não adiciona segredo. Ele separa domínio. O device ID precisa de encoding fixo. Uma atualização de protocolo usa `v2` no label, evitando colisão. A rotação muda salt ou master e key version. O pacote inclui key ID. Durante transição, receptor aceita duas. O material antigo é revogado. HKDF não gerencia isso; a arquitetura. Em um hub, uma chave selada no TPM pode gerar subchaves para banco, backups e comunicação. Se o TPM só libera após boot íntegro, aumenta. Não exportar PRK. A API do HSM pode derivar. O backup precisa considerar recuperação: se master fica apenas no TPM e o hardware morre, dados cifrados perdem. Uma recovery key precisa ser envolvida.
Sessão
HKDF após ECDH ou KEM
O segredo bruto de Diffie-Hellman não deve ser usado diretamente como chave AES. Sua distribuição e representação podem não ser uniformes e falta contexto. HKDF-Extract normaliza e mistura. Depois, Expand deriva chaves para cada direção, IVs e exportadores. TLS 1.3 usa um key schedule baseado em HKDF com múltiplos secrets e transcripts. Matter usa mecanismos criptográficos e derivação em seus protocolos de sessão e commissioning. A implementação deve seguir a especificação exata, porque labels, transcript hash, salt e ordem são parte da segurança. Não substituir HMAC-SHA-256 por SHA-512 sem compatibilidade. Em uma sessão entre hub e dispositivo, um ECDH X25519 produz 32 bytes. O protocolo inclui nonces e transcript. HKDF deriva `client_write_key`, `server_write_key`, nonces e confirmação. Cada direção tem chave distinta. Isso evita nonce/key reuse e reflexão. A autenticação do ECDH continua necessária por certificados, PAKE ou chaves. HKDF não impede man-in-the-middle. Ele só deriva. Um segredo ECDH com atacante ainda gera chave com atacante. A camada de identidade precisa. Para pós-quântico híbrido, combinar segredos de ECDH e KEM conforme especificação e usar HKDF. A concatenação deve ser definida. Não improvisar XOR. Protocolos padronizados.
Evitar
Uso direto sobre senha ou material previsível
HKDF é rápido: milhões de derivações por segundo podem ser possíveis. Se o IKM é `senha123`, um atacante testa rapidamente. Salt público não impede. Para senhas, usar Argon2id, scrypt ou PBKDF2 com custo. Depois, HKDF pode separar subchaves do resultado. Outro erro é usar um número de série público como IKM. A saída fica pública. Entropia não é criada. HKDF pode extrair de material com alguma entropia imperfeita, mas não faz milagre. Se IKM tem 20 bits, ataque de 1 milhão. A função também não é CSPRNG para seeds sem entropia. O sistema precisa de fonte aleatória. Outro risco é reutilizar `info` vazio para todas as finalidades. A mesma saída resulta com mesmo PRK e L. Labels obrigatórios. Não usar salt secreto como substituto de master; se IKM é fraco, a segurança depende do salt secreto, mudando modelo e gestão. Use chave. A saída deve ter comprimento conforme algoritmo: 16/32 bytes. Pedir 1024 bytes e dividir manualmente pode ser válido, mas é menos claro que labels separados. Um erro na divisão causa. Derivar explicitamente. O custo baixo não substitui rotação, armazenamento e autenticação.
🖥 Aplicações em Hardware
🔒
Matter e protocolos modernos
Derivação em commissioning e sessões
Stacks de Matter e TLS usam schedules definidos que incluem HKDF. O fabricante deve usar a biblioteca oficial/SDK e não substituir. Certificados, PAKE, ECDH, transcript e labels trabalham juntos. Um erro na KDF pode permitir chaves iguais ou falha. Certificação testa. O dispositivo precisa de entropy source e secure storage. Chaves de sessão ficam em RAM. O commissioning code não é usado diretamente como AES. Protocolos derivam. A atualização da stack deve acompanhar CSA. O produto não expõe opção de “HKDF”. É interno. A interoperabilidade com Apple, Google e outros depende de seguir bytes exatos.
🔒
Gateway
Subchaves de uma raiz protegida por TPM
O gateway gera uma root key de 32 bytes e a sela no TPM. Após boot autorizado, obtém uma chave ou usa operação. HKDF deriva chaves para banco, cookies, webhooks e mensagens com labels e versão. Idealmente, cada serviço recebe sua chave por IPC protegido e não a raiz. A rotação cria raiz v2 e recriptografa dados. Backups usam envelope com recovery key, não dependem só do TPM. O salt pode incluir instalação ID. O info inclui finalidade. A derivação é rápida e feita no boot. Chaves ficam em memória bloqueada. Crash dump é protegido. A raiz nunca aparece em log.
🔒
Dispositivo IoT
Chaves por dispositivo a partir de segredo provisionado
Um secure element armazena segredo único. Durante sessão, o dispositivo recebe nonce do servidor e usa HKDF para derivar chave temporária com device ID, nonce, protocolo e direção. O servidor possui o segredo em HSM. Isso evita transmitir. Contudo, um esquema simétrico de fabricante permite que o servidor falsifique. Para identidade pública, certificado é melhor. A derivação deve ser especificada. Nonce evita repetição. Se device secret vaza, apenas um. A fábrica precisa de provisionamento seguro. Não usar master global no firmware. O secure element pode realizar HMAC sem exportar e a aplicação usa HKDF. Se não suporta HKDF, o host recebe PRK? Avaliar. A interface precisa evitar.
🔒
Backup e cofre
Separação de chave de cifra e metadados
Uma senha forte é processada por Argon2id, produzindo 32 bytes. HKDF-Extract com salt do arquivo gera PRK; Expand com `backup-aead-key-v1` gera 32 bytes para XChaCha20-Poly1305. Outro label gera chave para autenticar índice externo, se necessário. Nonce é aleatório. O arquivo guarda parâmetros. O custo da senha vem de Argon2, não HKDF. Labels evitam reutilização. A restauração em outra plataforma implementa mesmos. Vetores. O formato é versionado. A chave de cifra não é usada como HMAC. A AEAD autentica. Se um index precisa ser pesquisável, projetar separadamente; não derivar e expor sem análise.