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?
networking
files
checksum
Karolis Juodelė
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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] :
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).
fonte
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:
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.
fonte
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.
fonte
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.
fonte
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:
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