Como provar que um documento não foi alterado
Seis meses depois que todos assinaram, surge uma disputa. A outra parte apresenta sua cópia do acordo, e a cláusula 7 não diz o que você se lembra que ela dizia. Ambos os arquivos são chamados agreement-final.pdf. Ambos parecem plausíveis. Nenhum de vocês está necessariamente mentindo — os arquivos são salvos novamente, as versões ficam confusas. Sem algo registrado no momento, "este é o documento que concordamos" é apenas a memória de duas pessoas, e memórias não vencem argumentos.
O que é um hash
Um hash criptográfico é uma impressão digital dos dados. Alimente um arquivo em uma função de hash — SHA-256 é o padrão moderno sensato — e ele retorna um valor de comprimento fixo, 64 caracteres hexadecimais, independentemente se a entrada era de uma página ou dez mil.
Três propriedades tornam isso útil:
- É determinístico. Os mesmos bytes sempre produzem o mesmo hash. Qualquer pessoa, em qualquer lugar, em qualquer máquina, obtém o valor idêntico.
- Muda completamente com qualquer edição. Altere um único caractere — uma vírgula, um bit — e a saída é totalmente diferente. Não ligeiramente diferente. Diferente de forma irreconhecível. Isso é chamado de efeito avalanche, e é por isso que os hashes não podem ser "próximos".
- Ele não funciona ao contrário. Você não pode reconstruir o documento a partir do hash, e você também não consegue criar na prática um documento diferente e significativo que produza o mesmo hash.
Assim, a impressão digital é segura para ser compartilhada publicamente. Publicar o hash de um contrato confidencial não revela nada sobre seu conteúdo — mas ele fixa o contrato.
O que um hash faz não prova
É aqui que a ideia é superestimada, então vale a pena ser preciso. Um hash correspondente diz que o arquivo não foi alterado. Ele não diz:
- Quem criou. Um hash não carrega nenhuma identidade. Qualquer pessoa pode fazer o hash de qualquer coisa.
- Quando existiu. O valor não prova nada sobre tempo por si só. Um hash que você calcula hoje diz que o arquivo de hoje é o arquivo de hoje — uma tautologia.
- Que o conteúdo é verdadeiro, legal ou acordado. Um hash de uma falsificação é um hash perfeitamente válido de uma falsificação.
Os hashes fornecem integridade, não autenticidade. Confundir os dois é o erro mais comum nesta área.
A parte que todo mundo erra
Um hash calculado agora não prova nada sobre o passado. Se você gerar um hash de um arquivo hoje e o valor corresponder ao arquivo de hoje, você não aprendeu nada — é claro que corresponde; é o mesmo arquivo.
Um hash só se torna evidência quando o valor foi registrado em algum lugar confiável antes do surgimento da disputa. A segurança não reside na matemática; ela reside na linha do tempo. A pergunta que um hash responde é "isso corresponde ao que registramos naquela época?" — e isso exige que alguém tenha registrado isso naquela época.
O que faz com que o fluxo de trabalho, e não o algoritmo, seja o fator importante.
Um fluxo de trabalho que realmente vale algo
- Hashed o arquivo no momento em que ele se torna final. Logo após a assinatura, antes de ser arquivado. Use Hash do Documento.
- Registre o valor onde ele não possa ser revisado silenciosamente. Coloque no e-mail que transmite o documento. Leia nas atas. Envie para a contraparte para que ela também guarde. O objetivo é um registro com uma data que não esteja sob seu controle exclusivo.
- Arquive o arquivo exato. Não é uma reexportação. Não é "o mesmo documento" impresso novamente. São os bytes exatos que você fez o hash.
- Mais tarde, recalcule e compare. Mesmo valor: idêntico em bytes, sem motivo. Valor diferente: o arquivo mudou, embora não seja necessariamente malicioso — veja abaixo.
Abrir a ferramenta de Hash do Documento
Por que seu hash mudou quando "nada mudou"
Isso confunde as pessoas constantemente, e não é falha no hash. Um hash cobre bytes, não aparência. Dois PDFs podem parecer pixel-idênticos e ter hashes diferentes:
- Você o salvou novamente. Abrir um PDF e exportá-lo novamente reescreve o arquivo. Novos carimbos de data/hora, possivelmente um
Producernovo, estrutura interna diferente. Idêntico para ler, diferentes bytes. - Algo foi anexado a ele. PDFs suportam atualizações incrementais — adicionar um comentário ou preencher um campo pode anexar dados em vez de reescrevê-los. O documento cresceu; o hash mudou.
- Uma ferramenta tocou nele por acaso. Alguns sistemas de e-mail e gerenciadores de documentos reescrevem anexos. A mudança pode ser totalmente invisível e totalmente real.
Portanto, uma incompatibilidade significa que "estes não são o mesmo arquivo", e não que "alguém adulterou isto". A resposta correta é investigar, não acusar. E a lição prática é clara: arquive o arquivo que você fez o hash, e não deixe nada salvá-lo novamente.
Manter um registro local
Se você precisa rotineiramente estabelecer que os documentos não se desviaram, fazer o hash de cada um manualmente é tedioso. O Registro de Assinatura Local mantém um registro dos documentos que você fez o hash no seu próprio dispositivo, para que você tenha um log pessoal para verificar mais tarde — sem registrar os documentos com nenhuma terceira parte.
Tenha clareza sobre o que isso é e o que não é. É um registro privado, mantido por conta própria: forte para sua própria confiança, para processo interno, para detectar desvios acidentais. É o seu registro, no entanto — você controla, o que é exatamente a limitação quando a pessoa que duvida de você é a pessoa do outro lado da mesa.
Quando você precisa de mais do que um hash
Se uma terceira parte precisar ser convencida, apenas a integridade não será suficiente. Você precisa de algo que vincule o documento a uma identidade e idealmente a um tempo, de uma forma que nenhuma das partes controle:
- Uma assinatura digital é um hash mais identidade: o valor é assinado com uma chave privada, para que qualquer pessoa com o certificado correspondente possa confirmar tanto que o arquivo não foi alterado quanto quem o assinou. É por isso que as assinaturas exigem uma cadeia de confiança e os hashes não — a parte difícil é provar de quem é a chave.
- Um carimbo de tempo confiável adiciona uma atestação da autoridade de que o hash existiu em um determinado momento, respondendo ao "quando" que um hash puro não consegue fazer.
- Um hash trocado é um meio-termo decente: se ambos os lados tiverem o valor do dia da assinatura, nenhum pode reescrever a história unilateralmente. Sem infraestrutura, a maior parte do benefício.
Para registros internos, arquivos pessoais e perguntas comuns como "é este o arquivo que eu enviei?", um hash que você registrou na época é genuinamente suficiente. Para litígios, não é, e ninguém deve sugerir o contrário.
Uma nota sobre algoritmos antigos
Se você encontrar MD5 ou SHA-1 em um processo existente, trate-os como checksums e não como segurança. Ambos têm ataques de colisão práticos: é viável construir dois arquivos diferentes com o mesmo valor, que é precisamente a propriedade na qual você estava contando. Eles servem para detectar corrupção acidental e não são adequados para nada adversarial. SHA-256 é o padrão por um bom motivo.
Por que computá-lo localmente?
Fazer upload de um documento para um site para saber sua impressão digital dá uma cópia desse documento a um terceiro — para um cálculo que seu próprio dispositivo pode realizar em um momento. Se o arquivo for importante o suficiente para valer o esforço, ele é importante o suficiente para não ser entregue. Em CyvoDocOps, as operações suportadas deste tipo rodam localmente no seu navegador e o documento não é enviado a um servidor.
Perguntas frequentes
O que é um hash de arquivo em termos simples?
Uma impressão digital curta derivada do conteúdo de um arquivo. Mesmo arquivo, mesma impressão digital; mude qualquer coisa e a impressão digital muda completamente.
Dois documentos diferentes podem ter o mesmo hash?
Em teoria sim, na prática não com SHA-256 — ninguém consegue construir tal par. Com MD5 ou SHA-1, sim, e é por isso que eles não devem ser usados onde importa.
Um hash prova quem escreveu o documento?
Não. Ele prova que o arquivo não mudou. A identidade requer uma assinatura digital, que vincula um hash a uma chave pertencente a uma pessoa ou organização conhecida.
Meu hash mudou, mas o documento parece idêntico. Foi adulterado?
Não necessariamente. Salvar novamente, preencher um campo de formulário ou um sistema reescrever o anexo altera todos os bytes sem mudar a aparência. Isso significa que o arquivo é diferente — vale a pena investigar, não prova má-fé.
O arquivo é enviado para ser hasheado?
Não. O hash é calculado localmente no seu navegador e o documento não é enviado para um servidor.