Glossário

Key Derivation Function

Atualizado em · 4 min de leitura

Definição

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: KDF, Key Derivation Function, Função de derivação de chave, Função de derivação de chaves, Derivação de chave

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.

Atualizado em · Como produzimos este glossário