Pular para o conteúdo
ecdsa.com

Hash de senhas

Armazenar uma senha como a saída de uma função deliberadamente lenta, com salt e, de preferência, com uso intensivo de memória (memory-hard), como Argon2id, scrypt, bcrypt ou PBKDF2, para que um banco de dados roubado resista a tentativas de adivinhação offline.
Também escrito comoArgon2idbcryptscryptPBKDF2password hash

Um hash rápido como o SHA-256 permite que atacantes testem bilhões de palpites por segundo em GPUs. Os hashes de senha acrescentam um salt aleatório e único por senha (o que neutraliza tabelas pré-calculadas) e um custo ajustável. O Password Storage Cheat Sheet da OWASP recomenda, nesta ordem: Argon2id (RFC 9106) com pelo menos 19 MiB de memória, 2 iterações e paralelismo 1; scrypt com N = 2¹⁷, r = 8, p = 1; bcrypt com fator de trabalho 10 ou mais (ele trunca a entrada em 72 bytes); e, onde o FIPS 140 for exigido, PBKDF2-HMAC-SHA256 com pelo menos 600.000 iterações.

Armazene o algoritmo e os parâmetros junto com o hash (o formato de string PHC $argon2id$v=19$m=19456,t=2,p=1$…, o $2b$10$… do bcrypt) para que os custos possam ser aumentados depois e os hashes antigos atualizados no próximo login. Um pepper opcional, um segredo guardado fora do banco de dados, acrescenta proteção caso apenas o banco de dados vaze.

O NIST SP 800-63B-4 exige armazenamento com salt e custo reforçado e, para senhas usadas como fator único de autenticação, um comprimento mínimo de 15 caracteres. As chaves de acesso eliminam por completo o segredo armazenado: o servidor guarda apenas uma chave pública.

Padrões e referências

Todos os termos