OBSERVAR. CONFERIR. DESCOBRIR.

Laboratório
de Auditoria.

Dois dossiês.
Qual deles conta a história inteira?

Selecione dois arquivos do seu computador e descubra qual dos dois dossiês passa na auditoria.

Os originais ficam no seu dispositivo. O servidor recebe apenas as impressões digitais SHA-256, os nomes e os tamanhos necessários.

Carregando referências públicas do laboratório…

01 / PREPARE A INVESTIGAÇÃO

Seus arquivos, suas evidências

0 de 2 arquivos

Escolha exatamente dois arquivos. Cada entrada recebe seu próprio registro, mesmo quando nomes ou conteúdos forem iguais.

Qualquer tipo de arquivo · até 50 MiB por arquivo
Nomes com até 120 caracteres · geração e rodada em memória

ENTRADA 1

Nenhum arquivo selecionado

ENTRADA 2

Nenhum arquivo selecionado

Você terá até 15 minutos nesta sessão.
Os originais continuam locais.

03 / CONSULTE SE PRECISAR

Uma ajuda para seguir as pistas

A dica, o guia e as referências estão disponíveis antes do palpite. Abrir ou fechar estas consultas mantém seus arquivos e a rodada.

Receba uma dica

O hash funciona como uma impressão digital. Mudar os bytes muda o resultado. A assinatura permite detectar alterações e identificar qual chave assinou; compare essa chave com a referência pública.

O carimbo de tempo vincula uma impressão digital a um horário certificado. Ele precisa se referir ao hash certo e vir da autoridade autorizada. Nenhum desses mecanismos, sozinho, comprova autoria ou a data de criação do conteúdo.

Ver passo a passo da auditoria

Audite A e B separadamente, com os dois originais na ordem das entradas. Nenhuma etapa precisa do verificador da Provenia ou envia os originais pela rede.

Baixar ferramentas e guia de auditoria local ↓

Extraia as ferramentas em uma pasta. Instale Python 3.12 ou superior e execute no PowerShell ou terminal, dentro dessa pasta:

python -m venv .venv
.venv/Scripts/python -m pip install -r requirements.txt
.venv/Scripts/python scripts/audit.py "Dossie-A.zip" --original "caminho/arquivo-1" --original "caminho/arquivo-2" --trust public
.venv/Scripts/python scripts/audit.py "Dossie-B.zip" --original "caminho/arquivo-1" --original "caminho/arquivo-2" --trust public

No macOS/Linux, troque .venv/Scripts/python por .venv/bin/python. O auditor usa MuPDF, ASN.1 e cryptography; não importa o gerador nem conhece o gabarito. VERIFIED aprova; FAILED aponta falha; PARTIAL indica evidência ou confiança incompleta e não aprova esta rodada. Uma referência indisponível deixa a auditoria inconclusiva.

  1. Abra o ZIP com cuidado

    Onde: lista de arquivos do ZIP. Como: use python -m zipfile -l "Dossie-A.zip" e repita para B. Espere: exatamente Dossier.pdf e Dossier.json, na raiz ou na mesma pasta de primeiro nível. Não deve haver entradas duplicadas, criptografia, caminhos absolutos ou ... Ausência ou caminho impróprio desqualifica o pacote. O auditor valida limites antes de ler; não extraia arquivos suspeitos automaticamente.

  2. Compare os dois originais

    Onde: records[i].title, file_name, file_size_bytes e file_hash no JSON. Como: execute Get-FileHash -Algorithm SHA256 -LiteralPath "arquivo" para cada original ou use o auditor. Espere: dois registros, numerados por entrada, com nome, tamanho e hash correspondentes. Compare por entrada, mesmo com nomes iguais; não basta comparar o conjunto de hashes. Uma diferença mostra conteúdo trocado, associação incorreta ou arquivo omitido.

  3. Confirme a chave e a assinatura do JSON

    Onde: bloco signature e registro público desta página. Como: o auditor remove somente o membro signature e usa json.dumps(..., indent=4, ensure_ascii=False, sort_keys=False).encode("utf-8"). Verifica Ed25519 com a assinatura Base64. Calcula SHA-256 do DER SubjectPublicKeyInfo da chave PEM. Espere: assinatura válida, fingerprint calculado igual ao declarado, PEM e key_id publicados, vigentes e não revogados. Assinatura inválida indica alteração. Uma chave desconhecida pode assinar corretamente, mas tem confiança parcial e não aprova a rodada.

  4. Confira a assinatura e o hash do PDF

    Onde: assinatura digital do PDF, dossier.pdf_hash e referência do signatário acima. Como: o auditor verifica CMS, os intervalos ByteRange, a cadeia e a identidade com os certificados públicos. Compare também Get-FileHash -Algorithm SHA256 -LiteralPath "Dossier.pdf" com o JSON. Espere: uma assinatura PAdES íntegra cobrindo a entrega, certificado autorizado e política DocMDP P=1 (nenhuma alteração). O SHA-256 deve ser do PDF final assinado. Uma cadeia válida com outro signatário não autoriza a emissão. A raiz pública PDF fica apenas na pasta public do auditor; nenhuma instalação no sistema é necessária.

  5. Leia a evidência temporal de cada registro

    Obtenha a raiz temporal desta página, fora dos ZIPs. Confira seu fingerprint SHA-256 sobre o certificado em DER com o comando abaixo (ignore os dois-pontos e diferenças entre maiúsculas e minúsculas ao comparar). Não use a raiz PDF nesta etapa.

    openssl x509 -in "public/tsa-root.pem" -noout -fingerprint -sha256

    Onde: external_timestamp em cada registro. Como: o auditor decodifica timestamp_response_base64 como resposta RFC 3161 integral, lê TSTInfo e verifica CMS e a cadeia até tsa-root.pem. Espere: SHA-256 de messageImprint igual ao hash do registro, nonce igual ao declarado, assinatura válida, certificado com EKU crítico exclusivo de timestamp, autoridade com identidade e política iguais às referências publicadas abaixo. A cadeia precisa chegar à raiz temporal cujo fingerprint você conferiu; o auditor usa esse PEM somente na operação local. genTime UTC, serial, política e fingerprint devem coincidir com os resumos. Hash trocado vincula o carimbo a outro conteúdo; resumo divergente altera a data apresentada; assinatura inválida ou outra raiz elimina a confiança. Sem token ou nonce completo, a prova é parcial. A data de criação declarada não é o horário certificado.

  6. Percorra a cadeia de registros

    Onde: uuid, sequence_number, based_on.record_uuid, based_on.sequence_number e created_at_utc. Como: localize o destino de cada vínculo ou consulte o diagnóstico chain. Espere: UUIDs únicos, numeração 1 e 2, segundo ligado ao primeiro, cronologia coerente, sem ciclos nem referência futura. Vínculo sem destino ou ciclo demonstra uma cadeia incoerente. Esse vínculo é didático e não prova derivação real entre seus arquivos.

Anote as divergências e só então confirme seu palpite. O guia permanece disponível durante toda a investigação.

Consultar referências públicas

REFERÊNCIAS PÚBLICAS / FORA DOS PACOTES

A confiança começa aqui

Confira as identidades com esta página, independentemente do que cada ZIP declara. Estas referências valem para ambos os dossiês.

PDF · cadeia de treinamento

Signatário autorizado
Carregando…
Fingerprint do certificado signatário
Carregando…
Fingerprint da raiz pública PDF
Carregando…

Baixar raiz pública PDF ↓ · Certificado signatário ↓

A raiz é privada do laboratório. Use-a apenas na auditoria do PDF, sem instalá-la no sistema. A emissão oficial usa outra cadeia de confiança.

Carimbos de tempo · RFC 3161

Carregando referência temporal…

Fingerprint SHA-256 da raiz temporal (certificado DER)
Carregando…
Identidade da raiz temporal
Carregando…
Identidades autorizadas a carimbar
    Ver políticas temporais autorizadas
      Baixar raiz temporal autorizada ↓

      A raiz temporal serve exclusivamente para os carimbos; é diferente da raiz do PDF.

      04 / O SEU VEREDITO

      Qual dossiê passa na auditoria?

      Gere o par e confira as evidências antes de escolher.

      Selecione o dossiê que passa nas verificações