Algoritmos de Hash

Algoritmos de hash são funções matemáticas que convertem dados de entrada de qualquer tamanho em uma saída de tamanho fixo (hash), usados para integridade de dados, armazenamento de senhas e consenso de blockchain.

Algoritmos de hash são primitivos criptográficos fundamentais que pegam uma entrada arbitrária e produzem uma saída de comprimento fixo chamada hash ou resumo. Eles são projetados para serem determinísticos (a mesma entrada sempre produz a mesma saída), rápidos de computar e inviáveis de reverter (função unidirecional).

Funções hash criptográficas devem satisfazer propriedades adicionais: resistência à colisão (difícil encontrar duas entradas com o mesmo hash), resistência à pré-imagem (difícil encontrar a entrada a partir do hash) e efeito avalanche (pequenas mudanças na entrada causam grandes mudanças na saída).

Algoritmos chave incluem: SHA-256 (Bitcoin, amplamente utilizado), Keccak-256 (Ethereum), SHA-3 (padrão NIST), Blake2/Blake3 (rápido, seguro) e Poseidon (amigável para ZK). Diferentes algoritmos oferecem compensações em segurança, velocidade e adequação para usos específicos como provas de conhecimento zero.

Usos em blockchain incluem: mineração de prova de trabalho, árvores de Merkle para integridade de dados, geração de endereços, IDs de transação e esquemas de compromisso. Entender hashing é essencial para a segurança e desenvolvimento de blockchain.

        graph LR
  Center["Algoritmos de Hash"]:::main
  Pre_cryptography["cryptography"]:::pre --> Center
  click Pre_cryptography "/terms/cryptography"
  Pre_mathematics["mathematics"]:::pre --> Center
  click Pre_mathematics "/terms/mathematics"
  Rel_proof_of_work["proof-of-work"]:::related -.-> Center
  click Rel_proof_of_work "/terms/proof-of-work"
  Rel_digital_signatures["digital-signatures"]:::related -.-> Center
  click Rel_digital_signatures "/terms/digital-signatures"
  classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
  classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
  classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
  classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
  linkStyle default stroke:#4b5563,stroke-width:2px;

      

🧒 Explique como se eu tivesse 5 anos

Generated ELI5 content

🤓 Expert Deep Dive

Generated expert content

❓ Perguntas frequentes

Por que você não pode reverter um hash para obter a entrada original?

Funções hash comprimem quantidades arbitrárias de entrada em saída de tamanho fixo, então muitas entradas possíveis mapeiam para cada hash (informação é perdida). Elas também são projetadas com complexidade matemática que torna a reversão computacionalmente inviável. Isso é chamado de resistência à pré-imagem.

Qual algoritmo de hash o Bitcoin usa?

O Bitcoin usa SHA-256 (SHA-256d, na verdade duplo SHA-256) para mineração de prova de trabalho e hashing de transações, e RIPEMD-160 combinado com SHA-256 para geração de endereços. Essas escolhas equilibram segurança, desempenho e resistência a ataques conhecidos.

O que torna uma função hash 'amigável para ZK'?

Funções hash amigáveis para ZK como Poseidon e Pedersen são projetadas para serem eficientes quando usadas dentro de circuitos de prova de conhecimento zero. Hashes tradicionais como SHA-256 são caros em provas ZK porque usam operações bit a bit que são custosas para provar. Hashes amigáveis para ZK usam operações aritméticas nativas dos sistemas de prova.

🔗 Termos relacionados

Pré-requisitos:

📚 Fontes