O que é um Hash?
Uma função de hash é um algoritmo que transforma uma grande quantidade de dados (como um texto, uma senha ou um arquivo) em uma pequena sequência de letras e números de tamanho fixo, chamada "hash".
As principais características de uma boa função de hash são:
- Determinística: A mesma entrada sempre gera a mesma saída.
- Rápida de calcular: O processo de gerar o hash é eficiente.
- Irreversível: É praticamente impossível descobrir a entrada original a partir do hash.
- Resistente a colisões: É muito difícil encontrar duas entradas diferentes que gerem o mesmo hash.
MD5 (Message Digest 5)
Status: Obsoleto e Inseguro
Criado em 1991, o MD5 foi um dos algoritmos de hash mais populares. Ele gera um hash de 128 bits (32 caracteres hexadecimais).
Defeitos e Fraquezas
Sua principal fraqueza é a vulnerabilidade a **ataques de colisão**. Isso significa que hackers conseguem, com relativa facilidade, criar duas entradas diferentes que resultam no mesmo hash. Por isso, ele **NUNCA** deve ser usado para fins de segurança, como armazenamento de senhas ou assinaturas digitais.
Uso Atual
Ainda pode ser usado em contextos não relacionados à segurança, como na verificação de integridade de arquivos (checksum), para garantir que um arquivo não foi corrompido durante um download.
SHA-1 (Secure Hash Algorithm 1)
Status: Obsoleto e Inseguro
Desenvolvido pela NSA e lançado em 1995, o SHA-1 gera um hash de 160 bits (40 caracteres). Foi o sucessor natural do MD5.
Defeitos e Fraquezas
Assim como o MD5, o SHA-1 também se mostrou vulnerável a ataques de colisão. Em 2017, o Google demonstrou o primeiro ataque de colisão prático (chamado SHAttered), provando que o algoritmo não era mais seguro. Todos os principais navegadores e sistemas operacionais pararam de aceitar certificados assinados com SHA-1.
Uso Atual
Foi oficialmente descontinuado para qualquer uso que exija segurança. É encontrado apenas em sistemas legados que ainda não foram atualizados.
SHA-2 (SHA-256 / SHA-512)
Status: Seguro e Recomendado
SHA-2 é uma família de algoritmos que inclui o SHA-256 e o SHA-512. Eles geram hashes de 256 e 512 bits, respectivamente, sendo significativamente mais fortes que seus predecessores.
Força
Até hoje, não há ataques práticos conhecidos contra o SHA-2. Ele é o padrão da indústria para uma vasta gama de aplicações de segurança, desde assinaturas digitais e certificados SSL/TLS até a tecnologia de blockchain do Bitcoin (que usa SHA-256).
Uso Atual
É amplamente utilizado e recomendado para a maioria das necessidades de hashing seguro.
Bcrypt
Status: Padrão Ouro para Senhas
O Bcrypt não é um simples algoritmo de hash; é uma **função de hash de senha**. Sua principal finalidade é proteger senhas de usuários.
Força e Funcionamento
Sua genialidade vem de duas características principais:
- É Lento: Ele é intencionalmente lento de se calcular. Isso não atrapalha um login de usuário, mas torna ataques de força bruta (tentar bilhões de senhas por segundo) inviáveis.
- Inclui um "Sal" (Salt): O Bcrypt gera e armazena automaticamente uma string aleatória (o "sal") junto com o hash. Isso garante que, mesmo que dois usuários tenham a mesma senha, seus hashes serão completamente diferentes, protegendo contra ataques de "rainbow table".
Uso Atual
É a escolha preferida e mais recomendada por especialistas de segurança para armazenar senhas em bancos de dados.