
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.