Toolyard

O que é um hash: MD5, SHA-1 e SHA-256 explicados

Uma impressão digital para os dados

Uma função hash pega qualquer entrada (uma palavra, um documento, um vídeo de 4 GB) e transforma em uma sequência curta, de tamanho fixo, chamada hash, resumo ou checksum. A mesma entrada sempre gera o mesmo hash, e a menor mudança gera um completamente diferente:

EntradaHash SHA-256
hello2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
Hello185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
hello!ce06092fb948d9ffac7d1a376e404b26b7575bcc11ee05a4615fef4fec3a308b

Uma letra maiúscula ou um ponto de exclamação mudam todos os caracteres do resultado. Teste no Gerador de hash.

O que faz uma boa função hash

  • Determinística: a mesma entrada sempre gera o mesmo hash, em qualquer computador.
  • De mão única: não dá para voltar do hash para a entrada.
  • Resistente a colisões: deve ser praticamente impossível achar duas entradas diferentes com o mesmo hash.
  • Rápida de calcular para checksums, o que é útil, e também é o motivo de hashes rápidos não servirem para senhas (veja abaixo).

Hash não é criptografia

A criptografia funciona nos dois sentidos: com a chave, você recupera o original. Um hash não tem chave e não pode ser revertido; ele só permite verificar se algo confere. Base64 é outra coisa: é só uma codificação, e qualquer pessoa pode decodificar.

Os algoritmos mais comuns

AlgoritmoTamanhoSituação
MD5128 bits (32 caracteres hexadecimais)Quebrado desde 2004; só serve para detectar danos acidentais
SHA-1160 bits (40 caracteres hexadecimais)Quebrado: a primeira colisão real foi publicada em 2017
SHA-256256 bits (64 caracteres hexadecimais)Seguro; a escolha padrão hoje
SHA-512512 bits (128 caracteres hexadecimais)Seguro; muitas vezes mais rápido que o SHA-256 em computadores de 64 bits

Veja a palavra hello em cada um:

  • MD5: 5d41402abc4b2a76b9719d911017c592
  • SHA-1: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d
  • SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

O que significa MD5 e SHA-1 estarem "quebrados"

Com MD5 e SHA-1, pesquisadores conseguem criar de propósito dois arquivos diferentes com o mesmo hash. Um atacante poderia usar isso para trocar um arquivo inofensivo por um malicioso com o mesmo checksum, ou para falsificar um documento assinado. Nenhum dos dois está quebrado no sentido de poder ser revertido, e um dano aleatório ainda muda o hash, então um checksum MD5 ainda detecta um download que parou no meio. O que ele não consegue é provar que ninguém adulterou o arquivo.

O SHA-256 e o SHA-512 fazem parte da família SHA-2, publicada em 2001, e não se conhece nenhum ataque prático contra eles. O SHA-3, padronizado em 2015, é um projeto diferente mantido como reserva.

Onde os hashes são usados

  • Verificar downloads: os desenvolvedores publicam o SHA-256 dos arquivos; se o seu conferir, ele é idêntico. Veja como verificar um checksum.
  • Assinaturas digitais e certificados HTTPS: calcula-se o hash do documento ou do certificado, e é esse hash que é assinado.
  • Git: cada commit e cada arquivo é identificado pelo hash. O Git sempre usou SHA-1 e passou a oferecer suporte a SHA-256.
  • Bitcoin e outras blockchains: os blocos são encadeados com SHA-256.
  • Encontrar arquivos duplicados: dois arquivos com o mesmo SHA-256 são o mesmo arquivo.

Hashes e senhas

Os sites nunca deveriam guardar a sua senha, só um hash dela; quando você entra, eles calculam o hash do que você digitou e comparam. Mas o SHA-256 é a ferramenta errada aqui: ele é tão rápido que um atacante com um banco de dados vazado consegue testar bilhões de senhas por segundo. Senhas precisam de um hash lento e com salt feito para isso, como bcrypt, scrypt ou Argon2. O salt é um valor aleatório somado a cada senha antes do hash, para que duas pessoas com a mesma senha fiquem com hashes diferentes.

Teste

O Gerador de hash calcula ao mesmo tempo MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de qualquer texto ou arquivo, no seu navegador, e pode comparar com um checksum publicado.

Ferramentas deste guia

Mais guias