Por que é uma boa prática comparar somas de verificação ao baixar um arquivo?

15

Os sites que fornecem arquivos ISO para download geralmente fornecem as somas de verificação md5 desses arquivos, que podemos usar para confirmar que o arquivo foi baixado corretamente e não foi corrompido.

Por que isso é necessário? Certamente as propriedades de correção de erros do TCP são suficientes. Se um pacote não for recebido corretamente, ele será retransmitido. A natureza de uma conexão TCP / IP não garante a integridade dos dados?

    
por Aditya K 16.05.2015 / 12:52

7 respostas

20

Há provavelmente um zilhão de razões pelas quais alguém deve checar o md5sum, mas algumas me vêm à mente:

  • Atividade maliciosa - sua ISO pode ter sido adulterada no caminho do servidor
  • A página em si é falsificada (é melhor ter os md5sums assinados também :))
  • Download interrompido (apesar da correção de erros TCP) (verifique esta )
  • ISO gravada incorretamente

E leva apenas alguns segundos de qualquer maneira.

    
por 16.05.2015 / 14:28
19

Como foi observado por outros, há muitas possibilidades de corrupção de dados em que qualquer soma de verificação na camada de transporte não pode ajudar, como corrupção acontecendo antes que a soma de verificação seja calculada no lado de envio, uma interceptação MITM e modificando o fluxo ( dados, bem como somas de verificação), corrupção acontecendo depois de validar a soma de verificação no fim de recepção, etc.

Se desconsiderarmos todas essas outras possibilidades e nos concentrarmos nas especificidades da soma de verificação TCP em si e no que Na verdade, em termos de validação de integridade de dados, verifica-se que as propriedades dessa soma de verificação não são de todo abrangentes em termos de detecção de erros. A maneira como esse algoritmo de soma de verificação foi escolhido reflete a necessidade de velocidade em combinação com o período de tempo (final dos anos 70).

É assim que a soma de verificação TCP é calculada:

Checksum: 16 bits

The checksum field is the 16 bit one's complement of the one's complement sum of all 16 bit words in the header and text. If a segment contains an odd number of header and text octets to be checksummed, the last octet is padded on the right with zeros to form a 16 bit word for checksum purposes. The pad is not transmitted as part of the segment. While computing the checksum, the checksum field itself is replaced with zeros.

Isso significa que qualquer corrupção que se equilibre ao somar os dados dessa maneira não será detectada. Há um número de categorias de corrupção nos dados que isso permitirá, mas apenas como um exemplo trivial: alterar a ordem das palavras de 16 bits sempre não será detectado.


Na prática, ele detecta muitos erros típicos, mas não garante a integridade. Também é ajudado por como a camada L2 também faz verificações de integridade (por exemplo, CRC32 de quadros Ethernet), embora apenas para a transmissão no link local, e muitos casos de dados corrompidos nunca são transmitidos para a pilha TCP.

A validação dos dados usando um hash strong, ou preferencialmente uma assinatura criptográfica, está em um nível totalmente diferente em termos de garantir a integridade dos dados. Os dois mal podem ser comparados.

    
por 16.05.2015 / 16:45
6

O TCP / IP garante a integridade dos dados *. Mas isso não garante que 100% de um arquivo tenha sido baixado. Pode haver muitas razões pelas quais isso pode acontecer. Por exemplo: É possível que você possa montar um ISO que perca um ou dois bytes em algum lugar no meio. Você não terá problemas com isso até precisar de um ou dois arquivos específicos que estejam corrompidos. Comparar as somas de verificação garante que você realmente baixou o arquivo inteiro.

* veja comentário

    
por 16.05.2015 / 13:45
6

A soma de verificação do TCP é de apenas 16 bits. Isso significa que, na ausência de outras somas de verificação, um em cada 65536 pacotes corrompidos será aceito como não corrompido. Se, por exemplo, você estivesse fazendo o download de uma imagem de DVD de 8 GB em um link barulhento com uma taxa de corrupção de 1%, você esperaria 81 pacotes corrompidos indetectáveis.

MD5 é uma soma de verificação muito maior, com 128 bits. A probabilidade de esses 81 pacotes produzirem algo com a mesma soma de verificação do original é de cerca de 1 em 1.000.000.000.000.000.000.000.000.000.000.000.

    
por 16.05.2015 / 23:52
6

Existem vários motivos para verificar a soma de verificação de um arquivo baixado via HTTP:

  • Garantindo que você recebeu o arquivo inteiro
    • Alguns clientes, como o Firefox , podem tratar uma conexão interrompida como um download bem-sucedido, deixando você com um arquivo truncado, mas alegando que ele foi baixado OK
  • Garantindo que você recebeu o arquivo correto
    • por exemplo. um servidor com bugs, comprometido ou malicioso pode enviar-lhe outra coisa
    • alguém pode adulterar a transferência (ataque man-in-the-middle) - mesmo o HTTPS não é seguro se o sistema for comprometido por, por exemplo, Superfish, ou o método de criptografia usado é fraco
    • Eles também podem apresentar uma página de download falsa, de modo que você nem está conectado ao servidor real (mas, nesse caso, as somas de verificação não ajudarão muito se você as obtiver do mesmo servidor falso)
    • Um número de ISPs foram pegos injetando Javascript em páginas na transmissão por várias razões 1 ; Dependendo de quão bem isso é implementado, ele pode mangle alguns downloads de arquivos também
    • Um espelho pode estar hospedando uma versão desatualizada do arquivo ou o administrador pode ter carregado o arquivo errado
  • Garantindo que o arquivo não foi corrompido por algo que o TCP não pode detectar
    • por exemplo. o arquivo pode estar corrompido no servidor, então o TCP só irá garantir que o arquivo já corrompido não sofra mais confusão na transmissão
    • ou pode ser corrompido depois de chegar ao seu fim, por memória / disco defeituoso, driver de sistema de arquivos com bugs, etc.
    • As somas de verificação TCP são de apenas 16 bits, portanto as chances não são astronômicas (1 em 65536) de que um pacote corrompido não será detectado
  • Com um ISO, garantindo que o disco queimou corretamente

1 fontes no comentário porque lol rep

    
por 17.05.2015 / 02:17
2

Daniel, dependendo da ferramenta que você está usando para o download do ISO por palavra. Se for o Firefox, pode mostrar o download do arquivo. No entanto, você pode não ter o ISO completo intacto. Se você a queimar, tente usá-la, as informações podem estar faltando. Isso acontece periodicamente em diferentes servidores da Web que hospedam arquivos.

É uma boa prática, pelo menos, comparar o tamanho do arquivo (total de bytes ou bits) para garantir que eles correspondam. O Windows mostrará a contagem de bytes do arquivo diferente, depois o Linux. A verificação da soma MD5 mostrará os mesmos valores, não importa qual OS é usado. Espero que isso ajude um pouco. Felicidades ...

    
por 16.05.2015 / 19:43
2

Noto muitas respostas interessantes, mas há uma última coisa a considerar: Problema de dois generais

O problema dos dois generais e o problema dos generais bizantinos considera especificamente as implicações da transferência segura de informações através de canais não confiáveis.

As somas de verificação são apenas mais uma camada de "confiabilidade crescente" e uma com uma chance muito pequena de falha. Esta é a razão pela qual é tão popular.

    
por 18.05.2015 / 00:27

Tags