Soma de verificação
Uma soma de verificação é um valor compacto calculado a partir de dados para ajudar a detectar mudanças acidentais ou corrupção.
Definição
Uma soma de verificação é um pequeno valor calculado de um bloco de dados para que depois um programa ou uma pessoa possa recalculá-lo e comparar o resultado. Se os valores forem diferentes, os dados quase certamente mudaram durante armazenamento, cópia ou transmissão.
Somas de verificação são comuns em formatos de arquivo, protocolos de rede, downloads, backups e arquivos compactados. Elas são úteis por serem compactas e fáceis de comparar, não por conterem os dados originais.
Como funciona
O algoritmo lê os bytes exatos e os combina em um valor de tamanho fixo. CRC32, por exemplo, produz um valor de 32 bits frequentemente escrito como 8 caracteres hexadecimais. Hashes criptográficos como SHA-256 também são usados como somas de verificação quando o resumo publicado é confiável.
O mesmo texto visível pode ter somas de verificação diferentes se a codificação dos bytes, quebras de linha, espaços ou conteúdo do arquivo forem diferentes. A soma de verificação de um nome de arquivo não é a soma de verificação do arquivo.
Limites de segurança
Muitos algoritmos de soma de verificação, incluindo somas simples e CRCs, são projetados para erros acidentais e não para adulteração maliciosa. Um atacante que possa alterar tanto os dados quanto a soma de verificação muitas vezes consegue fazê-los coincidir.
Use HMAC, assinatura digital ou um mecanismo de integridade específico do protocolo quando o modelo de ameaça incluir modificação deliberada. Um hash criptográfico como SHA-256 oferece resistência a colisões maior que CRC32, mas um hash simples sozinho ainda não prova quem produziu os dados.
Geralmente não. Ela detecta que os dados mudaram; códigos de correção de erros ou backups são necessários para reconstruir dados ausentes ou danificados.
Não contra adversários. CRC32 é rápido e bom para detectar corrupção acidental comum, mas não foi projetado para resistir a adulteração deliberada.
Os dados ou o algoritmo são diferentes. Verifique os bytes exatos do arquivo, codificação de texto, quebras de linha, espaços ocultos, variante do algoritmo e formato de saída.