Evidência criptográfica convida ao exagero. "Assinado" soa como "verdadeiro", e "à prova de adulteração" soa como "certificado". Nenhum dos dois está certo. Se você usa recibos da Trustvice numa auditoria, num contrato ou numa disputa, o mais valioso que pode fazer é descrevê-los com exatidão: nem mais do que mostram, nem menos.
Este post é essa descrição. É a página que gostaríamos que um advogado, auditor ou contraparte cuidadoso lesse antes de confiar num recibo, e ela repete de propósito o que nossa documentação já diz.
O que um recibo válido prova#
Um recibo que confere com uma chave publicada da Trustvice prova três coisas.
Origem. O envelope foi assinado por quem detém a chave privada que corresponde a signatureKeyId, que é uma chave de assinatura da Trustvice. Ninguém mais, nem você, consegue produzir um recibo que confira com essa chave.
Integridade. Cada membro do envelope, exceto signature, está exatamente como foi assinado: o tipo, o body, o horário issuedAt e o id da chave. Mudar um único caractere faz a verificação falhar.
Um horário assinado. A Trustvice afirma que o recibo foi criado em issuedAt. É o relógio do próprio emissor.
Qualquer um confere as três, offline, sem conta e sem nos perguntar. A checagem é determinística: duas implementações independentes, com o mesmo recibo e a mesma chave, chegam à mesma resposta. Essa é a força de um recibo, e ela é real.
Fatos reportados e fatos observados#
Antes de listar os limites, uma distinção decide quanto vale cada recibo.
Um recibo pode declarar fatos que alguém forneceu à Trustvice, assinados para mostrar que foram apresentados, ou fatos sobre algo que a própria Trustvice executou ou viu. Um recibo sobre fatos reportados prova que foram apresentados até issuedAt; um recibo sobre fatos observados prova o que a Trustvice viu. Os recibos parecem iguais nos dois casos, então leia o tipo do recibo para saber qual você tem.
O que um recibo não prova#
Não são defeitos. São a fronteira da afirmação.
Que um fato reportado é verdadeiro#
Um recibo sobre um hash cobre um hash. O hash de um documento falso confere exatamente como o de um verdadeiro. Um recibo sobre uma troca reportada, como um prompt e uma resposta, prova que a troca foi apresentada num momento, não que tenha acontecido como descrita.
O que um recibo de fato reportado lhe dá ainda vale a pena: fixa a afirmação no tempo, para que não possa ser antedatada em silêncio, e qualquer mudança posterior é detectável.
Quem criou, aprovou ou era dono de algo#
O envelope não traz identificador de workspace ou conta, nem a assinatura de uma pessoa. Quem tem o JSON pode apresentá-lo. Um hash identifica bytes, não um dono: não mostra que ninguém mais tem o mesmo conteúdo. Se a autoria importa, ponha suas próprias assinaturas no conteúdo.
Seu conteúdo#
O recibo guarda um hash. Para mostrar que um documento confere, calcule o hash do documento e compare com o body. O recibo só ajuda se você guardou o conteúdo num lugar de onde possa apresentá-lo.
O horário real de um evento#
issuedAt é nosso relógio ao assinar. Num fato reportado, o evento ocorreu algum tempo antes do recibo. Um recibo não é um carimbo do tempo qualificado sob nenhum regime jurídico. Não alegue precisão maior que o intervalo entre o evento e o recibo. Se precisa de uma âncora externa, publique a assinatura do recibo num lugar com relógio confiável próprio.
Que nada aconteceu onde não há recibo#
Um recibo prova o que diz, não o que ficou por dizer. Uma lacuna nos recibos não é prova de que nada aconteceu, nem a seu favor nem contra você.
Que um recibo foi revogado, ou que uma chave nunca foi comprometida#
Não há revogação. Um recibo que conferia ao ser emitido confere enquanto sua chave de assinatura seguir publicada. Também não há lista de revogação de chaves. Uma chave de assinatura vazada deixaria quem a tem criar recibos que conferem, e só a checagem da assinatura não os distinguiria dos genuínos.
No que você confia em nós#
A verificação elimina a necessidade de confiar em nós para muita coisa: você não precisa que digamos se um recibo foi alterado, que chave o assinou ou se a chave nele foi trocada. Resta um conjunto pequeno e nomeado:
- Que a chave pública usada na verificação é nossa. Fixe o key id e o valor
x a partir de uma rede em que confia, e verifique contra essa cópia.
- Que nossas chaves de assinatura só são usadas pelo serviço de recibos. A Trustvice as guarda em módulos de segurança de hardware do AWS KMS, de onde nunca saem, o que impede que sejam copiadas. Não impede que quem pode fazer deploy do serviço de recibos, ou tem sua credencial só de assinatura, o faça assinar.
- Que, quando dizemos que observamos algo, observamos. Isso vale para recibos sobre coisas que a Trustvice executou ou viu.
- Nosso relógio.
Para a posição mais forte numa disputa, combine recibos com registros que você controla.
Como apresentar um recibo#
Quando um recibo sai das suas mãos, uma nota curta de acompanhamento evita a maioria dos mal-entendidos. Uma boa nota faz cinco coisas:
- Diz o que o recibo mostra, nos termos do próprio recibo. "Às 09:41:07 UTC de 14 de outubro, quem detém nossa chave apresentou o SHA-256
4d9a…7d62 à Trustvice sob o label proof v3 delivered."
- Diz de quem é o fato. Reportado por nós, ou observado pela Trustvice.
- Envia a evidência junta. O recibo, o conjunto de chaves com que conferiu e o conteúdo original.
- Convida à verificação independente. Aponte para /verify e para o procedimento offline, e peça ao outro lado que obtenha as chaves de
trustvice.com por conta própria, para não depender de um arquivo de chaves fornecido por você.
- Declara os limites. Em especial o horário, o ponto de vista e eventuais lacunas.
Nosso guia Evidência para disputas mostra o padrão completo: decidir antes de uma disputa de quais afirmações você vai precisar, capturar recibos no momento em que as coisas acontecem e montar um pacote de evidências que o outro lado verifica sem confiar em você.
Recibos e a lei#
Se um recibo é admissível, ou suficiente, num tribunal, contexto regulatório ou contratual depende da jurisdição e do caso. Um recibo é um registro técnico do que foi apresentado a um serviço de assinatura, ou observado por ele. Não é assessoria jurídica, nem certificação, nem prova de compliance. Consulte seu próprio advogado e considere prever nos contratos que ambas as partes aceitam recibos verificados com as chaves publicadas como evidência dos fatos que afirmam.
Por que escrevemos isto#
Um limite dito com clareza gera mais confiança que uma alegação, porque um recibo só é tão útil quanto a precisão com que as pessoas o descrevem. Se encontrar um lugar onde nossas próprias páginas exageram o que um recibo prova, avise-nos em /contact e corrigiremos.