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

Slides:



Advertisements
Similar presentations
九州工業大学大学院 情報工学府 情報創成工学専攻 塩田裕司.  仮想マシン( VM )は必要なときだけ動かすこと が多い ◦ クラウドでもデスクトップでも ◦ 長期間使わない VM が存在する  VM の再開時に攻撃を受ける可能性が高くなる ◦ 停止中に OS やアプリケーションの脆弱性が発見されるこ.
Advertisements

ファイルキャッシュを考慮したディスク監視のオフロード
Chapter11-4(前半) 加藤健.
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
クラウド上の仮想マシンの安全なリモート監視機構
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
Android と iPhone (仮題) 情報社会とコンピュータ 第13回
Xenを用いたクラウドコンピュー ティングにおける情報漏洩の防止
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
KVMにおけるIDSオフロードのための仮想マシン監視機構
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
メモリ暗号化による Android端末の盗難対策
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
帯域外リモート管理を継続可能な マイグレーション手法
大きな仮想マシンの 複数ホストへのマイグレーション
ネストした仮想化を用いた VMの安全な帯域外リモート管理
帯域外リモート管理の継続を 実現可能なVMマイグレーション手法
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
型付きアセンブリ言語を用いた安全なカーネル拡張
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
VMのメモリ暗号化によるクラウド管理者への情報漏洩の防止
VMのメモリ暗号化による クラウド管理者への情報漏洩の防止
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
シャドウデバイスを用いた 帯域外リモート管理を継続可能なVMマイグレーション
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
ネストしたVMを用いた 仮想化システムの高速なソフトウェア若化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
IaaS環境におけるVMのメモリ暗号化による情報漏洩の防止
クラウドにおけるVMリダイレクト攻撃を防ぐためのリモート管理機構
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
クラウドにおけるVM内コンテナを用いた 低コストで迅速な自動障害復旧
Intel SGXを利用するコンテナの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
VMMのソフトウェア若化を考慮した クラスタ性能の比較
信頼できないクラウドにおける仮想化システムの監視機構
VMが利用可能なCPU数の変化に対応した 並列アプリケーション実行の最適化
仮想環境を用いた 侵入検知システムの安全な構成法
Cell/B.E.のSPE Isolationモードを用いた監視システム
仮想マシンの監視を継続可能なマイグレーション機構
仮想化システムのソフトウェア若化のための軽量なVMマイグレーション
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
ゼロコピー・マイグレーションを 用いた軽量なソフトウェア若化手法
仮想化システムの 軽量なソフトウェア若化のための ゼロコピー・マイグレーション
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
強制パススルー機構を用いた VMの安全な帯域外リモート管理
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
複数ホストにまたがるVMの 高速かつ柔軟な 部分マイグレーション
複数ホストにまたがるVMの メモリ使用状況に着目した高速化
Virtual Machine Introspectionを可能にするVMCryptの拡張 田所秀和 光来健一 (九州工業大学)
強制パススルー機構を用いた VMの安全な帯域外リモート管理
管理VMへの キーボード入力情報漏洩の防止
Presentation transcript:

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

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

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

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

マイグレーション時の問題 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 移送元ホスト 移送先ホスト

提案: 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ライブラリ

マイグレーションの流れ(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 マネージャ 状態 移送元 ホスト ライブラリ ランタイム

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

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ランタイム

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ランタイム

保存・復元のパイプライン処理 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 マネージャ ライブラリ ランタイム

実験 巨大なEnclaveを持つSGXアプリケーションのマイグ レーションの動作確認および性能測定 保存・復元でパイプライン処理を行わない従来手 法 [Gu et al.'17] と比較 項目 移送元ホスト 移送先ホスト CPU Intel Core i7 8700 Intel Xeon E3-1225 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

マイグレーションの動作確認 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

マイグレーションの性能 マイグレーション時間とその内訳を測定 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

メモリ使用量の比較 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 移送元ホスト 移送先ホスト

関連研究 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

まとめ 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 /* 巨大の定義は?