A chave pública que assina a âncora de auditoria
A trilha de auditoria da plataforma CyberArmor é encadeada por cliente. A cada 15 minutos em que a trilha anda, uma âncora resume todas as cadeias, recebe uma assinatura Ed25519 e é publicada num armazenamento separado, fora do banco de dados. Esta página é o segundo canal da chave pública que confere essa assinatura. O primeiro canal é o registro de chaves versionado no repositório da plataforma.
Chaves de assinatura da âncora
Os nomes de campo entre parênteses são os do registro versionado, para comparar os dois canais campo a campo.
| Campo | sandbox |
|---|---|
| Identificador (kid) | ancora-236d32c2977f62d1 |
| Ambiente (ambiente) | sandbox |
| Algoritmo (alg) | Ed25519 |
| Chave pública em Base64 (chave_publica) | it2htylaKLJ/5Yxdp+7wzveoQGPUUNKb9P/SQBTXN6U= |
| Válida desde (valida_desde) | |
| Revogada em (revogada_em) | Não revogada |
Hoje existe só a chave do ambiente sandbox. A chave de produção entra nesta tabela quando a produção começar a operar. Nenhuma chave sai da tabela: a que for aposentada recebe a data de revogação, e objeto assinado depois dessa data reprova na conferência.
No sandbox, a chave privada fica no mesmo servidor do banco de dados. Ali a assinatura prova a origem da âncora, mas não resiste a um servidor comprometido.
Como o auditor confere a âncora
A conferência roda na máquina do auditor e não precisa de acesso ao banco depois que os arquivos foram baixados.
Compare a chave nos dois canais
Confira se a chave desta página é a mesma do registro de chaves versionado (docs/auditoria/chaves-da-ancora.json). Se os dois canais mostrarem chaves diferentes, pare e trate como incidente.
Baixe a cópia publicada das âncoras
O operador da plataforma entrega uma credencial só de leitura do armazenamento das âncoras, ou faz o download na sua presença. Baixe desde a primeira âncora e não abra os arquivos em editor que reformate JSON: um espaço a mais reprova a conferência.
Rode o verificador
O verificador é um script Python curto, que depende só do pacote cryptography. Para cada âncora ele confere forma, nome do arquivo, assinatura, hash e encadeamento com a anterior, e termina com saída 0 quando tudo confere.
Compare com o banco
Peça ao DBA, na sua frente, o hash da última âncora gravada no banco e informe esse valor ao verificador. Assim a cópia externa é comparada com o que o banco diz hoje.
O repositório da plataforma é privado. O verificador e o procedimento escrito, com os códigos de falha e o que fazer em cada um, são entregues ao auditor a pedido, pelo e-mail dpo@cyberarmor.com.br, com o assunto começando por [SEGURANCA].
Limites da conferência
O procedimento entregue ao auditor declara estes limites, e eles valem aqui também.
Janela antes da publicação
Quem tiver superusuário no banco e a chave privada da âncora consegue forjar o que ainda não foi publicado, numa janela de até 15 minutos, e o que vier depois. A conferência acusa a reescrita do que já estava publicado.
Evento fora da cadeia
Um evento que nunca entrou na trilha encadeada não aparece em âncora nenhuma.
Inclusão de um cliente específico
A âncora atual (versão 1) resume todas as cadeias numa raiz só. O verificador desta versão não confere a raiz contra o banco nem a presença de um cliente específico nela.
Carimbo de tempo de terceiro
O carimbo de tempo RFC 3161 ainda não é conferido pela versão atual do verificador.