TrustZone・SGX・SEV/TDXの違い:分離の単位・信頼する範囲・メモリの暗号化を比較

どれも、通常のOSやハイパーバイザが乗っ取られても秘密の処理を守るための、CPUのハードウェアによる仕組み(TEE、信頼できる実行環境)です。違いは、何を単位に切り分けるかにあります。TrustZoneはプロセッサをセキュアワールドとノーマルワールドの2つに分け、主にスマートフォンや組込み機器で使われます。SGXはアプリケーションの一部だけをエンクレーブとして切り出し、信頼する範囲を最も小さくします。SEVやTDXは仮想マシン(VM)全体のメモリを暗号化し、クラウドの事業者からも中身を読めないようにする、機密コンピューティングの方式です。

項目TrustZoneSGX(エンクレーブ)SEV/TDX(VM型の機密コンピューティング)
分離の単位プロセッサ全体を、セキュアワールドとノーマルワールドの2つに分ける。セキュアワールドで小さなトラステッドOSと信頼できるアプリケーションを動かすアプリケーションの中の、秘密を扱う一部分(エンクレーブ)仮想マシン全体
守る相手ノーマルワールドのOSとアプリケーション。そのカーネルが乗っ取られても、セキュアワールドのメモリは読めないOS、ハイパーバイザ、ほかのアプリケーション、主記憶を物理的に読む攻撃者ハイパーバイザ、クラウドの事業者の管理者、ほかのVM、主記憶を物理的に読む攻撃者
信頼する範囲(TCB)CPUのハードウェア、モードの切り替えを行うセキュアモニタ、セキュアワールドのトラステッドOSとアプリケーションCPUのハードウェアとファームウェア、エンクレーブ自身のコード。OSは含まれないCPUのハードウェアとファームウェア(AMDのセキュアプロセッサやIntelのTDXモジュールなど)、ゲストOSを含むVMの中身全体。ハイパーバイザは含まれない
メモリの暗号化基本の仕組みには含まれない。バスの信号でセキュアかどうかを区別し、アクセスそのものを遮断して分けるエンクレーブのページを、CPUの外の主記憶では暗号化しておく。実装によっては改ざんも検出するVMごとの鍵で、VMのメモリ全体を暗号化する。鍵はCPUの中だけで管理する。SEV-SNPやTDXでは、ハイパーバイザによるメモリの書き換えや付け替えを防ぐ、完全性の保護も加わる
アテステーションアーキテクチャとしての共通の方式はなく、SoCのセキュアブートや鍵の仕組みと組み合わせて実現するエンクレーブの起動時の測定値に、CPUの中の鍵で署名したレポートを出す。利用者は確かめてから秘密のデータを渡すVMの初期状態をCPUが測定し、CPUの中の鍵で署名したレポートを出す。利用者は確かめてから、データを復号する鍵を渡す
主な使われ方スマートフォンや組込み機器での、生体認証の照合、決済の資格情報、DRMの鍵の保管、セキュアブート中の検証サーバで、鍵の管理や機密のデータを扱う処理の一部だけを守るクラウドの機密VM。既存のアプリケーションを、事業者からも守った状態で動かす
移植の手間セキュアワールドで動くアプリケーションとして書き、ノーマルワールドとの狭いインタフェースを設計する必要がある大きい。アプリケーションをエンクレーブの中と外に分け、システムコールやファイル・通信の処理は外のコードに任せる小さい。対応したゲストOSを使えば、既存のOSやアプリケーションをほぼそのまま動かせる
知られている攻撃の種類コアやキャッシュ、電源を共有するので、キャッシュのサイドチャネル攻撃や、電圧・クロックの乱れによる故障注入攻撃が研究で示されている。トラステッドOSやアプリケーションの脆弱性も狙われるキャッシュのタイミング、ページフォールトのパターン、投機的実行を使うサイドチャネル攻撃で秘密が漏れる例が、研究で報告されてきた悪意のあるハイパーバイザが、メモリの対応付けや割り込みなどVMとのやり取りを操作する攻撃や、サイドチャネル攻撃が研究で報告されている。完全性の保護は、こうした攻撃への対策として加えられた
提供状況Armのアプリケーションプロセッサで広く使われ、Armv8-Mのマイコンには軽量版がある。Armv9-Aでは、VM単位で分離するArm CCA(Realm)も定められている2020年代前半の時点で、Intelはクライアント向けCPUでは提供しなくなり、主にサーバ向けCPUで提供しているSEVはAMDの、TDXはIntelのサーバ向けCPUの機能。2020年代半ばの時点で、主要なクラウドが機密VMとして提供している

数値は代表的な目安で、世代や製品によって異なります。

どんなときに使うか

TrustZone
スマートフォンや組込み機器で、別のチップを追加せずに、1つのSoCの中に安全な領域を作りたいとき。生体認証や決済、セキュアブートの処理を、通常のOSから切り離して行います。
SGX(エンクレーブ)
サーバの上で、鍵の処理など特に守りたい一部の処理だけを、OSやハイパーバイザからも隔離したいとき。信頼する範囲を最も小さくできますが、アプリケーションを作り直す手間がかかります。
SEV/TDX(VM型の機密コンピューティング)
クラウドで、既存のアプリケーションをほぼそのまま、事業者のハイパーバイザや管理者からも守って動かしたいとき。リモートアテステーションで正しいVMであることを確かめてから、データの鍵を渡します。

よくある質問

エンクレーブと機密VMは、どちらが安全ですか?

守る相手は似ていますが、信頼する範囲が違います。エンクレーブはOSも信頼の範囲から外し、信頼するのはCPUとエンクレーブ自身のコードだけなので、範囲は最も小さくなります。機密VMはゲストOSを含むVM全体を信頼するので範囲は広くなりますが、既存のソフトウェアをほぼそのまま動かせます。守りたいコードの大きさと、作り直しにかけられる手間で選びます。

TrustZoneは、メモリを暗号化しますか?

TrustZoneの基本の仕組みは、暗号化ではなくアクセスの制御です。CPUがバスに出す読み書きにはセキュアかどうかを示す信号が付き、メモリや周辺回路の側の回路が、ノーマルワールドからセキュアな領域へのアクセスを拒否します。外部のDRAMの暗号化は、SoCによって別の機能として備えることがあります。

メモリを暗号化すれば、サイドチャネル攻撃も防げますか?

防げません。メモリの暗号化は、主記憶に置かれたデータを読まれたり書き換えられたりすることを防ぎますが、キャッシュの使われ方や処理の時間、ページフォールトのパターンなどは外から観察できる場合があります。秘密によって分岐やメモリアクセスが変わらない書き方をする、マイクロコードを更新する、信頼できない相手と同じコアを共有しないといった対策を組み合わせます。

SGXは今でも使えますか?

2020年代前半の時点で、IntelはSGXをクライアント向けCPUでは提供しなくなり、主にサーバ向けCPUで提供しています。そのため、PCで動くアプリケーションの保護にSGXを前提にすることはできなくなりました。サーバでは、エンクレーブのほかに、TDXのようなVM単位の方式も選べます。

理解度チェック

TEE(信頼できる実行環境)の説明として正しいものはどれか。

  1. A通常のOSからも隔離された、ハードウェアで守られた実行環境で、鍵の処理や認証などの重要な処理を行う
  2. Bインターネットの通信を速くするための環境
  3. Cプログラムを書くための文章の編集ソフト
答えと解説を見る

正解:A. 通常のOSからも隔離された、ハードウェアで守られた実行環境で、鍵の処理や認証などの重要な処理を行う

通常のOSは機能が大きく複雑なので、脆弱性を完全になくすのは難しいです。TEEは、ハードウェアの仕組みで通常のOSから切り離された小さな実行環境を作り、指紋の照合、支払いの処理、DRMの鍵の扱いなど、特に守るべき処理をその中で行います。通常のOSが乗っ取られても、TEEの中のメモリや鍵には手を出せないようにするのが狙いです。ArmのTrustZoneが代表的な例です。

ArmのTrustZoneの基本的なしくみとして正しいものはどれか。

  1. Aセキュアな処理は、すべて別のパソコンで行う
  2. Bノーマルワールドのプログラムが、セキュアワールドのメモリを自由に読める
  3. CCPUがセキュアワールドとノーマルワールドの状態を持ち、バスの信号などでメモリや周辺回路への読み書きがどちらの世界からかを区別して制限する
答えと解説を見る

正解:C. CPUがセキュアワールドとノーマルワールドの状態を持ち、バスの信号などでメモリや周辺回路への読み書きがどちらの世界からかを区別して制限する

TrustZoneでは、CPUのコアがセキュアとノーマルの2つの状態を切り替えて動き、読み書きのたびに今どちらの状態かを示す信号がバスに出ます。メモリや周辺回路の側の回路がこの信号を見て、セキュアに割り当てた領域へのノーマルからのアクセスを拒否します。専用のチップを追加せずに、1つのSoCの中で安全な領域を作れるので、スマートフォンなどで広く使われています。

IntelのSGXのような「エンクレーブ」型のTEEの特徴として正しいものはどれか。

  1. AOSのカーネル全体を、外付けのハードディスクで実行する
  2. Bアプリケーションの一部を、CPUがメモリを暗号化して守る領域で実行し、OSやハイパーバイザからも中身を読めないようにする
  3. Cエンクレーブの中のデータは、誰でも自由に書き換えられる
答えと解説を見る

正解:B. アプリケーションの一部を、CPUがメモリを暗号化して守る領域で実行し、OSやハイパーバイザからも中身を読めないようにする

エンクレーブでは、アプリケーションの秘密を扱う部分だけを特別なメモリの領域で実行し、その領域はCPUの中で暗号化されてから主記憶に置かれます(実装によっては改ざんの検出も行います)。OSやハイパーバイザ、物理的にメモリを読み取る攻撃者からも中身は見えません。信頼しなければならないのはCPUとそのコードだけになります。ただしサイドチャネル攻撃への弱さも報告されており、使い方に注意が必要です。

  1. クラウドで使われる「機密コンピューティング」で、仮想マシンのメモリをCPUが暗号化する機能(AMD SEVやIntel TDXなど)の目的として正しいものはどれか。
  2. 機密の処理を行うシステムで、CPUの同時マルチスレッディング(SMT)を無効にすることがある理由として正しいものはどれか。
  3. リモートアテステーション(遠隔証明)の説明として正しいものはどれか。

ハードウェアセキュリティの練習問題へ

関連する用語の解説

TrustZone
Armのプロセッサのセキュリティの仕組み。セキュアワールドとノーマルワールドを切り替え、バスの信号でメモリや周辺回路へのアクセスを区別して制限する。
エンクレーブ
アプリケーションの一部を、CPUがメモリを暗号化して守る領域で実行し、OSやハイパーバイザからも中身を読めないようにするTEEの方式。
TEE(信頼できる実行環境)
通常のOSからも隔離された、ハードウェアで守られた実行環境。鍵の処理や認証などの重要な処理を行う。ArmのTrustZoneなど。
ハイパーバイザ
1台のコンピュータの上で複数の仮想マシンを動かすためのソフトウェア。各仮想マシンのOSにCPU・メモリ・装置を分け与え、互いに隔離する。仮想マシンモニタともいう。
リモートアテステーション
機器が自分の中で動くソフトウェアの状態を、チップの中の鍵で署名して遠くのサーバに示し、信頼できるかを確かめてもらう仕組み。
サイドチャネル攻撃
処理にかかる時間、消費電力、電磁波など、本来の出力以外の物理的な情報から鍵などの秘密を推測する攻撃。
投機的実行
分岐の結果などが分かる前に、予測にもとづいて先の命令を実行しておくCPUの仕組み。予測が外れると結果を取り消すが、キャッシュなどの痕跡が残ることがある。

関連する比較