Isabelle/HOL:Nitro分離エンジンの背後にある証明支援系
AWSは2025年re:Inventで、Isabelle/HOLを用いて正式に検証された初のクラウドハイパーバイザー「Nitro Isolation Engine」を発表し、クラウドセキュリティの新基準を確立した。
キーポイント
NIEの公式検証とセキュリティ新基準
AWSはNitro Isolation Engineを初の正式に検証されたクラウドハイパーバイザーとして発表し、顧客データの機密性と分離保証を数学的に証明した。
Isabelle/HOLの選択基準と論理階層
表現力、自動化能力、証明の可読性、スケーラビリティのバランスが取れたIsabelle/HOLが採用され、ブール論理から高次論理までの技術的背景が解説されている。
大規模自動証明の実績と学術連携
カーネギーメロン大学のMarijn Heule氏らによる200TBの巨大証明事例を引用し、形式手法が学術界から産業界のインフラ基盤へ移行していることを示した。
影響分析・編集コメントを表示
影響分析
形式手法を商用クラウドの基盤ソフトウェアに適用したことは、セキュリティ保証のパラダイムを「テストと脆弱性発見」から「数学的完全性の証明」へ転換させた。これにより、金融や医療など高規制業界におけるクラウド採用の心理的・技術的ハードルが下がり、今後同様の検証手法が標準化していく可能性がある。
編集コメント
形式手法のクラウド適用は実証段階から本番運用へ移行した象徴的事例であり、今後、金融・医療など高セキュリティ要件の分野で標準化が進む可能性がある。
Amazonの2025年 re:Inventカンファレンスにおいて、Amazon Web Services(AWS)はNitro Isolation Engine(NIE)を発表しました。これは、AWSクライアントにリソースを提供しつつ、顧客データのセキュリティを確保する役割を担うソフトウェアモジュールです。AWSはまた、Isabelle/HOLと呼ばれる証明支援系を用いて、この隔離エンジンの正確性とセキュリティ保証の形式的検証を完了したことを発表しました。初の形式的に検証されたクラウドハイパーバイザーとして、NIEはクラウドセキュリティの新たな基準を確立します。証明支援系とは、数学的定理、ハードウェアやソフトウェアシステムの正当性、あるいはその中間にあるあらゆるものについて、人間のユーザーが形式的証明を構築するのを支援する自動化ツールです。一般的に使用されている証明支援系は複数ありますが、我々は表現力、自動化、証明の可読性、スケーラビリティのバランスが適切であったため、Isabelle/HOLを選択しました。では、それは具体的にどういう意味でしょうか?
コンピューターによる論理的推論
数学には固定された言語は存在しませんが、プログラミング言語が計算タスクを表現するのと同様に、数学的推論を表現するための言語を作り出すことができます。そして、プログラミング言語が表現力と性能の間でトレードオフを伴うのと同様に、数学的言語は表現力と自動化の容易さの間でトレードオフを伴います。自動化は極めて重要です。なぜなら、形式的証明の構築は時間がかかり、極めて退屈な作業であり、ちょうどビンの中に船を作るようなものだからです。最も基本的な数学的言語はブール論理、すなわちAND、OR、NOTという二項演算子の世界です。この言語は非常に単純であるため、これに対して強力な自動ソルバーが存在します。2016年、カーネギーメロン大学の教授(現在はAmazon Scholar)であるMarijn Heule氏とその同僚は、未解決の数学的問題である「ブール・ピタゴラス三つ組問題」をブール論理にエンコードし、自動ソルバーを用いて史上最大(200テラバイト)の証明を作成するのに貢献しました。
一階述語論理と呼ばれるより豊かな数学的言語を使えば、整数などの関心領域について語り、その領域上で関数を定義することができます。また、「すべての」や「存在する」といった量化子を命題に含めることで、ブール論理を超えることができます。この種の言語では、「2より大きいすべての素数は奇数である」といった文を表現できます。ルイス・キャロルによる次の定理も証明できます:「ダンスを踊るカモはいない。士官はダンスを断ることは決してない。私の家禽はすべてカモである。したがって、私の家禽に士官はいない」。
しかし、多くの人は、プログラミングで行うように型を定義できる、さらに強力な数学的言語を好みます。高階論理では、Haskellのような関数型プログラミング言語に見られるような関数型さえあります。高階論理は一階述語論理よりもはるかに豊かで、「数1を含み、加法について閉じているすべての集合は、すべての正の整数を含む」といった文を表現できます。これは数学の大部分を表現するのに十分なほど豊かであるように思われます。最も豊かな数学的言語(依存型理論と呼ばれる)では、型が任意の値をパラメータとして取ることさえ可能です(例:T(i)、ここでiは整数)。そのような言語で最もよく知られているのはLeanとRocqです。
一階述語論理には強力な自動定理証明器が存在しますが、高階論理やそれ以上では、完全な自動化は利用できません。これが表現力の代償です。証明支援系は、部分的な自動化と独自の証明探索をコーディングする可能性によってサポートされ、ユーザーが対話的に証明を構築することを可能にします。証明支援系は、通常、定理を作成する権限をコードの限られた部分にのみ与えるカーネルアーキテクチャを通じて、論理法則への厳格な準拠を強制します。証明支援系はまた、膨大になる可能性のある形式的仕様階層の対話的開発をサポートします。例えば、Nitro Isolation Engine(NIE)の検証は、Graviton-5プロセッサのアーキテクチャ仕様、ハイパーコールのRustコードとその機能的正確性、そして証明されるべきセキュリティ特性の仕様に基づいています。これらは、形式的証明を構成する25万行の大部分を占めています。
高階論理は、HOLとHOL Lightという2つの密接に関連する証明支援系によってサポートされており、1990年代以降、ハードウェア設計、浮動小数点アルゴリズム、純粋数学の検証に使用されてきました。AWSシニアプリンシパルアプライドサイエンティストのJohn Harrison氏はHOL Lightを開発し、暗号アルゴリズムの最適化バージョンを検証することで、AmazonのGraviton2チップ上のデジタル署名の性能を最大94%向上させるために使用しました。そのコードは繊細であり、網羅的なテストは実行不可能でした。そのような重要なソフトウェアをデプロイする前には、完全な機能的正確性の形式的検証のみが適切だったのです。しかし、今日我々が関心を持っているのはIsabelle/HOLです。
Isabelle/HOLの概要
Isabelle/HOLと他のHOLシステム(いずれも高階論理に基づく)の最も目に見える違いは、その仕様記述言語と証明言語です。ほとんどの証明支援系では、ユーザーは証明したいことを述べ、その後、一種のモグラ叩きゲームのように元のゴールを一連のサブゴールに置き換えるコマンドのリストを記述します。Isabelleでは、そしてある程度Leanでも、証明言語は望ましい中間ゴールを明示的に書き出すことを可能にし、より制御された証明プロセスとより読みやすい証明文書を実現します。オンラインには多くの例があります。
その他の注目すべき機能は以下の通りです:
- ユーザー設定可能なパーサー:これにより、仕様にRust言語の重要なフラグメントを埋め込むことができました。
- 型クラス:原則に基づくオーバーロードを実現し、例えば
+に自然な意味を与えることができ、様々な数値型だけでなく、マシンワードや他の適切な文脈でも使用可能です。 - ロケール:軽量なモジュールシステムで、仕様の階層を定義し、証明内でも様々な方法で解釈可能です。
- 強力な組み込み自動化:簡約化と後向き連鎖証明探索による。
- スレッジハンマー:ワンクリックでさらに強力な外部自動化ツールにアクセス可能。
- 反例発見ツール:実際には偽である主張を特定するため。
- 実行可能な高階仕様からのコード生成:我々は適合性テストに使用しました。
NIEの検証のために、我々はまずIsabelle/HOLの上に分離論理と呼ばれる専門言語を実装することから始めました。分離論理は、共有リソース上で動作するプログラムコードを検証するために設計されています。我々は独自の証明自動化をコーディングし、組み込みのものも使用しました。そのため、分離論理を使用できる一方で、必要に応じて平易な高階論理も使用することができました。Isabelleは、真に巨大なサブゴールに対処するのに十分な回復力と効率性を備えていることが判明しました。市販のラップトップを使用して、その25万行の証明を30分で実行することができました。
Isabelle/HOLの応用例
NIE以前のIsabelleの単一で最も印象的な応用例は、広く使用されているマイクロカーネルであるseL4の検証でしょう。この証明も最初に発表された時点で約25万行でした(現在ははるかに長くなっています)。seL4の開発者たちは、マイクロカーネルのC実装が抽象仕様を洗練させていることを証明し、コア操作の完全な機能的正確性を導き出しました。そして、検証されたコード部分ではバグは観察されていませんが、テストは未検証部分や形式化できない特定の仮定をカバーする上で依然として役割を果たしています。
Isabelleはまた、以下のプロジェクトで使用されました:
- WebAssembly言語の意味論を形式化し、エラーを特定し、特にその型システムの健全性を証明するため。
- Cogentプログラミング言語の検証フレームワークを作成するため。
- 分散編集に使用されるコンフリクトフリー複製データ型のアルゴリズムの正確性を証明するため。
- 純粋数学における数多くの結果を形式化するため。
- 抽象レベルで暗号プロトコルを検証するため。
Isabelleは無料でオープンソースであり、ダウンロード可能です。十分なメモリを搭載したあらゆるマシンの主要なオペレーティングシステム上で動作します。
原文を表示
At Amazon’s 2025 re:Invent conference, Amazon Web Services (AWS) announced the Nitro Isolation Engine (NIE), a software module tasked with providing resources to AWS clients while ensuring the security of customer data. AWS also announced the formal verification of the isolation engine’s correctness and security guarantees, using a proof assistant called Isabelle/HOL. As the first formally verified cloud hypervisor, NIE sets a new standard for cloud security. A proof assistant is an automated tool that can help human users develop formal proofs — of mathematical theorems, the validity of hardware or software systems, or anything in-between. Several proof assistants are in common use, and we chose Isabelle/HOL because it struck the right balance among expressiveness, automation, proof readability, and scalability. So what do I mean by that? Logical reasoning by computer There is no fixed language of mathematics, but we can create languages for expressing mathematical reasoning, just as programming languages express computational tasks. And just as programming languages involve trade-offs between expressiveness and performance, mathematical languages involve trade-offs between expressiveness and ease of automation. Automation is vital because the construction of a formal proof is both time consuming and extremely tedious, analogous to constructing a ship in a bottle. The most elementary mathematical language is Boolean logic, the world of the binary operators AND, OR, and NOT. Because this language is so simple, powerful automatic solvers exist for it. In 2016, Carnegie Mellon professor Marijn Heule — now an Amazon Scholar — and his colleagues encoded into Boolean logic an unsolved mathematical question, the Boolean Pythagorean Triples Problem, and used automatic solvers to help create the largest proof ever, 200 terabytes long. A richer mathematical language called first-order logic allows us to talk about some domain of interest — the integers, say — and to define functions over that domain. And we can go beyond Boolean logic by including the quantifiers "for all" and "there exists" in assertions. In this sort of language, we can express statements such as "every prime number greater than two is odd". We can also prove the following theorem, due to Lewis Carroll: No ducks waltz; no officers ever decline to waltz; all my poultry are ducks. Hence, none of my poultry are officers. However, most people prefer a still stronger mathematical language, where they can define types, as they do in programming. In higher-order logic, there are even function types, as found in functional programming languages such as Haskell. Higher-order logic is much richer than first-order logic, able to express statements such as Every set containing the number 1 and closed under addition contains all the positive integers. It appears to be rich enough to express most of mathematics. The richest mathematical languages — called dependent-type theories — even allow types to take arbitrary values as parameters, e.g., T(i), where i is an integer. The best-known such languages are Lean and Rocq. Powerful automatic theorem provers exist for first-order logic, but for higher-order logic and beyond, full automation is not available. This is the price of expressiveness. A proof assistant allows users to build proofs interactively, supported by partial automation and the possibility of coding their own proof searches. A proof assistant enforces strict compliance with the laws of logic, typically through a kernel architecture that gives only a limited portion of the code the right to create a theorem. A proof assistant also supports the interactive development of a possibly huge formal-specification hierarchy. For example, verification of the Nitro Isolation Engine (NIE) rests on specifications of the architecture of the Graviton-5 processor, the Rust code of the hypercalls and their functional correctness, and the security properties that are to be proved. These take up much of the quarter of a million lines constituting the formal proof. Higher-order logic is supported by HOL and HOL Light, two closely related proof assistants, and has been used to verify hardware designs, floating-point algorithms, and pure mathematics since the 1990s. AWS senior principal applied scientist John Harrison developed HOL Light, and he has used it to improve the performance of digital signatures on Amazon’s Graviton2 chip by up to 94%, by verifying an optimized version of the cryptographic algorithms. The code was delicate, and exhaustive testing is not feasible; only a formal verification of full functional correctness would do before the deployment of such critical software. But today we are interested in Isabelle/HOL. Overview of Isabelle/HOL The most visible difference between Isabelle/HOL and the other HOL systems — which are all based on higher-order logic — is its specification and proof language. With most proof assistants, users state what they want to prove, followed by lists of commands that replace the original goals with series of subgoals in a kind of whack-a-mole game. In Isabelle and to some extent Lean, the proof language allows desired intermediate goals to be written out explicitly, allowing a better controlled proof process and a more legible proof document. There are plenty of examples online. Other notable features are as follows: a user-configurable parser, which allowed us to embed a significant fragment of the Rust language into our specifications; type classes for principled overloading, so that say + can be given its natural meaning, not just for a variety of numeric types but for machine words and in other appropriate contexts; locales, a lightweight module system allowing a hierarchy of specifications to be defined and interpreted in various ways, even within a proof; powerful built-in automation through simplification and backchaining proof search; sledgehammer: one-click access to even more powerful external automation; counterexample-finding tools, for identifying claims that are actually false; code generation from executable higher-order specifications, which we used to test conformance. For the verification of NIE, we began by implementing a specialized language called separation logic on top of Isabelle/HOL. Separation logic is designed for verifying program code operating on shared resources. We coded our own proof automation and also used what was built in. We therefore could use separation logic but also plain higher-order logic when we wanted to. Isabelle turned out to be resilient enough and efficient enough to cope with the truly gigantic subgoals. It could run that quarter-million-line proof in half an hour using an off-the-shelf laptop. Some applications of Isabelle/HOL The single most impressive application of Isabelle prior to NIE is probably the verification of seL4, a widely used microkernel. This proof was also about a quarter of a million lines when first announced, although it is now much longer. The seL4 developers proved that the microkernel’s C implementation refined the abstract specification, yielding full functional correctness of the core operations. And they have observed no bugs in the verified parts of the code, although testing still plays a role in covering unverified parts and certain assumptions that cannot be formalized. Isabelle was also used in the following projects: to formalize the semantics of the WebAssembly language, to identify errors and, in particular, to prove the soundness of its type system; to create a verification framework for the Cogent programming language; to prove the correctness of algorithms for conflict-free replicated data types, which are used for distributed editing; to formalize numerous results in pure mathematics; to verify cryptographic protocols at an abstract level. Isabelle is free, open source, and available to download. It runs on all the main operating systems on any machine that has enough memory.
関連記事
AWSがS3 Filesを導入、S3バケットへのファイルシステムアクセスを実現
AWSはS3 Filesを発表し、ユーザーがAmazon S3バケットをマウントして標準ファイルシステムインターフェースでデータにアクセスできるようにした。アプリケーションは標準ファイル操作で読み書きでき、システムが自動的にS3リクエストに変換するため、コンピュートサービスがS3に保存されたデータを直接扱える。
AWSが自動インシデント調査のためのDevOpsエージェントを一般提供開始
AWSは、開発者と運用者がAWS環境での問題のトラブルシューティング、デプロイメントの分析、運用タスクの自動化を支援する生成AI搭載アシスタント「DevOps Agent」の一般提供を開始した。
Amazon Bedrockの詳細なコスト帰属機能の導入
AWSがAmazon Bedrockの推論コストをIAMプリンシパルごとに自動的に帰属する機能を発表した。これにより、コストの内訳把握、コスト最適化、財務計画が容易になる。