Um arquivo pode ser alterado maliciosamente de forma a manter seu Hash SHA-1 original?

Um arquivo pode ser alterado maliciosamente de forma a manter seu Hash SHA-1 original?

De acordo comesseartigo e muitos outros, o SHA-1 não é seguro.

No meu caso, não estou preocupado com senhas ou certificados digitais. Estou preocupado com a integridade do arquivo.

É razoavelmente possível que um arquivo (por exemplo, uma imagem ISO ou arquivo executável) seja alterado maliciosamente de uma forma que:

  • Mantém o hash SHA-1 do arquivo original e
  • Mantém o conteúdo e a operação geral do arquivo (mas é claro que agora inclui conteúdo malicioso que não estava lá originalmente)

A meu ver, alterar um arquivo de uma forma que produza uma colisão SHA-1 tornaria o arquivo totalmente inútil. O ISO estaria totalmente corrompido ou o arquivo executável ficaria tão embaralhado que nem seria mais um arquivo executável.

Mas, a meu ver, pode muito bem estar errado. Até agora não encontrei nada nas pesquisas do Google em relação à adequação contínua do SHA-1 para verificação de arquivos. Alguma ideia?

Responder1

Ninguém ainda conseguiu isso para SHA-1. É possível em teoria, mas ainda não é prático. Os relatórios sobre a insegurança no SHA-1 significam apenas que o nível de segurança não é tão alto quanto gostaríamos e isso significa que não temos tantos anos antes de termos que nos preocupar com isso como pensávamos.

É mais difícil produzir um arquivo com o mesmo hash SHA-1 de um determinado arquivo do que criar você mesmo dois arquivos com o mesmo hash SHA-1. E, tanto quanto sabemos, ninguém em qualquer lugar do mundo realizou ainda esta tarefa mais fácil. Isso não significa que não possa acontecer amanhã.

Responder2

É teoricamente possível, mas ainda não foi feito.

O que você está procurando é chamado de "colisão de hash:" dois arquivos com o mesmo hash. Códigos hash criptográficos como SHA-1 geralmente são projetados para dificultar isso. Como SHA-1 é um código de 160 bits, serão necessárias em média 2 ^ 159 tentativas de força bruta para encontrar uma duplicata. Se for encontrado um algoritmo que tenha um desempenho confiável melhor do que um hash criptográfico, o hash será considerado "quebrado".

MD-5 é um exemplo de hash muito quebrado. Era para ter uma força de 128 bits, exigindo em média 2 ^ 127 tentativas. Da forma como está, abusando de vulnerabilidades conhecidas, o número real de tentativas necessárias pode ser tão baixo quanto 2^47. Isso é MUITO menor que 2 ^ 127. Na verdade, isso foi feito em menos de um dia em um cluster de computação moderno.

Dou esse exemplo porque é o mais próximo de como você pretende usar o SHA-1. No entanto, essa não é a abordagem mais comum usada pela criptoanálise para garantir que os hashes não sejam quebrados. Eles geralmente permitem uma colisão entre dois arquivos, conforme escolhido pelo invasor, em vez de você escolher um arquivo e o invasor tentar combiná-lo. Esse tipo de ataque tem a vantagem de ser mais fácil de avaliar. Se eu achar que é "difícil" quebrar seu arquivo, isso significa que outro arquivo é igualmente forte? Este ataque em que o invasor escolhe os dois arquivos garante que capturaremos o pior dos piores.

Este tipo de ataque permite um truque interessante conhecido como "ataque de aniversário." Para encurtar a história, usar o ataque de aniversário reduz pela metade a força do algoritmo, então SHA-1 requer 2 ^ 80 tentativas (em média) e MD5 requer 2 ^ 64 tentativas (em média). Essas são metade de 160 e 128 respectivamente.

SHA-1 possui ataques conhecidos que diminuem sua força de 2^80 para 2^69. Isso não vai importar muito para você. 2 ^ 69 tentativas é umlongotempo.

No entanto, a partir da história, descobrimos que os algoritmos hash não são quebrados espontaneamente, mas sim ao longo do tempo. Ninguém quebra um algoritmo como o MD-5, passando de 2 ^ 64 para 2 ^ 47 durante a noite. Isso acontece com o tempo, à medida que muitas pessoas publicam artigos sobre a matemática que usam contra ela. Geralmente é possível observar a complexidade dos ataques diminuindo lentamente desde o início do algoritmo (onde o melhor ataque geralmente é o ataque de aniversário).

O fato de estarmos vendo algumas mudanças nas colisões sugere que SHA-1 está vendo a luz no fim do túnel. Ainda é forte, mas pode haver um desejo de atualizar para o mais novo SHA-3, que atualmente é muito mais seguro.

Você realmente deve tomar essas decisões do ponto de vista do modelo de ameaça. Quanto dano pode ser causado por um invasor se sofrer uma dessas colisões. Seus invasores são script kiddies com acesso a alguns laptops ou governos com clusters inteiros de supercomputação à sua disposição? Qual é o tamanho da janela de tempo que um invasor precisa para quebrar o hash antes que ele seja inútil (muitos usos da criptografia envolvem uma "mudança de guarda", como a rotação de senha). Tudo isso afetará a seriedade com que você deve considerar as colisões.

Responder3

As falhas no SHA-1 discutidas nesse artigo são muito específicas: elas permitem que os invasores criem duas coisas com hash do mesmo valor (isso é chamado de "ataque de colisão"). No entanto, um ataque de colisão requer que o atacante controleambosarquivos envolvidos. Se o invasor não controlar o arquivo original, um ataque de colisão não permitirá que ele encontre outro arquivo com o mesmo valor de hash.

A razão pela qual isso é importante para TLS/SSL (e assinaturas em geral) é que, com eles, um invasor geralmentepodecontrolar ambos os arquivos. Um certificado TLS é criado principalmente pela pessoa que o solicita (os bits que eles não controlam são geralmente previsíveis); portanto, as colisões permitem que eles criem um certificado legítimo e um ilegítimo, assinem o legítimo e transfiram a assinatura.

Para arquivos, a mesma situação nem sempre se aplica. Se a sua preocupação é que a pessoa que cria o arquivo seja o invasor (por exemplo, eles obterão uma verificação independente de algo como bom e, em seguida, enviarão a carga maligna com o mesmo hash), o ataque SHA-1 se aplica e você deve procurar no sentido de eliminá-lo gradualmente (embora ainda não seja crítico, como David Schwartz mencionou). Se o arquivo original for confiável, um invasor não poderá aplicar os ataques SHA-1 atualmente conhecidos, embora você ainda deva pensar em eliminá-lo gradualmente, se puder (se tiver escolha, use um hash sem ataques conhecidos como SHA- 2).


Em resposta a "a colisão não será útil" - Embora um ataque não exija que um invasor consiga obter umútilcolisão, geralmente não é tão difícil transformar "colisão" em "colisão útil". Muitos formatos de arquivo têm bastante espaço onde você pode ter o que quiser sem afetar a funcionalidade do arquivo; um invasor normalmente pode modificar isso para obter uma colisão (se as colisões forem praticamente encontráveis), mantendo a parte funcional como eles desejam. A lacuna entre o “ataque acadêmico” e o “ataque prático” pode ser grande; a diferença entre “qualquer colisão” e “colisão útil” é geralmente muito menor.


A questão mais séria, que não está relacionada à escolha do algoritmo, é como você obtém o hash. Tudo o que um hash faz é mudar o problema de “obter o arquivo real” para “obter o valor real do hash”; um valor de hash enviado do mesmo servidor e pelo mesmo tipo de conexão do arquivo é totalmente inútil contra modificações maliciosas (qualquer invasor que possa adulterar o arquivo pode adulterar o hash). Hashes só são úteis para isso se você puder confiar mais no hash do que no arquivo; embora às vezes seja esse o caso (torrents, espelhos), eles costumam ser usados ​​quando não é o caso. Portanto, você deve ter muito cuidado com isso sempre que usar hashes para verificação de integridade.

Responder4

Oem geralO ponto do artigo mencionado na pergunta é: SHA1 está obsoleto e deve ser descontinuado enquanto você ainda tem tempo para fazê-lo sem problemas. Em algumas áreas, o tempo está se esgotando, pois o Google e a Microsoft impõem prazos.

Regra prática paradescontinuadatecnologia:

  • Se você fizer um novo design ou adicionar funcionalidades, não use (SHA1).
  • Se você mantém algo antigo, planeje quando substituí-lo (SHA1).

Citação resumida da postagem do blog de 2012 por Bruce Schneier.: "A questão é que nós, na comunidade, precisamos iniciar a migração do SHA-1 para o SHA-2/SHA-3 agora."

informação relacionada