Kettle:検証可能なソフトウェア来歴(プロバナンス)のための証明済みビルド

#Tech

Kettle:検証可能なソフトウェア来歴(プロバナンス)のための証明済みビルド ハードウェア証明付きビルド

Kettleは、TEEs(トラステッド実行環境)内でビルドされたソフトウェアの来歴を暗号学的に検証可能な形で提供する証明済みビルドシステムです。

このシステムは、ソースコミット、依存関係、ツールチェーンなどのビルド詳細を測定された機密仮想マシン内で記録し、そのハッシュをハードウェア署名付きのアテステーションレポートに組み込みます。

この構造により、検証の信頼の起点(ルートオブトラスト)がビルドインフラの運用者からTEE製造元へと移ります。

検証は署名チェックとハッシュ比較のみで完結するため、バイナリの信頼性を判断する際の信頼範囲からビルド環境そのものを排除することが可能になります。

ソフトウェアの信頼性を高めるための新しい仕組み「Kettle」が提案されました。これは、信頼できる実行環境(TEE)内でビルドプロセス全体を記録し、その結果を暗号学的に検証可能な形で提供するシステムです。これにより、ソフトウェアの「出所(プロベナンス)」を完全に証明することが可能になります。

TEEを活用したビルドの信頼性確保

Kettleは、信頼できる実行環境(TEE)内でソフトウェアのビルドを実行するアテステッド(証明付き)ビルドシステムです。このシステムは、ソースコードのコミット情報、依存関係、使用されたツールチェーン、ビルド環境といった詳細を記録します。これらの情報は、測定された機密仮想マシン(CVM)内で生成されるプロベナンス文書に集約されます。これにより、ビルドの過程が改ざんされていないことを保証します。

ハードウェア署名による出所の証明

特筆すべきは、このプロベナンス文書のSHA-256ダイジェストが、TEEプラットフォームのアテステーションレポートに記録される点です。このレポートはハードウェアによって署名されるため、署名権限はビルドインフラの運用者ではなく、TEEメーカーのルート・オブ・トラスト(信頼の根源)に紐づきます。これにより、ビルドの信頼性がハードウェアレベルで担保される仕組みとなっています。

エンドツーエンドの機密性と検証の簡素化

Kettleは、ビルド要求者がCVMの起動測定値を事前に確認できるため、ホスト環境がソースコードを平文で見ることなく、エンドツーエンドで機密性の高いビルドを実行できます。検証作業は、ビルド全体を再実行する必要がなく、ベンダーのルートに対する署名チェックと少数のダイジェスト比較のみで完了します。これにより、検証者が信頼すべき対象からビルドインフラやその運用者を排除できます。

まとめ

Kettleの導入は、ソフトウェアサプライチェーンにおける信頼性の課題を根本的に解決する可能性を秘めています。ビルドの過程を透明化し、ハードウェアレベルで保証することで、セキュリティリスクの低減に大きく貢献すると見られています。

原文の冒頭を表示(英語・3段落のみ)

View PDF

HTML (experimental)

Abstract:Kettle is an attested build system that produces cryptographically verifiable provenance for software built inside Trusted Execution Environments (TEEs). A Kettle build records the source commit, dependency set, toolchain, build environment, and output artifact digests in a provenance document produced inside a measured confidential VM. The SHA-256 digest of that document is committed to the TEE platform's attestation report-data field, so the hardware-signed attestation report is itself the signature on the provenance, with the signing identity chaining to the TEE manufacturer's root of trust rather than to the build infrastructure operator. Because the CVM image is itself reproducible, its launch measurement is public and stable, which lets a build requester pre-attest the CVM before submitting any input and optionally deliver source over a TLS channel terminated inside it, so the build runs end-to-end confidentially without the host ever seeing source code in plaintext. Verification reduces to one signature check against the vendor root and a small set of digest comparisons, with no need to re-execute the build. The result removes the build infrastructure, its operators, and the artifact distribution channel from the trust surface a verifier must accept when deciding whether a binary corresponds to its claimed inputs.

※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。

元記事を読む ↗