O que é o SHA-1?
O SHA em SHA-1 significa Algoritmo de hash seguroe, simplesmente, você pode pensar nisso como um tipo de problema ou método de matemática que embaralha os dados que são colocados nele. Desenvolvido pela NSA dos Estados Unidos, é um componente essencial de muitas tecnologias usadas para criptografar transmissões importantes na Internet. Os métodos comuns de criptografia SSL e TLS, dos quais você pode ter ouvido falar, podem usar uma função hash como SHA-1 para criar os certificados assinados que você vê na barra de ferramentas do navegador.
Isso é muita informação técnica, mas para simplificar: um hash não é a mesma coisa que criptografia, é usado para identificar se um arquivo foi alterado.
Como esta tecnologia me afeta?
Digamos que você precise visitar um site em particular. Seu banco, seu e-mail e até mesmo sua conta do Facebook - todos usam criptografia para manter os dados que você envia a eles privados. Um site profissional fornecerá criptografia obtendo um certificado de uma autoridade confiável - uma terceira parte, confiável para garantir que a criptografia esteja no nível, privada entre o site e o usuário e não seja espionada por nenhuma outra parte. Esse relacionamento com o terceiro, chamado Autoridades de Certificaçãoou CA, é crucial, já que qualquer usuário pode criar um certificado “auto-assinado” - você mesmo pode fazer isso sozinho em uma máquina rodando Linux com Open SSL. A Symantec e a Digicert são duas empresas de CA amplamente conhecidas, por exemplo.
Vamos analisar um cenário teórico: o How-To Geek quer manter as sessões dos usuários logadas privadas com criptografia, por isso faz uma petição a uma CA como a Symantec com um Solicitação de Assinatura de Certificadoou CSR. Eles criam um chave pública e chave privada para criptografar e descriptografar dados enviados pela Internet. A solicitação de CSR envia a chave pública à Symantec junto com informações sobre o site. A Symantec verifica a chave em relação ao seu registro para verificar se os dados estão inalterados por todas as partes, porque qualquer pequena alteração nos dados torna o hash radicalmente diferente.
Como o hash é fácil de monitorar e impossível (alguns diriam “difícil”) de reverter, a assinatura hash verificada e correta significa que o certificado e a conexão podem ser confiáveis, e os dados podem ser enviados criptografados de ponta a ponta. Mas e se o hash não foi realmente único?
O que é um ataque de colisão e é possível no mundo real?
Você pode ter ouvido falar do "Problema de Aniversário" em matemática, embora você possa não saber o que foi chamado. A idéia básica é que, se você reunir um grupo grande de pessoas, é bem provável que duas ou mais pessoas tenham o mesmo aniversário. Mais do que você espera, na verdade - o suficiente para parecer uma estranha coincidência. Em um grupo com apenas 23 pessoas, há 50% de chance de que dois compartilhem um aniversário.
Encontrar hashes correspondentes em dois arquivos é chamado de ataque de colisão. Sabe-se que pelo menos um ataque de colisão em larga escala já aconteceu para hashes MD5. Mas em 27 de fevereiro de 2017, o Google anunciou o SHAttered, a primeira colisão trabalhada para o SHA-1. O Google conseguiu criar um arquivo PDF que tinha o mesmo hash SHA-1 de outro arquivo PDF, apesar de ter um conteúdo diferente.
O SHAttered foi executado em um arquivo PDF. Os PDFs são um formato de arquivo relativamente solto; muitas pequenas alterações no nível de bits podem ser feitas sem impedir que os leitores o abram ou causem diferenças visíveis. Os PDFs também costumam ser usados para entregar malware. Embora o SHAttered possa funcionar em outros tipos de arquivos, como ISOs, os certificados são rigidamente especificados, tornando improvável tal ataque.
Então, quão fácil é esse ataque para executar? O SHAttered foi baseado em um método descoberto por Marc Stevens em 2012, que exigiu mais de 2 ^ 60,3 (9,223 quintilhões) de operações SHA-1 - um número impressionante. No entanto, esse método ainda é 100.000 vezes menos operações do que seria necessário para obter o mesmo resultado com força bruta. O Google descobriu que, com 110 placas gráficas high-end trabalhando em paralelo, levaria aproximadamente um ano para produzir uma colisão. Alugar esse tempo de computação do Amazon AWS custaria cerca de US $ 110.000. Tenha em mente que à medida que os preços caem nas peças do computador e você pode obter mais energia por menos, ataques como o SHAttered se tornam mais fáceis de serem executados.
US $ 110.000 podem parecer muito, mas estão dentro da esfera de acessibilidade para algumas organizações - o que significa que os cibervilos da vida real podem falsificar assinaturas de documentos digitais, interferir nos sistemas de backup e controle de versão como Git e SVN ou fazer com que uma ISO de Linux mal-intencionada pareça legítima.
Felizmente, existem fatores atenuantes que impedem tais ataques. O SHA-1 é raramente usado para assinaturas digitais. As autoridades de certificação não fornecem mais certificados assinados com o SHA-1, e tanto o Chrome quanto o Firefox perderam o suporte para eles. Normalmente, as distribuições Linux são lançadas com mais freqüência do que uma vez por ano, o que torna impraticável que um invasor crie uma versão mal-intencionada e, em seguida, gere um preenchido para ter o mesmo hash SHA-1.
Por outro lado, alguns ataques baseados no SHAttered já estão acontecendo no mundo real. O sistema de controle de versão do SVN usa o SHA-1 para diferenciar arquivos. O upload dos dois PDFs com hashes SHA-1 idênticos para um repositório SVN fará com que ele seja corrompido.
Como posso me proteger de ataques SHA-1?
Não há muito para o usuário típico fazer. Se você estiver usando somas de verificação para comparar arquivos, deverá usar SHA-2 (SHA-256) ou SHA-3 em vez de SHA-1 ou MD5. Da mesma forma, se você for um desenvolvedor, use algoritmos de hash mais modernos, como SHA-2, SHA-3 ou bcrypt. Se você tem medo de que o SHAttered tenha sido usado para fornecer dois arquivos distintos com o mesmo hash, o Google lançou uma ferramenta no site do SHAttered que pode verificar você.
Créditos de imagem: Lego Firefox, muitos hash, por favor, não prejudique o autor da Web desconhecido, Google.