Por que calcular somas de verificação dos arquivos baixados?

19

Costumo ver uma soma de verificação ao lado de um arquivo disponível para download. O objetivo desta prática me escapa. Obviamente, é para detectar arquivos corrompidos, mas qual poderia ser a causa dessa corrupção e é provável?

Certamente o arquivo não será danificado por erros de transmissão, pois eles são detectados pelo protocolo de rede. E certamente qualquer invasor que possa alterar o arquivo para fins maliciosos também poderá alterar a soma de verificação fornecida. Estamos verificando erros no disco rígido? É mais provável que isso aconteça ao escrever e ao ler? Estou perdendo algo importante?

Karolis Juodelė
fonte
2
E certamente qualquer invasor que possa alterar o arquivo para fins maliciosos também poderá alterar a soma de verificação fornecida. - Concordo, uma soma de verificação não garante autenticidade se não for veiculada em HTTPS, ou você não tem certeza de que o certificado SSL pertence ao criador do software.
Mihai
11
A soma de verificação TCP é realmente muito ruim: são apenas 16 bits. Se você estiver entregando arquivos grandes a milhares de pessoas (pense em imagens de DVD de instalação), é praticamente certo que alguns desses downloads serão indetectivelmente corrompidos.
Mark
@ Mihai Claro, provavelmente diminui um pouco o risco. Por exemplo, se o seu servidor estiver infectado por um vírus que modifica automaticamente todas as respostas binárias (ou apenas substitui todos os executáveis ​​que você baixa). Não é perfeito, mas pode ajudar em alguns casos.
Luaan 14/07/2015

Respostas:

9

Detectar corrupção não está totalmente correto. Verificar a integridade do software seria um uso mais correto. Normalmente, um software não é distribuído a partir de um único servidor. O mesmo software pode ser distribuído a partir de muitos servidores. Portanto, quando você baixa um software específico, o servidor mais próximo ao seu destino é escolhido como fonte de download para aumentar a velocidade do download. No entanto, esses servidores 'não oficiais' (de terceiros) nem sempre podem ser confiáveis. Eles podem / podem incluir cavalos de Troia / vírus / adware / backdoors no programa, o que não é bom .

Portanto, para garantir que o software baixado seja exatamente o mesmo do software 'oficial' lançado pela organização em questão, a soma de verificação é usada. Os algoritmos usados ​​para gerar somas de verificação são tais que mesmo uma ligeira alteração no programa resulta em uma soma de verificação totalmente diferente.

Exemplo retirado do Prix ​​Unix e Internet Security

MD5 (há US $ 1500 na caixa azul.) = 05f8cfc03f4e58cbee731aa4a14b3f03

MD5 (há US $ 1100 na caixa azul.) = D6dee11aae89661a45eb9d21e30d34cb

As mensagens, que diferem apenas em um único caractere (e, nesse caractere, em apenas um único bit binário), possuem resumos de mensagens completamente diferentes.

Se o arquivo baixado tiver a mesma soma de verificação que a dada no site 'oficial', pode-se presumir que o software não foi modificado.

Nota: Em teoria, dois arquivos diferentes PODEM ter o mesmo valor de hash. Para que o algoritmo Hash / soma de verificação seja considerado seguro, deve ser computacionalmente muito caro encontrar outro arquivo que produz a mesma soma de verificação.

Aswin PJ
fonte
11
Portanto, se o arquivo e a soma de verificação são fornecidos pelo mesmo host, é um pouco inútil?
Karolis Juodelė
Talvez. A soma de verificação é apenas um meio de verificar a integridade. Digamos que em um cenário específico, se um invasor obtiver acesso ao servidor FTP da organização, ele poderá alterar o software. Mas você ainda pode usar a mesma soma de verificação para verificar a integridade SE E SOMENTE SE O invasor não invadiu o servidor HTTP. Portanto, se ambos estão sob o controle do atacante, ele pode alterar facilmente os dois e você não saberia a diferença.
Aswin PJ
11
Outra situação em que a soma de verificação pode ser relevante é detectar situações em que uma transferência de arquivo é retomada após um soluço, mas o arquivo foi alterado nesse ínterim.
22715
@ KarolisJuodelė O link para download pode estar no mesmo site / host. Mas onde ele resolve pode ser diferente com base no servidor mais próximo. Observe também que, a página de verificação deve ser https enquanto o download pode ser qualquer protocolo http ou ftp
balki
10

E certamente qualquer invasor que possa alterar o arquivo para fins maliciosos também poderá alterar a soma de verificação fornecida.

Nem sempre.

Você pode ter um link de conteúdo junto com uma soma de verificação veiculada no HTTPS. O link pode ser um link não criptografado - HTTP ou FTP simples ou qualquer outra coisa.

Por outro lado, a conexão não criptografada pode ser facilmente intermediária, por outro lado, pode ser mais rápida ou mais conveniente para o webmaster (menos recursos de computação necessários e oportunidades para a rede armazenar em cache essas coisas).

Se a soma de verificação for veiculada em uma conexão confiável ininterrupta e a carga útil corresponder à soma de verificação, você obterá o melhor dos dois mundos (desde que a soma de verificação seja criptograficamente segura).


Dito isso, você me lembrou que existem distros que afirmam ser "seguros" e, no entanto, o site deles é apenas em HTTP, assim como os links para suas imagens.

Exemplos:

É meio engraçado, porque você não pode ficar mais inseguro disso. Mesmo que eles próprios não sejam maliciosos, qualquer provedor de Internet pode substituir facilmente o site e a imagem por falsificações, e convencer alguém a instalar um sistema operacional fraudulento enquanto faz parecer que está recebendo uma distribuição Linux "segura" é a melhor opção. pwnage.

PSkocik
fonte
11
Há muitas coisas menos seguras que o HTTP não autenticado, que requer que um MITM ativo seja subvertido.
user253751
4

Quanto ao motivo pelo qual a verificação de erro TCP / IP não captura tudo: De /programming//a/17083365/2551539

Existem diferentes erros que podem ocorrer (que o TCP detectará) [apontado por Jacob Krall] :

  • Ordem incorreta dos pacotes
  • Perda de pacotes
  • Dados corrompidos dentro do pacote
  • Pacotes fantasmas (o receptor obtém pacotes que nunca foram enviados)

Edite com algumas informações adicionais:

A página 9 deste estudo: http://paperhub.s3.amazonaws.com/8ff1e4414c070e900da8ab3885593085.pdf sugere que existem erros que podem não ser detectados pelo TCP. Meu entendimento é que isso acontece quando um datagrama incorreto (chamado de "gêmeo ruim" no estudo) tem a mesma soma de verificação que o datagrama pretendido (chamado de "gêmeo bom" no estudo).

Jesse Adam
fonte
2
Leia a resposta com mais cuidado - todos esses erros são corrigidos pelo TCP.
26630 Jacob Krall
4

Erros de transmissão podem acontecer. Os protocolos da camada de link geralmente contêm somas de verificação ou códigos de correção de erros para evitá-los, mas não são perfeitos: há uma pequena chance de um erro não ser corrigido. Os pacotes TCP também contêm uma soma de verificação, o que reduz a probabilidade de erros em 2 ^ 16. Isso cria uma probabilidade muito pequena, mas diferente de zero, de um erro de transmissão. É o tipo de coisa que a maioria das pessoas nunca encontrará sem saber durante a vida, mas não está na faixa de probabilidade de nunca em um bilhão de anos de somas de verificação criptográficas.

É improvável que um erro de hardware no cliente, como corrupção de disco, seja verificado logo após o download, porque a soma de verificação será calculada a partir da cópia em cache. Por outro lado, verificar se há falhas na inicialização da mídia de inicialização é útil - por outro lado, você está realmente testando a mídia e pressupõe que o hardware pode estar com defeito.

O verdadeiro motivo para calcular somas de verificação é de fato detectar erros no nível de software. Isso acontece. Os erros possíveis incluem:

  • Um arquivo foi parcialmente baixado. Servidores e navegadores da Web tendem a ser ruins na detecção de conexões interrompidas e na limpeza de arquivos parciais. O erro pode ser durante o download ou pode ter sido durante o upload, acrescenta-se.
  • Houve alguma corrupção ao longo do caminho. Por exemplo, algum nó intermediário na distribuição do arquivo decidiu aplicar uma conversão de codificação de texto a um arquivo binário. Ou algum servidor mal configurado exibiu uma mensagem de erro em vez do conteúdo.
  • Uma variante: o arquivo errado foi carregado.
  • Raro, mas pode ser útil para proteger: um adversário alterou o arquivo, mas não conseguiu alterar a soma de verificação de referência. As infra-estruturas de segurança tendem a tornar mais difícil para um invasor propagar uma soma de verificação inválida do que um arquivo inválido. Por exemplo, arquivos grandes geralmente são distribuídos através de espelhos, enquanto as somas de verificação são atendidas por um site central com menos oportunidades de adulteração (acesso do servidor apenas aos líderes do projeto, distribuição por HTTPS).

Na prática, a verificação do tamanho do arquivo baixado detecta os erros mais comuns, que são arquivos truncados ou convertidos de forma inválida. As somas de verificação têm a vantagem de detectar estritamente mais problemas.

Gilles 'SO- parar de ser mau'
fonte
2

Em teoria, a rede entregaria todos os segmentos adequadamente e eles seriam montados corretamente no disco e nada daria errado.

Na realidade, computadores são máquinas e software, ambos projetados e construídos por seres humanos falíveis. No caso de um download não funcionar de alguma forma por um motivo ou outro, como o download por meio de algum dispositivo intermediário, inócuo ou nefasto que manipula os dados, é bom ter uma maneira de verificar se o arquivo quase certamente foi baixado como uma réplica precisa do arquivo no lado do provedor.

Uma soma de verificação de alta qualidade é um método confiável para validar a integridade dos dados.

Jason
fonte
0

Nenhuma soma de verificação pode ser 100% confiável, porque muitos arquivos são mapeados para a mesma soma de verificação.

Quando adicionamos outra soma de verificação ao trem, multiplicamos a probabilidade de detectar um erro.

Há tanto tráfego na internet que erros são realmente comuns.

casualmente do Reino Unido
fonte
Também há podridão por bits.
13135 Deer Hunter
O que deve ser detectado pelo próprio hardware de armazenamento, mas a soma de verificação é um recurso essencial do ZFS e do btrfs, duvido que esteja funcionando perfeitamente.
Max Ried
0

A soma de verificação também ajudará a impedir o download corrompido devido à seguinte situação:

O servidor possui um erro interno ao veicular o download, portanto, o download é finalizado.

Quando isso acontece, existem alguns resultados possíveis:

  • Bom servidor - a implementação do servidor de codificação de transferência Chunked não é de buggy:
    • Um bom cliente (como cURL, wget) poderá informar que este é um download incorreto, pois o bloco final nunca foi enviado do servidor.
    • Um cliente inválido achará que o download foi concluído, pois não há mais dados sendo recebidos do servidor.
  • Servidor inválido - a implementação do servidor da codificação de transferência Chunked é incorreta e envia o bloco final para esse download incorreto:
    • Qualquer cliente acha que esse download foi concluído com êxito.

Eu já vi esses comportamentos entre as ferramentas de cliente e as estruturas de servidor populares. Portanto, quando você não usa soma de verificação, no caso de "bom servidor + cliente ruim" ou "servidor ruim + qualquer cliente", o download corrompido será despercebido .


fonte