A soma de verificação da Internet * não * detectará o erro?

0

É possível inverter dois bits em uma mensagem grande, de forma que a soma de verificação da Internet não detecte o erro?

    
por Klaasjan 25.11.2015 / 23:14

1 resposta

2

Não existe uma soma de verificação da Internet.

No entanto, alguns dos protocolos do conjunto de protocolos de Internet incluem uma soma de verificação. Estes são geralmente calculados como uma soma de módulo-65535, o que significa que cada posição de 16º bit contribuirá com o mesmo para o valor final.

Assim, se você virar um bit de 0 para 1 e outro bit de 1 para 0, e se esses dois bits forem múltiplos de 16 bits um do outro no pacote, a soma de verificação não será afetada. Por isso, é fácil construir um cenário em que dois bits podem ser invertidos em um pacote sem que o checksum o detecte.

Por exemplo, imagine um pacote contendo esses bytes 47 6f 6f 64 (hex). O segundo byte termina com um bit de 1 bit e o quarto termina com um bit de 0. Esses bits estão separados por 16 posições, portanto, se os invertermos, a soma de verificação não será afetada. 47 6e 6f 65 tem exatamente dois bits invertidos, e ele terá a mesma soma de verificação.

No entanto, é importante notar que essas somas de verificação não cobrem tudo o que é enviado pela Internet, portanto é mais provável que a corrupção não detectada aconteça por outros motivos.

Agora vamos considerar protocolos individuais.

IPv4 tem uma soma de verificação de cabeçalho. Ele cobre apenas o cabeçalho, portanto, qualquer dano da carga útil não é detectado. Devido a cada roteador ter que atualizar o campo TTL, a soma de verificação deve ser recalculada em cada salto. É fácil introduzir um erro de implementação no qual dados corrompidos podem resultar no recalculo da soma de verificação pelos dados corrompidos.

IPv6 não tem nenhuma soma de verificação de cabeçalho. Ele foi eliminado devido aos problemas mencionados acima e porque há um pequeno benefício de desempenho por não ter que atualizá-lo e porque as somas de verificação em outras camadas de protocolo são mais adequadas.

O

TCP calcula uma soma de verificação de todos os dados de carga e os endereços IP e número de protocolo também. Portanto, mesmo que o endereço IP esteja corrompido durante o voo e o pacote seja entregue ao destino errado por causa disso, a soma de verificação TCP poderá detectá-lo e descartar o pacote.

UDP como o TCP calcula uma soma de verificação sobre dados de carga útil, endereços IP e número de protocolo. Isso, no entanto, é opcional. Os pacotes UDP podem ser enviados por IPv4 com um zero no campo de soma de verificação, caso em que o destinatário aceitará os dados, independentemente de qualquer dano nos dados de carga útil em trânsito. Isso só é verdade para o IPv4. No IPv6, a soma de verificação do UDP é obrigatória. Isso supostamente é compensar a falta de soma de verificação de cabeçalho, o que significa que a soma de verificação UDP é a única proteção para garantir que um pacote seja descartado caso um endereço IP seja corrompido em trânsito.

O UDPlite se comporta exatamente como o UDP, exceto pelo fato de que a soma de verificação não precisa cobrir todos os dados da carga útil. O remetente decide quantos bytes (contados a partir do início do pacote) precisam ser cobertos por checksum. Corrupção no final do pacote permanecerá sem ser detectada.

    
por 25.11.2015 / 23:18

Tags