[論文レビュー] Verifiable Provenance of Software Artifacts with Zero-Knowledge Compilation
この論文は、ソースコードの起源、コンパイラの身元、および出力を結びつける暗号的証明を生み出す零知識 VM 内でソフトウェアをコンパイルするシステム CosmicTurtle を提示します。
Verifying that a compiled binary originates from its claimed source code is a fundamental security requirement, called source code provenance. Achieving verifiable source code provenance in practice remains challenging. The most popular technique, called reproducible builds, requires difficult matching and reexecution of build toolchains and environments. We propose a novel approach to verifiable provenance based on compiling software with zero-knowledge virtual machines (zkVMs). By executing a compiler within a zkVM, our system produces both the compiled output and a cryptographic proof attesting that the compilation was performed on the claimed source code with the claimed compiler. We implement a proof-of-concept implementation using the RISC Zero zkVM and the ChibiCC C compiler, and evaluate it on 200 synthetic programs as well as 31 OpenSSL and 21 libsodium source files. Our results show that zk-compilation is applicable to real-world software and provides strong security guarantees: all adversarial tests targeting compiler substitution, source tampering, output manipulation, and replay attacks are successfully blocked.
研究の動機と目的
- フル再構築や信頼済みハードウェアなしに、コンパイル済みアーティファクトの暗号的出所保証を確立する。
- ソースコード、コンパイラの同一性、出力をコンパイル時に検証可能な証明に結びつける。
- ビルドを再現せずに、任意の当事者が出所の独立検証を可能にする。
- 現実の暗号ライブラリと合成プログラムで実用性を評価する。
提案手法
- 零知識 VM 内でコンパイラを実行し、バイナリと正しい実行の簡潔な証明を生成する。
- 入力ソースのダイジェストとコンパイラの同一性(ImageID)を証明に結びつける。
- 再実行せずに、コミット済みのソースとコンパイラに対して証明を検証する。
- 生産実行前にコンパイラバイナリ(またはその同一性)を固定するハンドシェイクを使用する。
- CosmosTurtle のプロトタイプは RISC Zero zkVM を用い、ChibiCC C コンパイラを RISC-V にクロスコンパイルして使用する。
実験結果
リサーチクエスチョン
- RQ1零知識実行により、特定のソースコードが主張されたコンパイラによって特定のバイナリを生成したという暗号的証明を提供できるか。
- RQ2このアプローチはコンパイラ代替、ソース改ざん、バイナリ改ざん、リプレイ攻撃に耐性を持つか。
- RQ3現実的なソフトウェアと暗号ライブラリにおける zk-コンパイルと検証の性能特性はどうなるか。
主な発見
| Dataset | C File Size Min (KB) | C File Size Median (KB) | C File Size Max (KB) | Receipt Size Min (MB) | Receipt Size Median (MB) | Receipt Size Max (MB) | Standard Compile Time Min (s) | Standard Compile Time Median (s) | Standard Compile Time Max (s) | zk-Compile Time Min (s) | zk-Compile Time Median (s) | zk-Compile Time Max (s) | Verify Time Min (s) | Verify Time Median (s) | Verify Time Max (s) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Random Programs (200) | 0.14 | 2.37 | 83 | 0.26 | 2.79 | 0.0006 | 0.0092 | 0.0665 | 57.01 | 78.91 | 979.12 | 47.93 | 49.88 | 68.75 | |
| OpenSSL (31) | 0.42 | 1.85 | 8.57 | 0.21 | 0.52 | 0.0012 | 0.0021 | 0.0046 | 59.71 | 80.55 | 104.83 | 48.12 | 48.64 | 50.64 | |
| libsodium (21) | 0.19 | 1.21 | 19.91 | 0.25 | 0.52 | 0.0007 | 0.0023 | 0.0124 | 68.25 | 82.28 | 137.21 | 48.17 | 48.81 | 51.34 |
- zk-コンパイルは、ソースダイジェスト、コンパイラ同一性、および出力を結びつける暗号的レシートを生成する。
- システムは252個のプログラム(200個の合成 CSmith プログラム、31個の OpenSSL ファイル、21個の libsodium ファイル)を zk-コンパイルおよび検証に成功。
- セキュリティテストは、コンパイラ代替、ソース改ざん、出力操作、リプレイ攻撃に対する耐性を示した。
- 検証は証明生成より速く、単一の高コストな証明生成後に複数回の検証を可能にする。
- 証明サイズはプログラムサイズに比例して大きくなり、より大きな入力ではレシートが100 MB超える場合がある。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。