Pular para o conteúdo
getnextpdf.com

Tempo confiável: como um carimbo de tempo prova quando

Spec: RFC 3161Spec: RFC 5816Spec: ISO 32000-2, §12.8.5

Um carimbo de tempo responde a uma pergunta única e surpreendentemente escorregadia: estes dados já existiam? Não quem os fez, não se estão corretos — apenas que, em algum instante nomeado, exatamente estes bytes já estavam no mundo. Esta página constrói a ideia desde o zero: o que uma Autoridade de Carimbo de Tempo faz, o que um token realmente contém e por que um número em um relógio se torna evidência.

É o companheiro a partir dos primeiros princípios da página Carimbos de tempo e tempo confiável, focada no motor. Leia esta primeiro se “tempo confiável” soa como jargão.

O relógio do seu computador é uma confissão, não uma prova. Você pode defini-lo com qualquer valor que quiser, e qualquer outra pessoa também pode. No momento em que uma data importa para uma segunda parte — um contrato que tinha de ser assinado antes de um prazo, um registro que tinha de existir antes de uma disputa — o seu próprio relógio não vale nada como evidência, porque você o controla. Todo o problema do tempo confiável é encontrar um relógio que você não consegue mover.

Essa não é uma preocupação de nicho. Todo PDF assinado de vida longa se apoia nela. Um certificado de assinatura acaba expirando; anos depois, um verificador precisa saber se a assinatura foi feita enquanto o certificado ainda era válido. Sem um registro independente do “quando”, essa pergunta não tem resposta honesta. O tempo confiável é a fundação silenciosa sobre a qual repousa todo o edifício das assinaturas duráveis.

  • Um carimbo de tempo prova que um item de dados existia antes de um instante declarado. Isso é um limite superior de idade, nada mais.
  • Ele é produzido por um terceiro, a Autoridade de Carimbo de Tempo (TSA), em cujo relógio você confia precisamente porque ele não é seu.
  • A TSA nunca vê os seus dados. Ela assina um hash deles, vinculado a um valor de tempo, e retorna um pequeno token assinado.
  • O token prova três coisas em conjunto: os dados são os dados (o hash corresponde), o tempo é o tempo da TSA (a assinatura dela) e a resposta corresponde à requisição que você enviou (o nonce que ela ecoa de volta, protegendo contra uma resposta antiga repetida).
  • Ele não prova quem escreveu os dados, que os dados são verdadeiros, nem o momento exato de criação. Apenas: não mais tarde do que este.
  • A confiança flui para a TSA. Uma TSA publicamente confiável é boa o suficiente para a maioria dos registros; uma TSA qualificada pelo eIDAS carrega uma presunção jurídica na UE.

Comece com o truque no centro de tudo. Você quer que um estranho ateste quando os seus dados existiram, mas não pode mostrar os dados a ele — eles podem ser confidenciais e, de qualquer forma, podem ser enormes. Então você não os mostra. Você computa um hash: uma impressão digital curta e de comprimento fixo que muda por completo se até mesmo um byte do original mudar, e a partir da qual o original não pode ser recuperado. Você envia a impressão digital, não o arquivo.

A TSA pega essa impressão digital, anexa seu próprio horário atual, assina o par com sua chave privada e devolve um token de carimbo de tempo (Spec: RFC 3161, §2.1). O token é o vínculo tornado permanente: esta impressão digital, neste horário, atestada por mim. Como o token é assinado, ninguém — nem mesmo a TSA depois — pode alterar o horário sem quebrar a assinatura. Como ele carrega a sua impressão digital, ele é inútil para qualquer outro arquivo. E como a requisição inclui um nonce aleatório e novo que a TSA ecoa de volta inalterado, você pode dizer que a resposta corresponde a esta requisição específica e não é uma repetição de uma resposta mais antiga — o nonce atesta o frescor, não quem perguntou (Spec: RFC 3161, §2.4.2).

Pense em um selo de cera pressionado sobre uma carta dobrada. O selo não lê a carta; ele apenas prova que a carta estava inteira e presente quando o selo foi aplicado. Um carimbo de tempo é um selo aplicado por um relógio que você não possui, sobre uma impressão digital dos seus dados.

  1. Tirar a impressão digital dos dadosCompute um hash unidirecional do arquivo ou do valor da assinatura. Os dados em si nunca saem das suas mãos.
  2. Pedir à autoridadeEnvie o hash e um nonce aleatório novo à Autoridade de Carimbo de Tempo.
  3. A TSA sela um horárioEla assina o hash vinculado ao seu próprio relógio e ecoa o seu nonce, produzindo um pequeno token assinado.
  4. Armazenar o tokenPara um PDF, o token é colocado dentro do arquivo para que a prova viaje com o documento.
  5. Verificar depoisQualquer um que confie na TSA pode conferir o token: sua assinatura contra o certificado da TSA, o hash correspondente, o nonce ecoado e o horário — e então conclui um limite superior de idade.
Como um carimbo de tempo confiável é obtido e o que ele prova: um hash mais um nonce novo vão para a TSA, a TSA assina esse hash vinculado ao seu próprio horário e ecoa o nonce, e o verificador confere cada elo antes de tratar o token como prova de que os dados existiam antes do horário declarado.

Em um PDF, esse mesmo mecanismo veste dois chapéus. Um carimbo de tempo de assinatura sela quando uma assinatura foi aplicada, carimbando o valor da assinatura. Um carimbo de tempo de documento sela quando o arquivo inteiro existiu, fazendo o hash do PDF inteiro (excluindo o placeholder que o token vai ocupar) e armazenando o token retornado de volta nesse placeholder (Spec: ISO 32000-2, §12.8.5). O segundo tipo é o que uma assinatura de arquivamento de vida longa renova ao longo dos anos para manter sua confiança fresca.

Um detalhe moderno que vale conhecer: um formato de carimbo de tempo mais antigo fixava-se a um único algoritmo de hash para nomear o próprio certificado da TSA. O perfil atualizado permite que um token nomeie seu certificado com um digest atual em vez disso (Spec: RFC 5816, §2.1), de modo que o tempo confiável não herde silenciosamente a criptografia de ontem.

Você não monta um token à mão, e não deveria querer fazê-lo. O que vale a pena entender é o ponto de integração da confiança: em qual relógio você está escolhendo acreditar. No NextPDF, pedir um nível de assinatura que precisa de tempo confiável torna essa escolha explícita em vez de implícita.

<?php
declare(strict_types=1);
use NextPDF\Security\Signature\SignatureLevel;
// A baseline signature trusts only the signer's own clock.
$baseline = SignatureLevel::PAdES_B_B;
$baseline->requiresTimestamp(); // false → no third party vouches for "when"
// Stepping up to B-T means a Time-Stamp Authority must be supplied:
// from here on, "when" is attested by a clock you do not control.
$timestamped = SignatureLevel::PAdES_B_T;
$timestamped->requiresTimestamp(); // true → a TSA is now part of your trust model
// The decision is now visible at the call site, not buried in a default.
// Choosing the TSA is choosing whose time becomes your evidence.

O ponto do exemplo não é a API. É que “eu tenho tempo confiável?” é um fato de sim ou não sobre o seu documento, decidido por se uma TSA esteve no circuito — e o motor se recusa a deixar esse fato ser ambíguo.

A armadilha é ler um carimbo de tempo como “isso foi criado às 14:32.” Ele não diz nada disso. Ele diz “isso existia no máximo até as 14:32.” A diferença é o ponto inteiro. Um carimbo de tempo é um limite superior, nunca um limite inferior e nunca um momento exato. Os seus dados poderiam ter existido por anos antes de você finalmente carimbar o tempo deles; o token é silencioso quanto a isso. Ele traça uma única linha e diz: não depois daqui.

Um segundo equívoco, mais caro: que um carimbo de tempo prova que o seu documento é genuíno ou correto. Ele não faz nenhum dos dois. Ele é indiferente ao significado. Uma mentira perfeitamente carimbada ainda é uma mentira — agora comprovadamente antiga. A autenticidade vem da assinatura que diz quem; a verdade vem do mundo. O carimbo de tempo sempre fala apenas sobre quando.

O alcance de um carimbo de tempo para exatamente onde o seu modelo de confiança para. Ele prova um limite superior de idade, e apenas isso, e apenas se você confiar na autoridade que o selou.

Há dois níveis de autoridade que vale distinguir. Uma TSA publicamente confiável encadeia até um certificado que o seu software já aceita; seus tokens são amplamente verificáveis e adequados para a maioria dos registros. Uma TSA qualificada pelo eIDAS é um provedor supervisionado em uma lista confiável da UE, e um carimbo de tempo eletrônico qualificado carrega uma presunção jurídica da exatidão de sua data e da integridade dos dados — uma presunção que um carimbo de tempo comum não tem (Spec: eIDAS, Art. 41). Escolher entre eles é uma pergunta sobre o peso probatório de que você precisa, não sobre como os bytes funcionam; a criptografia é a mesma.

Um carimbo de tempo também herda a vida útil de suas próprias âncoras de confiança. O certificado da TSA pode expirar ou ser revogado, e o algoritmo de hash que ela usou pode envelhecer. É precisamente por isso que documentos de vida longa não carimbam o tempo uma vez e vão embora — eles renovam, sobrepondo um novo carimbo de tempo de documento sobre a evidência antiga antes que a evidência antiga enfraqueça. Esse laço de renovação é um assunto próprio; veja Validação de longo prazo.

RFC 3161 trusted timestamping (signature and document timestamps) — edition availability
EditionAvailability
Core

Suporta PAdES B-B e B-T. B-B é a assinatura baseline sem carimbo de tempo; B-T solicita e incorpora um carimbo de tempo de assinatura RFC 3161 verificado contra uma TSA fornecida pela implantação, cujo relógio você escolhe.

Pro

Adiciona os dados de validação de longo prazo incorporados (certificados, OCSP, CRLs) de que B-LT precisa para manter uma assinatura verificável após seus certificados expirarem.

Enterprise

Adiciona o laço de renovação B-LTA, selando os dados de validação sob um novo carimbo de tempo de documento e recarimbando-os antes que a proteção enfraqueça.

  • Autoridade de Carimbo de Tempo (TSA) — um serviço independente que emite tokens de carimbo de tempo assinados. Você confia no relógio dela precisamente porque ele não é seu.
  • Token de carimbo de tempo — o pequeno objeto assinado que uma TSA retorna, vinculando um hash dos seus dados a um valor de tempo (Spec: RFC 3161, §2.1).
  • Hash (impressão de mensagem) — uma impressão digital curta e unidirecional dos dados. A TSA assina isto, nunca os dados em si, então o seu conteúdo permanece privado.
  • Nonce — um número aleatório novo enviado com a requisição e ecoado inalterado na resposta, mostrando que o token corresponde a aquela requisição específica e não é uma resposta antiga repetida (ele atesta o frescor, não a identidade de quem requisitou).
  • Limite superior — o que um carimbo de tempo estabelece: os dados existiam no máximo até o instante declarado. Nunca um momento exato de criação.
  • Carimbo de tempo qualificado pelo eIDAS — um carimbo de tempo de um provedor supervisionado da UE que carrega uma presunção jurídica da exatidão da data e da integridade dos dados.
  • Carimbo de tempo de documento — um carimbo de tempo sobre um arquivo PDF inteiro, usado para ancorar e renovar a evidência de validação de longo prazo (Spec: ISO 32000-2, §12.8.5).