Glossário

O que é PBKDF2?

PBKDF2 (Password-Based Key Derivation Function 2) é um algoritmo de derivação de chave definido no RFC 8018 que aplica uma função pseudoaleatória — normalmente HMAC-SHA-256 — de forma iterativa a uma senha e a um salt para produzir uma chave derivada que é computacionalmente cara de quebrar por força bruta.

Também conhecido como: Password-Based Key Derivation Function 2, PBKDF, RFC 8018

O PBKDF2 funciona aplicando repetidamente um código de autenticação de mensagem baseado em hash (HMAC) à combinação de uma senha e um valor de salt aleatório. O número de iterações controla quantas vezes essa operação é realizada: mais iterações significam mais tempo de CPU para cada tentativa de derivação de chave, o que aumenta diretamente o custo para um atacante que tente adivinhar a senha.

O salt é um valor aleatório único para cada operação de derivação de chave. Ele evita os ataques de busca pré-computada (tabelas arco-íris) ao garantir que a mesma senha produza chaves derivadas diferentes quando salts distintos são usados. O salt não precisa ser secreto: normalmente é armazenado junto à chave derivada ou ao texto cifrado.

O PBKDF2 foi padronizado no ano 2000 e continua amplamente suportado, especialmente nos navegadores por meio da Web Crypto API. Embora KDFs mais recentes como o Argon2 ofereçam maior resistência contra ataques com GPU e ASIC por exigirem grandes quantidades de memória, o PBKDF2 continua sendo uma opção sólida para aplicações baseadas em navegador, em que a compatibilidade com a Web Crypto API é essencial e o número de iterações pode ser definido alto o suficiente para fornecer uma segurança adequada.

Como o Vaulted usa PBKDF2

A Vaulted usa PBKDF2 por meio da Web Crypto API quando uma frase-senha é adicionada a um segredo. A implementação usa 100.000 iterações com HMAC-SHA-256 e um salt aleatório de 16 bytes. A chave derivada de 256 bits é usada como chave de encapsulamento AES-KW para criptografar a chave AES-256-GCM principal. O salt é incluído no fragmento da URL junto à chave encapsulada para que o destinatário possa derivar novamente a mesma chave de encapsulamento a partir da frase-senha.