Criar o hash de uma conta de administrador de teste
Gere um valor pbkdf2-sha256$… para inserir um utilizador diretamente numa base de dados de desenvolvimento ou num ficheiro de seed, sem escrever qualquer script.
Calcule um hash PBKDF2 com sal aleatório, SHA-256 ou SHA-512 e o número de iterações recomendado pela OWASP, no formato pbkdf2-sha256$…, e verifique uma palavra-passe face a ele. Processamento local.
A OWASP recomenda 600 000 iterações para SHA-256 e 210 000 para SHA-512: quanto mais, mais custa cada tentativa de um atacante.
Contém algoritmo, iterações, sal e hash: tudo o que é preciso para verificar mais tarde.
Esta ferramenta deriva um hash PBKDF2 de uma palavra-passe com um sal aleatório e o número de iterações recomendado, e verifica uma palavra-passe face a um valor já codificado. Destina-se a programadores que implementam ou depuram o armazenamento de palavras-passe, preparam uma conta de teste ou querem compreender o efeito do sal e das iterações.
O PBKDF2, definido na RFC 8018 (PKCS #5 v2.1), aplica uma função HMAC à palavra-passe e ao sal e volta a passar o resultado pelo HMAC centenas de milhares de vezes: assim, cada tentativa de um atacante custa tanto como um início de sessão legítimo. A ferramenta propõe HMAC-SHA-256 com 600 000 iterações por omissão e HMAC-SHA-512 com 210 000, os mínimos da OWASP Password Storage Cheat Sheet. O sal aleatório (de 8 a 128 bytes, 16 por omissão) torna cada hash único mesmo que dois utilizadores tenham a mesma palavra-passe, o que neutraliza as tabelas arco-íris. O comprimento da chave derivada vai de 16 a 128 bytes, 32 por omissão; como referência, o PBKDF2-HMAC-SHA-256 de «password» com o sal «salt», 1 iteração e 32 bytes dá 120fb6cffcf8b32c43e7225256c4f837a86548c92ccc35480805987cb70be17b.
O resultado é codificado numa linha: pbkdf2-sha256$600000$<sal>$<hash>, com o sal e o hash em Base64URL. Esta cadeia contém tudo o que é necessário para verificar mais tarde uma palavra-passe: algoritmo, iterações, sal e resumo esperado. No modo de verificação, a ferramenta lê estes parâmetros, volta a calcular a derivação com a palavra-passe introduzida e compara os dois resumos em tempo constante, para que a duração não revele em que byte divergem. O cálculo usa a API Web Crypto (deriveBits), pelo que a palavra-passe nunca sai do seu dispositivo.
Escreva a palavra-passe, escolha SHA-256 ou SHA-512 e ajuste, se necessário, o tamanho do sal, o número de iterações e o comprimento da chave.
A ferramenta gera um sal aleatório, calcula o PBKDF2 e apresenta o valor codificado pbkdf2-sha256$iterações$sal$hash, pronto a copiar.
Cole um valor codificado existente e a palavra-passe a testar: o resultado indica se corresponde, com o algoritmo e as iterações lidos do valor.
Gere um valor pbkdf2-sha256$… para inserir um utilizador diretamente numa base de dados de desenvolvimento ou num ficheiro de seed, sem escrever qualquer script.
Cole o hash guardado na base de dados e a palavra-passe esperada: a ferramenta indica se correspondem, para saber se o problema está na palavra-passe ou no código de verificação.
Compare o tempo de cálculo com 210 000 ou 600 000 iterações na sua máquina para escolher uma configuração confortável no início de sessão que continue a travar os ataques offline.
Sim, desde que utilize um número elevado de iterações e um sal único. O seu ponto fraco é não consumir memória, o que o torna mais fácil de acelerar em GPU do que o Argon2id ou o scrypt. Por isso a OWASP recomenda o Argon2id como primeira escolha e o PBKDF2 sobretudo quando é exigida conformidade FIPS-140.
As três são funções lentas concebidas para palavras-passe. O PBKDF2 ajusta apenas o tempo de cálculo; o bcrypt acrescenta alguma memória mas trunca as palavras-passe a 72 bytes; o Argon2id, vencedor da Password Hashing Competition, ajusta o tempo e a memória. A vantagem do PBKDF2 é estar disponível em todo o lado, incluindo na Web Crypto e nos módulos validados FIPS.
A OWASP Password Storage Cheat Sheet recomenda pelo menos 600 000 iterações para PBKDF2-HMAC-SHA256 e 210 000 para PBKDF2-HMAC-SHA512. O NIST SP 800-63B pede simplesmente um custo tão elevado quanto o desempenho do servidor permita. Na prática, aponte para cerca de 100 ms de cálculo por início de sessão no seu servidor.
Não, o sal é guardado em claro junto do hash, que é exatamente o que faz o valor pbkdf2-sha256$… A sua função é ser único e aleatório para cada palavra-passe, para impedir tabelas pré-calculadas e ocultar que dois utilizadores partilham a mesma palavra-passe. Um segredo adicional guardado fora da base de dados, chamado pimenta, é uma proteção distinta e opcional.
Não, o PBKDF2 é unidirecional: um atacante só pode adivinhar palavras-passe e voltar a calcular a derivação para cada uma. As iterações tornam cada tentativa dispendiosa, mas uma palavra-passe comum será encontrada rapidamente na mesma. A robustez final depende, por isso, também da qualidade da palavra-passe.
O cálculo é feito apenas no seu navegador com a Web Crypto: nem a palavra-passe nem o hash são enviados. Por precaução, prefira ainda assim uma palavra-passe de teste quando gerar exemplos ou partilhar uma captura de ecrã.
Ferramentas relacionadas
Ferramentas semelhantes ou complementares a esta.
Gere palavras-passe fortes e aleatórias de 8 a 128 caracteres, com a entropia indicada.
Teste a força de uma palavra-passe: entropia, padrões fracos, tempo estimado para a quebrar e conselhos.
Verifique se dois hashes ou somas de verificação coincidem, independentemente de maiúsculas, espaços ou dois-pontos.
Saiba quando usar criptografia, hashing, HMAC ou PBKDF2 para confidencialidade, integridade, autenticação e senhas.
Entenda como OAuth 2.0, PKCE, JWT, JWK e JWKS se relacionam: autorização, tokens, chaves públicas e verificação.
Aprenda a construir uma CSP progressiva, compreender as suas diretivas e evitar políticas demasiado permissivas ou que quebram o site.
Saiba como o SRI utiliza uma impressão digital criptográfica para verificar se um script ou uma folha de estilos externa corresponde ao ficheiro esperado.