# Key Derivation Function

> Key Derivation Function (KDF) é um algoritmo criptográfico que transforma um segredo, como uma senha ou uma chave mestra, em uma ou mais chaves criptográficas seguras. É usada para proteger senhas armazenadas, cifrar arquivos sensíveis, como certificados digitais, e gerar chaves diferentes para cada finalidade a partir de um único segredo.

**Também conhecido como:** Função de derivação de chave, Função de derivação de chaves, Derivação de chave, KDF, Key Derivation Function

**Glossário:** [Glossário de A a Z](https://conota.dev/glossario/) · **Letra:** K

## O que é uma Key Derivation Function, em palavras simples?

Uma Key Derivation Function, ou função de derivação de chave, é uma espécie de máquina que recebe um segredo e devolve uma chave pronta para ser usada em criptografia. Esse segredo pode ser uma senha digitada por uma pessoa ou uma chave mestra guardada por um sistema.

A ideia central é que senhas humanas costumam ser curtas e previsíveis, e não servem diretamente como chaves de cifragem. A KDF converte esse material em uma chave com o tamanho e o formato corretos, além de dificultar que alguém descubra o segredo original.

## Como funciona uma KDF?

A KDF combina o segredo com um valor aleatório chamado salt (sal). O salt garante que duas pessoas com a mesma senha obtenham chaves diferentes e impede o uso de tabelas pré-calculadas de senhas comuns.

Nas KDFs feitas para senhas, o cálculo é repetido muitas vezes ou exige bastante memória de propósito. Para um usuário legítimo, essa demora é quase imperceptível, mas para um atacante que tenta milhões de senhas por segundo ela torna o ataque muito mais caro.

No final, a função entrega uma chave do tamanho desejado. Com os mesmos dados de entrada (segredo, salt e parâmetros), o resultado é sempre igual, o que permite recriar a chave quando necessário sem precisar armazená-la.

## Para que serve uma KDF em sistemas de emissão fiscal?

O exemplo mais próximo do dia a dia fiscal é o arquivo PFX do certificado digital A1. A senha do arquivo não cifra a chave privada diretamente: uma KDF transforma essa senha na chave que protege o conteúdo do arquivo.

Plataformas que guardam certificados de vários CNPJs, como uma API fiscal, podem usar KDFs para derivar chaves de cifragem específicas para cada empresa a partir de uma chave mestra. Assim, mesmo que uma chave derivada seja exposta, as demais continuam protegidas.

KDFs também protegem as senhas de acesso a consoles e painéis de gestão: em vez de guardar a senha, o sistema guarda apenas o resultado da derivação, que não pode ser revertido facilmente.

## Qual a diferença entre KDF e hash comum?

Funções de hash comuns, como as usadas para gerar o hash de um documento fiscal, foram feitas para ser rápidas e verificar integridade. Essa velocidade é ótima para conferir arquivos, mas ruim para proteger senhas, pois facilita ataques de tentativa e erro.

Uma KDF pode usar hashes internamente, mas acrescenta salt, repetições e parâmetros ajustáveis de custo. Além disso, ela produz chaves no tamanho exato exigido por um algoritmo de cifragem, algo que um hash simples não foi pensado para fazer.

## Quais são as KDFs mais conhecidas?

Para senhas, as mais citadas são PBKDF2, bcrypt, scrypt e Argon2. As três últimas foram projetadas para ser mais resistentes a ataques com hardware especializado, exigindo mais memória ou processamento.

Para derivar várias chaves a partir de um segredo que já é forte e aleatório, como uma chave mestra, é comum usar a HKDF, baseada em HMAC. Ela é rápida porque não precisa compensar a fraqueza de uma senha humana.

## Quais cuidados tomar ao usar uma KDF?

Use sempre algoritmos padronizados e bibliotecas consolidadas, nunca uma fórmula criada internamente. Gere um salt aleatório e único para cada senha ou chave, e escolha parâmetros de custo compatíveis com as recomendações atuais, revisando-os com o tempo.

Quando a KDF parte de uma chave mestra, essa chave deve ficar protegida em um HSM ou em uma solução de gerenciamento de segredos, pois quem a obtiver consegue recriar todas as chaves derivadas.

## Exemplos de Key Derivation Function

- Ao importar um arquivo PFX, o sistema usa a senha informada pelo cliente em uma KDF para obter a chave que decifra a chave privada do certificado digital A1.
- Uma plataforma de emissão fiscal deriva, com HKDF, uma chave de cifragem diferente para cada CNPJ cadastrado a partir de uma chave mestra guardada em um HSM.
- Um ERP armazena as senhas dos usuários do seu módulo fiscal usando Argon2 com salt individual, em vez de guardar as senhas em texto puro.
- Uma equipe de segurança aumenta o número de iterações do PBKDF2 usado para proteger backups de certificados A1 depois de avaliar que o hardware dos atacantes ficou mais rápido.

## Perguntas frequentes

### KDF é a mesma coisa que criptografia?

Não exatamente. A KDF não cifra dados: ela produz a chave que será usada por um algoritmo de criptografia. É uma etapa anterior, que transforma um segredo em uma chave adequada.

### É possível descobrir a senha a partir da chave derivada?

Não diretamente, pois a KDF é uma função de mão única. O atacante só pode tentar adivinhar senhas e repetir o cálculo, e a lentidão proposital da KDF torna isso caro, especialmente com senhas fortes.

### O salt precisa ser secreto?

Não. O salt pode ser armazenado junto com o resultado, pois sua função é tornar cada derivação única e impedir tabelas pré-calculadas. O que precisa ser secreto é a senha ou a chave mestra.

### Preciso implementar uma KDF para integrar com uma API fiscal?

Normalmente não. A API e as bibliotecas de certificados já aplicam KDFs internamente. O integrador deve apenas usar senhas fortes, proteger credenciais e seguir boas práticas de gerenciamento de segredos.

## Termos relacionados

- [Geração de chave criptográfica](https://conota.dev/glossario/geracao-de-chave-criptografica.md)
- [Gerenciamento de segredos](https://conota.dev/glossario/gerenciamento-de-segredos.md)
- [Arquivo PFX](https://conota.dev/glossario/arquivo-pfx.md)
- [Certificado digital A1](https://conota.dev/glossario/certificado-digital-a1.md)
- [HSM](https://conota.dev/glossario/hsm.md)
- [HMAC em webhooks](https://conota.dev/glossario/hmac-em-webhooks.md)

---

Fonte: [Key Derivation Function](https://conota.dev/glossario/key-derivation-function/) · Atualizado em 2026-10-22
