Volver a actualizaciones
Nuevo releaseAug 25, 2026

key-transparency-auditor v20260818.0.0

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.

Compartir

key-transparency-auditor

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.

Descripción general

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.

Configuración

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.

PropertyRequired?Description
auditor.private-keyUna clave privada Ed25519 con formato PKCS#8 codificada en base64 estándar y utilizada para firmar la cabecera de árbol enviada de vuelta al servicio de transparencia de claves. Puede generarse mediante openssl genpkey -algorithm ed25519 y descartando la cabecera y el pie PEM.
auditor.public-keyUna clave pública Ed25519 con formato X509 codificada en base64 estándar que es la contraparte de auditor.private-key.
auditor.key-transparency-service-signing-public-keyUna clave pública Ed25519 con formato PKCS#8 codificada en base64 estándar y utilizada por los clientes para verificar la firma del servicio de transparencia de claves sobre la cabecera de árbol.
auditor.key-transparency-service-vrf-public-keyUna clave pública Ed25519 con formato PKCS#8 codificada en base64 estándar y utilizada por los clientes para verificar que la entrada de una función aleatoria verificable (clave de búsqueda solicitada) coincide con la salida (índice de compromiso utilizado para recorrer el árbol de prefijos).
auditor.client-certificateUn certificado con formato PKCS#8 codificado en PEM utilizado para demostrar la identidad del cliente durante TLS mutuo.
auditor.client-private-keyUna clave privada con formato PKCS#8, codificada en PEM, utilizada para verificar la propiedad del certificado de cliente durante TLS mutuo.
auditor.batch-sizeEl número máximo de actualizaciones que el servicio de transparencia de claves debe devolver en una única respuesta. Este valor debe ser menor o igual que 1000.
auditor.intervalnoEl intervalo de tiempo con el que debe ejecutarse el trabajo del auditor para procesar las actualizaciones de transparencia de claves. El valor predeterminado es 1 minuto.
auditor.signature.intervalnoEl intervalo con el que el auditor debe enviar una cabecera de árbol firmada al servicio de transparencia de claves, en duración. El valor predeterminado es 1 hora.
auditor.signature.page-sizenoEl intervalo con el que el auditor debe enviar una cabecera de árbol firmada al servicio de transparencia de claves, en número de actualizaciones. El valor predeterminado es 1.000.000.
auditor.key-transparency-hostEl nombre de host del servicio de transparencia de claves.
auditor.key-transparency-portEl puerto al que conectarse para el servicio de transparencia de claves.
storage.dynamodb.regionDebe especificarse exactamente un storage.<type>La región de AWS de la tabla de DynamoDB utilizada para almacenar el estado del auditor.
storage.dynamodb.table-nameDebe especificarse exactamente un storage.<type>El nombre de la tabla de DynamoDB utilizada para almacenar el estado del auditor.
storage.file.nameDebe especificarse exactamente un storage.<type>El nombre del archivo utilizado para almacenar el estado del auditor.

Contribución de informes de errores

Utilizamos GitHub para el seguimiento de errores. Los problemas de seguridad deben enviarse a [email protected].

Ayuda

No podemos proporcionar soporte técnico directo. Obtén ayuda para ejecutar este software en tu propio entorno en nuestro foro comunitario no oficial.

Licencia

Copyright 2025 Signal Messenger, LLC

Licenciado bajo la AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html

Categorías