Transcript slide

VMのメモリ暗号化による
クラウド管理者への情報漏洩の防止
田所 秀和
内田 昴志
光来 健一
千葉 滋
(東工大)
(九工大)
(九工大/JST CREST)
(東工大)
1
クラウドコンピューティングの普及
• ネットワークを通して計算機やソフトウェアなどの
サービスを提供
– Infrastructure as a Service (Iaas)
• 仮想マシン(VM)を提供
– クラウド管理者とゲストOSの管理者は異なる
• クラウド管理者が信用できるとは限らない
• 従来はマシンの管理者とOSの管理者は同じ
サービス
2
クラウド管理者への情報漏洩
• クラウド管理者はユーザVMのメモリから情報を盗む
ことが可能
– 例:パスワード、ファイルキャッシュの内容
– ハイパーバイザ型の場合
• クラウド管理者は特権VMを使いユーザVMを管理
• 特権VMはユーザVMのメモリを読み書き可能
サスペンド
特権VM
保存
ディスク
メモリ読み込み
ユーザVM
メモリ
漏洩
仮想マシンモニタ
3
VMCrypt: VMメモリの暗号化
• 特権VMによるアクセス時にVMMがユーザVMのメ
モリを暗号化
– ユーザVMのメモリ内容を特権VMに漏洩させない
• 特権VMがアクセスする必要があるページは暗号化
しない
– 特権VMがユーザVMのサスペンドなどに利用
• 漏えいして困る情報ではない
サスペンド
特権VM
保存
ディスク
暗号化
暗号化
メモリ
ユーザVM
メモリ
VMCrypt VMM
4
安全なサスペンド・レジューム
• Xen上の準仮想化Linuxの場合
– 4種類の非暗号化ページ
サスペンドされるドメインU
非
暗
号
化
ペ
ー
ジ
レジュームされたドメインU
ドメイン0
shared_info
shared_info
start_info
start_info
page table
page table
P2M table
P2M table
暗号化
メモリ
保
存
ディスク
復
元
暗号化
メモリ
5
VMメモリの暗号化・復号化
• ドメイン0によるメモリマップ時に暗号化、アンマップ
時に復号化
– VMMがページテーブルの変更を検出
• ハイパーコール(マップ時)
• ページフォールト(アンマップ時)
– ドメインUのメモリを上書きして暗号化
• 暗号化鍵はVMM内に保持
• ドメインUの停止中に行う
ドメイン0
ドメインU
マシン
ページ
VMCrypt VMM
6
VMメモリの暗号化・復号化
• ドメイン0によるメモリマップ時に暗号化、アンマップ
時に復号化
– VMMがページテーブルの変更を検出
• ハイパーコール(マップ時)
• ページフォールト(アンマップ時)
– ドメインUのメモリを上書きして暗号化
• 暗号化鍵はVMM内に保持
• ドメインUの停止中に行う
ドメイン0
マップ時に暗号化
ドメインU
マシン
ページ
VMCrypt VMM
7
VMメモリの暗号化・復号化
• ドメイン0によるメモリマップ時に暗号化、アンマップ
時に復号化
– VMMがページテーブルの変更を検出
• ハイパーコール(マップ時)
• ページフォールト(アンマップ時)
– ドメインUのメモリを上書きして暗号化
• 暗号化鍵はVMM内に保持
• ドメインUの停止中に行う
ドメイン0
アンマップ時に復号化 ドメインU
マシン
ページ
VMCrypt VMM
8
非暗号化ページの識別(1/2)
• shared_infoページ
– VMMとドメインUの情報共有に使用
– VMMが確保するので容易に識別可能
• start_infoページ
– ドメイン0とドメインUの情報共有に使用
– ドメインUを開始するハイパーコールで仮想レジスタ
を監視
• ブート時はrsiレジスタ、レジューム時はedxレジスタ
ドメインU
ドメイン0
start_info
VMM
shared_info
9
非暗号化ページの識別(2/2)
• P2M(Physical to Machine)テーブル
– サスペンド時はshared_infoからテーブルをたどれる
– レジューム時に識別するためにテーブル情報を保存
• 暗号化してドメインUの空きメモリに保存
• ページテーブル
– サスペンド時はVMMが管理するページタイプで識別
– レジューム時はP2Mテーブルと同様に実装予定
• 現在はドメイン0から通知
ドメイン0
ドメインU
P2M
ページテーブル
shared_info
10
再設計:非暗号化ページの識別
• 非暗号化ページを識別するビットマップを管理
– ドメインUの空きメモリ上に用意
• VMMにより暗号化
– ブート時にVMMがビットマップを作成
• ページテーブルはCR3レジスタからたどる
– 実行時にビットマップを更新
• 例:ページテーブルの拡張
• ドメイン0に監視させたいページも登録可能
– サスペンド・レジューム時の識別の
単純化
• これまではマップ時に毎回非暗号化判定
shared_info
start_info
page table
p2m table
暗号化
ページ
ビット
マップ
11
実験
• サスペンド・レジュームの実行時間を測定
– メモリ割り当て量を変化
– XORで暗号化・復号化
• 暗号化サスペンドに時間がかかる
– 非暗号化ページの判定が
ページ数の2乗の計算量
CPU: Xeon 2.67GHz 8コア
メモリ: 12Gb
VMM: Xen 4.0.1
Dom0: Linux 2.6.32.24
DomU: Linux 2.6.32.25
サスペンド:暗号化あり
レジューム:暗号化なし
レジューム:暗号化あり
60
50
実行時間(秒)
• ビットマップを作ることで
改善できる
サスペンド:暗号化なし
40
30
20
10
0
0
50
100
メモリ割り当て(Mb)
150
12
200
関連研究
• Trusted Cloud Computing [Santos et al. HotCloud'09]
– VMを管理者が信頼できるサイトにだけ移動させる
– 信頼できないサイトでは動かせない
• Domain Disaggregation [Murray et al. VEE'08]
– ドメイン作成専用のドメインBを用意
– 管理者はドメインBから情報を盗める
• Bitvisor [Shinagawa et al. VEE'09]
– VMMがディスクやネットワークを暗号化
– メモリは暗号化しない
13
まとめと今後の課題
• クラウド管理者への情報漏洩を防ぐVMCryptを提案
– 特権VMのアクセス時にVMMがVMのメモリを暗号化
– VMMが非暗号化ページを識別
– Xenへプロトタイプ実装
• 今後の課題
– 非暗号化ページ識別の実装を完成させる
– ライブマイグレーションへの対応
• ドメインを動かしたままメモリアクセス
– 完全仮想化に対応
• VRAMなど多くのメモリにドメイン0がアクセス
14