AIニュース最前線
最新ニュースAI日報Hacker日報週報動画AIツールトレンド企業

AIニュース最前線

世界中のAI最新情報を日本語で毎時更新

最新ニュース日報トレンド企業プレミアムRSS
© 2026 ainew.jp特定商取引法に基づく表記
ニュース一覧元記事を開く
Amazon Science·2026年6月11日 00:00·約10分で読める

EC2 の正式検証済み「アイソレーションエンジン」が仮想マシンの分離に数学的保証を提供

#クラウドセキュリティ#形式検証#仮想化技術#AWS#Graviton5
TL;DR

AWS は、33 万行の機械検証済み数学的証明を基盤とする世界初の商用クラウド向け形式検証型ハイパーバイザー「Nitro Isolation Engine」を Graviton5 ベースの EC2 インスタンスで一般提供開始した。

AI深層分析2026年6月11日 01:04
4
重要/ 5段階
深度40%
5
関連度30%
3
実用性20%
4
革新性10%
5

キーポイント

1

世界初の商用クラウド向け形式検証ハイパーバイザーの実装

Isabelle/HOL を用いた 33 万行の機械検証済み数学的証明により、仮想マシン間の分離が論理的に保証された「Nitro Isolation Engine」が Graviton5 インスタンスで稼働している。

2

分離カーネルによるアーキテクチャの刷新

複雑なビジネスロジックから分離され、隔離機能に特化した最小限のコンポーネントとして設計された「Nitro Isolation Engine」が、Rust で実装され、従来の Nitro ハイパーバイザーと役割分担している。

3

Graviton5 搭載インスタンス M9g/M9gd の一般提供

コア数が前世代の 1.96 から 192 に倍増した Graviton5 プロセッサを搭載し、形式検証機能を含む新アーキテクチャを初めて採用した EC2 インスタンスがリリースされた。

4

seL4 を凌ぐ規模の検証と実用化

OS 検証の先駆けである seL4 と同等かそれ以上の規模の数学的証明を達成しつつ、研究段階ではなく生産環境で常時稼働する機能として実装された点に画期的意義がある。

影響分析・編集コメントを表示

影響分析

この発表は、クラウドセキュリティの信頼性基準を「経験則やテストベース」から「数学的証明に基づく絶対的保証」へと転換させる歴史的転換点となる。特に金融や医療など高機密性が求められる分野において、仮想環境間の分離保証が理論的に担保されることは、コンプライアンス対応とセキュリティリスク低減に大きな影響を与える。また、形式検証技術の実用化は、他のクラウドプロバイダーや OS ベンダーに対しても同等の信頼性向上を迫る業界全体への波及効果を持つ。

編集コメント

「形式検証」という堅固な概念が、単なる研究プロジェクトの域を超え、実際に商用クラウドで稼働するプロダクトとして実装された点は極めて画期的です。セキュリティ業界において、数学的証明による保証が可能であることを示したこの事例は、今後のクラウドインフラ設計におけるデファクトスタンダードとなり得るでしょう。

本日、Amazon Web Services (AWS) の Elastic Compute Cloud (EC2) にて、最新世代の汎用 CPU である Graviton5 を搭載した初のインスタンスタイプとなる新しい M9g および M9gd インスタンスの一般提供を開始しました。Graviton5 は前世代からコア数を倍増させ、96 から 192 へと増加しています。また、これらは Nitro Hypervisor の構成要素であり、仮想マシン (VM) を互いに隔離する唯一の役割を担う新しい Nitro Isolation Engine(分離エンジン)を採用した初のインスタンスタイプでもあります。本稿では、論理の法則への準拠を機械的に検証する推論ステップを行う Isabelle/HOL(高次論理)証明支援ソフトウェアを用いて、Nitro Isolation Engine が正しく動作し、仮想マシンの間で隔離を強制することをどのように証明したかを説明します。Nitro Isolation Engine は、商用クラウド環境で展開された初の形式検証済みハイパーバイザの重要な構成要素です。私たちの Isabelle/HOL モデルと証明は、機械検証された数学的記述で 330,000 行に及びます。これは、現実的なオペレーティングシステムの検証が実現可能であることを初めて示した画期的プロジェクトである seL4 と規模において匹敵し、私たちの研究のインスピレーション源ともなりました。ただし、seL4 とは異なり、Nitro Isolation Engine は商用クラウド環境向けに設計されており、Graviton5 ユーザーにとって常時オン機能として生産用ハードウェアに搭載されています。Amazon の 2025 年 re:Invent コンファレンスでの講演では、私たちの形式検証手法を紹介しました。本ブログ記事では、形式検証作業の主要な側面とその相互関係について非公式な概要を提供します。

分離カーネルとは何か?

John Rushby は 1981 年に「分離カーネル」という用語を考案し、システムを隔離されたコンパートメントに分割する最小限の OS コンポーネントを記述するために使用しました。その核心となる考え方は、ポリシーとメカニズムを分離することです。分離カーネルは、何を隔離するか、リソースをどのように割り当てるか、どの仮想マシンをスケジューリングするかといった決定を行いません。これらの決定は他で行われます。代わりに、分離カーネルは隔離の強制にのみ焦点を当てており、この明確な目的により、完全な OS カーネルと比較して実装がはるかにシンプルになります。

2017 年の導入以来、Nitro Hypervisor は EC2 における隔離の強制を担当してきましたが、同時にビジネスロジック、デバイスドライバ、AWS 固有の機能も処理していました。この複雑さが正しさの証明を非常に困難にしています。さらに、Nitro Hypervisor は当初から検証のために設計されたものではありませんでした。ハイパーバイザの重要な隔離論理を最小限のコンポーネントである Nitro Isolation Engine に集約することで、検証や監査が可能な規模へと縮小し、顧客に対して隔離がどのように強制されているかについて前例のない可視性を提供しています。また、Nitro Isolation Engine は形式検証に自然に適した Rust 言語で記述されました。

Nitro Hypervisor は依然としてポリシー(仮想マシンの作成、リソース割り当て、移行、スケジューリング)を処理しますが、現在は特権が剥奪されており、ゲストの状態に触れるあらゆる操作を実行するには Nitro Isolation Engine に依頼する必要があります。Nitro Isolation Engine は、アクションを起こす前にすべてのリクエストをチェックします。

仕様と証明

私たちの作業の2つの主要な部分は、仕様(specifications)と証明(proofs)です。形式仕様はシステムの期待される動作を正確に記述し、証明はその実装がこれらの仕様に合致していることを確立します。Nitro Isolation Engine に関する私たちの定理は、4 つ種類の性質に対応しています:機密性と完全性。許可された情報フローのみが発生すること。例えば、ゲストのメモリ割り当ては再利用前に必ずスクラブされます。機能的正しさ。実装が仕様通りに正確に動作すること。ランタイムエラーの不在。Rust における None オプション値のアンラップなど、プログラム実行を停止させるような誤ったコマンド呼び出しなどのランタイムエラーが存在しないこと。メモリスafety(安全性)。バッファオーバーフローや NULL ポインタ参照などの問題が存在しないこと。

実際には、最初の3つの性質は機密性と完全性を別個に扱うため、それぞれ異なる証明技術を使用する関係上、機能検証の結果として集団的に扱います。

機能検証

機能検証における主要な部分は、Rust 言語のコアサブセットの形式化であるμRust("micro Rust")、仕様を正確に記述するために分離論理(Separation Logic)を用いた表現力豊かな仕様記述言語、そしてプログラムがその仕様に対して正しいことを証明するためのカスタム証明自動化を備えた検証技術である最弱事前条件計算(weakest-precondition calculus)です。これらすべては、2025 年に AutoCorrode ライブラリとしてオープンソース化した汎用証明インフラストラクチャの一部です。

より詳細には、μRust は Rust プログラミング言語の制限付きサブセットであり、Nitro Isolation Engine を記述するのに十分な表現力を持ちつつ、トレイトや動的ディスパッチなどの高度な Rust 機能を意図的に除外したため形式推論に適しています。μRust の形式意味論は、Isabelle/HOL における浅い埋め込み(shallow embedding)として定義されており、これはμRust の意味が高次論理、すなわち Isabelle/HOL の「ホスト言語」を用いて定義されることを意味します。

μRust プログラムの仕様は、事前条件と事後条件を持つ契約として定義されます。これらはプログラム実行前のシステム状態および実行後のシステム状態に関するアサーションです。私たちの契約は「完全正しさ(total correctness)」を指定しており、これは事前条件を満たすすべての状態において、プログラムが必ず終了し、結果としての状態が事後条件を満たすことを意味します。この完全正しさの条件は、プログラムがメモリスafety であり、ランタイムエラーがないことも保証します。

私たちの仕様は、低レベルなポインタ操作を行うプログラムについて推論するために設計された分離論理(Separation Logic)を用いて記述されています。分離カーネルの比較的小さな規模にもかかわらず、Nitro Isolation Engine の検証においては、形式検証で可能なことの限界に近い領域で動作しており、私たちの仕様と証明は非常に大規模に成長しています。

例えば、以下の仕様は、実行中のゲスト仮想 CPU が自分自身をオンにしようとする(誤ったリクエスト)際に何が起こるかを捉えています:

上記の仕様は複雑ですが、それが直感的に捉えているのは明白です。この状況では、Nitro Isolation Engine は、呼び出し元として動作するには仮想 CPU がすでにオンになっている必要があることを認識し、したがって定義されたエラーコード AlreadyOn を返します。システム状態に関する他のすべての要素は変更されません。

仕様における複雑さは、私たちのモデリングの深さと、Nitro Isolation Engine の実装においてこの段階に到達するまでに他のいくつかのエラーチェックがすでに実行されている必要があるという事実を反映しています。

μRust プログラムがその仕様に対して正しいことを証明するために、標準的な最弱事前条件計算を使用します。最弱事前条件計算は、特定の操作後のプログラム状態が指定された状態範囲から外れないようにする最も制限の少ない制約を体系的に特定する方法です。例えば、「x + y」という式の最弱事前条件とは、x と y の値が加算でオーバーフローしない状態のことです。証明義務(proof obligation)は、契約の事前条件が計算された最弱事前条件を含意することを示すことです。

機密性と完全性

機密性と完全性における最初の主要な部分は、Nitro Isolation Engine の動作を遷移関係として捉える高レベル仕様であり、システムの各「高レベル」ステップ(例えばハイパーコール)は原子遷移となります。この仕様は、機能検証の結果で使用されるより具体的な分離論理の仕様と、別の証明アイデアであるリファインメント(Refinement)を用いて厳密に接続されています。

2 つ目の主要な概念は非干渉性(noninterference)です。非干渉性は、機密性と完全性を数学的に精密にするために使用する不可分性の保存という考え方です。その考え方は、あるステップの前に観測者にとって2つの状態が区別できない場合、その後も区別不能でなければならないということです。

この考え方がなぜ機密性を捉えるのかの直感的な理由は、観測者がそのステップによって何も新しいことを学んでいないからです。不可分性の保存が機密性を保証する理由を理解するのは微妙です。2 つの単純なマシン A と B を考えてみましょう。それぞれに1つの公開レジスタと1つのプライベートレジスタがあります。観測者は、公開レジスタが一致する場合にそれらを区別できないと考えます。つまり、プライベートレジスタは隠されています。

以下の図において、A と B は区別できません:

次に、プライベートレジスタに基づいて分岐し、公開レジスタに 1 を割り当てるプログラムを実行した場合どうなるかを考えてみましょう。結果として生じるマシン A' と B' は異なる公開レジスタを持つようになります—つまり、区別可能になってしまいます!賢明な観測者はこれを利用して元のプライベート値を推論でき、この不可分性の保存の失敗は、観測者への不正な情報フローに対応します。

さらに続く内容

私たちの検証作業の主要な部分に関するこの概要をお楽しみいただけたことを願っています。適合性テストや並行コードについての推論をどのように処理するかなど、共有できる他の多くの側面があります。これらは今後の投稿で詳しく紹介する予定です。

原文を表示

Today we announced the general availability of the new M9g and M9gd instances of Amazon Web Services’ (AWS’s) Elastic Compute Cloud (EC2), the first instance types powered by Graviton5, the latest generation of our general-purpose CPU. Graviton5 doubles the number of cores from the previous generation, from 96 to 192. They’re also the first instance types to use the new Nitro Isolation Engine, a component of the Nitro Hypervisor whose sole job is isolating virtual machines (VMs) from each other. In this post, we explain how we used the Isabelle/HOL (higher-order logic) proof assistant — software that mechanically checks reasoning steps for adherence to the laws of logic — to prove that the Nitro Isolation Engine behaves correctly and enforces isolation between virtual machines. The Nitro Isolation Engine is the critical component of the first formally verified hypervisor to be deployed in a commercial cloud environment. Our Isabelle/HOL model and proof comprise 330,000 lines of machine-checked mathematics. It’s comparable in scale to seL4, the landmark project that first demonstrated that realistic operating-system verification was feasible and was an inspiration for our own work. However, unlike seL4, the Nitro Isolation Engine is designed for a commercial cloud environment and ships on production hardware as an always-on feature for Graviton5 users. Our talk at Amazon’s 2025 re:Invent conference introduces our formal-verification methodology. This blog post gives an informal overview of the main aspects of our formal-verification work and how they fit together. What is a separation kernel? John Rushby coined the term “separation kernel” in 1981 to describe a minimal OS component that partitions a system into isolated compartments. The key idea: separate policy from mechanism. A separation kernel does not decide what to isolate, how to allocate resources, or which VMs to schedule: those decisions are made elsewhere. Instead, it focuses solely on enforcing isolation, and this clarity of purpose makes separation kernels much simpler to implement than full OS kernels. Since its introduction in 2017, the Nitro Hypervisor has been responsible for enforcing isolation in EC2, but it also handles business logic, device drivers, and AWS-specific features. That complexity makes proving correctness much more difficult. Moreover, the Nitro Hypervisor was not designed for verification from the start. Distilling the hypervisor’s critical isolation logic into a minimal component, the Nitro Isolation Engine, makes it small enough to verify and audit, giving customers unprecedented visibility into how isolation is enforced. We also wrote the Nitro Isolation Engine in Rust, a language that lends itself more naturally to formal verification. The Nitro Hypervisor still handles policy — VM creation, resource allocation, migration, scheduling — but it is now deprivileged and must ask the Nitro Isolation Engine to perform any operation touching guest state. The Nitro Isolation Engine checks every request before acting. Specifications and proofs The two key parts of our work are specifications and proofs. Formal specifications precisely capture the expected behavior of the system, and proofs establish that the implementation meets those specifications. Our theorems about the Nitro Isolation Engine address four types of properties: Confidentiality and integrity. Only authorized information flows can occur. For example, guest memory allocations are always scrubbed before reuse. Functional correctness. The implementation behaves exactly as specified. Absence of runtime errors. There are no runtime errors such as unwraps of None option values in Rust — an erroneous command invocation that will stop program execution. Memory safety. There are no issues such as buffer overflows and NULL pointer dereferences. In practice, we handle the first three properties collectively, as a functional-verification result, with confidentiality and integrity treated separately, because we use different proof techniques for each. Functional verification For functional verification, the key parts are a formalization of a core subset of the Rust language, called μRust (“micro Rust”); an expressive specification language using Separation Logic for precisely capturing specifications; and a verification technique, weakest-precondition calculus, with custom proof automation for proving a program correct with respect to its specification. Each of these is part of a general-purpose proof infrastructure that we open-sourced in 2025 as the AutoCorrode library. In more detail, μRust is a restricted subset of the Rust programming language that is expressive enough to write the Nitro Isolation Engine but amenable to formal reasoning because we deliberately excluded advanced Rust features, such as traits and dynamic dispatch. The formal semantics of μRust is defined as a shallow embedding in Isabelle/HOL, which means that the meaning of μRust is defined in terms of higher-order logic, the “host language” of Isabelle/HOL. The specification for a μRust program is defined as a contract with pre- and postconditions, which are assertions about the system state before and after executing the program. Our contracts specify “total correctness”, which means that in all states that satisfy the precondition, the program always terminates, and the resulting state satisfies the postcondition. This total-correctness condition also means the program is memory safe and free of runtime errors. Our specifications are written using Separation Logic, a logic designed to reason about low-level pointer-manipulating programs. Despite the relative simplicity of separation kernels, with the verification of the Nitro Isolation Engine we are still operating on the edge of what is possible with formal verification, and both our specifications and proofs grow very large. For example, the following specification captures what happens when an executing guest virtual CPU tries to turn itself on (an erroneous request): While the specification above is complex, what it captures is intuitively straightforward: in this circumstance, the Nitro Isolation Engine sees that, to act as the caller, the virtual CPU must be turned on already, and it therefore returns a defined error code, AlreadyOn. Everything else about the system state remains unchanged. The complexity in the specification is a reflection of the depth of our modeling and the fact that several other error checks must already have been performed for us to have reached this point in the implementation of the Nitro Isolation Engine. To prove a μRust program correct with respect to its specification, we use a standard weakest-precondition calculus. A weakest-precondition calculus is a systematic way to identify the least restrictive constraint that can ensure that the state of a program after a particular operation is not outside some specified range of states. For example, the weakest precondition of the expression "x + y" is the state in which the values of x and y cannot overflow the addition. The proof obligation then is to show that the contract’s precondition entails the computed weakest precondition. Confidentiality and integrity For confidentiality and integrity, the first key part is a high-level specification that captures the behavior of the Nitro Isolation Engine as a transition relation, where each “high-level” step of the system (e.g., hypercall) is an atomic transition. This specification is rigorously connected to the more concrete Separation Logic specification used in our functional-verification results, which uses another proof idea called Refinement. The second key part is the idea of noninterference. Noninterference is the idea of indistinguishability preservation that we use to make confidentiality and integrity mathematically precise. The idea is that if two states are indistinguishable to an observer before a step, they must remain indistinguishable afterward. The intuitive reason why this captures confidentiality is that the observer has learned nothing new because of the step. Understanding why indistinguishability preservation guarantees confidentiality is subtle. Consider two simple machines, A and B, each with one public and one private register. An observer considers them indistinguishable if their public registers match: the private register is hidden. In the following diagram, A and B are indistinguishable: Now consider what happens if we execute a program that branches on the private register to assign 1 to the public register. The resulting machines A' and B' now have different public registers — they're distinguishable! A clever observer could use this to deduce the original private values, and this failure to preserve indistinguishability corresponds to illicit information flow to the observers. And more to come We hope you’ve enjoyed this overview of the main pieces of our verification work. There are many other aspects to our work, such as conformance testing and how we handle reasoning about concurrent code, that we’re excited to share in future posts.

この記事をシェア

関連記事

Amazon Science★42026年4月17日 22:00

Isabelle/HOL:Nitro分離エンジンの背後にある証明支援系

AWSが2025年re:Inventで、顧客データの安全性を確保しつつリソースを提供するソフトウェアモジュール「Nitro分離エンジン」を発表した。AWSは証明支援系Isabelle/HOLを用いて同エンジンの正確性とセキュリティ保証を形式的に検証し、初の形式的検証済みクラウドハイパーバイザーとして新基準を確立した。

Amazon Science★42026年3月21日 01:38

正式検証済みAES-XTS:s2n-bignumに初参加するAESアルゴリズム

Amazon Web Servicesの研究者チームが、暗号ライブラリs2n-bignumに正式検証済みのAES-XTS暗号化アルゴリズムを初めて追加した。アセンブリコードの簡素化により自動最適化と検証を実現している。

Vercel Blog★42026年6月1日 09:00

Vercel Blob が OIDC 認証をサポートし、新規プロジェクト接続時のデフォルト設定に

Vercel は Vercel Blob の新機能として OIDC 認証のサポートを開始しました。これにより、新しいプロジェクト接続時に OIDC がデフォルトとなり、短期間で自動回転するトークンが利用可能になります。その結果、従来の長期有効な BLOB_READ_WRITE_TOKEN を不要とし、セキュリティを強化します。

今日のまとめ

AI日報で今日の重要ニュースをまとめ読み

ニュース一覧に戻る元記事を読む