CyvoDocOps
Português
Dark

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:

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.

A versão curta: um hash responde exatamente a uma pergunta — “esses dois arquivos são idênticos byte por byte?” — e responde isso de forma definitiva. Qualquer outra pergunta que você possa querer responder, ele não aborda.

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:

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

  1. Hashed o arquivo no momento em que ele se torna final. Logo após a assinatura, antes de ser arquivado. Use Hash do Documento.
  2. 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.
  3. 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.
  4. 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:

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:

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.

Guias e ferramentas relacionadas