1 - KSL - 九州工業大学
Download
Report
Transcript 1 - KSL - 九州工業大学
IaaS環境におけるVMのメモリ暗
号化による情報漏洩の防止
田所 秀和(東京工業大学)
光来 健一(九州工業大学)
千葉 滋 (東京工業大学)
1
2
IaaSの普及
サービスとして仮想マシン(VM)を提供
ユーザVM管理者とクラウド管理者が存在
クラウド管理者が VM を管理
管理に特権VMを使用
ユーザはユーザVMの中を管理
クラウド管理者
特権
VM
ユーザVM
ユーザVM管理者
クラウド管理者による情報漏洩
クラウド管理者が信頼できるとは限らない
VMはどのデータセンタで動くか不明
悪意ある管理者、怠慢な管理者
特権VMへ侵入を許してしまう
特権VMを経由した情報漏洩
サスペンドによりメモリ内容が漏洩
サスペンド
特権VM
保存
ディスク
メモリ読み込み
サスペンド
プログラム
ユーザVM
メモリ
VMM
3
VMメモリからの情報漏洩
メモリ中には機密情報が存在
パスワード
ファイルキャッシュ
ディスク暗号化では情報漏洩を防げない
メモリ上の情報は暗号化すると正しく動かない
メモリを覗くだけで
機密情報取得可能
ユーザVM
/etc /shadow
.ssh/id_dsa
暗号化ディスク
web app
パスワード
4
VMCrypt:VMのメモリ暗号化
特権VMには暗号化したメモリを見せる
ユーザVMには暗号化せずに見せる
管理に必要なメモリは暗号化せずに見せる
特権VMは従来通りにユーザVMを管理可能
VMの作成、サスペンド・レジューム
漏えいして困る情報ではない
サスペンド
特権VM
保存
ディスク
暗号化
メモリ
VMCrypt VMM
ユーザVM
メモリ
5
VMCryptが想定する脅威モデル
特権VMは信頼しない
root権限奪取、カーネルの入れ替えもありうる
VMMを信頼する
Remote Attestationで正しさを証明
ハードウェアを信頼する
マシンは物理的に隔離
マシンルーム
特権VM
TCB
ユーザVM
VMM
ハードウェア
信頼できる
第三者が検査
6
ページ単位の暗号化(Xen)
ドメイン0によるページマップ時に暗号化
アンマップ後に復号化
VMMがページテーブルの書き換えを検出
ページフォールト、ハイパーコール
メモリを直接書き換えて暗号化
ドメインが一時停止中を想定
VMCryptによる暗号化
ドメイン0によるマップを検出
ドメイン0によるアンマップ
VMCryptによる復号化
ドメイン0
ドメインU
ページ
Xen
7
8
非暗号化ページ
非暗号化ページをビットマップで管理
サスペンド・レジュームでは4種類のページを暗
号化しない
非暗号化ページ: Shared Info
ドメインUとXenの通信に使われる
仮想CPUの割り込み、時間など
Xenが管理
ビットマップへの登録は容易
ドメインU
ドメイン0
bitmap
Xen
shared info
9
非暗号化ページ: P2Mテーブル
疑似物理フレーム番号からマシンフレーム番号
への対応表 疑似物理メモリ 0 1 2 3 4 5 kernel
マシンメモリ
0
1
2
3
4
5
VMM
Shared Infoからたどり、ビットマップに登録
ドメイン0がShared Infoをマップした時
ドメイン0
ドメインU P2Mテーブル
shared info
Xen
10
非暗号化ページ: Start Info
ドメイン0とドメインUの情報共有に使われる
ドメインUのレジスタを調べることでビットマッ
プに登録
ドメイン0がレジスタ経由でドメインUに通知
ブート時:rsiレジスタ
疑似物理アドレスからマシンフレームを求める
M2Pテーブルを利用
レジューム時:edxレジスタ
ドメインU
ドメイン0
start_info
Xen
非暗号化ページ: ページテーブル
11
ページテーブルの変化を実行時に常に追跡
ページテーブル用のページが追加されたらビット
マップに追加
ページ属性を設定するハイパーコールをチェック
Xenはページがどう使われるかの属性を管理
ドメインU
ページテーブル
ドメイン0
ドメイ
ン0
MFN32
Xen
ビットマップ
0
0
0 …
1
… 0
32
12
VMCryptを用いた起動
ドメインUの作成時はメモリを暗号化しない
ビットマップの更新のみ行う
機密情報は漏洩しない
最初のunpauseハイパーコール後から暗号化
ゲストOSの起動は暗号化で保護
DomUのメモリ
起動後はドメイン0には
ドメインの作成
カーネル書き込み
start info設定
ページテーブル設定
unpauseでOS起動
暗号化したメモリが見える
ビットマップ
kernel
ページテーブル
ページテーブルを登録
shared
start infoを登録
infoを登録
start info
ディスク
shared info
Xen
1
0
0
0
…
0
0
1
0
0
0
0
1
0
0
1
0
VMCryptを用いたサスペンド
ドメインUのメモリをファイルに保存
VMCryptが自動で暗号化
Shared InfoとP2Mテーブルを読み込み
ドメインUのメモリ全体を取得するため
ドメインUのページテーブルを書き換え
疑似物理フレーム番号に変換して保存
DomUのメモリ
P2Mテーブルを使い
ページテーブルなら書き換えて保存
メモリ全体のMFNを取得
通常のメモリはVMCryptが暗号化して保存
kernel
ページテーブル
start
info
P2M
ディスク
13
ビットマップの埋め込み
ビットマップをドメインUのメモリに埋め込む
サスペンド時には暗号化されて保存
e820を操作し埋め込み用のメモリを確保
メモリ領域がreservedならゲストOSが使わない
e820はBIOSのメモリマップ
reserved
として確保
DomUのメモリ
bitmap
ビットマップをコピー
bitmap
Xen
ディスク
14
VMCryptを用いたレジューム
15
ドメイン0がサスペンドイメージをメモリに戻す
この時点では復号化しない
ドメインUの非暗号化ページにアクセス
ページテーブル書き換え、コンソールMFN設定
最初の再開時にまとめて復号化
ドメインUのメモリからビットマップを取得
DomUのメモリ
bitmap
kernel
サスペンドイメージをメモリに戻す
ドメインの作成
ページテーブルの書き換え
bitmapを取得
unpause時に復号化
start infoへ設定
ページテーブル
start info
ディスク
Xen bitmap
実験
VMCryptによるオーバーヘッドを測定
vanilla Xen、null暗号化、AES暗号化
メモリマップ
サスペンド・レジューム
情報漏洩防止の確認
Xen 4.0.2
Dom0/DomU Linux 2.6.32.27
Xeon 2.67GHz 8core 12GB
16
マップ・アンマップ時間
17
ドメイン0からドメインUのメモリをマップ
null:45%劣化
AES:295%劣化
ドメインU内から自身のメモリをマップ
60
実行時間(us)
18%劣化
50
40
vanilla
30
null
20
AES
10
0
map from dom0
map from domU
18
サスペンド・レジューム時間
サスペンド・レジュームにかかる時間を測定
ドメインUのメモリ量を変化
速度低下の大部分はAESによる暗号化
vanilla
AES
vanilla
20
サスペンド
実行時間(秒)
実行時間(秒)
20
null
15
10
5
null
AES
レジューム
15
10
5
0
0
0
256
512
768
メモリ量(MB)
1024
0
256
512
768
メモリ量(MB)
1024
パスワード漏洩防止の確認
19
攻撃
サスペンドイメージからシャドウパスワード取得
文字列を抽出し特徴的な文字列を探索
VMCryptを使った場合
パスワードを取得できなかった
VMCryptを使わなかった場合
パスワードを取得できた
root@mach# strings quattro1.img | grep 'root:\$'
acroot:$6$aCJuBx5O$5HqjJyEGM.hDUBnczt2J.j6jN41.G02kHlNXHZrurOZpqL/E
lnbc489ZrZqLD2gsPDB.yVcK6trNXAquhKFkG0:14879:0:99999:7:::
root@mach#
関連研究
20
TCCP [Santos et al. HotCloud'09]
VMを管理者が信用できるサイトにだけ移動させる
信用できないサイトでは動かせない
ドメインB [Murray et al. VEE'08]
ドメイン作成専用のドメインBを用意
ドメイン0のカーネルとドメインBをTCBに含む
OverShadow [Xiaoxin et al. ASPLOS'08]
VMMがプロセスのメモリを暗号化し内容を保護
ゲストOSへの情報漏えいを防ぐ
まとめと今後の課題
VMCryptを提案
VMMがVMのメモリを暗号化
IaaS環境でのクラウド管理者への情報漏洩を防ぐ
今後の課題
マイグレーションへの対応
暗号化鍵の管理
完全仮想化への対応
21