O que são hashes MD5, SHA-1 e SHA-256 e como verificá-los?
Às vezes, você verá hashes MD5, SHA-1 ou SHA-256 exibidos ao lado de downloads durante suas viagens pela Internet, mas não se sabe exatamente o que são. Essas seqüências de texto aparentemente aleatórias permitem que você verifique se os arquivos baixados não estão corrompidos ou adulterados. Você pode fazer isso com os comandos embutidos no Windows, macOS e Linux.
Como funcionam os hashes e como eles são usados para verificação de dados
Os hashes são produtos de algoritmos criptográficos projetados para produzir uma sequência de caracteres. Geralmente, essas cadeias têm um tamanho fixo, independentemente do tamanho dos dados de entrada. Dê uma olhada no gráfico acima e você verá que tanto "Fox" e "A raposa vermelha salta sobre o cão azul" produzem a mesma saída de comprimento.
Agora compare o segundo exemplo no gráfico ao terceiro, quarto e quinto. Você verá que, apesar de uma alteração muito pequena nos dados de entrada, os hashes resultantes são todos muito diferentes uns dos outros. Mesmo que alguém modifique uma pequena parte dos dados de entrada, o hash mudará dramaticamente.
MD5, SHA-1 e SHA-256 são funções hash diferentes. Os criadores de software geralmente pegam um arquivo como um arquivo .iso do Linux ou até mesmo um arquivo .exe do Windows - e o executam através de uma função hash. Eles então oferecem uma lista oficial dos hashes em seus sites.
Dessa forma, você pode baixar o arquivo e depois executar a função hash para confirmar que você possui o arquivo real e original e que ele não foi corrompido durante o processo de download. Como vimos acima, até mesmo uma pequena alteração no arquivo mudará drasticamente o hash.
Eles também podem ser úteis se você tiver um arquivo obtido de uma fonte não oficial e quiser confirmar se é legítimo. Digamos que você tenha um arquivo .ISO do Linux obtido em algum lugar e queira confirmar se ele não foi adulterado. Você pode procurar o hash desse arquivo ISO específico on-line no site da distribuição Linux. Você pode, então, executá-lo através da função hash no seu computador e confirmar que ele corresponde ao valor de hash que você espera ter. Isso confirma que o arquivo que você tem é exatamente o mesmo arquivo que está sendo oferecido para download no site da distribuição Linux, sem nenhuma modificação..
Note que “colisões” foram encontradas com as funções MD5 e SHA-1. Esses são vários arquivos diferentes - por exemplo, um arquivo seguro e um arquivo malicioso - que resultam no mesmo hash MD5 ou SHA-1. É por isso que você deve preferir SHA-256 quando possível.
Como comparar funções de hash em qualquer sistema operacional
Com isso em mente, vamos ver como verificar o hash de um arquivo baixado e compará-lo com o que você recebeu. Aqui estão os métodos para o Windows, macOS e Linux. Os hashes sempre serão idênticos se você estiver usando a mesma função de hashing no mesmo arquivo. Não importa qual sistema operacional você usa.
janelas
Este processo é possível sem qualquer software de terceiros no Windows graças ao PowerShell.
Para começar, abra uma janela do PowerShell iniciando o atalho "Windows PowerShell" no menu Iniciar..
Execute o seguinte comando, substituindo “C: \ path \ to \ file.iso” pelo caminho para qualquer arquivo que você queira ver o hash de:
Get-FileHash C: \ caminho \ para \ arquivo.iso
Levará algum tempo para gerar o hash do arquivo, dependendo do tamanho do arquivo, do algoritmo que você está usando e da velocidade da unidade em que o arquivo está.
Por padrão, o comando mostrará o hash SHA-256 para um arquivo. No entanto, você pode especificar o algoritmo de hash que deseja usar se precisar de um hash MD5, SHA-1 ou outro tipo de hash..
Execute um dos seguintes comandos para especificar um algoritmo de hashing diferente:
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algorithm MD5
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algoritmo SHA1
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algoritmo SHA256
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algoritmo SHA384
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algoritmo SHA512
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algorithm MACTripleDES
Get-FileHash C: \ caminho \ para \ arquivo.iso -Algoritmo RIPEMD160
Compare o resultado da função hash com o resultado esperado. Se for o mesmo valor, o arquivo não foi corrompido, adulterado ou alterado do original.
Mac OS
O macOS inclui comandos para visualizar diferentes tipos de hashes. Para acessá-los, inicie uma janela do Terminal. Você encontrará no Finder> Aplicativos> Utilitários> Terminal.
o md5
comando mostra o hash MD5 de um arquivo:
md5 / path / to / file
o shasum
comando mostra o hash SHA-1 de um arquivo por padrão. Isso significa que os seguintes comandos são idênticos:
shasum / path / to / file
shasum -a 1 / path / to / file
Para mostrar o hash SHA-256 de um arquivo, execute o seguinte comando:
shasum -a 256 / path / to / file
Linux
No Linux, acesse um Terminal e execute um dos seguintes comandos para visualizar o hash de um arquivo, dependendo do tipo de hash que você deseja visualizar:
md5sum / path / to / file
sha1sum / path / to / file
sha256sum / path / to / file
Alguns hashes são criptograficamente assinados para ainda mais segurança
Embora os hashes possam ajudar a confirmar que um arquivo não foi adulterado, ainda há uma avenida de ataque aqui. Um invasor pode obter o controle do site de uma distribuição Linux e modificar os hashes que aparecem nele, ou um invasor pode executar um ataque man-in-the-middle e modificar a página da Web em trânsito se estiver acessando o site via HTTP em vez de HTTPS criptografado.
É por isso que as distribuições modernas do Linux geralmente fornecem mais do que hashes listados nas páginas da web. Eles assinam criptograficamente esses hashes para ajudar na proteção contra invasores que podem tentar modificar os hashes. Você vai querer verificar a assinatura criptográfica para garantir que o arquivo hash foi realmente assinado pela distribuição Linux se você quiser ter certeza absoluta de que o hash e o arquivo não foram adulterados.
Verificar a assinatura criptográfica é um processo mais envolvido. Leia o nosso guia para verificar se os ISOs do Linux não foram adulterados para obter instruções completas.
Crédito de imagem: Jorge Stolfi / Wikimedia