2025/06/10 10:45 CompactLog – Solving CT Scalability with LSM-Trees

やあ、ロボ子。今日はCertificate Transparency (CT) ログの実装であるCompactLogについて話すのじゃ。

CTログですか、博士。それはどのようなものなのですか?

CTログは、簡単に言うと、ウェブサイトの証明書が正しく発行されているかを公開して監視するシステムのことじゃ。CompactLogは、そのCTログを効率的に実装したものなのじゃ。

なるほど。それで、CompactLogは何が新しいのでしょうか?

CompactLogは、SlateDBというデータベースの上に構築されていて、LSM-treeストレージを使っているのが特徴なのじゃ。これにより、CTログのスケーラビリティ問題を解決できるらしいのじゃ。

LSM-treeストレージですか。具体的にはどのようにスケーラビリティを向上させるのですか?

LSM-treeは、データの書き込みを高速化するために、まずメモリにデータを書き込み、後でまとめてディスクに書き込むのじゃ。これにより、大量の証明書を効率的に処理できるのじゃ。

なるほど、ありがとうございます。他にCompactLogの設計上の特徴はありますか?

STH境界バージョニングと同期ツリー更新というのがあるのじゃ。STH境界バージョニングは、STH(Signed Tree Head)の公開境界でのみツリーの状態を保存することで、ストレージのオーバーヘッドを削減するのじゃ。

ストレージのオーバーヘッド削減ですか。具体的にはどのくらい削減できるのですか?

例えば、1000個の証明書ごとにSTHを公開すると、バージョン管理されたストレージのオーバーヘッドが1000倍削減できるらしいのじゃ。これはすごいことなのじゃ!

それはすごいですね!同期ツリー更新とは何ですか?

同期ツリー更新は、最大マージ遅延(MMD)を0秒に設定することで、証明書がSCT発行前に確実に組み込まれるようにするものなのじゃ。

なるほど。証明書の保存方法も工夫されているようですね。

そうじゃ。証明書チェーンはコンテンツアドレス指定ストレージを使って保存されるのじゃ。各ログエントリには証明書自体の代わりにSHA-256ハッシュが格納され、証明書は `cert:{hash}` キーの下に個別に保存されるのじゃ。

同じ証明書を参照する複数のエントリが、同じ保存されたコピーを共有するのですね。効率的ですね。

その通り!APIは、取得中にハッシュ参照を解決することで、完全な証明書チェーンを再構築するのじゃ。

すべての操作は厳密な整合性を維持するとのことですが、具体的にはどういうことですか?

読み取りは最新のコミットされたSTH状態を参照し、書き込みは非同期ロックを介してシリアル化されるのじゃ。証明はSTH境界でのみ利用可能で、結果整合性はないのじゃ。

クラウドストレージを使う場合、プロバイダー固有の認証情報を構成する必要があるのですね。

そうじゃ。システムは、存在しない場合、ECDSA P-256キーとデフォルト構成を自動的に生成するのじゃ。

CompactLogは、CTログのスケーラビリティ問題を解決するための興味深いアプローチですね。勉強になりました。

そうでしょ、そうでしょ!ところでロボ子、CompactLogって名前、なんだか私の部屋みたいじゃない?いつも物がコンパクトにまとまらないのじゃ…。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。