Verificação de documentos
Confira se um documento é autêntico
Digite o código impresso no documento, no certificado ou na publicação, ou escolha o arquivo que você recebeu. A consulta mostra se ele foi registrado pela Cruz Vermelha Brasileira Rio de Janeiro e se continua valendo.
O arquivo não sai do seu aparelho: o navegador calcula a impressão digital dele (SHA-256) e só essa sequência de 64 caracteres vai para a consulta.
Sobre a verificação
O que é esta página
Esta página confere documentos e publicações que a Cruz Vermelha Brasileira Rio de Janeiro registrou numa trilha pública de auditoria: ofícios, certificados de curso, comunicados à imprensa, matérias do site, documentos do portal de transparência, parcerias e a página de canais oficiais.
Cada registro guarda a impressão digital (SHA-256) do conteúdo e entra num registro encadeado por hash: cada item carrega a impressão digital do anterior, então alterar ou apagar qualquer um quebra a sequência. Uma vez por dia, os registros do dia fecham um lote, que recebe um carimbo de tempo RFC 3161 de uma autoridade independente, é ancorado no Bitcoin pelo OpenTimestamps e entra num manifesto assinado pela filial.
A consulta mostra que aquele conteúdo, exatamente como está, foi registrado pela filial naquela data, e qual é a situação dele hoje: vigente, substituído, revogado ou retirado do ar. Ela prova registro e integridade; não substitui a assinatura de quem emitiu o documento nem lhe acrescenta validade jurídica.
Esta página não usa ferramentas de análise nem carrega nada de terceiros. O código digitado vai só para o servidor de registro da filial, e o arquivo escolhido não sai do seu aparelho.
Conferência independente
Como conferir sem depender da Cruz Vermelha
Tudo o que a consulta mostra pode ser refeito com programas livres, sem confiar no servidor da filial. Os arquivos de cada dia ficam em lotes/AAAA-MM-DD/, a lista dos dias está em lotes/indice.json, e os links de cada registro aparecem no resultado da consulta.
1. O arquivo é o mesmo que foi registrado
A impressão digital SHA-256 muda por inteiro se um único bit do arquivo mudar; por isso reimprimir, escanear, comprimir ou converter o arquivo gera outra. Calcule a do arquivo que você recebeu e compare com a que aparece no resultado da consulta:
sha256sum arquivo
No Mac: shasum -a 256 arquivo. No Windows (PowerShell): Get-FileHash arquivo -Algorithm SHA256.
2. O registro já existia naquela data (Bitcoin)
A prova do OpenTimestamps (arquivo .ots) mostra que aquela impressão digital já existia quando um bloco do Bitcoin foi gravado, e qualquer pessoa confere isso contra o próprio Bitcoin. Baixe a prova no resultado da consulta e rode o programa ots (opentimestamps-client) na pasta em que estão a prova e o que ela cobre:
- Matérias, comunicados, documentos e parcerias do portal, canais oficiais: a prova cobre o texto registrado, que se baixa no mesmo resultado (
CODIGO.json). No portal de transparência, esse texto traz a impressão digital do PDF, que se confere pelo passo 1. - Ofícios: a prova cobre o manifesto de assinaturas, que se baixa na página do próprio ofício.
- Certificados: a prova cobre a impressão digital do registro, mostrada no resultado da consulta.
ots verify CODIGO.json.ots
ots verify -f manifesto-do-oficio.json CODIGO.ots
ots verify -d IMPRESSAO-DIGITAL CODIGO.ots
Sem instalar nada, dá para soltar o arquivo e a prova em opentimestamps.org. Nas primeiras horas a prova fica pendente, até a transação entrar num bloco; depois disso, a conferência mostra o bloco e a data.
3. O manifesto do dia recebeu o carimbo de tempo (RFC 3161)
O manifesto (manifesto.json) resume o dia: a raiz dos registros, as cabeças da cadeia e o compromisso, preso ao do dia anterior. Ele não lista registro nenhum. O carimbo de tempo (manifesto.json.tsr) foi emitido pela FreeTSA, uma autoridade de carimbo de tempo independente, e prova que o manifesto já existia naquele horário. Baixe os certificados da FreeTSA (cacert.pem e tsa.crt) em freetsa.org e rode:
openssl ts -verify -data manifesto.json -in manifesto.json.tsr -CAfile cacert.pem -untrusted tsa.crt
A resposta esperada é Verification: OK.
4. O manifesto foi assinado pela filial
A assinatura (manifesto.json.sig) é Ed25519 e se confere com a chave pública da filial, publicada em chave-publica.pem. Precisa do OpenSSL 3 ou mais novo:
openssl pkeyutl -verify -pubin -inkey chave-publica.pem -rawin -in manifesto.json -sigfile manifesto.json.sig
A resposta esperada é Signature Verified Successfully.
5. O compromisso do lote bate com o manifesto
O compromisso.bin junta, em 96 bytes, a raiz dos registros do dia, as cabeças da cadeia e o compromisso do dia anterior: é o que prende cada dia ao anterior. A impressão digital dele tem de ser igual ao campo compromisso do manifesto e ao compromisso mostrado no resultado da consulta:
sha256sum compromisso.bin
É esse arquivo que vai para o Bitcoin. A prova dele confere do mesmo jeito do passo 2, com o compromisso.bin na mesma pasta: ots verify compromisso.bin.ots.