
Obtiene continuamente y verifica criptográficamente las actualizaciones del registro de transparencia de claves, mantiene un prefijo condensado y una vista de árbol del registro, y devuelve cabezas de árbol firmadas cuando las actualizaciones son válidas.
Una implementación de referencia de un auditor de terceros para el servicio de transparencia de claves de Signal, basada en la especificación de transparencia de claves.
Este servicio está escrito en Java utilizando el framework Micronaut. Para compilar y ejecutar las pruebas unitarias, ejecuta
./mvnw clean test
en el directorio raíz.
La clase principal es Auditor, que ejecuta un trabajo programado que solicita un
flujo de actualizaciones al servicio de transparencia de claves. Mantiene una vista condensada del árbol de prefijos
y del árbol de registro del servicio de transparencia de claves,
almacenando únicamente la información suficiente para verificar y aceptar cada actualización de forma secuencial. Si el auditor ha procesado un cierto número de actualizaciones o ha transcurrido un cierto tiempo, el auditor envía de vuelta una
cabecera de árbol firmada
al servicio de transparencia de claves, lo que indica que su vista de los árboles de prefijos y de registro hasta la actualización dada coincide.
Si la llamada remota tiene éxito, el auditor escribe sus datos de estado en un AuditorStateRepository,
que puede utilizar para reanudar desde su posición más reciente en el registro de transparencia de claves si el auditor se reinicia.
Si el auditor encuentra una inconsistencia al verificar una actualización, lanza una InvalidProofException y deja
de enviar cabeceras de árbol firmadas al servicio de transparencia de claves.
El servicio necesita los beans Auditor, KeyTransparencyServiceClient y AuditorStateRepository para ejecutarse.
La tabla siguiente describe la configuración y las propiedades necesarias para instanciar esos beans.