Função Hash criptográfica

Definição

Uma função hash criptográfica é um algoritmo matemático que recebe quaisquer dados de entrada, independentemente do tamanho, e os transforma em um resumo de comprimento fixo. Algumas versões modernas, chamadas Funções de Saída Extensíveis (XOFs), podem produzir saídas de comprimento personalizável. As funções hash possuem diversas propriedades essenciais: são determinísticas, ou seja, a mesma entrada sempre produz a mesma saída; são resistentes à pré-imagem, tornando praticamente impossível reverter um hash para encontrar a entrada original; são resistentes a colisões, tornando praticamente impossível encontrar duas entradas diferentes que produzam o mesmo hash; e exibem o efeito avalanche, onde mesmo uma pequena alteração na entrada resulta em uma saída completamente diferente. Bitcoin usa SHA-256 para mineração e hash de transações, enquanto Ethereum usa Keccak-256, uma variante do SHA-3. Funções hash são a base de segurança blockchain—elas possibilitam tudo, desde a comprovação de trabalho na mineração até a criação de Árvore Merkle Comprovantes e assinatura de transações.

Propriedades da função hash ilustradas

Exemplos de hash SHA-256: Entrada: “Hello” Saída: 185f8db32271fe25f561a6fc938b2e26…

Entrada: “hello” (minúsculas) Saída: 2cf24dba5fb0a30e26e83b2ac5b9e29e… → Completamente diferente (efeito avalanche)

Entrada: arquivo de vídeo de 10 MB Saída: Ainda apenas 64 caracteres hexadecimais (256 bits) → Tamanho de saída fixo, independentemente do tamanho da entrada

Demonstração de resistência à pré-imagem: Objetivo: Encontrar uma entrada que produza “0000abc…”. Único método: Força bruta (tentar bilhões de entradas). Mineração de Bitcoin: Exatamente isso – encontrar um nonce que produza um hash abaixo do alvo. A 500 exahashes/segundo (rede Bitcoin): ~500,000,000,000,000,000,000 tentativas/segundo.

Resistência a colisões: Objetivo: Encontrar duas entradas diferentes que produzam o mesmo hash SHA-256: Nenhuma colisão encontrada (2^128 operações para encontrar uma) SHA-1 (obsoleto): Colisões encontradas (Google, 2017) → Não é mais confiável

Funções de hash usadas em criptografia

Função Hash Tamanho da saída Usado em Status
SHA-256 256 pedaços Bitcoin (mineração, transações) Garanta o
Keccak-256 256 pedaços Ethereum (endereços, transações) Garanta o
SHA-3-256 256 pedaços Alguns protocolos mais recentes Garanta o
BLAKE2/BLAKE3 Variável (como um XOF) Zcash, alguns protocolos Seguro, mais rápido
SHA-1 160 pedaços Legado (obsoleto) QUEBRADO (colisão detectada)
MD5 128 pedaços Legado (obsoleto) QUEBRADO (colisão trivial)
RIPEMD-160 160 pedaços Derivação de endereço Bitcoin Seguro (com SHA-256)

Perguntas frequentes

P: Por que não podemos inverter um hash para encontrar a entrada?

As funções hash envolvem operações matemáticas não invertíveis – elas descartam informações deliberadamente. Você pode verificar que hash(entrada) = saída, mas não pode reverter matematicamente hash(saída) → entrada. O único ataque geral conhecido é a força bruta: tentar várias entradas até encontrar uma cujo hash resulte no valor desejado. Para saídas de 256 bits, isso requer aproximadamente 2^256 tentativas – mais do que o número de átomos no universo observável. Essa irreversibilidade é o que torna as funções hash úteis para armazenamento de senhas, assinaturas digitais e prova de trabalho.

P: O que é o “efeito avalanche” e por que ele é importante?

O efeito avalanche significa que alterar até mesmo um único bit (um caractere) na entrada produz um hash de saída completamente diferente – tipicamente, cerca de metade dos bits na saída são alterados. Isso é importante para a segurança do blockchain: se o cabeçalho de um bloco for modificado, mesmo que ligeiramente (para alterar um carimbo de data/hora ou uma transação), o hash muda completamente e se torna inválido, exigindo que toda a prova de trabalho seja refeita. Isso torna o histórico de transações do blockchain efetivamente imutável.

P: Como as funções hash são usadas em assinaturas digitais?

Em vez de assinar um documento grande diretamente, você primeiro calcula o hash do documento (produzindo 256 bits independentemente do tamanho do documento) e, em seguida, assina o hash com sua chave privada. Isso é eficiente (assinar um hash de tamanho fixo é muito mais rápido do que assinar um arquivo de gigabytes) e mantém a segurança (a assinatura comprova que você assinou aquele documento específico – qualquer modificação altera o hash e invalida a assinatura). Todas as assinaturas de transações em blockchain seguem esse padrão.

Notícias e Eventos