2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)
DESCRIPTION
Single-VM Virtualization ~ 最新技術と研究動向 ~TRANSCRIPT
日本ソフトウェア科学会第29回大会 チュートリアル
「仮想化技術最前線」
Single-VM Virtualization ~ 最新技術と研究動向 ~
東京大学 准教授
品川高廣
2012年8月24日(金)
自己紹介
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 2
品川 高廣
情報基盤センター 情報メディア教育研究部門 准教授
博士(理学)
研究歴
~2003年 東京大学博士課程 OSによる細粒度保護ドメインの研究 2003年~2006年 東京農工大学助手 OSカーネルでのセキュリティの研究 2006年~2011年 筑波大学講師 仮想化ソフトウェアBitVisorの研究 2011年~現在 東京大学准教授 同上
目次
I. 仮想化の基礎知識 仮想化とは
仮想化の分類
II. 仮想化技術の詳細 プロセッサ,メモリ,デバイスの仮想化
III. 研究紹介 BitVisorの最新研究
世界の研究動向
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 3
Ⅰ.仮想化の基礎知識
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 4
仮想化とは(Informal)
• Wikipediaの定義
• ウィキペディアの定義 「仮想化(英語: virtualization)とは、コンピュータのリソースを
抽象化することである。」
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 5
“In computing, virtualization (or virtualisation) is
the creation of a virtual (rather than actual) version
of something, such as a hardware platform, operating
system (OS), storage device, or network resources.”
※virtualization: アメリカ英語 virtualisation: イギリス英語
Question 1
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 6
ウィキペディアの 「仮想化」の定義で
不正確な部分はどこか? どのように不正確か?
仮想化の概念(1)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 7
Subject Subject
Real version of
something
(Object)
Virtual version of
something
(Object)
仮想化前 仮想化後
“the creation of a virtual version of something”
仮想化の概念(2)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 8
Subject Subject
仮想化の実体 仮想化後
“the creation of a virtual version of something”
Interface v
Virtual
version of
something
Subject
仮想化前
Interface r
Real
version of
something
Interface v
Virtualizing
System
Interface r
Real
version of
something
仮想化の構成要素 • Subject(主体)
誰がアクセスするか?
• Interface v (virtual) 仮想 Object がどのように見えるか?
• Virtualizing System(仮想化システム) どのようにしてインターフェイスを変換するか?
• Interface r (real) 実際の Object がどのように見えるか
• Object(対象) 仮想化される対象は何か?
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 9
Subject
Interface v
Virtualizing
System
Interface r
Object
インターフェイスの抽象度
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 10
Application
System Call Interface
Kernel
Device Driver Interface
Device Driver Device Driver
Hardware Interface Hardware Interface
Linux
Hardware Interface
VMWare
System Call Interface
Windows
Hardware Interface
OSによる抽象化 VMWareによる仮想化
抽象度
高
低
高
低
低
仮想化と抽象化
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 11
抽象度不変
仮想化
Subject
抽象度増加
Interface C
Virtualizing
System
Interface X
Object
抽象度低下
Subject
Interface B
Object
Interface X
Object
Subject
Interface A
Virtualizing
System
Interface X
Object
インターフェイスの現実性
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 12
Application
System Call Interface
Kernel
Device Driver Interface
Device Driver
Hardware Interface
Linux
Hardware Interface
VMWare
System Call Interface
Windows
Hardware Interface
OSによる抽象化 VMWareによる仮想化
現実のハードウェアと
ほぼ同等
現実のハードウェアと
大きく異なる
インターフェイスの特性
• 抽象度 Real と Virtual で抽象度が違うか否か?
抽象度を上げると implementation detail が隠蔽される
o セクタ,LBA, ATA/USB → ファイル,フォルダ
• 現実性 現実のハードウェアのインターフェイスか?
(Commodity な Operating System からの観点で)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 13
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 14
仮想化の分類
仮想化の対象(Object) • Resources(リソース)
プロセッサ CPUエミュレータ
メモリ OSの仮想メモリ(Virtual Memory)
I/Oデバイス(ストレージ,ネットワーク) ファイルシステム,SAN,VPN, ...
• Machine(マシン)(実行環境)
Operating Systems Wine, Cygwin, Windows NT Subsystems, ...
Hardware Platform VMWare, Xen, QEMU, ...
• Desktop(デスクトップ) VDI, VNC, RDP
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 15
Interface
Software
Interface
Software
Interface
Application / OS
Machine
Interface
Interface
Software
CPU Memory Device
マシンの仮想化とは(Formal)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 16
[Popek et al. 1974] Gerald J. Popek and Robert P. Goldberg. Formal
Requirements for Virtualizable Third Generation Architectures. Communications
of the ACM 17, 7 (July 1974), 412-421.
A Virtual Machine Map
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 17
𝑆𝑗
𝑒𝑖(𝑆𝑖)
𝑆𝑖 𝐶𝑟
𝑆𝑗′
𝑒𝑖′(𝑆𝑖
′)
𝑆𝑖′
𝐶𝑣
𝑓(𝑆𝑖) 𝑓(𝑆𝑗)
Virtualization is the construction of an isomorphism
between a virtual machine and a real machine;
𝑒𝑖′ ∘ 𝑓 𝑆𝑖 = 𝑓 ∘ 𝑒𝑖(𝑆𝑖)
S: a machine state, C: the collection of machine states, 𝑆 ∈ 𝐶
e: an instruction sequence (a unary operator), I: the set of all the instruction sequences of finite length, 𝑒 ∈ 𝐼
Virtual
Real
[Popek et al. 1974]
VM (Virtual Machine)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 18
Software
Interface v
Virtual Machine
Real Machine
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 19
Software
Interface r
Real
Machine
「Machine」のインターフェイス
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 20
Application Software
System Call
Operating System
ISA (Instruction Set Architecture)
Hardware
VMのインターフェイス1
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 21
Application Software
System Call
Operating System
System ISA User ISA
Hardware
VMのインターフェイス2
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 22
Application Software
System Call
Operating System
System ISA User ISA
Hardware
ABI = Application Binary Interface
ABI
VM (Virtual Machine) の分類
• Process VM Interface v は ABI
Subject は Process
Process VMを実現するソフトウェアの例 Digital FX!32(IA-32⇒Alpha)
Cygwin(UNIX→Win), Wine(Win→UNIX)
Java, Ruby, .NET framework, ...
o 抽象度高,現実度低
• System VM Interface v は ISA
Subject はアプリケーションとOS
System VMを実現するソフトウェアの例 VMWare, Xen, VirtualBox, QEMU
2012/8/24 23 チュートリアル「仮想化技術最前線」
Single-VM Virtualization
Process
ABI
Virtual Machine
Software (App/OS)
ISA
Virtual Machine
System VM の実現
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 24
App/OS App/OS
仮想化の実体 仮想化後
ISA
Virtual
Machine
ISA
Virtualizing
Software
Interface r
Real
Machine
System VM の応用例
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 25
App/OS
1
ISA 1
App/OS
2
ISA 1
Virtualizing
Software
ISA 1
Real
Machine
Replication
App/OS
ISA 2
Virtualizing
Software
ISA 1
Real
Machine
Emulation
Question 2
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 26
VMWare は VM か?
JavaVM は VM か?
VM と VMM の違い
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 27
App/OS 1
ISA 1
VM 1:
Virtual Machine 1
App/OS 2
ISA 1
VM 2:
Virtual Machine 2
VMM: Virtual Machine Monitor
(Virtualizing Software)
ISA 1
Real
Machine
System VM Process VM
Process
ABI
Virtual
Machine
≒
Virtualizing
Software
Interface
Real
Machine
TypeⅠと TypeⅡの VMM
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 28
Guest OS
ISA
VM
VMM
(Hypervisor)
ISA
Real
Machine
TypeⅠ
Guest OS
ISA
VM
VMM
TypeⅡ
ABI+α
Host OS
ISA
Real
Machine
TypeⅠと TypeⅡの定義
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
29
Robert P. Goldberg. Architectural Principles for Virtual Computer
Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973.
2012/8/24
Question 3
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 30
QEMU は VMMか?
Characteristics of a VMM
• Equivalence “Any program run under the VMM should exhibit an effect
identical with that demonstrated if the program had been run on the original machine directly, with the possible exception of differences caused by the availability of system resources and differences caused by timing dependencies.”
• Efficiency “It demands that a statistically dominant subset of the virtual
processor's instructions be executed directly by the real processor, with no software intervention by the VMM.”
• Resource Control (1) it is not possible for a program running under it in the
created environment to access any resource not explicitly allocated to it
(2) it is possible under certain circumstances for the VMM to regain control of resources already allocated.
2012/8/24 31 チュートリアル「仮想化技術最前線」
Single-VM Virtualization
[Popek et al. 1974]
VMMの特性
• 等価性 プログラムが元のマシン上とほぼ同じ挙動を示す
タイミングや資源の可用性に起因する違いを除く
• 効率性 多くの命令は実際のプロセッサ上で直接実行される
VMMは多くの命令をエミュレーションしない
• 資源制御 プログラムは与えられた資源しかアクセスできない
ある条件下ではVMMは資源を取り返せる
2012/8/24 32 チュートリアル「仮想化技術最前線」
Single-VM Virtualization
[Popek et al. 1974]
VMM と Emulator
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 33
App/OS
ISA 2
Virtualizing
Software
ISA 1
Real
Machine
Emulator
App/OS
Subset of ISA
Virtualizing
Software
ISA
Real
Machine
VMM
Single-VM v.s. Multi-VM
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 34
Guest OS
ISA
Multi-VM VMM
Guest OS
ISA
Single-VM VMM
VM VM
Guest OS
ISA
VM
VMM
ISA
Real
Machine
VMM
ISA
Real
Machine
Single-VM VMM の特性
• 等価性 VM上のプログラムは元のマシン上とほぼ同じ挙動を示す
仮想化をしないハードウェアに関する挙動は元と全く同じ
• 効率性 大多数の命令は実際のプロセッサ上で直接実行される
大多数の命令は単一のVM上のプログラムのもの
• 資源制御 VM上のプログラムは与えられた資源しかアクセスできない
特定の条件下ではVMMはVMの資源を取り返せる
2012/8/24 35 チュートリアル「仮想化技術最前線」
Single-VM Virtualization
VMMとしては良い特性を持っている
Single-VM VMM の意義
• 透過性 ゲスト OS に依存せずに機能追加できる
• 効率性 VMMの介在によるオーバーヘッドが少ない
• セキュリティ ゲストOSから保護された環境を利用できる
• シンプル VMMを小さくできる
セキュリティ上も有利
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 36
Guest OS
ISA
VM
VMM
ISA
Real
Machine
Interface r = ISA ≠ ABI
Interface v ≒ Interface r (Virtualizing Software)
Subject = OS/App Interface v = ISA
Object = Machine
仮想化技術の分類のまとめ
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 37
Resource Desktop
Process VM
Emulation
Multi-VM
Type II
Virtualization
Machine
System VM
VMM
Type I
Single-VM Interface v = Interface r
Ⅱ.仮想化技術の詳細 ~Single-VM VMM の実現と PC における実際~
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 38
物理マシンの構成要素
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 39
OS/App
仮想化前
Interface r = ISA
Processor Memory Devices
Real
Machine
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 40
Processor
Processor の仮想化の要件
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 41
THEOREM 1. For any conventional third generation
computer, a virtual machine monitor may be constructed
if the set of sensitive instructions for that computer is a
subset of the set of privileged instructions. [Popek et al. 1974]
Instructions
Privileged
User Sensitive
定理1 「sensitive」な命令が全て特権命令に含まれていればVMMが構成できる.
「sensitive」な命令
• VMMの実行に影響を与える命令 Control sensitive
システムのリソース設定を変更する命令
o 物理メモリの割り当て状態,システムのモード,I/Oなど
Behavior sensitive 実行時の挙動や結果がシステムのリソース設定に影響される命令
o システムレジスタの値やシステムのモードなど
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 42
Instructions
Innocuous (無害な)
Control
Sensitive
Behavior
Sensitive
VMM の要件の充足
• Sensitive な命令 ⇒ VMM へのトラップが発生 「等価性」「資源制御」の実現
• Innocuous な命令 ⇒ なるべく直接実行 「効率性」の実現
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 43
Instructions
Privileged
User Sensitive
Intel CPU(旧)での仮想化
• ゲストOSをユーザレベルで動作させる 特権命令は VMM でトラップできる
• 特権命令を VMM でエミュレーションする ゲストOSも特権モードで動いているようにふるまう
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 44
Ring 3
Ring 0
Kernel
(Guest)
Application
(Guest)
VMM
Ring 3
Ring 0 Kernel
(Guest)
Application
(Guest)
Intel CPU(旧)の仮想化可能性
• 17個の命令が sensitive だが non-privileged Sensitive Register Instructions
システムレジスタを読み込む命令
o SGDT, SIDT, SLDT, SMSW, PUSHF (S: Store, F: Flag)
システムレジスタを書き換えるがトラップされない命令
o POPF
Protection System References
システムレジスタの内容を参照する命令
o LAR, LSL, STR, VERR, VERW (L: Load from system registers, V: Verify)
セグメントの特権レベルを参照する命令
o POP, PUSH, CALL, JMP, INT n, RET
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 45
John Scott Robin and Cynthia E. Irvine. Analysis of the Intel Pentium's Ability to Support a Secure Virtual
Machine Monitor. In Proceedings of the 9th conference on USENIX Security Symposium, 2000.
Binary Translation による仮想化
• 問題となる命令を実行時に動的に変換する Sensitive かつ non-privileged な命令
Emulator を呼び出す命令に書き換える
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 46
Ring 3
Ring 0
Kernel
(Guest)
Application
(Guest)
VMM
popf ⇒ call emulator
Binary Translation
Intel VT による仮想化
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 47
Ring 3
Ring 0
Ring 3
Ring 0 Kernel
(Guest)
Application
(Guest)
VMM
VMX non-root mode VMX root mode
VM Exit
VM Entry
Guest State
Host State
Control Field
VMCS
Intel VT での仮想化可能性
• 新たなモード追加で sensitive な命令を削減 Kernel は従来通り ring 0 で動く
Behavior sensitive な命令が削減
プロセッサの重要な挙動は VMX root mode で設定 Control sensitive な命令が削減
前述の17命令は sensitive ではなくなる
• VMMへトラップする命令を柔軟に設定可能に 真に sensitive な命令だけ VMM で捕捉する
なるべく多くの命令を Processor で直接実行できる
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 48
VM Exit
• 常に VM Exit が発生する命令 CPUID, GETSEC, INVD, XSETBV
• 設定により VM Exit が発生する条件 割り込み関係
o 外部割り込み,NMI, VMX preemption timer
システムレジスタへのアクセス o CR3, CR8, RDMPC, RDTSC, RDRAND, MSR, DR, Descriptor table, APIC, ...
制御関係 o MONITOR, PAUSE, HLT, MWAIT, ...
メモリ関係 o INVLPG, WBINVD, Enable INVPCID, enable VPID
I/O関係 o Unconditional I/O, Use I/O bitmaps
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 49
Single-VM での Processor 仮想化
• ほとんど VM Exit しない VMM を作れる 必要に応じて VM Exit する条件を増やす
• Single-VM VMM でも実装したくなる仮想化の例 リアルモードサポート
割り込みコントローラ
定期的実行
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 50
リアルモードサポート
• Windows を動作させるためには必須 起動後も何度かリアルモードに切り替わる
• 初期の VT はサポートしていない 仮想8086モードを用いたエミュレーション
それなりに大変な実装が必要
• 最近の VT は “Unrestricted Guest” をサポート ゲストOSのモードに「制限」が無くなる
リアルモードのOSも簡単に仮想化できる
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 51
割り込みコントローラ
• 最近の PC では APIC で割り込みを制御 Advanced Programmable Interrupt Controller
• APIC を監視しない場合の制約 外部割り込みを起こしたデバイスが分からない
デバイス⇒割り込み番号の制御をAPICが行っている
TLB shootdown (別プロセッサのTLB flush) が出来ない TLB shootdown のための IPI (Inter-Processor Interrupt) を送れない
o 勝手に送るとゲストOSとコンフリクトする
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 52
定期実行
• 定期的にVMMで制御を取得したい VM Exit する条件を絞るとほとんど制御が戻らない可能性
特に外部割り込みによる VM Exit をしない場合
ゲストOSが無限ループすると永遠に制御が戻らない可能性もある
特定の外部割り込み時だけ VM Exit はできない 外部割り込みは一律 VM Exit するかしないかの設定のみ
外部割り込みによる VM Exit を設定せざるを得ない 必要以上に VM Exit してオーバーヘッドが大きい
• 最近の VT は “Preemption Timer” をサポート プロセッサによるタイマー設定で VM Exit を起こせる
TSC (Time Stamp Counter) と連動してカウントダウンされる
2012/8/24
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
53
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 54
Memory
物理マシンにおける Memory
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 55
Virtual Address Space
Physical Address Space
Paging
Memory の仮想化
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 56
Virtual Address Space
Guest Physical Address Space
Paging
Host Physical Address Space
Paging
Single-VM での Memory 仮想化
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 57
Virtual Address Space
Guest Physical Address Space
Paging
Host Physical Address Space
Identity Mapping
≒
VMM
MMIO MMIO Trap MMIO
VMM 領域 と MMIO 領域
• VMMのメモリ領域の隠ぺい ゲストOSに対して予約領域に見せる
システムが返すメモリマップを書き換える
o BIOS Int 15h, AX=e820
ゲストOSからの読み書きを禁止する VMMの領域を別のページにマッピングする
o Read-only の「ゼロページ」など
• MMIO (Memory-Mapped I/O) の捕捉 対応するページが存在しないように設定する
ページフォルトが発生して VMM に制御が移る
ページ単位でしか捕捉できない 4KB単位であらゆる I/O アクセス時に VMM に制御が移る
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 58
※VMM保護とMMIOの両方が不要な場合は2段目のページングなしにもできる
Shadow Paging
• ゲスト・ページテーブルの Shadow を VMM が管理 初期化時は全てのエントリが not present
Page fault のたびにゲスト・ページテーブルをたどってエントリを追加する
• VMM のオーバーヘッドが大きい Shadow page table を管理する必要性がある
頻繁に VM Exit する
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 59
CR3 PD PT
PT
Guest Page Table
Guest OS
PD PT
PT
Shadow Page Table
VMM
ゲストCR3
CR3
Page Fault 時に Guest Page
Table をたどって更新
EPT (Extended Page Table)
• もう一つのページテーブルをプロセッサに設定する プロセッサが自動的に2段階のページングを行ってくれる
Guest Virtual Address ⇒ Guest Physical Address ⇒ Host Physical
• VMM のオーバーヘッドが小さい 最初に Identity Mapping なPage Table 作っておけばよい
ほとんどのページで Guest Physical Address = Host Physical Address
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 60
EPTP PD PT
PT
Guest Page Table
Guest OS
PT
PT
Extended Page Table
VMM
CR3
Guest Physical Address
を EPT で Host Physical Address に変換する
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 61
Devices
物理マシンにおける Device
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 62
OS/App
ISA
Real
Machine
DMA
I/O Instructions
Registers
Interrupts Memory
Controller
Single-VM における選択肢
• 完全にパススルー 関係ないデバイスの性能・機能を犠牲にしない
• 監視する 実デバイスの挙動・状態を把握できる
• 書き換える 部分的に実デバイスの挙動・状態を変化させられる
• 完全に仮想化する
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 63
I/O Instructions
• I/O命令による読み書き 64KBのI/Oアドレス空間にアクセス
Intel VTの機能でVMMで捕捉可能 8KBのI/O許可ビットマップでアドレス単位で設定可能
o 1ならI/O命令発行時にVM Exit
o 0ならそのままI/O命令を実行
• メモリアクセス命令でのMMIO 通常のメモリアドレス空間へのアクセス
Shadow Paging or EPT で捕捉可能 不在ページにしてページフォルトを発生させる
命令を解釈してI/O内容を把握する
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 64
1 0 0 0 0 0 0 1
I/O許可ビットマップ(8KB) 0
0x2000
P
D PT
PT
PT
Shadow Page Table or EPT
Interrupts
• 外部割り込み デバイスからの割り込みの捕捉
Intel VT の機能で捕捉可能
割り込みの仮想的な挿入 Intel VT の Event Injection 機能で可能
割り込みベクタ番号の指定が必要
• デバイスの特定 厳密には APIC へのアクセスを監視する必要がある
デバイスの Status レジスタから特定可能な場合も多い APIC の監視を省略可能
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 65
DMA • ハードウェアでデータをまとめて自動転送
DMAディスクリプタに転送内容を記述する メモリ上に展開されたデータ構造
ホストコントローラがCPUを介さずにデータ転送 データ転送の終了時に割り込みで通知
• VMMでコントローラへのアクセスを捕捉可能 レジスタの監視・変更は I/O Instruction の捕捉で可能
DMAディスクリプタはメモリを直接参照かシャドウ化
66
ホストコントローラ
ベースアドレスレジスタ
インデックス
+
バッファアドレス バイト数 ステータス
0x08086000 4096 OK
0x04004000 8192 OK
0x00386000 4096 Ready
DMAディスクリプタ
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
2012/8/24
Ⅲ.研究紹介
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 67
研究紹介の構成
• BitVisor の研究 BitVisor の概要
BitVisor を用いた Single-VM Virtualization の応用例
• 関連研究の紹介 Single-VM Virtualization の研究
Single-VM Virtualization でも活用できる研究
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 68
BitVisor の沿革
• 「セキュアVM」プロジェクトで研究開発 実施期間:平成18年度~平成20年度
文部科学省 科学技術振興調整費
情報漏洩を確実に防止するVMの構築を目的 OS・ユーザに依存しないセキュリティの実現
o VMMの特権を活用
ストレージとネットワークからの情報漏洩防止を実現 HDDやUSBメモリを強制的に暗号化
ネットワーク通信を強制的にVPN化
暗号鍵はICカードに格納
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 69
BitVisor の基本アーキテクチャ
• 準パススルー型 基本はI/Oをパススルー
ゲストOSがデバイスを直接制御
最小限のI/Oを監視・変換 制御I/Oの監視
o デバイスの状態把握
o VMMに対するアクセス制御
データI/Oの変換
o 拡張機能の実現
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
70
VMM
ハード
ゲストOS
Device
Device Driver
Device Mediator
監視 変換
制御I/O データI/O 拡張機能
2012/8/24
T. Shinagawa et al. BitVisor: A Thin Hypervisor for Enforcing I/O Device Security. In Proc. 2009 ACM International
Conference on Virtual Execution Environments (VEE 2009), pp. 121-130, Mar. 2009. doi:10.1145/1508293.1508311
BitVisor の応用研究
• セキュリティ セキュアVM
システムファイル保護
• システム管理 透過的ネットワークブート
透過的VPN切替
• ユーティリティ ボランティアコンピューティング基盤
デバイスドライバのデバッグ環境
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 71
セキュアVM
• PCからの情報漏洩を防止
ストレージからの情報漏洩防止
HDDやUSBメモリ等を強制的に暗号化
ネットワークからの情報漏洩防止
ネットワーク通信を強制的に暗号化
ICカードでの鍵管理
暗号化の鍵の安全な保存
接続先・ユーザ認証
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 72
ICカード
ネットワーク
ストレージ
ゲストOS
Device
Device Driver
拡張機能
セキュアVM(実現)
• I/Oを暗号化する
ストレージI/Oを捕捉・暗号化 ATA/ATAPI 及び USB1.1/2.0を捕捉
AES-XTSで暗号化
ネットワークI/Oを捕捉・暗号化 NIC(Intel PRO 100/1000)を捕捉
IPSecでVPN接続
ICカードで鍵管理・認証 USB接続のカードリーダにアクセス
PC/SC, CCIDプロトコル
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 73
ATA NIC USB
ストレージ管理
ネットワーク管理
ID管理
Device Mediator
ATA NIC USB
ATA NIC USB
セキュアVM
VMM
ハードウェア
システムファイル保護
• Rootkit からの保護
システムファイルの書き込みを禁止する OSの重要なファイル
o カーネル,デバイスドライバ,…
セキュリティソフトウェア
o アンチウィルス,…
カーネルレベルでも書けない
再起動すれば元に戻る 最終ラインでのディフェンス
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 74
Y. Chubachi, T, Shinagawa, K. Kato. Hypervisor-based Prevention of Persistent Rootkits. In Proc. 25th ACM
Symposium On Applied Computing (ACM SAC 2010), pp. 214-220, Mar. 2010. doi:10.1145/1774088.1774131
システムファイル保護(実現)
• ストレージへの書き込みを監視する
システムファイルの書き換えを検出
o ファイルのデータ領域
o メタデータ領域
o ディレクトリ構造
ファイルとセクタのマッピング
を管理 o セマンティックギャップを克服
o 低オーバーヘッドで実現
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 75
ゲストOS
Device
Device Driver
拡張機能
ATA NIC USB
保護モジュール Device Mediator
ATA
ATA NIC USB
VM
VMM
ハードウェア
保護ポリシー
透過的ネットワークブート
• 任意のOSをネットワークからブート可能にする
OS・設定に依存しない Windowsをそのままブート可能
Linuxも一切設定なしでブート可能
ローカルのハードウェアをフル活用 内蔵機器・周辺機器をOSが完全管理
o Blu-ray,USB3.0,各種PCIデバイス,…
o 省電力(電源制御),最適化(デフラグなど)
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 76
クライアント
サーバ
表 祐志, 品川 高廣, 加藤 和彦.仮想マシンモニタによる透過的ネットワークブート方式.情報処理学会論文誌:コンピューティングシステム,第4巻,第4号,228-245頁,2011年10月.http://id.nii.ac.jp/1001/00078067/
透過的ネットワークブート(実現)
• ディスクアクセスを ネットワークへ転送する
ATAのインターフェイスを提供
ローカルディスクと同じアクセス方法
o MS-DOSでも起動する
ATAアクセスをAoEに変換
ATA over Ethernet
パケットをネットワークへ転送
ディスクイメージをサーバで集中管理
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 77
ゲストOS
Device
Device Driver
拡張機能
ATA NIC USB
ATA監視
NICアクセス
ATA-AoE変換
Device
Mediator
ATA
NIC
NIC USB
VM
VMM
ハードウェア
ATA
透過的VPN切り替え
• クラウド接続の可用性を確保する
ネットワーク/サーバ障害対応 インターネット層での経路障害
VPNサーバ故障
OS/ユーザは意識しない 基盤として高可用性を実現
ユーザ・管理者に負担をかけない
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 78
クライアント
データセンター(クラウド)
専用線
VPN
ルータ2
VPN
ルータ1 Internet
× ×
Y. Matsuhashi, T. Shinagawa, Y. Ishii, N. Hirooka, K. Kato. Transparent VPN Failure Recovery with Virtualization.
Future Generation Computer Systems, Elsevier, Vol. 28, No. 1, pp. 78-84, Jan. 2012. doi:10.1016/j.future.2011.05.020
透過的VPN切り替え(実現)
• VPN接続を切り替える
定期的にネットワーク到達性をチェック
VMMからサーバにPingを送る
VPN切断・再接続を実施
利用可能なサーバの選択
IPsecでのコネクションを確立
IPアドレスの不整合などを吸収
TCP接続が切れない
切り替え時間は3秒程度
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 79
ゲストOS
Device
Device Driver
拡張機能
ATA NIC USB
VPNクライアント
ID管理
Device Mediator
NIC
ATA NIC USB
セキュアVM
VMM
ハードウェア
ボランティアコンピューティング
• 計算コードをVMM内実行 計算コードをユーザから保護
計算結果の改ざん防止
計算結果の漏洩防止
計算コードからユーザを保護
計算コードによる不正アクセスを防止
• VMMでELFコードを受信 VMM内の保護ドメインで実行
ユーザは存在を感知しない
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 80
ゲストOS
Device
Device Driver
拡張機能
ATA NIC USB
Device Mediator
NIC
ATA NIC USB
VM
VMM
ハードウェア
保護ドメイン
計算コード
(ELF)
デバイスドライバのデバッグ
• 滅多に発生しないエラーを意図的に発生させる
デバイスドライバが想定していないバグを洗い出す
• VMMでデバイスの挙動を変える 状態遷移を監視する
意図的な状態遷移を引き起こすようにI/Oを書き換える
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 81
ゲストOS
Device
Device Driver
拡張機能
Device
状態遷移追跡
I/O書き換え
Driver
VM
VMM
ハードウェア
Mediator
Device Mediator
BitVisor を使った研究
• TCVisor [Rezaei et al., ICITST ‘10]
ユーザ毎に特定のストレージ領域のみを見せる仕組み TPM, password, security tokenの組み合わせで実現
• HyperSafe [Wang et al., IEEE S&P ‘10]
Hypervisor自身の完全性を維持する仕組み Hypervisor を書き換えられなくする
• “Return-less” VMM [Li et al., EuroSys ‘10]
ret命令のないカーネル・VMMを実現 ROR (Return-Oriented Rootkit)対策
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
82 2012/8/24
VMMによるセキュリティ(1)
• SecVisor [Seshadri et al., SOSP ‘07]
カーネルコードの一貫性維持に特化 VMMが許可しないとカーネルモードで実行できない
コードサイズは1,112行(AMD SVM+NPT版)
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
83 2012/8/24
VMMによるセキュリティ(2)
• CloudVisor [Zhang et al., SOSP ‘11]
セキュリティ専用VMMを既存VMMの下に置く メモリやディスク暗号化などでVM間の保護を実現
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
84 2012/8/24
VMMによるセキュリティ(3)
• OverShadow [Chen et al., ASPLOS ’08]
信頼出来ないOSからアプリのデータを守る 暗号化とハッシュでメモリの機密性と完全性を保つ
チュートリアル「仮想化技術最前線」 Single-VM Virtualization
85 2012/8/24
まとめ
• 仮想化の基礎知識 Subject, Interface v, Virtualizing Software, Interface r, Object
Machine, System VM, VMM, Type-I, Single-VM
• 仮想化技術の詳細 プロセッサ:sensitive命令⊂privileged命令,Intel VT
メモリ: shadow paging, EPT, identity mapping
デバイス: I/O, MMIO, Interrupts, DMA
• 研究紹介 BitVisor の研究
関連研究の紹介
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 86
BitVisor の宣伝
• BitVisor に関する情報 ホームページ
http://www.bitvisor.org/
メーリングリスト(@bitvisor.org) bitvisor-user(日本語), bitvisor-user-en(英語)
bitvisor-devel(日本語), bitvisor-devel-en(英語)
ソースコード http://sourceforge.net/projects/bitvisor/
• 有償サービス (株)イーゲルが提供
2012/8/24 チュートリアル「仮想化技術最前線」
Single-VM Virtualization 87