
Busca continuamente e verifica criptograficamente as atualizações do log de transparência de chaves, mantém um prefixo condensado e uma visão da árvore do log, e retorna cabeçalhos de árvore assinados quando as atualizações são válidas.
Uma implementação de referência de um auditor de terceiros para o serviço de transparência de chaves da Signal, com base na especificação de transparência de chaves.
Este serviço é escrito em Java usando o framework Micronaut. Para compilar e executar os testes unitários, execute
./mvnw clean test
no diretório raiz.
A classe principal é o Auditor, que executa uma tarefa agendada que solicita um
fluxo de atualizações do serviço de transparência de chaves. Ela mantém uma visão condensada da árvore de prefixos
e da árvore de log, armazenando apenas informações suficientes para verificar e aceitar cada atualização sequencialmente. Se o auditor tiver processado um certo número de atualizações ou se tiver decorrido um certo período de tempo, o auditor envia de volta uma
cabeça de árvore assinada
ao serviço de transparência de chaves, indicando que sua visão das árvores de prefixo e de log até a atualização fornecida corresponde.
Se a chamada remota for bem-sucedida, o auditor grava seus dados de estado em um AuditorStateRepository,
que ele pode usar para retomar da posição mais recente no log de transparência de chaves caso o auditor seja reiniciado.
Se o auditor encontrar uma inconsistência ao verificar uma atualização, ele lança uma InvalidProofException e para
de enviar cabeças de árvore assinadas de volta ao serviço de transparência de chaves.
O serviço precisa dos beans Auditor, KeyTransparencyServiceClient e AuditorStateRepository para ser executado.
A tabela abaixo descreve as propriedades de configuração necessárias para instanciar esses beans.