Presentation is loading. Please wait.

Presentation is loading. Please wait.

Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構

Similar presentations


Presentation on theme: "Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構"— Presentation transcript:

1 Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構
九州工業大学大学院 情報工学府情報創成工学専攻 光来研究室 修士2年 中島 健児 10

2 従来の情報漏洩対策の問題 OS サーバで扱う機密情報が爆発的に増加 OSが攻撃を受けると対策を無効化される
不正なファイルアクセスや通信などを禁止 OSが攻撃を受けると対策を無効化される OSには様々な脆弱性が報告され続けている OSはサーバ内の機密情報を容易に盗める 0:10 では、背景です。近年サーバで扱う機密情報が爆発的に増加しています。従来からOSによる様々な情報漏えい対策が行われてきました。例えばSELinuxや AppArmorなどを用いたアクセス制御の提供です。これらによりアプリケーションのアクセス権限を制限することで不正な行為を防ぎ情報漏洩の対策をしています。しかし、OSには様々な脆弱性が報告され続けており、その脆弱性を悪用した攻撃を受けると対策を無効化される可能性があります。また、OS自体を乗っ取られてしまうと、OSからは様々な情報を容易に読み取ることができるため、機密情報を盗み取られる恐れもあります。0:50/40 アプリ ケーション アプリ ケーション インターネット マルウェア 不正な通信 機密情報 機密情報 無効化 OS 攻撃 読み取り

3 Intel SGXを用いた情報漏洩対策 OS アプリケーション内に保護領域(Enclave)を作成 Enclave
CPUによってメモリが暗号化される Enclave内で機密情報を扱うことで情報漏洩を防止 OSでさえもEnclave内の情報にアクセスできない 実行中のプログラムを改ざんすることもできない 改ざんしたプログラムはEnclaveで実行できない 0:50 そこで近年用いられているのがIntel SGXによる機密情報の保護です。SGXはアプリケーション内にEnclaveと呼ばれる保護領域を作成します。この領域はCPUによりメモリが暗号化されて保護されます。このEnclave内部で機密情報を扱うことで漏洩を防止します。このEnclave領域には外部から直接アクセスすることが出来ません。これはOSやハイパーバイザーでさえもです。さらに、実行中のプログラムを改ざんする事もできません。また、改ざんしたプログラムを実行することもできません。1:50/1:00 /*改ざんしたプログラムを実行できないのは署名チェックするから? /*改ざんしたプログラムにより情報を不正に入手など? Enclave SGXアプリ ケーション 機密情報 保護 SGX OS

4 SGXアプリケーションの マイグレーション
ホストのメンテナンス時でも実行を継続することが できる アプリケーションの内部状態を保存し、移送先ホス トで復元することで移動させる コンテナの普及で重要性が増している 1:50 このような特徴を持つSGXアプリケーションを別のホストにマイグレーションできると大変有用です。例えば、ホストのメンテナンスが必要になった場合でも、マイグレーションが可能であればアプリケーションの実行を継続できます。マイグレーションは移送元ホストで内部状態を保存し、転送、移送先ホストで復元することで実現されます。アプリケーションをマイグレーションする方法としてプロセス・マイグレーションが挙げられます。近年、コンテナが普及してきたことで重要性が増しています。2:20/0:30 マイグレーション アプリケーション メンテナンス 移送元ホスト 移送先ホスト

5 マイグレーション時の問題 SGXアプリケーションをマイグレーションすると Enclaveの実行を継続できなくなる
CPU固有の鍵で暗号化されている 移送先ではEnclaveのメモリを復号できない CPUが変わるため Enclave 転送 2:20 では、SGXアプリケーションをマイグレーションする場合、どのような問題があるのかを説明します。それはSGXアプリケーションを通常のアプリケーションのようにマイグレーションするとEnclaveの実行を継続できなくなるという問題です。   こちら、移送元ホストで作成されたEnclave領域はこのCPUが持つ固有の鍵により暗号化され保護されています。この状態でマイグレーションを行います。移送先ホストでは、こちらのCPUが持つ鍵でEnclaveを読み取ろうとしますが、鍵が異なるため復号できずEnclaveの内容を読み取ることが出来ません。これによりマイグレーション後にEnclaveの実行を継続できません。End:3:50/1:30 /*そもそも、アプリケーションの状態を保存しようとしてもEnclaveにアクセスできずエラーになり保存が出来ない SGXアプリ ケーション 保護 復号不能   鍵が異なる SGX SGX 移送元ホスト 移送先ホスト

6 提案: MigSGX SGXアプリケーションのマイグレーションを実現 Enclave自身がメモリの内容を保存・復元
CPUに依存しない鍵で暗号化 別のCPUでもEnclaveメモリを復元可能 巨大なEnclaveメモリでも効率よく処理 MigSGXライブラリによって共通機能として提供 3:50そこで、SGXアプリケーションのマイグレーションを実現する機構であるMigSGXを提案します。MigSGXではEnclave自身がそのメモリ内容をEnclave外部のメモリに保存します。この際にCPUに依存しない鍵を使って暗号化します。これにより別のCPUでもEnclaveメモリを復元可能です。また、Enclave内で扱う情報が膨大になりEnclaveメモリが巨大になった場合でも、(従来手法より)効率よくマイグレーション可能な実装を行いました。 これらの機能をMigSGXライブラリで提供することで開発者がマイグレーションのための処理を意識することなく開発を行えるようにしました。End:4:50/1:00 ※MigSGX: SGX Application Migration SGXアプリケーション 保存 Enclave 保存 外部メモリ 暗号化 Enclaveメモリ MigSGXライブラリ

7 マイグレーションの流れ(1/2) MigSGXマネージャがSGXアプリケーション内の MigSGXランタイムと通信
MigSGXライブラリにEnclaveメモリを保存させる SGXアプリケーションメモリやEnclaveの暗号化状態 データを移送先ホストに転送 SGXアプリケーション 状態 転送 4:50 それではMigSGXによるマイグレーション手順について説明します。マイグレーション開始時に、まず、MigSGXマネージャはMigSGXランタイムと通信を行い、Enclaveの保存開始を指示します。MigSGXランタイムはEnclave内部のMigSGXライブラリを呼び出してEnclaveメモリを外部に保存させます。そしてそのEnclaveの状態データをMigSGXマネージャが移送先ホストへ転送します。Enclaveメモリの保存が終わると、MigSGXマネージャはSGXアプリケーション全体の状態を取得し、移送先ホストへ転送します。 End:5:50/1:00 取得 Enclave MigSGX マネージャ 状態 移送元 ホスト ライブラリ ランタイム

8 マイグレーションの流れ(2/2) 移送先ホストでMigSGXマネージャがSGXアプリ ケーションを復元
SGXアプリケーション内のMigSGXランタイムと通信 MigSGXライブラリにEnclaveメモリを復元させる 状態 SGXアプリケーション 転送 5:50 移送先ホストでは、SGXアプリケーションのメモリ状態が転送させてくると、これを用いてSGXアプリケーションを復元します。SGXアプリケーションの実行が再開されると先程と同様の手順でMigSGXマネージャがランタイムと通信を行い、Enclaveの復元を指示します。End:6:20/0:30 復元 Enclave 状態 MigSGX マネージャ 移送先 ホスト ランタイム ライブラリ

9 Enclaveメモリの保存 SGXのECALL機能を用いてMigSGXライブラリが提供 するメモリ保存関数を呼び出し
ヒープ領域とデータ領域をEnclave IDとともに保存 移送先と共有する鍵を用いて暗号化 Enclaveの外部メモリに保存 Enclaveを一旦終了 SGXアプリケーション 6:20 続いて、Enclaveメモリの保存手順について詳しく説明していきます。まず、MigSGXランタイムはEcallと呼ばれる、アプリケーション開発者が指定した関数だけを安全に呼び出せるSGXの機構を用いて、MigSGXライブラリのメモリ保存関数を呼び出します。このメモリ保存関数はEnclaveの内部状態として、ヒープ領域、データ領域をEnclaveIDと共に外部メモリへ保存します。この際、外部メモリは攻撃を受ける可能性があるため、CPUに依存しない鍵を用いて暗号化して書き出します。この鍵は移送先と共有します。最後に、Enclaveは必要ないので終了します。End:7:30/1:10 ヒープ領域とは:malloc等で動的に確保される領域 データ領域:大域変数または静的変数のために確保される領域 /*Enclave領域は使えなくなるってより、マネージャがアクセスできずに保存エラーになるから消す Enclave 外部メモリ 書き込み 暗号化状態データ MigSGXライブラリ ECALL MigSGXランタイム

10 Enclaveメモリの復元 保存時と同じメモリアドレスにEnclaveを再作成
ECALLを用いてMigSGXライブラリが提供するメモリ 復元関数を呼び出し 移送元と共有する鍵でメモリデータを復号 Enclaveメモリのヒープ領域とデータ領域を上書き 7:30 続いて、Enclaveメモリの復元手順について説明します。MigSGXランタイムは、保存時と同じメモリアドレスにEnclaveを再作成します。これは、Enclave内部で使われているポインタを再利用するためです。Enclaveの再作成が完了すると、保存時と同様にECALLを用いてMigSGXライブラリが提供するメモリ復元関数を呼び出します。外部メモリの暗号化状態データをEnclave内部に読み込み、移送元と共有しておいた鍵を用いて復号し、Enclaveメモリの各領域を上書きして復元を行います。End:8:30/1:00 SGXアプリケーション Enclave 外部メモリ 読み込み 暗号化状態データ ECALL 再作成 MigSGXライブラリ MigSGXランタイム

11 保存・復元のパイプライン処理 Enclave
従来手法 [Gu et al.'17] ではEnclaveメモリ全体を外 部メモリに書き出してから転送 一時的に2倍のメモリが必要 MigSGXでは小さな外部メモリを使って書き出しと 転送を繰り返す 外部メモリはMigSGXマネージャと共有 8:30さて、従来のEnclaveの保存・復元手法では、Enclaveメモリ全体を外部のメモリに書き出してから転送していました。そのため、一時的にEnclaveそのものと外部メモリで2倍のメモリが必要になります。Enclaveメモリのサイズが小さい場合はあまり問題になりませんが、Enclaveのサイズが巨大な場合にはマイグレーション中にメモリ不足におちいる可能性があります。 MigSGXでは、小さな外部メモリを用いてMigSGXライブラリとMigSGXマネージャが協調して、少しずつ書き出しと転送のパイプライン処理を繰り返します。これによってEnclaveメモリが巨大な場合でも、メモリ使用量を抑えた効率のよいマイグレーションを行います。End:9:30/1:00 SGXアプリケーション Enclave 状態 状態 状態 転送 書き出し 移送元 ホスト 外部メモリ MigSGX マネージャ ライブラリ ランタイム

12 実験 巨大なEnclaveを持つSGXアプリケーションのマイグ レーションの動作確認および性能測定
保存・復元でパイプライン処理を行わない従来手 法 [Gu et al.'17] と比較 項目 移送元ホスト 移送先ホスト CPU Intel Core i7 8700 Intel Xeon E v5 メモリ 32GB ネットワーク ギガビットイーサネット カーネル Linux 4.4.0(Intel SGXドライバ) Intel SGX SDKベース 2.2 CRIUベース 3.9 9:30 次に実験です。MigSGXの有効性を確認するため巨大なEnclaveを持つSGXアプリケーションのマイグレーションの動作確認及び性能測定を行いました。性能測定実験では従来手法での実装を行って提案手法と比較を行いました。 実験環境は以下の通りで、メモリサイズは32GB、そしてIntel SGX SDKとCRIUにMigSGXを実装する改良を行っています。10:00/0:30  PSW=Platform Software

13 マイグレーションの動作確認 SGXアプリケーションとしてキーバリューストアを作 成
登録されたデータをEnclave内に安全に保持 マイグレーションを行った後、実行が正常に継続で きていることを確認 キーバリューストア 10:00まずは動作確認です。SGXアプリケーションとしてキーバリューストアを作成しました。キーバリューストアは、対となるキーと値をデータをして持つ単純なデータベースで、この登録されたデータをEncalve内に保持します。このSGXを用いたアプリケーションをマイグレーションし、Enclaveが正常に継続して実行できていることを確認しました。 End:10:30/0:30 Key Value haru sakura natsu umi aki kosumosu fuyu yuki Key:natsu Value:umi

14 マイグレーションの性能 マイグレーション時間とその内訳を測定 Enclaveメモリが16GBの時には2.1倍の高速化
保存:29% (14GB)、34% (16GB) の削減 復元:0.1% (14GB)、66% (16GB) の削減 転送:7% (14GB)、4% (16GB) の増加 10:30 続いて、従来手法と提案手法でマイグレーションにかかる時間を測定しグラフにまとめました。こちらがEnclaveメモリ14GB,こちらが16GBの時間です。 提案手法では、マイグレーション時間を14GBの場合で約8%削減し、16GBの場合で約52%削減できており、大幅にマイグレーション時間が短くなっています。(23分から11分へ) 特に、Encalveメモリが16GBの場合に大きく時間を削減できていますがこれは、MigSGXでは小さなメモリのみを使ってマイグレーション可能であり、Encalveのサイズが16GBと巨大であってもメモリの空き容量が十分にある状態でマイグレーションできましたが、従来手法ではマイグレーション中にEnclaveメモリと外部メモリでそれぞれ16GBずつ、つまり合計で32GB必要となり、特に復元時にメモリの空き容量が不足してページングが多発し、復元に時間がかかってしまったため、従来手法では大幅に時間がかかっています。。 12:00/1:30

15 メモリ使用量の比較 Enclaveメモリが16GBの時に移送元ホストと移送先 ホストでメモリ使用量を測定
従来手法では空きメモリがほとんどなし ページングが多発し、スワップを5.1GB使用 MigSGXではメモリを20MBだけ使用 移送先で最後に大量のページアウトが発生 12:00最後に、Enclaveメモリが16GBの場合にメモリ使用量を計測しました。こちらが移送元ホスト、こちらが移送先ホストです。 従来手法では、移送元、移送先ともに物理メモリ使用量が32GBまで増加して、空き容量がなくなりスワップが発生しています。特に移送先ホストではページングが多発しており、最大で5.1GBまで増加しています。このページングの多発が、従来手法で復元に時間がかかっていた原因です。一方、提案手法では、移送元、移送先ともに、物理メモリ使用量がEnclaveメモリ分の16GBから外部メモリ分の20MBだけ増加しています。このグラフではほとんど見えません。また、移送先ホストでは、十分にメモリに空きがあるはずですがページアウトが発生しています。このタイミングでの各メモリ使用量を調べると、ページキャッシュが開放させずにスワップが増えていました。通常、ページキャッシュが開放された上でスワップが発生するはずなのですが、この原因は不明です。 この実験結果から、MigSGXでは従来手法より物理メモリ使用量を大幅に減らすことができることが分かり、外部メモリを利用したパイプライン処理が有用であることを確かめることができました。14:00/2:00 SRC 旧:スワップが3.7GB、M:スワップ0 旧:RSSは16GB、M:RSSは20MB DST 旧:スワップ:5.1G、M:ページアウト、2.3GB 旧RSS16GB、M:RSS20 14:00/1:30 移送元ホスト 移送先ホスト

16 関連研究 SGXに対応したVMマイグレーション ハードウェアを利用して実現 [Park et al.'16]
マイグレーション用の暗号鍵を利用 SGXハードウェアの拡張が必要 ソフトウェアのみで実現 [Gu et al.'17] 本研究と同様にEnclaveメモリを保存・復元 小さなEnclaveだけを扱っている OSへの修正が必要 アプリケーションのマイグレーションではない 14:00 続いて関連研究です。SGXに対応したVMのマイグレーションについてはいくつかの先行研究があります。 1つ目の関連研究はハードウェアの拡張を行いマイグレーションを実現する手法であり、IntelによるCPUのハードウェアの拡張が必要です。2つ目の関連研究は本研究と同様にEnclaveメモリを保存・復元しておりソフトウェアのみで実現していますが、小さなEnclaveだけを扱っており、またOSへの修正が必要です。14:30/0:30

17 まとめ SGXアプリケーションのマイグレーションを可能に するMigSGXを提案 今後の課題 巨大なEnclaveメモリでも効率よく処理
 まとめ SGXアプリケーションのマイグレーションを可能に するMigSGXを提案 巨大なEnclaveメモリでも効率よく処理 Enclave自身がメモリの内容を少しずつ保存・復元 小さな外部メモリを用いてパイプライン処理 CPUに依存しない鍵で暗号化 MigSGXのマイグレーション性能を確認 メモリ使用量とマイグレーション時間を削減 今後の課題 暗号鍵を安全に共有する仕組みの構築 Enclaveメモリの更新領域だけを保存・転送する仕 組みの実装 14:30 最後にまとめです。本研究では,SGXアプリケーションのマイグレーションを可能にする機構であるMigSGXを提案しました。 MigSGXでは、Enclave自身に状態の保存・復元を行わせます。その際にCPUに依存しない鍵で暗号化します。 また、巨大なEncalveを持つ場合でも小さな外部メモリを用いて少しずつ保存・復元するパイプライン処理を行うことで効率よく処理を行います。 実験ではMigSGXの性能を確認しました。 今後の課題として、Enclaveメモリを暗号化する際に利用する暗号鍵を安全に共有する仕組みを構築とEnclaveメモリを前もって保存・転送しておきダウンタイムをへらす実装を行うことが挙げられます。End:15:00/0:30 /* 巨大の定義は?


Download ppt "Intel SGXを利用する 巨大なアプリケーションの マイグレーション機構"

Similar presentations


Ads by Google