1. O que viaja com um relatório
Três valores tornam um relatório autoverificável. Eles aparecem no artefato de relatório e nos metadados públicos de share-portal do link.content_hash — SHA-256 da evidência
content_hash — SHA-256 da evidência
Um digest SHA-256 em hex minúsculo do JSON de evidência canônica do
relatório. Os bytes são determinísticos para um dado relatório, então
qualquer pessoa com a mesma evidência recomputa o hash idêntico. Qualquer
edição na evidência muda esse valor.
signature — Ed25519 sobre o hash
signature — Ed25519 sobre o hash
Uma assinatura Ed25519 em base64 computada sobre o
content_hash em hex. Ela
prova que o hash foi assinado pela chave de assinatura do OrcaRouter e não
forjado.sig_key_id — qual chave o assinou
sig_key_id — qual chave o assinou
Um identificador curto e estável para a chave pública ativa (por exemplo
orca- seguido de um fragmento hex). O verificador o usa para confirmar que
o relatório foi assinado pela chave atualmente publicada — um relatório
assinado por um id de chave desconhecido falha fechado.A assinatura cobre o hash de conteúdo, não os bytes renderizados de PDF, CSV
ou JSON diretamente. A mesma evidência renderiza para todos os três formatos a
partir de um hash, então a garantia de integridade é sobre a evidência
subjacente — cada export de um dado relatório compartilha um
content_hash, uma
signature e um sig_key_id.2. Busque a chave pública
A chave pública de assinatura é publicada em um endpoint aberto — sem auth, sem contexto de workspace. Um auditor a chama diretamente.public_key é a chave pública Ed25519 de 32 bytes codificada em base64. O
key_id aqui deve corresponder ao sig_key_id no relatório — se não
corresponder, o relatório foi assinado por uma chave diferente (provavelmente
rotacionada ou mais antiga) e não verificará contra esta chave publicada.
3. Verifique a assinatura
Você pode verificar a assinatura de dois jeitos. Ou peça ao OrcaRouter para checar a tupla por você, ou verifique inteiramente offline com a chave pública publicada.O endpoint de verify hospedado
Faça POST dos três valores do relatório para o endpoint de verify aberto. Ele é público — um auditor o chama sem credenciais.valid: true significa que a assinatura confere contra a chave ativa para aquele
id de chave. valid: false significa que ou a assinatura não corresponde ao
hash, ou o hash está vazio, ou o sig_key_id não corresponde à chave atualmente
publicada.
Verifique offline com a chave pública
Um auditor cético não precisa confiar no endpoint de verify de jeito nenhum. Como o algoritmo é Ed25519 padrão sobre o hash de conteúdo em hex, a assinatura é checável com qualquer biblioteca de cripto:4. O que a assinatura cobre
Uma assinatura prova que ocontent_hash do relatório foi assinado pelo
OrcaRouter, e o hash prova que a evidência não foi editada. Uma sutileza: o hash
é computado sobre uma forma canônica da evidência que o gateway constrói —
não sobre os bytes brutos do arquivo JSON ou PDF. Então re-hashear o artefato
baixado você mesmo não reproduzirá content_hash. Use o endpoint de verify
(§2/§3), que recomputa o hash canônico e checa a assinatura Ed25519 por você:
| Checagem | Significado |
|---|---|
signature_valid: true | O content_hash foi assinado pela chave do OrcaRouter — a evidência é autêntica e não editada. |
| Id da chave corresponde | sig_key_id do relatório == o id da chave publicada → assinado pela chave ativa. |
5. Verificando um relatório compartilhado
Quando você envia a um auditor um link de share-portal em vez do arquivo, os metadados do portal já carregamcontent_hash, signature e sig_key_id,
além de uma flag signature_valid computada no servidor. O auditor pode confiar
na flag e re-rodar as checagens acima contra a chave pública
independentemente — o share portal não precisa de login, e o caminho de
verificação é idêntico.
Um artefato compartilhado só é servido enquanto sua região carimbada ainda
corresponde à região de residência de dados
declarada do seu workspace. Se a região foi alterada, os downloads são retidos
mesmo que os metadados de assinatura permaneçam verificáveis. Isso é por design —
veja Leituras cross-region.
6. Para onde ir a seguir
Relatórios assinados
Como um relatório assinado é gerado, que evidência ele captura e como cunhar
um link de compartilhamento para o auditor.
Exporte evidência
Puxe a evidência do relatório como PDF, CSV ou JSON para os workpapers do seu
auditor.
Residência de dados
Como o carimbo de região em um relatório governa onde ele é armazenado e
servido.
Responsabilidade compartilhada
O que o OrcaRouter garante no caminho do gateway versus o que continua sendo
seu.
