
Récupère en continu et vérifie cryptographiquement les mises à jour du journal de transparence des clés, maintient un préfixe condensé et une vue de l'arbre du journal, et renvoie des têtes d'arbre signées lorsque les mises à jour sont valides.
Une implémentation de référence d'un auditeur tiers pour le service de transparence des clés de Signal, basée sur la spécification key transparency.
Ce service est écrit en Java à l'aide du framework Micronaut. Pour compiler et exécuter les tests unitaires, lancez
./mvnw clean test
à la racine du répertoire.
La classe principale est Auditor, qui exécute une tâche planifiée demandant un
flux de mises à jour au service de transparence des clés. Elle maintient une vue condensée de l'arbre de préfixes
et de l'arbre de journal
du service de transparence des clés, en stockant juste assez d'informations pour vérifier et accepter séquentiellement chaque mise à jour. Si l'auditeur a traité un certain nombre de mises à jour ou si une certaine durée s'est écoulée, l'auditeur renvoie un
en-tête d'arbre signé
au service de transparence des clés, indiquant que sa vue des arbres de préfixes et de journal jusqu'à la mise à jour donnée correspond.
Si l'appel distant réussit, l'auditeur écrit ses données d'état dans un AuditorStateRepository,
qu'il peut utiliser pour reprendre depuis sa position la plus récente dans le journal de transparence des clés si l'auditeur est redémarré.
Si l'auditeur rencontre une incohérence lors de la vérification d'une mise à jour, il lève une InvalidProofException et cesse
d'envoyer des en-têtes d'arbre signés au service de transparence des clés.
Le service a besoin des beans Auditor, KeyTransparencyServiceClient et AuditorStateRepository pour fonctionner.
Le tableau ci-dessous décrit les propriétés de configuration nécessaires pour instancier ces beans.
Nous utilisons GitHub pour le suivi des bugs. Les problèmes de sécurité doivent être envoyés à [email protected].
Nous ne pouvons pas fournir d'assistance technique directe. Obtenez de l'aide pour exécuter ce logiciel dans votre propre environnement sur notre forum communautaire non officiel.
Copyright 2025 Signal Messenger, LLC
Sous licence AGPLv3 : https://www.gnu.org/licenses/agpl-3.0.html
| Propriété | Requis ? | Description |
|---|
auditor.private-key | oui | Une clé privée Ed25519 au format PKCS#8, encodée en base64 standard, utilisée pour signer l'en-tête d'arbre renvoyé au service de transparence des clés. Peut être générée via openssl genpkey -algorithm ed25519 en supprimant l'en-tête et le pied de page PEM. |
auditor.public-key | oui | Une clé publique Ed25519 au format X509, encodée en base64 standard, qui est la contrepartie de auditor.private-key. |
auditor.key-transparency-service-signing-public-key | oui | Une clé publique Ed25519 au format PKCS#8, encodée en base64 standard, utilisée par les clients pour vérifier la signature du service de transparence des clés sur l'en-tête d'arbre. |
auditor.key-transparency-service-vrf-public-key | oui | Une clé publique Ed25519 au format PKCS#8, encodée en base64 standard, utilisée par les clients pour vérifier que l'entrée d'une fonction aléatoire vérifiable (clé de recherche demandée) correspond à la sortie (index d'engagement utilisé pour parcourir l'arbre de préfixes). |
auditor.client-certificate | oui | Un certificat au format PKCS#8 encodé PEM, utilisé pour prouver l'identité du client lors d'une TLS mutuelle. |
auditor.client-private-key | oui | Une clé privée au format PKCS#8 encodée PEM, utilisée pour vérifier la possession du certificat client lors d'une TLS mutuelle. |
auditor.batch-size | oui | Le nombre maximal de mises à jour que le service de transparence des clés doit renvoyer dans une seule réponse. Cette valeur doit être inférieure ou égale à 1000. |
auditor.interval | non | L'intervalle de temps auquel la tâche de l'auditeur doit s'exécuter pour traiter les mises à jour de transparence des clés. Par défaut : 1 minute. |
auditor.signature.interval | non | L'intervalle auquel l'auditeur doit envoyer un en-tête d'arbre signé au service de transparence des clés, exprimé en durée. Par défaut : 1 heure. |
auditor.signature.page-size | non | L'intervalle auquel l'auditeur doit envoyer un en-tête d'arbre signé au service de transparence des clés, exprimé en nombre de mises à jour. Par défaut : 1 000 000. |
auditor.key-transparency-host | oui | Le nom d'hôte du service de transparence des clés. |
auditor.key-transparency-port | oui | Le port de connexion au service de transparence des clés. |
storage.dynamodb.region | Exactement un storage.<type> doit être spécifié | La région AWS de la table DynamoDB utilisée pour stocker l'état de l'auditeur. |
storage.dynamodb.table-name | Exactement un storage.<type> doit être spécifié | Le nom de la table DynamoDB utilisée pour stocker l'état de l'auditeur. |
storage.file.name | Exactement un storage.<type> doit être spécifié | Le nom du fichier utilisé pour stocker l'état de l'auditeur. |