A Corrupção Silenciosa que Ninguém Detecta
O pipeline era simples e funcionava há três anos: o ERP gerava o feed de catálogo às 23h, um job FTP transferia o arquivo para o servidor do e-commerce, e às 00h30 um script de importação processava o arquivo e atualizava preços, estoque e disponibilidade de 80.000 SKUs. Tudo automatizado, tudo monitorado — o script verificava se o arquivo existia, se tinha mais de zero bytes, e se a importação completava sem erros de sintaxe.
O problema apareceu numa terça-feira de manhã, quando uma cliente tentou comprar um porcelanato 60x60 que estava com preço de R$ 0,89 no site — o preço correto era R$ 89,90. A análise do arquivo importado mostrou que o campo de preço daquele SKU estava truncado: 0.89 em vez de 89.90. O arquivo completo tinha 847 produtos com campos de preço truncados — todos com valores abaixo de R$ 1,00.
O que aconteceu: durante a transmissão FTP, um timeout de rede causou reconexão automática. O cliente FTP reconectou e continuou a transferência do ponto onde havia parado — mas o servidor FTP não suportava resume corretamente, o que resultou em sobreposição parcial de dados no meio do arquivo. O arquivo resultante tinha exatamente o tamanho esperado, passava em todas as verificações de integridade de tamanho, e continha JSON sintaticamente válido — mas com valores de preço corrompidos que nenhuma validação de sintaxe detectaria.
Como SHA-512 Difere de SHA-256 e MD5 em Uso Prático
SHA-512, SHA-256 e MD5 são todos algoritmos de hash criptográfico — eles produzem um digest de tamanho fixo a partir de uma entrada de qualquer tamanho. A diferença prática para verificação de integridade de arquivos:
- MD5 (128 bits, 32 caracteres hex): rápido, amplamente disponível, mas com colisões demonstradas. Para verificação de integridade de arquivo (não de senha), a questão não são as colisões em si — é que MD5 é considerado confiável para integridade de arquivos em ambientes não adversariais. O problema de segurança do MD5 afeta senhas, não checksums de arquivos. Mas por boa prática, use pelo menos SHA-256.
- SHA-256 (256 bits, 64 caracteres hex): padrão atual para a maioria dos casos de integridade de arquivo. Colisões computacionalmente inviáveis. Mais lento que MD5 mas negligivelmente em arquivos de alguns MB. Recomendado pelo NIST como padrão mínimo.
- SHA-512 (512 bits, 128 caracteres hex): maior resistência teórica a ataques futuros (incluindo computação quântica parcial). Em hardware de 64 bits, SHA-512 é frequentemente mais rápido que SHA-256 porque aproveita melhor registradores de 64 bits. Para catálogos de produto e arquivos de dados críticos, SHA-512 é a escolha conservadora e defensivamente mais robusta.
Para integridade de arquivo em pipeline de dados de varejo — onde o risco não é ataque adversarial mas corrupção acidental —, SHA-256 já é mais do que suficiente. SHA-512 é a escolha para ambientes com requisitos de auditoria formal, onde o hash fica em log permanente e precisa sobreviver a décadas de evolução tecnológica.
Use o Gerador SHA-512 e CRC32 para gerar checksums de arquivos localmente antes de enviá-los, e comparar com o hash recebido na outra ponta da transmissão.
Implementando Checksum em Pipeline de Dados ERP → E-commerce
O protocolo de integridade que implementamos após o incidente de corrupção:
No lado do ERP (geração do arquivo)
- Gerar o arquivo de catálogo normalmente
- Calcular o SHA-512 do arquivo gerado:
sha512sum catalogo_20250605.json - Criar um arquivo de checksum paralelo:
catalogo_20250605.json.sha512contendo o hash e o nome do arquivo - Transferir ambos os arquivos: o JSON e o .sha512
No lado do e-commerce (antes da importação)
- Verificar se ambos os arquivos foram recebidos
- Calcular o SHA-512 do arquivo JSON recebido
- Comparar com o hash no arquivo .sha512
- Se os hashes não coincidem: bloquear a importação, disparar alerta, aguardar retransmissão
- Se coincidem: prosseguir com a importação
Em PHP, a verificação é uma linha: if (hash_file('sha512', $arquivoRecebido) !== $hashEsperado) { /* bloquear */ }
CRC32 para Verificação Rápida vs SHA-512 para Auditoria
CRC32 é um checksum de 32 bits (8 caracteres hex) — muito mais rápido que SHA-512 mas sem propriedades criptográficas. Ele detecta erros acidentais de transmissão mas não resistiria a modificação intencional de arquivo (um atacante pode fabricar um arquivo diferente com o mesmo CRC32 com esforço razoável).
A combinação que usamos em produção:
- CRC32 no momento da transferência: verificação rápida após FTP/SFTP, integrada ao protocolo de transferência. Detecta a maioria dos erros de rede antes de qualquer processamento.
- SHA-512 antes da importação: verificação completa e criptograficamente segura antes de qualquer mudança no banco de dados de produção. O hash fica em log de auditoria com timestamp.
CRC32 com 8 caracteres tem probabilidade de colisão acidental de aproximadamente 1 em 4 bilhões — suficientemente baixa para erros de transmissão, insuficiente para contextos de segurança. Use CRC32 como verificação rápida de sanidade e SHA-256/512 para integridade formal.
Logging de Hashes para Auditoria de Longo Prazo
Em operações de varejo com requisitos regulatórios (Nota Fiscal Eletrônica, SPED, auditoria fiscal), o histórico de importações de catálogo pode ser exigido. Um log de auditoria mínimo por importação:
- Timestamp de início e fim da importação
- Nome do arquivo importado
- Tamanho do arquivo em bytes
- Hash SHA-512 do arquivo
- Número de produtos processados, atualizados, ignorados
- Resultado da importação (sucesso, erro, bloqueado por checksum)
Com esse log, você pode provar exatamente qual versão do catálogo estava ativa em qualquer momento histórico — e se um preço foi publicado incorretamente por corrupção de arquivo (argumento de defesa em disputas com clientes) ou por dado errado no ERP.
Perguntas Frequentes
SHA-512 é mais seguro que SHA-256 para verificação de integridade de arquivo?
Para integridade de arquivo em pipeline de dados — onde o risco é corrupção acidental, não ataque adversarial —, SHA-256 já oferece segurança mais do que adequada. SHA-512 é preferível em contextos de auditoria formal de longo prazo (o hash fica em log por anos ou décadas) e em ambientes que precisam de resistência futura a avanços em computação quântica. Para a maioria dos pipelines de dados de varejo, SHA-256 é suficiente; SHA-512 é a escolha conservadora para sistemas críticos.
Posso usar MD5 para verificar integridade de arquivos de catálogo?
Tecnicamente sim — colisões MD5 requerem geração intencional, não acontecem por acidente em transmissão de dados. Mas por boa prática e compatibilidade com políticas de segurança corporativa e auditoria, use pelo menos SHA-256. O custo computacional adicional é negligenciável para arquivos de catálogo (alguns MB), e a conformidade com padrões modernos vale o mínimo esforço adicional.
O que fazer se o hash do arquivo recebido não bate com o hash esperado?
Bloquear a importação imediatamente — nunca importar um arquivo com hash divergente. Registrar o evento em log com timestamp e os dois hashes (esperado e recebido). Disparar alerta para o time de operações. Solicitar retransmissão do arquivo original. Se a divergência for recorrente, investigar o protocolo de transferência — timeout de rede, modo ASCII em vez de binário no FTP (que converte quebras de linha), ou corrupção no armazenamento temporário.
SFTP é mais seguro que FTP para transferência de catálogos?
Sim, significativamente. FTP transfere dados em texto plano, incluindo credenciais de acesso — qualquer interceptação de rede expõe o arquivo e o login/senha. SFTP (SSH File Transfer Protocol) criptografa toda a sessão. Para transferência de arquivos de catálogo com preços, margens e dados de estoque — informação comercialmente sensível —, SFTP ou FTPS (FTP sobre TLS) são obrigatórios. FTP simples não deve ser usado em ambientes de produção de varejo.