Ferramentas para desenvolvedores · SHA calculadora de hash
O efeito avalanche: por que um personagem alterado reescreve um hash SHA
· Como funciona
sha-256 criptografia segurança validação
Mude uma letra e aproximadamente metade dos bits de saída serão invertidos. Esta postagem explica a propriedade avalanche, por que ela é essencial para detecção de violação e como as munições de SHA-2 conseguem isso.
Esperar que o hash mude um pouco – a intuição que a maioria das pessoas traz e por que o design a quebra deliberadamente
A maioria das pessoas espera que insumos semelhantes produzam resultados semelhantes. Altere um caractere em um arquivo e o resumo deverá mudar ligeiramente. Em vez disso, os hashes criptográficos são projetados para fazer o oposto: uma alteração de um único bit na entrada deve inverter aproximadamente metade dos bits de saída, de forma imprevisível. Essa propriedade é chamada de efeito avalanche e é deliberada. O design serve a um propósito específico: detecção de violação.
O efeito avalanche é o motivo pelo qual “quase correspondência” não é um conceito no mundo do hash. Um hash corresponde exatamente ou não. Não existe "perto o suficiente". Essa propriedade torna o hash útil para verificações de integridade e endereçamento de conteúdo, e torna algoritmos de hash fracos inutilizáveis para fins de segurança.
Avalanche significa ampla difusão de produção; este artigo não faz nenhuma afirmação de probabilidade exata sem fonte
Formalmente, o efeito avalanche significa que para duas entradas que diferem em um único bit, os resumos de saída devem diferir em aproximadamente 50% de seus bits. Para SHA-256 (256 bits de saída), alterar um bit de entrada deve inverter aproximadamente 128 bits de saída. O efeito não é exato; é uma propriedade estatística. Mas é forte: na prática, cada bit da entrada é completamente misturado com cada bit da saída.
Por que aproximadamente metade? Porque uma saída verdadeiramente aleatória diferiria de outra saída aleatória em exatamente metade de seus bits, em média (pelo princípio do pombo e pelas estatísticas básicas). Uma boa função hash aproxima a aleatoriedade; produz resultados que parecem não ter nenhum padrão discernível. Metade dos bits invertidos, em média, é a marca registrada da aleatoriedade. Se um hash invertesse apenas 10% dos bits, um invasor poderia encontrar padrões e explorá-los.
Por que a detecção de adulteração precisa disso — pequenas edições em um documento não devem produzir um hash quase idêntico que uma rápida olhada aceitaria
A detecção de adulteração depende da avalanche. Se você baixar um arquivo e calcular seu SHA-256, o resumo esperado será ba7816... (como exemplo). Um invasor modifica o arquivo alterando um byte. O novo resumo muda de ba7816... para algo como 3d4e92... (completamente diferente). Quando você verifica o arquivo em relação ao resumo esperado, a incompatibilidade é imediata e total. Não há espaço para interpretações erradas: o arquivo foi adulterado.
Sem o avalanche, um invasor poderia alterar um byte e o resumo poderia mudar apenas ligeiramente, para ba7817... (um dígito hexadecimal diferente). Uma comparação casual pode deixar passar a diferença. Um invasor pode até procurar entradas que produzam um resumo começando com ba78, alegando que o arquivo é autêntico. O Avalanche torna isso proibitivamente caro: encontrar pelo menos duas entradas onde os resumos começam com os mesmos quatro dígitos hexadecimais requer mais trabalho do que o design permite.
Como as rodadas se espalham mudam - rotações, adições e funções não lineares que carregam a influência de um bit em todo o estado
As rodadas em SHA-256 (e as rodadas em SHA-512) são projetadas para espalhar mudanças. Cada rodada mistura os dados usando funções não lineares (escolha, maioria) e rotações. Uma mudança de um único bit na entrada entra na programação da mensagem e se propaga pelas rodadas. As rotações mudam as posições dos bits. Funções não lineares ocultam a influência do bit: alterar um bit de controle em uma operação de escolha pode inverter qualquer um dos bits de saída, dependendo dos dados que estão sendo selecionados.
As constantes hash iniciais, as constantes de agendamento de mensagens, os valores de rotação e o número de rodadas foram todos escolhidos para maximizar o efeito avalanche. Estes números não são arbitrários; eles vêm da especificação SHA-2 e foram criptoanalisados extensivamente. Qualquer alteração nas constantes ou na contagem de rodadas produziria um algoritmo diferente (provavelmente mais fraco).
Exemplo resolvido - hash de duas entradas que diferem em um caractere e comparação dos resumos bit a bit
Testar o avalanche é simples. Faça hash da entrada abc e observe o resumo. Em seguida, misture abc seguido de um espaço ou substitua um caractere por outro: abd. Compare as saídas hexadecimais. Para SHA-256, aproximadamente metade dos dígitos hexadecimais de 64 serão diferentes. Conte-os. O vetor de teste da postagem ToolAcre: abc produz ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Uma string vazia produz e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Esses resumos não têm dígitos hexadecimais em comum.
Tente isso na calculadora ToolAcre com qualquer entrada. Hash uma frase. Em seguida, altere uma letra e misture novamente. Conte os diferentes dígitos hexadecimais. Você descobrirá que aproximadamente metade (32 de 64, na maioria dos casos) são diferentes. Este é o efeito avalanche em ação. É uma propriedade do design do algoritmo, não uma coincidência.
O Avalanche não fornece pesquisa de similaridade ou por si só quantifica a resistência à colisão
O Avalanche não cria pesquisa por similaridade ou correspondência aproximada. Se você possui um resumo ba7816... e deseja encontrar um resumo semelhante, não há atalho. Você deve adivinhar ou forçar as entradas dos candidatos, fazer hash de cada uma e verificar se há uma correspondência exata. O efeito avalanche faz com que cada suposição tenha a mesma probabilidade de produzir um resultado semelhante ou completamente diferente. Alguns algoritmos de hash (chamados de hash sensível à localidade) são projetados para preservar a similaridade; eles são úteis para detecção e clustering quase duplicados, mas não são hashes criptográficos.
O Avalanche também não protege contra uma determinada busca de colisão. Um criptoanalista ainda pode procurar duas entradas diferentes que produzam o mesmo resumo, mas o espaço de busca é enorme. Uma busca de colisão determinada é uma questão diferente da difusão visual. Este artigo não cita um número vinculado ao aniversário ou cronograma de hardware porque não foi derivado aqui. O limite defensável é que a avalanche por si só não prova nem quantifica a resistência à colisão.
Conclusão: sem quase acidentes - experimente o experimento de um caractere na calculadora de hash ToolAcre SHA e observe toda a mudança do resumo
A calculadora de hash ToolAcre SHA executa os algoritmos SHA por meio da implementação do Web Crypto do navegador. Você pode usá-lo para verificar a avalanche por conta própria. Cada precisão do algoritmo é alimentada na saída, e a implementação do Web Crypto é auditada e mantida pelo fornecedor do navegador. Você está vendo o algoritmo real rodando em entradas reais. A propriedade contra-intuitiva de que uma mudança de caractere reescreve todo o resumo não é uma falha; é o recurso que faz o hash funcionar.
Ao usar um hash para verificação de integridade, você está contando com o avalanche. Ao usá-lo para endereçamento de conteúdo (como resumos de imagens de contêiner), você depende da propriedade de que pequenas alterações produzem resumos muito diferentes. Quando você o utiliza em uma assinatura digital (onde a assinatura é calculada sobre um hash da mensagem), o efeito avalanche garante que a adulteração da mensagem produza uma alteração detectável. A propriedade é a base da segurança baseada em hash.