O que é SHAttered? Ataques de colisão SHA-1, explicados

No primeiro dia de 2016, a Mozilla encerrou o suporte para uma tecnologia de segurança enfraquecida chamada SHA-1 no navegador Firefox. Quase imediatamente, eles reverteram sua decisão, pois isso cortaria o acesso a alguns sites mais antigos. Mas em fevereiro de 2017, seus medos finalmente se tornaram realidade: os pesquisadores quebraram o SHA-1 criando o primeiro ataque de colisão do mundo real . Aqui está o que tudo isso significa.

O que é SHA-1?

hashes

O SHA em SHA-1 significa Secure Hash Algorithm e, simplesmente, você pode pensar nele como um tipo de problema matemático ou método que embaralha os dados que são colocados nele . Desenvolvido pela NSA dos Estados Unidos, é um componente central de muitas tecnologias usadas para criptografar transmissões importantes na Internet. Métodos comuns de criptografia SSL e TLS, dos quais você já deve 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.

gráfico matemático sha-1

Não vamos nos aprofundar na matemática e ciência da computação de qualquer uma das funções SHA, mas aqui está a ideia básica. Um “hash” é  um código exclusivo baseado na entrada de quaisquer dados . Mesmo uma seqüência pequena e aleatória de letras inseridas em uma função hash como SHA-1 retornará um número longo e definido de caracteres, tornando (potencialmente) impossível reverter a seqüência de caracteres de volta aos dados originais. É assim que geralmente funciona o armazenamento de senha. Quando você cria uma senha, sua entrada de senha é criptografada e armazenada pelo servidor. Ao retornar, quando você digita sua senha, ela é criptografada novamente. Se corresponder ao hash original, a entrada pode ser considerada a mesma e você terá acesso aos seus dados.

impressão digital sha

As funções de hash são úteis principalmente porque tornam mais fácil saber se a entrada, por exemplo, um arquivo ou uma senha, foi alterada. Quando os dados de entrada são secretos, como uma senha, o hash é quase impossível de reverter e recuperar os dados originais (também conhecido como “chave”). Isso é um pouco diferente de “criptografia”, cujo propósito é embaralhar dados com o propósito de decodificá-los posteriormente , usando cifras e chaves secretas. Hashes destinam-se simplesmente a garantir a integridade dos dados – para garantir que tudo seja igual. Git, o software de controle de versão e distribuição de código-fonte aberto, usa hashes SHA-1 exatamente por esse motivo .

Recomendado:  O que é um arquivo .DOCX e como ele difere de um arquivo .DOC no Microsoft Word?

São muitas informações técnicas, mas para simplificar: um hash não é a mesma coisa que criptografia, já que é usado para identificar se um arquivo foi alterado .

Como essa tecnologia me afeta?

openssl

Digamos que você precise visitar um site com privacidade. Seu banco, seu e-mail e até mesmo sua conta do Facebook – todos usam criptografia para manter os dados que você envia privados. Um site profissional fornecerá criptografia obtendo um certificado de uma autoridade confiável – um terceiro, de confiança para garantir que a criptografia seja no nível, privada entre o site e o usuário, e não sendo espionada por nenhuma outra parte. Esse relacionamento com terceiros, chamados de Autoridades de Certificação , ou CA , é crucial, pois qualquer usuário pode criar um certificado “autoassinado” – você mesmo pode fazer isso em uma máquina rodando Linux com Open SSL . Symantec e Digicert são duas empresas CA amplamente conhecidas, por exemplo.

assinatura documeng

Vamos examinar um cenário teórico: o How-To Geek deseja manter as sessões dos usuários conectadas privadas com criptografia, portanto, solicita a uma CA como a Symantec com uma solicitação de assinatura de certificado , ou CSR . Eles criam uma chave pública e uma chave privada para criptografar e descriptografar dados enviados pela Internet. A solicitação de CSR envia a chave pública para a Symantec junto com informações sobre o site. A Symantec compara a chave com seu registro para verificar se os dados não foram alterados por todas as partes, porque qualquer pequena mudança nos dados torna o hash radicalmente diferente.

fechadura digital

Essas chaves públicas e certificados digitais são assinados por funções hash, porque a saída dessas funções é fácil de ver. Uma chave pública e um certificado com um hash verificado da Symantec (em nosso exemplo), uma autoridade, garante a um usuário do How-To Geek que a chave não foi alterada e não foi enviada por alguém mal-intencionado.

certificado

Como o hash é fácil de monitorar e impossível (alguns diriam “difícil”) de reverter, a assinatura hash correta e verificada 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 fosse realmente único ?

O que é um ataque de colisão e é possível no mundo real?

Você pode ter ouvido falar do “Problema do Aniversário” em matemática , embora não saiba como era chamado. A ideia básica é que, se você reunir um grupo grande o suficiente de pessoas, há grandes chances de que duas ou mais pessoas façam aniversário no mesmo dia. Mais do que você esperava, na verdade – o suficiente para parecer uma coincidência estranha. Em um grupo de apenas 23 pessoas, há 50% de chance de que dois façam aniversário.

Recomendado:  O novo Thelio do System76 é o desktop Linux a ser batido

sshot-642

Esta é a fraqueza inerente a todos os hashes, incluindo SHA-1. Teoricamente, a função SHA deve criar um hash exclusivo para todos os dados colocados nela, mas à medida que o número de hashes aumenta, torna-se mais provável que diferentes pares de dados possam criar o mesmo hash. Portanto, pode-se criar um certificado não confiável com um hash idêntico a um certificado confiável. Se eles fizerem com que você instale esse certificado não confiável, ele pode se disfarçar como confiável e distribuir dados maliciosos.

Encontrar hashes correspondentes em dois arquivos é chamado de ataque de colisão . Sabe-se que pelo menos um ataque de colisão em grande escala já ocorreu para hashes MD5. Mas em 27 de fevereiro de 2017, o Google anunciou o SHAttered , a primeira colisão criada para o SHA-1. O Google conseguiu criar um arquivo PDF com o mesmo hash SHA-1 de outro arquivo PDF, apesar de ter conteúdo diferente.

SHAttered foi executado em um arquivo PDF. PDFs são um formato de arquivo relativamente flexível; muitas pequenas alterações no nível de bits podem ser feitas sem impedir que os leitores abram ou causem quaisquer diferenças visíveis. Os PDFs também são freqüentemente usados ​​para entregar malware. Embora o SHAttered possa funcionar em outros tipos de arquivos, como ISOs, os certificados são especificados de forma rígida, tornando esse tipo de ataque improvável.

Então, quão fácil é realizar esse ataque? O SHAttered foi baseado em um método descoberto por Marc Stevens em 2012 que exigia 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 de última geração trabalhando em paralelo, levaria aproximadamente um ano para produzir uma colisão. O aluguel desse tempo de computação do Amazon AWS custaria cerca de US $ 110.000. Lembre-se de que, à medida que os preços das peças do computador caem e você pode obter mais energia com menos, ataques como o SHAttered se tornam mais fáceis de realizar.

Recomendado:  Como construir seu próprio pacote de segurança na Internet gratuitamente

US $ 110.000 pode parecer muito, mas está dentro do reino de acessibilidade para algumas organizações – o que significa que os cibervilianos da vida real podem falsificar assinaturas de documentos digitais, interferir em sistemas de backup e controle de versão como Git e SVN ou fazer um ISO Linux malicioso parecer legítimo.

Felizmente, existem fatores atenuantes que impedem esses ataques. SHA-1 raramente é usado para assinaturas digitais mais. As autoridades de certificação não fornecem mais certificados assinados com SHA-1 e o Chrome e o Firefox abandonaram o suporte para eles. As distribuições do Linux normalmente são lançadas com mais frequência do que uma vez por ano, tornando impraticável para um invasor criar uma versão maliciosa e então gerar uma versão preenchida para ter o mesmo hash SHA-1.

Por outro lado, alguns ataques baseados em SHAttered já estão acontecendo no mundo real. O sistema de controle de versão SVN usa SHA-1 para diferenciar arquivos. Carregar os 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 estiver usando somas de verificação para comparar arquivos, você deve usar SHA-2 (SHA-256) ou SHA-3 em vez de SHA-1 ou MD5. Da mesma forma, se você for um desenvolvedor, certifique-se de usar algoritmos de hash mais modernos, como SHA-2, SHA-3 ou bcrypt. Se você está preocupado porque o SHAttered foi usado para fornecer o mesmo hash a dois arquivos distintos, o Google lançou uma ferramenta no site do SHAttered que pode verificar para você.

Créditos de imagem: Lego Firefox , muito hash , por favor, não machuque o autor da Web desconhecido, Google .