
Recupera continuamente e verifica crittograficamente gli aggiornamenti del registro di trasparenza delle chiavi, mantiene una vista condensata del prefisso e dell'albero del registro e restituisce le testate dell'albero firmate quando gli aggiornamenti sono validi.
Un'implementazione di riferimento di un auditor di terze parti per il servizio di key transparency di Signal, basata sulla specifica key transparency.
Questo servizio è scritto in Java utilizzando il framework Micronaut. Per compilare ed eseguire i test unitari, eseguire
./mvnw clean test
nella directory principale.
La classe principale è Auditor, che esegue un job programmato che richiede uno stream di aggiornamenti dal servizio di key transparency. Mantiene una vista condensata del prefix tree e del log tree, memorizzando informazioni sufficienti per verificare e accettare ogni aggiornamento in sequenza. Se l'auditor ha elaborato un certo numero di aggiornamenti o è trascorso un certo periodo di tempo, l'auditor invia una signed tree head al servizio di key transparency, indicando che la sua visione dei prefix e log tree fino all'aggiornamento indicato corrisponde. Se la chiamata remota ha successo, l'auditor scrive i propri dati di stato in un AuditorStateRepository, che può utilizzare per riprendere dalla posizione più recente nel log di key transparency se l'auditor viene riavviato.
Se l'auditor rileva un'incoerenza nella verifica di un aggiornamento, lancia un'InvalidProofException e smette di inviare signed tree head al servizio di key transparency.
Il servizio necessita dei bean Auditor, KeyTransparencyServiceClient e AuditorStateRepository per essere eseguito. La tabella seguente descrive le proprietà di configurazione necessarie per istanziare questi bean.
Utilizziamo GitHub per il tracciamento dei bug. I problemi di sicurezza devono essere inviati a [email protected].
Non possiamo fornire supporto tecnico diretto. Ottieni aiuto per eseguire questo software nel tuo ambiente nel nostro forum della community non ufficiale.
Copyright 2025 Signal Messenger, LLC
Licenziato sotto AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html
| Property | Required? | Description |
|---|
auditor.private-key | sì | Una chiave privata Ed25519 in formato PKCS#8 codificata in base64 standard e utilizzata per firmare la tree head inviata al servizio di key transparency. Può essere generata tramite openssl genpkey -algorithm ed25519 e rimuovendo l'intestazione e il piè di pagina PEM. |
auditor.public-key | sì | Una chiave pubblica Ed25519 in formato X509 codificata in base64 standard che è la controparte di auditor.private-key. |
auditor.key-transparency-service-signing-public-key | sì | Una chiave pubblica Ed25519 in formato PKCS#8 codificata in base64 standard e utilizzata dai client per verificare la firma del servizio di key transparency sulla tree head. |
auditor.key-transparency-service-vrf-public-key | sì | Una chiave pubblica Ed25519 in formato PKCS#8 codificata in base64 standard e utilizzata dai client per verificare che l'input di una Verifiable Random Function (chiave di ricerca richiesta) corrisponda all'output (indice di impegno utilizzato per attraversare il prefix tree). |
auditor.client-certificate | sì | Un certificato in formato PKCS#8 codificato PEM utilizzato per dimostrare l'identità del client durante la mutual TLS. |
auditor.client-private-key | sì | Una chiave privata codificata PEM in formato PKCS#8 utilizzata per verificare la proprietà del certificato client durante la mutual TLS. |
auditor.batch-size | sì | Il numero massimo di aggiornamenti che il servizio di key transparency deve restituire in una singola risposta. Questo valore deve essere minore o uguale a 1000. |
auditor.interval | no | L'intervallo di tempo con cui il job dell'auditor deve essere eseguito per elaborare gli aggiornamenti di key transparency. Il valore predefinito è 1 minuto. |
auditor.signature.interval | no | L'intervallo con cui l'auditor deve inviare una signed tree head al servizio di key transparency, in termini di durata. Il valore predefinito è 1 ora. |
auditor.signature.page-size | no | L'intervallo con cui l'auditor deve inviare una signed tree head al servizio di key transparency, in numero di aggiornamenti. Il valore predefinito è 1.000.000. |
auditor.key-transparency-host | sì | Il nome host del servizio di key transparency. |
auditor.key-transparency-port | sì | La porta a cui connettersi per il servizio di key transparency. |
storage.dynamodb.region | È necessario specificare esattamente uno storage.<type> | La regione AWS della tabella DynamoDB utilizzata per memorizzare lo stato dell'auditor. |
storage.dynamodb.table-name | È necessario specificare esattamente uno storage.<type> | Il nome della tabella DynamoDB utilizzata per memorizzare lo stato dell'auditor. |
storage.file.name | È necessario specificare esattamente uno storage.<type> | Il nome del file utilizzato per memorizzare lo stato dell'auditor. |