Bootstrapping Mutual Attestation with Kleene's Second Recursion Theorem
本論文は、クリーネの第二再帰定理を適用して、組み込まれたデータのみから互いの正確なソースコードを相互に再構成および検証できるノードを構築することにより、異なるコンピューティングアーキテクチャ間における信頼できる第三者や外部のリファレンス値を必要とせず、相互認証の無限後退を解決するものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
セキュアコンピューティングの世界において、コンピュータプログラムが主張通りのものであることを証明することは、根本的なニーズとなっています。このプロセスは「リモート・アテステーション(遠隔検証)」と呼ばれ、制限区域に入る前に警備員が運転免許証を確認するデジタル版のセキュリティガードのようなものです。警備員は、免許証の写真と詳細を、有効な免許証がどうあるべきかを示す信頼できるデータベースと照合します。詳細が一致すれば、その人物の入場が許可されます。デジタルの世界では、コンピュータプログラムは「測定値(measurement)」と呼ばれる独自の指紋を生成し、それが検証者が保持する参照値(既知の期待される指紋)と比較されます。このシステムは、一方が他方をチェックする場合には完璧に機能しますが、2台以上のコンピュータが同時に互いをチェックする必要がある場合、論理的な壁に突き当たります。コンピュータAがコンピュータBを検証するためにBの指紋を知る必要があり、かつコンピュータBがコンピュータAを検証するためにAの指紋を知る必要がある場合、どちらのコンピュータも、検証を開始するために必要な答えを相手から受け取るまで、プロセスを開始することができません。これにより、各マシンが、開始に必要な証明そのものを相手から提供されるのを待ち続けるという、循環的な依存関係が生じます。
名古屋にあるAcompany株式会社の研究者たちは、中央集権的な権威や、事前に用意された信頼できるコードのリストに頼ることなく、この循環を打破する方法を見出しました。彼らはこの問題に、セキュリティのパズルとしてではなく、論理と自己参照の問題としてアプローチしました。数学的原理である「クリーネの第二再帰定理」を適用することで、コンピュータのグループが、他のすべてのメンバーの正確なソースコードを自身のメモリ内に保持するようにプログラムできることを実証しました。これにより、各マシンはピア(仲間)のコードをゼロから再構築し、その場で正しい指針となる指紋を計算し、外部の当事者に答えを求めることなく、相手のアイデンティティを検証できるようになります。チームは、この概念を証明するための動作するプロトタイプを構築し、2台のセキュアなコンピュータが、自身が携えているデータのみを使用して、互いの完全性を正常に検証できることを示しました。
問題の核心は、現代のセキュアな環境、例えば「信頼実行環境(TEE)」の性質にあります。これらは、機密データが傍受されたり改ざんされたりする恐れなく処理できる隔離された空間です。典型的なセットアップでは、単一のコンピュータがサーバーに対してその信頼性を証明します。サーバーは承認されたコードの指紋リストを保持しており、コンピュータのレポートをそのリストと照合します。しかし、複数のコンピュータが機密性の高いタスクのために協力しなければならない分散型ネットワークでは、すべてのマシンが「チェッカー(検証者)」であると同時に「チェックされる対象」でもあります。もし彼らがパートナーの指紋を自身のソフトウェア内にハードコードしようとすると、無限ループに陥ります。パートナーBの指紋を知るためには、コンピュータAはパートナーBのコードを知らなければなりません。しかし、パートナーBのコードにはコンピュータAの指紋が含まれており、それにはコンピュータAのコードを知る必要があり、そのコードにはパートナーBの指紋が含まれている……というように、永遠に続いてしまいます。このジレンマに対する従来の解決策は、信頼できる第三者を導入して指紋を配布するか、あるいは起動時に値を注入する特定のハードウェア機能に頼るものでした。これらの手法は機能しますが、信頼の中心的拠点を再導入するか、あるいは解決策を特定の種類のハードウェアに縛り付けることになり、利用できる範囲や方法を制限してしまいます。
研究者たちは、コンピュータのグループを単一の相互接続されたシステムとして扱うことで、異なる道を提案しました。彼らは、各コンピュータが共有された指示セットからピアのコードを生成できれば、この循環的な依存関係は解決できることに気づきました。プログラムが自身のソースコードを参照することを可能にするコンピュータサイエンスの概念を用いて、彼らは、グループのプログラムを自己完結型のユニットへと変換する手法を設計しました。各ユニットは、そのプログラム・ファミリー全体の完全な記述を内部に保持しています。コンピュータが起動すると、この内部の記述を読み取り、パートナーの正確なソースコードを再構築し、その後、パートナーの指紋を計算します。この再構築は内部で行われるため、コンピュータは外部のリストを信頼する必要はありません。単に、自身が既に持っているデータに基づいて答えを算出するのです。このアプローチは、中央集権的な権威を必要とせず、基礎となるセキュリティツールを変更することなく、さまざまな種類のセキュアなハードウェア上で動作します。
この理論を証明するために、チームは2つの動作デモンストレーションを作成しました。1つ目は、標準的なLinuxシステムのように、実行中のコードを直接測定するシステムに焦点を当てたものです。彼らは、コードのテンプレートを取り込み、自己参照型のプログラムを自動生成する「PyReflect」というツールを構築しました。テストでは、ソフトウェア・セキュリティ・モジュールによってバックアップされた2つの仮想マシンが、検証レポートを正常に交換しました。各マシンは相手のコードを再構築し、期待される指紋を計算し、ピアが正しいソフトウェアを実行していることを確認しました。2つ目のデモンストレーションは、AWS Nitro Enclavesのような、コンパイル済みのビルド成果物を測定するシステムを対象としました。ここでは、コンピュータがソースコードを再構築するだけでなく、最終的な実行可能ファイルを作成時と全く同じように再構築する必要があるため、プロセスがより複雑になります。彼らはこれを処理するために「NixReflect」というツールを開発しました。実験では、2つのセキュア・エンクレーブが起動され、それぞれが自身のメモリ内に格納されたデータから、相手のイメージ全体を独立して再構築しました。その後、再構築されたイメージの指紋を計算し、ピアから報告されたものと比較しました。結果は完全に一致し、マシンが自身の内部データのみから正しい参照値を導き出せることを証明しました。
研究者たちは、このアプローチのコストも測定しました。セキュア・エンクレーブの場合、ピアのイメージを再構築するプロセスは、単にコードのハッシュを計算するよりも大幅に長い時間がかかりました。彼らの特定のテストケースでは、再構築とビルドのプロセスには約6.8秒かかりましたが、単純なハッシュ計算は0.1秒未満でした。この差は、コンピュータがソフトウェアを再構築するために依存関係の全チェーンを辿らなければならないため、より複雑なアプリケーションになるにつれて拡大することが予想されます。この時間コストにもかかわらず、実験は、この手法が実現可能であり、新しいハードウェアや信頼できる第三者を必要としないことを確認しました。チームは、より複雑なシステムの場合、展開前に再構築プロセスをセキュアなビルド環境にオフロードすることで、実行時のコストを削減できる可能性があると指摘しましたが、これはビルド環境自体に関する別の信頼の仮定を導入することになります。
この研究の意義は、長らく分散型セキュアコンピューティングを阻んできた論理的なデッドロックを解決できる点にあります。自己完結型の再構築を通じて相互アテステーションが可能であることを示すことで、研究者たちは、すべての参加者が単一のエンティティを信頼するわけではないピア・ツー・ピア・ネットワークへの道筋を示しました。この解決策はアーキテクチャに依存しないため、カスタムの修正を必要とせずに様々なタイプのセキュアハードウェアに適用できます。それは特定のハードウェア機能ではなく、計算の基本特性に依拠しており、コンフィデンシャル・コンピューティングの未来における汎用性の高いツールとなります。現在のプロトタイプは概念実証のデモンストレーションですが、参照値のブートストラップ問題が信頼できる第三者なしで解決できることを確立しており、より堅牢で独立したセキュアネットワークへの扉を開いています。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。