Ir para o conteúdo
4 min de leitura

Assinatura digital no PDF: como o hash detecta uma alteração

Como a assinatura digital de um PDF calcula o hash dos bytes, cifra o resultado com a chave privada e por que mudar um único byte invalida a assinatura.

O hash é uma impressão digital do conteúdo: um resumo de tamanho fixo calculado sobre os bytes do PDF no momento da assinatura. Para conferir, o leitor recalcula o resumo do arquivo que tem em mãos e compara com o que foi assinado. Se qualquer byte mudou, os dois resumos são diferentes e a assinatura aparece como inválida.

O que o hash faz na prática

Um hash, como o SHA-256, transforma qualquer quantidade de dados em 64 caracteres hexadecimais. A mesma entrada sempre gera o mesmo resumo, e uma mudança mínima na entrada gera um resumo totalmente diferente. A diferença abaixo foi calculada com SHA-256 sobre duas frases que se distinguem por um único dígito.

TextoInício do SHA-256
Valor: R$ 1000,003913c9b1bf5f1932…
Valor: R$ 1000,0155ffcebef79719e1…

Não há semelhança entre os dois resumos, embora o texto seja quase idêntico. Por isso não existe alteração pequena demais para passar: trocar um centavo, uma data ou uma vírgula muda o resultado por completo. Também não existe como ajustar o texto para que o resumo continue igual, porque achar duas entradas com o mesmo SHA-256 é inviável na prática.

Como o hash entra na assinatura

Quem assina não cifra o PDF inteiro. O programa calcula o hash dos bytes do arquivo e cifra só esse resumo com a chave privada do certificado. O resumo cifrado vai para dentro do PDF, junto com o certificado público. Esse espaço reservado fica de fora do cálculo, porque ele guarda o resultado da própria assinatura. A estrutura exata dos campos está em como o PDF guarda uma assinatura digital (PAdES); aqui interessa a lógica de detecção.

  1. Recalcular. O leitor calcula de novo o hash dos bytes cobertos pela assinatura, do jeito que o arquivo está agora.
  2. Abrir o resumo assinado. Com a chave pública do certificado, ele recupera o hash que o signatário calculou no dia.
  3. Comparar. Se os dois resumos forem iguais, os bytes cobertos não mudaram. Se forem diferentes, a assinatura é marcada como inválida.
  4. Avaliar o certificado. Só depois o leitor confere a cadeia de confiança e a validade do certificado, que dizem quem assinou.

O leitor não descobre o que mudou, só que algo mudou. Um PDF com a assinatura quebrada não é um documento parcialmente válido: ele é tratado como um arquivo diferente do que foi assinado.

O que o hash detecta e o que não detecta

O hash cuida de uma única pergunta: os bytes são os mesmos? Ele não responde quem assinou, quando assinou nem se o conteúdo é correto. Essas respostas vêm do certificado, do carimbo do tempo e do próprio texto do contrato. Se o PDF assinado foi impresso, a conferência se perde no papel: veja assinatura digital impressa ainda vale?.

PerguntaQuem responde
O arquivo mudou depois da assinatura?O hash
Quem assinou?O certificado e a cadeia até a autoridade
Quando assinou?O carimbo do tempo, se existir
O conteúdo está certo?Ninguém: o hash só confirma que é o mesmo conteúdo

Alterações que quebram e as que não quebram

Um PDF pode receber dados novos depois de assinado, como um comentário ou outra assinatura, numa atualização incremental. Os bytes novos vão para o fim do arquivo e o trecho original fica intacto, então o hash da primeira assinatura continua batendo. Já uma reescrita completa muda os bytes do começo ao fim, mesmo que a página pareça igual na tela. O hash se confere sem internet, mas a revogação do certificado não: veja validar assinatura digital sem internet.

Operação no PDF assinadoAssinaturaMotivo
Abrir e lerContinua válidaNenhum byte muda
Acrescentar outra assinaturaA anterior continua válidaAtualização incremental no fim
Juntar com outro PDFQuebradaCria um documento novo
ComprimirQuebradaReescreve as imagens e o arquivo
Editar a páginaQuebrada ou marcada como alteradaMuda bytes cobertos pela assinatura

Por isso a regra é fechar o conteúdo, juntar e comprimir, e assinar por último. Quem precisa juntar documentos que já chegaram assinados encontra o passo a passo em juntar PDFs já assinados sem invalidar a assinatura, e o diagnóstico de uma assinatura que quebrou está em assinatura inválida depois de editar.

Como ver o hash funcionando em casa

Para comparar duas cópias de um arquivo qualquer, sem assinatura, calcule o hash de cada uma. No Windows, o comando certutil -hashfile arquivo.pdf SHA256 faz isso; no Mac e no Linux, shasum -a 256 arquivo.pdf. Resumos iguais indicam arquivos idênticos byte a byte. O uso disso como prova de integridade está em hash do PDF para provar integridade.

O hash do arquivo inteiro não é o mesmo número que a assinatura usa, porque a assinatura deixa de fora o espaço onde ela própria é gravada. Serve para comparar cópias, e não para verificar a assinatura.

O que o AjustaPDF confere e o que não confere

A ferramenta assinar PDF do AjustaPDF coloca uma imagem de assinatura na página, uma assinatura eletrônica simples: não grava hash, não usa certificado e não valida assinaturas digitais de terceiros. Para conferir uma assinatura ICP-Brasil, use o validador oficial, em validar.iti.gov.br, ou um leitor que mostre o painel de assinaturas.

Perguntas frequentes

Se eu abrir um PDF assinado digitalmente e salvar de novo sem mexer em nada, a assinatura continua válida?

Depende de como o programa salva. Salvar como novo arquivo costuma reescrever o PDF inteiro, e o hash guardado deixa de bater. Salvar de forma incremental só acrescenta dados ao final e preserva os bytes assinados, mas o leitor pode avisar que houve alterações depois da assinatura.

Por que juntar ou comprimir um PDF já assinado digitalmente invalida a assinatura?

Porque juntar e comprimir produzem um arquivo novo, com bytes diferentes dos que foram assinados. O hash guardado na assinatura não bate mais com o conteúdo e o leitor marca a assinatura como inválida. A ordem certa é juntar e comprimir primeiro, e assinar o documento final.

A assinatura desenhada no AjustaPDF grava hash como a assinatura digital?

Não. A assinatura feita pela ferramenta de assinar PDF é uma imagem colocada na página, uma assinatura eletrônica simples. Ela não grava hash nem certificado no arquivo, então nenhum leitor consegue verificar quem assinou nem se o documento mudou depois.

O hash da assinatura digital prova que o conteúdo do PDF é verdadeiro?

Não. O hash só prova que os bytes de agora são os mesmos de quando a pessoa assinou. Se o contrato já tinha um valor errado na hora de assinar, a assinatura continua válida. Quem garante a identidade do signatário é o certificado, e não o hash.