Suponha que você pudesse roubar um arquivo de sistema com nomes de usuário e senhas hash. Suponha que você conheça a função hash usada para as senhas. Será que isso dará acesso a contas de usuário no sistema?

Passo 1

O enunciado diz que você roubou o arquivo com nomes de usuário e senhas já armazenadas em forma de hash, e que você conhece a função de hash usada. Nosso objetivo é entender se isso, por si só, dá acesso imediato às contas. Uma função de hash é projetada para ser unidirecional: você consegue gerar o hash a partir da senha, mas não consegue inverter matematicamente o hash para descobrir a senha original.

Passo 2

Para obter acesso à conta, o sistema normalmente verifica se
a senha que você digita gerou o mesmo hash armazenado. Como você não sabe a senha original, precisa descobrir algum texto cuja aplicação da função de hash produza aquele valor roubado.
Esse processo de “descobrir a senha” é conhecido como ataque de força bruta ou ataque por dicionário: você gera candidatos de senha, aplica a hash function e compara o resultado com o hash roubado.

Passo 3

Se as senhas forem fracas (por exemplo, palavras comuns ou combinações curtas) e se não houver mecanismos extras (como salt ou funções de hash lentas), ataques offline usando dicionários ou rainbow tables podem quebrar muitas senhas rapidamente.
Por outro lado, se as senhas forem longas e aleatórias, e se a implementação usar salt único por usuário e uma função de hashing lenta (PBKDF2, bcrypt, scrypt, Argon2 etc.), o esforço computacional para descobrir cada senha pode ser proibitivo.

Passo 4

Portanto, apenas possuir o arquivo de hashes e conhecer a função de hash não garante acesso automático: você ainda precisa investir tempo e recursos para “quebrar” cada hash até recuperar a senha em texto puro.
Somente depois de recuperar a(s) senha(s) em texto puro ou gerar uma string que produza o mesmo hash é que você poderá efetivamente fazer login como aquele usuário.

Resposta

Não dá acesso imediato: você precisa quebrar os hashes offline (força bruta, dicionário, rainbow tables). Se as senhas forem fracas ou não usarem salt/funções lentas, é fácil; caso contrário, torna-se muito difícil.

Exercícios relacionados