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
© Copyright 2025 ExpyDoc