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