
key-transparency-auditor v20260818.0.0
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.
key-transparency-auditor
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.
Visão geral
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.
Configuração
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.
| Propriedade | Obrigatório? | Descrição |
|---|---|---|
auditor.private-key | sim | Uma chave privada Ed25519 no formato PKCS#8, codificada em base64 padrão e usada para assinar a cabeça de árvore enviada de volta ao serviço de transparência de chaves. Pode ser gerada via openssl genpkey -algorithm ed25519, descartando o cabeçalho e o rodapé PEM. |
auditor.public-key | sim | Uma chave pública Ed25519 no formato X509, codificada em base64 padrão, que é a contraparte de auditor.private-key. |
auditor.key-transparency-service-signing-public-key | sim | Uma chave pública Ed25519 no formato PKCS#8, codificada em base64 padrão e usada pelos clientes para verificar a assinatura do serviço de transparência de chaves sobre a cabeça de árvore. |
auditor.key-transparency-service-vrf-public-key | sim | Uma chave pública Ed25519 no formato PKCS#8, codificada em base64 padrão e usada pelos clientes para verificar se a entrada de uma Função Aleatória Verificável (chave de pesquisa solicitada) corresponde à saída (índice de compromisso usado para percorrer a árvore de prefixos). |
auditor.client-certificate | sim | Um certificado no formato PKCS#8 codificado em PEM, usado para comprovar a identidade do cliente durante o TLS mútuo. |
auditor.client-private-key | sim | Uma chave privada no formato PKCS#8 codificada em PEM, usada para verificar a propriedade do certificado do cliente durante o TLS mútuo. |
auditor.batch-size | sim | O número máximo de atualizações que o serviço de transparência de chaves deve retornar em uma única resposta. Esse valor deve ser menor ou igual a 1000. |
auditor.interval | não | O intervalo de tempo no qual a tarefa do auditor deve ser executada para processar as atualizações de transparência de chaves. O padrão é 1 minuto. |
auditor.signature.interval | não | O intervalo no qual o auditor deve enviar uma cabeça de árvore assinada ao serviço de transparência de chaves, em duração. O padrão é 1 hora. |
auditor.signature.page-size | não | O intervalo no qual o auditor deve enviar uma cabeça de árvore assinada ao serviço de transparência de chaves, em número de atualizações. O padrão é 1.000.000. |
auditor.key-transparency-host | sim | O nome de host do serviço de transparência de chaves. |
auditor.key-transparency-port | sim | A porta de conexão com o serviço de transparência de chaves. |
storage.dynamodb.region | Exatamente um storage.<type> deve ser especificado | A região da AWS da tabela do DynamoDB usada para armazenar o estado do auditor. |
storage.dynamodb.table-name | Exatamente um storage.<type> deve ser especificado | O nome da tabela do DynamoDB usada para armazenar o estado do auditor. |
storage.file.name | Exatamente um storage.<type> deve ser especificado | O nome do arquivo usado para armazenar o estado do auditor. |
Relatando bugs
Usamos o GitHub para o rastreamento de bugs. Problemas de segurança devem ser enviados para [email protected].
Ajuda
Não podemos fornecer suporte técnico direto. Obtenha ajuda para executar este software em seu próprio ambiente em nosso fórum comunitário não oficial.
Licença
Copyright 2025 Signal Messenger, LLC
Licenciado sob a AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html