SHA

Summary

O SHA (Secure Hash Algorithm) é uma família de algoritmos criptográficos utilizados para transformar dados de qualquer dimensão numa sequência de caracteres de tamanho fixo, chamada hash ou resumo criptográfico (message digest).

Como funciona?

O SHA recebe uma informação de qualquer tamanho e produz um resumo criptográfico de tamanho fixo.

Se alterares apenas um carácter da mensagem original, o hash resultante será completamente diferente.

Por exemplo:

  Mensagem A: `Olá, mundo!` --> Hash: 90NMY238RY
  Mensagem B: `Olá, Mundo!` --> Hash: A3309BHSC4

Apesar da diferença ser apenas uma letra maiúscula, os hashes serão diferentes.

Para que serve?

O SHA é utilizado em diferentes aplicações de segurança:

  • Integridade de ficheiros: verificar se um ficheiro foi alterado.
  • Assinaturas digitais: criar um resumo dos dados que será assinado digitalmente.
  • Certificados digitais: participar nos mecanismos de validação e assinatura.
  • TLS: proteger a integridade e autenticação das comunicações através de mecanismos criptográficos.
  • Blockchain: identificar blocos e relacionar dados através de hashes.
  • Gestão de palavras-passe: através de construções específicas, como PBKDF2.

Quais são as principais versões do SHA?

Existem várias versões da família SHA:

Algoritmo Tamanho do hash Estado
SHA-1 160 bits Inseguro para aplicações que exigem resistência a colisões.
SHA-256 256 bits Seguro e amplamente utilizado.
SHA-384 384 bits Seguro e amplamente utilizado.
SHA-512 512 bits Seguro e amplamente utilizado.
SHA-3 Variável Família mais recente, baseada numa construção diferente.

O SHA-256, SHA-384 e SHA-512 pertencem à família SHA-2.
O SHA-3 utiliza uma estrutura matemática diferente da família SHA-2.