Funções hash criptográficas explicadas

Funções hash criptográficas explicadas

O que são funções hash criptográficas?

Uma função hash criptográfica (cryptographic hash function) é uma fórmula matemática que transforma uma informação (por exemplo, um texto, arquivo ou senha) em uma curta “impressão digital” de comprimento fixo. Essa impressão é chamada valor hash.

Um valor hash geralmente se parece com uma longa sequência de números e letras. Por exemplo, se você inserir a palavra "Olá" na função hash SHA-256 (uma função hash bastante conhecida usada pelo Bitcoin), você obterá:

185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Não importa quantas vezes ou em qual computador você faça isso: enquanto a entrada for “Olá”, o valor hash será sempre exatamente o mesmo. O hash, portanto, está ligado a uma informação específica. Isso o torna um método confiável para verificar se os dados foram alterados.


Pontos principais

  • As funções hash criam uma impressão digital dos dados: a mesma entrada sempre produz o mesmo hash, mas pequenas alterações geram um resultado totalmente diferente.

  • Os hashes não são reversíveis: a partir do hash não é possível reconstruir os dados originais, o que os torna adequados para segurança e blockchains.

  • As aplicações são amplas: armazenamento seguro de senhas, verificação de integridade, assinaturas digitais e transações em blockchain.

  • A segurança varia de acordo com o algoritmo: MD5 e SHA-1 estão comprometidos e são inseguros, enquanto SHA-2 e SHA-3 ainda são considerados seguros.

  • Nas blockchains os hashes são cruciais: conectam blocos entre si, protegem transações e possibilitam a mineração por Proof of Work.


Aplicações de uma função hash

Um valor hash é frequentemente usado na segurança digital de dados, comunicações e sistemas. Você os encontra, por exemplo, em:

  • Armazenamento de senhas: em vez de armazenar senhas em texto simples, um sistema guarda apenas o valor hash.
  • Verificação de integridade: em downloads ou atualizações de software, um hash é fornecido para que os usuários possam verificar se o arquivo não foi alterado.
  • Assinaturas e certificados digitais: as funções hash garantem que um documento assinado não possa ser alterado sem ser detectado.
  • Blockchains: cada transação e cada bloco são protegidos por hashing, garantindo a imutabilidade da cadeia.

Propriedades de uma função hash

As propriedades importantes de uma função hash são:

  • Mesma entrada, mesma saída:
    Quando você insere os mesmos dados, sempre obtém exatamente o mesmo hash. Isso acontece porque a função hash realiza sempre o mesmo cálculo. Tome como exemplo uma senha. O sistema armazena apenas o hash da sua senha. Quando você tenta fazer login novamente, o sistema verifica se o hash corresponde exatamente ao novo hash calculado a partir do valor inserido. Só dessa forma o acesso é concedido.

  • Não reversível:
    Um hash não pode ser revertido para a entrada original. Isso significa que alguém que vê apenas o hash não consegue reconstruir os dados originais. Isso o torna extremamente adequado para uma blockchain. Cada bloco na blockchain contém um hash único (e às vezes vários hashes) que armazenam as transações. Além disso, contém o hash do bloco anterior. Se alguém tentar manipular uma transação alterando um número ou uma letra, o hash muda imediatamente. Como esse hash também está presente no próximo bloco, toda a cadeia é alterada. Isso é detectado imediatamente pelos validadores ou mineradores. Além disso, um invasor teria que recalcular e validar todos os blocos seguintes para conseguir enganar o sistema — o que é praticamente impossível. Isso torna a manipulação inviável e garante a integridade e a imutabilidade da blockchain.

  • Sensível a pequenas mudanças:
    Se você alterar apenas uma letra ou até mesmo um único bit, o hash será completamente diferente. Isso torna impossível determinar a semelhança entre dois textos com base em seus hashes.

Exemplo: “Mundo” tem um hash completamente diferente de “Mumdo”, embora as palavras sejam muito parecidas.

  • Evitar colisões:
    Uma colisão significa que duas entradas diferentes produzem o mesmo hash. Isso é teoricamente possível, mas na prática, com funções hash seguras, é quase impossível.

    Exemplo: Com SHA-256, seriam necessários bilhões de anos para gerar hashes suficientes até encontrar acidentalmente dois iguais. Variantes mais antigas como MD5 e SHA-1 tiveram esse problema no passado, razão pela qual não são mais usadas atualmente.

Como funcionam as funções hash?

O processo que as funções hash executam para realizar o cálculo é chamado de hashing.
Uma função hash é o algoritmo que realiza o cálculo, enquanto o hashing é o processo de aplicar essa função aos dados para obter um valor hash.

O hashing funciona tecnicamente da seguinte forma:

  1. Processamento da entrada
    Os dados (texto, arquivo, senha etc.) são divididos em blocos de tamanho fixo.

    Exemplo: Suponha que você insira o texto “Olá”. Ele é dividido em blocos de, por exemplo, 512 bits. Como “Olá” é muito mais curto, um preenchimento adicional é adicionado para que se encaixe perfeitamente.

  2. Transformações matemáticas
    Cada bloco passa por uma série de operações, como deslocamentos de bits, permutações e adições modulares.

    Exemplo: Os bits são deslocados e combinados, tornando o texto original irreconhecível. Mesmo uma sequência simples como “Olá” gera uma longa cadeia de números e letras, como:
    185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

  3. Combinação (compressão ou sponge)
    Os resultados são combinados em um estado interno — uma espécie de memória temporária onde os cálculos intermediários são armazenados até que o valor hash final possa ser formado.

    • Em algoritmos mais antigos, como SHA-2, isso ocorre bloco por bloco por meio de uma função de compressão.
    • Em algoritmos mais modernos, como SHA-3, isso funciona através de uma construção de esponja, na qual a entrada é primeiro “absorvida” e depois o hash é “espremido”.

    Exemplo: Não importa se você insere uma mensagem curta ou um arquivo de 1 GB; no final, sempre haverá um hash de comprimento fixo, por exemplo, 256 bits.

  4. Saída
    Após a última operação, resta um valor hash de comprimento fixo. Este é a impressão digital da entrada.

    Exemplo:

    • “Olá” →

      185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

    • “Olá!” (com ponto de exclamação) →

      334d74c95ed3ceec833219cd94ef7a8320b9c9d98c14b622d0535fbe7bb3f3a4

O que é o efeito Avalanche?

O efeito avalanche garante que seja impossível deduzir relações entre hashes, pois até pequenas diferenças na entrada produzem um valor hash completamente diferente. Mesmo que as entradas sejam muito semelhantes, o resultado é uma sequência de números e letras totalmente diferente. Isso torna impossível deduzir dos hashes como eram os dados originais ou quão semelhantes são duas entradas.

Quais funções hash existem?

Ao longo dos anos, várias funções hash criptográficas foram desenvolvidas ou aprimoradas. Algumas das mais conhecidas são:

  • MD5
    Desenvolvido nos anos 1990 como sucessor de algoritmos MD anteriores. Este algoritmo gera um hash de 128 bits e foi usado por muitos anos para verificação de arquivos e certificados digitais. Hoje, o MD5 é considerado inseguro, pois desde 2004 foram documentados casos em que duas entradas diferentes produziram o mesmo valor hash. Isso é chamado de colisão. Por isso, o MD5 hoje é usado apenas em aplicações simples, mas não mais em segurança.

  • SHA-1
    O SHA-1 foi por muito tempo o padrão para assinaturas digitais e certificados SSL. É um algoritmo que gera um hash de 160 bits. Em 2017, o Google e o CWI Amsterdã demonstraram uma colisão: eles criaram dois arquivos PDF diferentes com exatamente o mesmo hash SHA-1. Isso provou que era possível falsificar um hash na prática. Desde então, o SHA-1 é considerado comprometido e inseguro. Os principais navegadores e autoridades certificadoras não o suportam mais.

  • SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512)
    O sucessor do SHA-1 é o SHA-2. Esse algoritmo usa blocos de 512 ou 1024 bits e gera saídas de 224, 256, 384 ou 512 bits. Um sistema SHA-2 bastante conhecido é o SHA-256, usado para proteger a blockchain do Bitcoin. O SHA-512 é mais eficiente em sistemas de 64 bits. Até hoje, não se conhecem ataques bem-sucedidos contra o SHA-2, o que o torna uma das funções hash criptográficas mais usadas.

  • SHA-3 (Keccak)
    Desenvolvido em 2007 por Guido Bertoni, Joan Daemen, Michaël Peeters e Gilles Van Assche, o algoritmo Keccak foi adotado em 2015 pelo NIST como o novo padrão de hash sob o nome SHA-3. Foi introduzido como uma alternativa ao SHA-2, caso vulnerabilidades fossem encontradas nele no futuro. O SHA-3 ainda não é amplamente usado na prática, pois o SHA-2 continua seguro, amplamente suportado em hardware e profundamente integrado em protocolos como TLS e certificados SSL.

Funções hash em criptomoedas e blockchain

As funções hash desempenham um papel crucial nas blockchains. O hashing é usado para proteger transações, conectar blocos e constitui o núcleo das blockchains que validam transações através da mineração. As blockchains que utilizam o Proof of Work mecanismo de consenso usam o poder computacional dos computadores para resolver puzzles de hash.

Alguns exemplos de projetos populares:

  • Bitcoin → SHA-256 (para mineração e hashing de blocos).
  • Litecoin → scrypt (mais rápido e menos sensível a ASIC do que o SHA-256).
  • Zcash → Equihash (intensivo em memória, projetado para uma mineração mais justa).
  • Dogecoin → scrypt (mesmo algoritmo que o Litecoin, com merge-mining).
  • Ripple (XRP Ledger) → SHA-512/256 (uma variante reduzida do SHA-512).
  • Algorand → SHA-512/256 (para geração de chaves e assinaturas digitais).

Considerações finais

As funções hash criptográficas são um componente essencial no mundo digital. Elas oferecem uma maneira confiável de proteger dados, garantir a integridade e possibilitar sistemas complexos como as blockchains. Embora algoritmos mais antigos como MD5 e SHA-1 já não sejam seguros devido a vulnerabilidades comprovadas, variantes modernas como SHA-2 e SHA-3 continuam robustas e essenciais para as aplicações atuais.

A força das funções hash está na sua simplicidade e eficácia: funções unidirecionais que transformam pequenas diferenças na entrada em resultados completamente diferentes, sem que os dados originais possam ser recuperados. Isso as torna cruciais não apenas para a segurança de senhas e assinaturas digitais, mas também para o funcionamento das criptomoedas e da internet em geral.

As funções hash continuarão a desempenhar um papel fundamental no futuro, tanto em aplicações existentes quanto em novas inovações nos campos da blockchain, da segurança digital e da criptografia.

Sobre a Finst

A Finst é um dos principais prestadores de serviços de criptoativos nos Países Baixos e oferece uma plataforma de investimento de excelência com padrões de segurança de nível institucional e taxas de transação super baixas. A Finst é liderada pela antiga equipa principal da DEGIRO e está autorizada como prestador de serviços de criptoativos pela Autoridade Holandesa para os Mercados Financeiros (AFM). A Finst oferece uma gama completa de serviços de criptomoedas, incluindo negociação, custódia, fiat on/off ramp e staking, tanto para pequenos investidores como também para investidores institucionais.

A plataforma de criptomoedas que vai adorar

Estamos aqui para lhe fornecer as ferramentas, a inspiração, e o apoio que precisa para se tornar num melhor investidor.