Назад к обновлениям
New releaseAug 25, 2026

key-transparency-auditor v20260818.0.0

Непрерывно получает и криптографически проверяет обновления журнала прозрачности ключей, поддерживает сжатый префикс и представление дерева журнала, а также возвращает подписанные заголовки дерева, когда обновления действительны.

Поделиться

key-transparency-auditor

Эталонная реализация стороннего аудитора для сервиса прозрачности ключей Signal, основанная на спецификации key transparency.

Обзор

Сервис написан на Java с использованием фреймворка Micronaut. Для сборки и запуска модульных тестов выполните

./mvnw clean test

в корневом каталоге.

Основной класс — Auditor, который запускает задание по расписанию, запрашивающее поток обновлений от сервиса прозрачности ключей. Он поддерживает сжатое представление префиксного дерева и дерева журнала сервиса прозрачности ключей, сохраняя ровно столько информации, сколько необходимо для последовательной проверки и принятия каждого обновления. Если аудитор обработал определённое количество обновлений или истёк определённый промежуток времени, аудитор отправляет обратно в сервис прозрачности ключей подписанную голову дерева, указывающую, что его представление префиксного дерева и дерева журнала вплоть до указанного обновления совпадает. Если удалённый вызов завершается успешно, аудитор записывает данные своего состояния в AuditorStateRepository, который он может использовать для возобновления работы с последней позиции в журнале прозрачности ключей в случае перезапуска аудитора.

Если при проверке обновления аудитор обнаруживает несоответствие, он выбрасывает исключение InvalidProofException и прекращает отправлять подписанные головы дерева обратно в сервис прозрачности ключей.

Конфигурация

Для работы сервису требуются bean-компоненты Auditor, KeyTransparencyServiceClient и AuditorStateRepository. В таблице ниже описаны конфигурационные свойства, необходимые для создания этих компонентов.

СвойствоОбязательно?Описание
auditor.private-keyдаПриватный ключ Ed25519 в формате PKCS#8, закодированный в стандартном base64 и используемый для подписи головы дерева, отправляемой обратно в сервис прозрачности ключей. Можно сгенерировать с помощью openssl genpkey -algorithm ed25519, отбросив PEM-заголовок и подвал.
auditor.public-keyдаПубличный ключ Ed25519 в формате X509, закодированный в стандартном base64, являющийся парой к auditor.private-key.
auditor.key-transparency-service-signing-public-keyдаПубличный ключ Ed25519 в формате PKCS#8, закодированный в стандартном base64 и используемый клиентами для проверки подписи сервиса прозрачности ключей над головой дерева.
auditor.key-transparency-service-vrf-public-keyдаПубличный ключ Ed25519 в формате PKCS#8, закодированный в стандартном base64 и используемый клиентами для проверки того, что входные данные проверяемой случайной функции (запрашиваемый поисковый ключ) соответствуют выходным данным (индекс обязательства, используемый для обхода префиксного дерева).
auditor.client-certificateдаСертификат в формате PKCS#8 с PEM-кодированием, используемый для подтверждения личности клиента при взаимной TLS-аутентификации.
auditor.client-private-keyдаПриватный ключ в формате PKCS#8 с PEM-кодированием, используемый для подтверждения владения клиентским сертификатом при взаимной TLS-аутентификации.
auditor.batch-sizeдаМаксимальное количество обновлений, которое сервис прозрачности ключей должен возвращать в одном ответе. Это значение должно быть меньше или равно 1000.
auditor.intervalнетВременной интервал, с которым должно запускаться задание аудитора для обработки обновлений прозрачности ключей. По умолчанию — 1 минута.
auditor.signature.intervalнетИнтервал, с которым аудитор должен отправлять подписанную голову дерева в сервис прозрачности ключей, выраженный в длительности. По умолчанию — 1 час.
auditor.signature.page-sizeнетИнтервал, с которым аудитор должен отправлять подписанную голову дерева в сервис прозрачности ключей, выраженный в количестве обновлений. По умолчанию — 1 000 000.
auditor.key-transparency-hostдаИмя хоста сервиса прозрачности ключей.
auditor.key-transparency-portдаПорт для подключения к сервису прозрачности ключей.
storage.dynamodb.regionНеобходимо указать ровно один storage.<type>Регион AWS таблицы DynamoDB, используемой для хранения состояния аудитора.
storage.dynamodb.table-nameНеобходимо указать ровно один storage.<type>Имя таблицы DynamoDB, используемой для хранения состояния аудитора.
storage.file.nameНеобходимо указать ровно один storage.<type>Имя файла, используемого для хранения состояния аудитора.

Сообщение об ошибках

Мы используем GitHub для отслеживания ошибок. Проблемы безопасности следует отправлять на [email protected].

Помощь

Мы не можем предоставить прямую техническую поддержку. Получить помощь по запуску этого программного обеспечения в собственном окружении можно в нашем неофициальном форуме сообщества.

Лицензия

Авторское право 2025 Signal Messenger, LLC

Лицензировано на условиях AGPLv3: https://www.gnu.org/licenses/agpl-3.0.html

Категории