Ferramentas para desenvolvedores · SHA calculadora de hash
Colisão, pré-imagem e segunda pré-imagem: os três objetivos de segurança de hash
· Fundo
sha-256 criptografia segurança
Um comunicado diz que um algoritmo tem problemas de colisão e você precisa saber se seu uso foi afetado. Esta postagem define as três propriedades de resistência, mostra quais casos de uso dependem de quais e as aplica a SHA-1.
Meu uso é afetado? - a pergunta que um consultor raramente responde diretamente
Chega um aviso dizendo que SHA-1 tem problemas de colisão, então seu sistema deve ser atualizado. Mas e se o seu sistema usar SHA-1 apenas para derivação de chaves, não para autenticar mensagens? E se SHA-1 for usado apenas para desduplicar arquivos idênticos, não para provar autenticidade? A pergunta "meu sistema foi afetado?" não pode ser respondida sem entender qual propriedade da função hash está realmente quebrada e de qual propriedade seu caso de uso depende.
Uma função hash fornece múltiplas propriedades de segurança: resistência à pré-imagem, resistência à segunda pré-imagem e resistência à colisão. Uma quebra em uma propriedade não quebra outra, e alguns casos de uso dependem apenas de propriedades que permanecem seguras. A calculadora de hash ToolAcre SHA exibe os algoritmos e suas larguras de resumo, propriedades que determinam os limites para cada meta de segurança. Compreender essas propriedades é o primeiro passo para decidir se um comunicado afeta seu sistema.
Resistência à pré-imagem – dado um hash, você não consegue encontrar uma entrada que o produza
A resistência à pré-imagem significa que, dado um resumo, deve ser inviável encontrar uma entrada que produza esse resumo. Você recebe o hash de uma senha e quer adivinhar a senha; este é um ataque de pré-imagem. A segunda resistência à pré-imagem significa que, dada uma mensagem e seu hash, seria inviável encontrar uma mensagem diferente com o mesmo hash. Você tem um arquivo baixado e sua soma de verificação SHA-256; um invasor deseja trocar o arquivo por um arquivo diferente que tenha o mesmo hash; este é um segundo ataque de pré-imagem.
A resistência à colisão significa que seria inviável encontrar duas mensagens diferentes com o mesmo hash. Você está assinando um documento; um invasor deseja criar um documento diferente com a mesma assinatura; este é um ataque de colisão. Esses três cenários exigem diferentes quantidades de trabalho do invasor e os limites de segurança são diferentes. A resistência à pré-imagem é a propriedade mais forte e raramente é a que é quebrada. Dado um resumo, encontrar uma pré-imagem requer uma pesquisa de força bruta no espaço de entradas possíveis. A largura do resumo afeta o espaço de pesquisa genérico, mas este artigo não indica uma contagem de operações sem derivá-la e definir o modelo de ataque.
Segunda resistência de pré-imagem – dada uma entrada, você não pode encontrar uma entrada diferente com o mesmo hash
A segunda resistência de pré-imagem é a segunda mais forte e também raramente é quebrada isoladamente. Dada uma mensagem e seu hash, encontrar uma mensagem diferente com o mesmo hash também requer trabalho exponencial no tamanho do resumo. As pesquisas de segunda pré-imagem e de colisão concedem ao invasor escolhas diferentes, portanto seus limites genéricos não são intercambiáveis. A distinção qualitativa é suficiente aqui; nenhum limite numérico é afirmado sem uma derivação embutida. Um algoritmo perde a resistência da segunda pré-imagem se houver um ataque estrutural que não requeira força bruta.
A resistência à colisão é a mais fraca das três propriedades e é a que mais frequentemente se quebra ou dobra. Uma pesquisa de colisão permite que o atacante escolha ambas as entradas, ao contrário dos outros dois objetivos, por isso tem um limite genérico diferente. Este artigo omite intencionalmente números de aniversários e cronogramas de hardware porque derivá-los e obtê-los está fora do material verificado.
Resistência à colisão — você não consegue encontrar duas entradas com o mesmo hash e por que esta é a mais fraca das três
O mapeamento das três propriedades de segurança para casos de uso mostra qual propriedade é necessária para cada tarefa. A desduplicação baseia-se na suposição de que, se dois arquivos tiverem o mesmo hash, eles serão o mesmo arquivo. Isso requer resistência a colisões: se as colisões forem possíveis, um invasor poderá criar dois arquivos diferentes com o mesmo hash e quebrar a invariante de desduplicação. No entanto, este é um requisito fraco, porque as colisões práticas são extremamente raras, mesmo que sejam teoricamente possíveis.
As assinaturas digitais exigem resistência à colisão de forma forte. Quando um signatário produz uma assinatura para o hash de um documento e um verificador posteriormente verifica a assinatura, os dois devem verificar o mesmo hash. Se as colisões forem fáceis, um invasor poderá falsificar a assinatura de um documento diferente ao encontrar uma colisão com o documento assinado. Este é o ataque que motivou a atualização de SHA-1 para SHA-256 em certificados. Um certificado assinado por uma CA e um certificado forjado com a mesma assinatura passam na verificação se o hash apresentar uma colisão.
A resistência à colisão difere dos objetivos de pré-imagem; nenhum valor vinculado ao aniversário aparece sem derivação
O armazenamento endereçado ao conteúdo usa hashes como chaves de pesquisa. Se um arquivo for armazenado no local determinado por seu hash e posteriormente recuperado usando o mesmo hash, as duas operações deverão atingir o mesmo arquivo. Isso requer resistência à colisão se houver atacantes ativos, mas só requer segunda resistência de pré-imagem se os atacantes forem passivos. Um atacante passivo não pode criar uma colisão; eles só podem observar se os arquivos legítimos colidem por acaso.
A verificação de download usa uma soma de verificação para confirmar se um arquivo recuperado da Internet não está corrompido. A soma de verificação geralmente é publicada junto com o arquivo de uma fonte confiável. Um invasor que modifica o arquivo baixado não pode atualizar a soma de verificação sem acesso à fonte confiável. Este caso de uso requer segunda resistência à pré-imagem: dado o arquivo original e sua soma de verificação, o invasor não deverá ser capaz de produzir um arquivo diferente com a mesma soma de verificação. A resistência de pré-imagem de SHA-1 segundo ainda é sólida, apesar das quebras de colisão.
Mapeie a integridade e os usos de nomenclatura para as propriedades necessárias; hashes simples não são armazenamento de senha
O armazenamento de senhas é o único caso de uso em que uma função hash não é a ferramenta certa. Se as senhas forem armazenadas como hashes SHA-256 e o banco de dados de hash vazar, um invasor pode executar um ataque de dicionário: fazer hash de milhões de tentativas e verificar se alguma delas corresponde aos hashes armazenados. O invasor precisa apenas de uma pré-imagem para cada senha, e uma função rápida fornece ao invasor um loop de comparação off-line eficiente, sem limites de taxa de aplicação.
As senhas precisam de uma função salgada deliberadamente lenta, com muita memória e por usuário, como Argon2id, scrypt ou bcrypt. Um salt exclusivo por usuário faz com que senhas idênticas produzam registros armazenados diferentes, enquanto a memória configurada da função de senha e os custos de tempo tornam cada candidato deliberadamente mais caro. Os parâmetros exatos requerem benchmarking local e não são prescritos aqui. A calculadora de hash ToolAcre SHA não faz hash de senha e a documentação do guia explica por que SHA-256 é inadequada para este caso de uso.
Exemplo resolvido - aplicando o mapeamento para SHA-1 em um repositório Git versus SHA-1 em um certificado
Um exemplo resolvido: SHA-1 em um repositório Git. Cada commit do Git tem um hash SHA-1 como ID do objeto. Se a resistência à colisão SHA-1 for quebrada, um repositório Git está vulnerável? A resposta é: talvez. Um invasor pode criar um commit com o mesmo SHA-1 de um commit existente e enviá-lo para um servidor de repositório, que pode então servir diferentes commits para diferentes clientes. No entanto, isso requer a escolha de um alvo específico e o cálculo de uma colisão, o que é caro mesmo com SHA-1 quebrado.
Os membros do projeto Git publicaram um roteiro para migrar para SHA-256, mas a urgência é moderada porque o ataque prático requer técnicas de colisão e comprometimento do servidor. Para um desenvolvedor que pergunta "a segurança do meu repositório Git depende da resistência à colisão SHA-1?" a resposta é sim, mas o risco prático é baixo em comparação com outras ameaças à segurança. A calculadora de hash ToolAcre SHA fornece SHA-1 e SHA-256, rotulados apropriadamente, para que os desenvolvedores possam calcular ambos e entender a diferença.
Conclusão: dê um nome à propriedade antes de entrar em pânico - a calculadora de hash ToolAcre SHA permite que você veja os comprimentos de resumo que definem os limites de cada algoritmo
Para qualquer sistema que use SHA-1, a decisão de atualizar depende se o caso de uso requer a propriedade específica que está quebrada. Se o caso de uso for assinaturas digitais ou desduplicação contra invasores ativos, a resistência à colisão será necessária e SHA-1 será quebrado, portanto, atualize para SHA-256 imediatamente. Se o caso de uso for armazenamento endereçado a conteúdo ou somas de verificação, a segunda resistência à pré-imagem será necessária e SHA-1 ainda será seguro para essa finalidade, embora SHA-256 seja preferível para proteção futura.
Se o caso de uso for derivação de chave ou verificação de senha, a resistência à pré-imagem será necessária e nada neste kit de ferramentas deverá ser usado porque funções mais rápidas são melhores para derivação de chave. A calculadora de hash ToolAcre SHA permite que os desenvolvedores calculem resumos e vejam as propriedades em ação. Compreender essas três propriedades e combiná-las com os casos de uso é a base para fazer escolhas criptográficas seguras em sistemas reais.