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.
| Texto | Início do SHA-256 |
|---|---|
| Valor: R$ 1000,00 | 3913c9b1bf5f1932… |
| Valor: R$ 1000,01 | 55ffcebef79719e1… |
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.
- Recalcular. O leitor calcula de novo o hash dos bytes cobertos pela assinatura, do jeito que o arquivo está agora.
- Abrir o resumo assinado. Com a chave pública do certificado, ele recupera o hash que o signatário calculou no dia.
- Comparar. Se os dois resumos forem iguais, os bytes cobertos não mudaram. Se forem diferentes, a assinatura é marcada como inválida.
- 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?.
| Pergunta | Quem 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 assinado | Assinatura | Motivo |
|---|---|---|
| Abrir e ler | Continua válida | Nenhum byte muda |
| Acrescentar outra assinatura | A anterior continua válida | Atualização incremental no fim |
| Juntar com outro PDF | Quebrada | Cria um documento novo |
| Comprimir | Quebrada | Reescreve as imagens e o arquivo |
| Editar a página | Quebrada ou marcada como alterada | Muda 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.