
Ruft kontinuierlich Key-Transparency-Log-Updates ab und verifiziert diese kryptografisch, pflegt eine kondensierte Präfix- und Log-Baumansicht und gibt signierte Baumköpfe zurück, wenn die Updates gültig sind.
Eine Referenzimplementierung eines Drittanbieter-Auditors für den Key-Transparency-Dienst von Signal, basierend auf der Key-Transparency-Spezifikation.
Dieser Dienst ist in Java mit dem Micronaut-Framework geschrieben. Zum Erstellen und Ausführen von Unit-Tests führen Sie im Stammverzeichnis Folgendes aus:
./mvnw clean test
Die Hauptklasse ist der Auditor, der einen geplanten Job ausführt, der einen Stream von Updates vom Key-Transparency-Dienst anfordert. Er verwaltet eine komprimierte Ansicht des Präfixbaums und Logbaums des Key-Transparency-Dienstes und speichert gerade genug Informationen, um jedes Update sequenziell zu verifizieren und zu akzeptieren. Wenn der Auditor eine bestimmte Anzahl von Updates verarbeitet hat oder eine bestimmte Zeitspanne vergangen ist, sendet der Auditor einen signierten Baumkopf an den Key-Transparency-Dienst zurück, der angibt, dass seine Ansicht des Präfix- und Logbaums bis zum angegebenen Update übereinstimmt. Wenn der Remote-Aufruf erfolgreich ist, schreibt der Auditor seine Zustandsdaten in ein AuditorStateRepository, das er verwenden kann, um bei einem Neustart des Auditors von seiner letzten Position im Key-Transparency-Log fortzufahren.
Wenn der Auditor bei der Verifizierung eines Updates eine Inkonsistenz feststellt, wirft er eine InvalidProofException und sendet keine signierten Baumköpfe mehr an den Key-Transparency-Dienst zurück.
Der Dienst benötigt die Beans Auditor, KeyTransparencyServiceClient und AuditorStateRepository, um ausgeführt zu werden. Die folgende Tabelle beschreibt die Konfigurations-eigenschaften, die zum Instanziieren dieser Beans erforderlich sind.