Criptografia
Validação BCrypt
Valida se o hash foi calculado a partir do texto inserido.
| Hash | |
|---|---|
| Texto |
Coincide
Não coincide
Tips
- BCrypt incorpora o salt no hash, portanto mesmo que o hash seja diferente a cada vez, será considerado como correspondência se foi gerado a partir da mesma entrada original.
- Esta ferramenta verifica usando o mesmo mecanismo que
password_verify($password, $hash)do PHP. - Ao comparar um hash obtido do banco de dados com uma senha inserida, use uma função de verificação dedicada em vez de uma comparação simples de strings (
==) para evitar ataques de temporização. - Hashes que começam com
$2a$também podem ser verificados como BCrypt.
Curiosidade — Por trás da autenticação: o que são esses poucos centésimos de segundo no login
Quando você pressiona o botão de login em um serviço web, parte desses poucos centésimos de segundo antes do resultado chegar é o tempo que o BCrypt gasta calculando o hash da senha. Esse atraso é intencional — feito por segurança.
Um Ataque de Temporização (Timing Attack) é um tipo de ataque de canal lateral onde um invasor deduz informações secretas medindo diferenças sutis no tempo de processamento. Quando uma senha é verificada com uma comparação simples de strings (==), o tempo de comparação varia ligeiramente dependendo de onde os caracteres param de coincidir. A função de verificação do BCrypt é projetada para executar em tempo constante, protegendo contra esse ataque.
Em aplicações web reais, é recomendado retornar uma resposta no mesmo tempo independente de o usuário existir ou não, como se o usuário existisse mas a senha estivesse errada. Se um invasor pode distinguir "usuário não existe" de "senha incorreta", isso dá uma dica para identificar nomes de usuário válidos.