Signal のキー透過性サービス向けのサードパーティ監査人の参照実装です。キー透過性 仕様に基づいています。
このサービスは Java で書かれており、Micronaut フレームワークを使用しています。ビルドとユニットテストを行うには、ルートディレクトリで
./mvnw clean test
を実行してください。
メインクラスは Auditor で、キー透過性サービスから更新のストリームを要求するスケジュールジョブを実行します。これは、キー透過性サービスの プレフィックスツリー と ログツリー の圧縮されたビューを維持し、各更新を順番に検証して受け入れるために十分な情報だけを保存します。監査人が一定数の更新を処理したか、一定の時間が経過した場合、監査人は 署名付きツリーヘッド をキー透過性サービスに送り返し、指定された更新までのプレフィックスツリーとログツリーのビューが一致することを示します。リモート呼び出しが成功すると、監査人は状態データを AuditorStateRepository に書き込みます。これは、監査人が再起動された場合に、キー透過性ログ内の最新の位置から再開するために使用できます。
監査人は、更新の検証中に不整合を検出すると、InvalidProofException をスローし、署名付きツリーヘッドをキー透過性サービスに送り返すのを停止します。
サービスを実行するには、Auditor、KeyTransparencyServiceClient、AuditorStateRepository の各 Bean が必要です。以下の表は、これらの Bean をインスタンス化するために必要な 設定 プロパティ について説明しています。
バグの追跡には GitHub を使用しています。セキュリティ上の問題は [email protected] まで送信してください。
直接のテクニカルサポートは提供できません。ご自身の環境でこのソフトウェアを実行する際のヘルプは、非公式コミュニティフォーラム で入手できます。
Copyright 2025 Signal Messenger, LLC
AGPLv3 に基づいてライセンスされています: https://www.gnu.org/licenses/agpl-3.0.html
| プロパティ | 必須? | 説明 |
|---|
auditor.private-key | はい | 標準base64でエンコードされたPKCS#8形式のEd25519秘密鍵で、キー透過性サービスに送り返すツリーヘッドへの署名に使用します。openssl genpkey -algorithm ed25519 で生成し、PEMヘッダーとフッターを削除することで取得できます。 |
auditor.public-key | はい | 標準base64でエンコードされたX509形式のEd25519公開鍵で、auditor.private-key のペアとなる鍵です。 |
auditor.key-transparency-service-signing-public-key | はい | 標準base64でエンコードされたPKCS#8形式のEd25519公開鍵で、クライアントがキー透過性サービスのツリーヘッドに対する署名を検証するために使用します。 |
auditor.key-transparency-service-vrf-public-key | はい | 標準base64でエンコードされたPKCS#8形式のEd25519公開鍵で、クライアントが Verifiable Random Function への入力 (要求された検索キー) が出力 (プレフィックスツリーの走査に使用されるコミットメントインデックス) と一致することを検証するために使用します。 |
auditor.client-certificate | はい | 相互TLS中にクライアントの身元を証明するために使用される、PKCS#8形式のPEMエンコード証明書です。 |
auditor.client-private-key | はい | 相互TLS中にクライアント証明書の所有権を検証するために使用される、PKCS#8形式のPEMエンコード秘密鍵です。 |
auditor.batch-size | はい | キー透過性サービスが1つのレスポンスで返す更新の最大数です。この値は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> のいずれかを1つだけ指定する必要があります | 監査人の状態を保存するために使用されるDynamoDBテーブルのAWSリージョンです。 |
storage.dynamodb.table-name | storage.<type> のいずれかを1つだけ指定する必要があります | 監査人の状態を保存するために使用されるDynamoDBテーブルの名前です。 |
storage.file.name | storage.<type> のいずれかを1つだけ指定する必要があります | 監査人の状態を保存するために使用されるファイルの名前です。 |