Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

Single-VM Virtualization ~ 最新技術と研究動向 ~

Single-VM Virtualization ~ 最新技術と研究動向 ~

日本ソフトウェア科学会チュートリアル(公開版)

Avatar for Takahiro Shinagawa

Takahiro Shinagawa

August 24, 2012
Tweet

More Decks by Takahiro Shinagawa

Other Decks in Technology

Transcript

  1. 自己紹介 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 2 品川 高廣 情報基盤センター 情報メディア教育研究部門

    准教授 博士(理学) 研究歴 ~2003年 東京大学博士課程 OSによる細粒度保護ドメインの研究 2003年~2006年 東京農工大学助手 OSカーネルでのセキュリティの研究 2006年~2011年 筑波大学講師 仮想化ソフトウェアBitVisorの研究 2011年~現在 東京大学准教授 同上
  2. 目次 I. 仮想化の基礎知識 仮想化とは 仮想化の分類 II. 仮想化技術の詳細 プロセッサ,メモリ,デバイスの仮想化 III. 研究紹介

    BitVisorの最新研究 世界の研究動向 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 3
  3. 仮想化とは(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: イギリス英語
  4. 仮想化の概念(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”
  5. 仮想化の概念(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
  6. 仮想化の構成要素 • 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
  7. インターフェイスの抽象度 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による仮想化 抽象度 高 低 高 低 低
  8. 仮想化と抽象化 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
  9. インターフェイスの現実性 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による仮想化 現 実 の ハ ー ド ウ ェ ア と ほ ぼ 同 等 現 実 の ハ ー ド ウ ェ ア と 大 き く 異 な る
  10. インターフェイスの特性 • 抽象度 Real と Virtual で抽象度が違うか否か? 抽象度を上げると implementation detail

    が隠蔽される o セクタ,LBA, ATA/USB → ファイル,フォルダ • 現実性 現実のハードウェアのインターフェイスか? (Commodity な Operating System からの観点で) 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 13
  11. 仮想化の対象(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
  12. マシンの仮想化とは(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.
  13. 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]
  14. 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
  15. System VM の実現 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 24 App/OS App/OS

    仮想化の実体 仮想化後 ISA Virtual Machine ISA Virtualizing Software Interface r Real Machine
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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]
  21. VMMの特性 • 等価性 プログラムが元のマシン上とほぼ同じ挙動を示す タイミングや資源の可用性に起因する違いを除く • 効率性 多くの命令は実際のプロセッサ上で直接実行される VMMは多くの命令をエミュレーションしない •

    資源制御 プログラムは与えられた資源しかアクセスできない ある条件下ではVMMは資源を取り返せる 2012/8/24 32 チュートリアル「仮想化技術最前線」 Single-VM Virtualization [Popek et al. 1974]
  22. 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
  23. 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
  24. Single-VM VMM の特性 • 等価性 VM上のプログラムは元のマシン上とほぼ同じ挙動を示す 仮想化をしないハードウェアに関する挙動は元と全く同じ • 効率性 大多数の命令は実際のプロセッサ上で直接実行される

    大多数の命令は単一のVM上のプログラムのもの • 資源制御 VM上のプログラムは与えられた資源しかアクセスできない 特定の条件下ではVMMはVMの資源を取り返せる 2012/8/24 35 チュートリアル「仮想化技術最前線」 Single-VM Virtualization VMMとしては良い特性を持っている
  25. Single-VM VMM の意義 • 透過性  ゲスト OS に依存せずに機能追加できる •

    効率性  VMMの介在によるオーバーヘッドが少ない • セキュリティ  ゲストOSから保護された環境を利用できる • シンプル  VMMを小さくできる  セキュリティ上も有利 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 36 Guest OS ISA VM VMM ISA Real Machine
  26. 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
  27. 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が構成できる.
  28. 「sensitive」な命令 • VMMの実行に影響を与える命令 Control sensitive システムのリソース設定を変更する命令 o 物理メモリの割り当て状態,システムのモード,I/Oなど Behavior sensitive

    実行時の挙動や結果がシステムのリソース設定に影響される命令 o システムレジスタの値やシステムのモードなど 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 42 Instructions Innocuous (無害な) Control Sensitive Behavior Sensitive
  29. VMM の要件の充足 • Sensitive な命令 ⇒ VMM へのトラップが発生 「等価性」「資源制御」の実現 •

    Innocuous な命令 ⇒ なるべく直接実行 「効率性」の実現 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 43 Instructions Privileged User Sensitive
  30. 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)
  31. 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.
  32. 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
  33. 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
  34. 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
  35. 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
  36. Single-VM での Processor 仮想化 • ほとんど VM Exit しない VMM

    を作れる 必要に応じて VM Exit する条件を増やす • Single-VM VMM でも実装したくなる仮想化の例 リアルモードサポート 割り込みコントローラ 定期的実行 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 50
  37. リアルモードサポート • Windows を動作させるためには必須 起動後も何度かリアルモードに切り替わる • 初期の VT はサポートしていない 仮想8086モードを用いたエミュレーション

    それなりに大変な実装が必要 • 最近の VT は “Unrestricted Guest” をサポート ゲストOSのモードに「制限」が無くなる リアルモードのOSも簡単に仮想化できる 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 51
  38. 割り込みコントローラ • 最近の 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
  39. 定期実行 • 定期的に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
  40. 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
  41. 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段目のページングなしにもできる
  42. 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 をたどって更新
  43. 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 に変換する
  44. Single-VM における選択肢 • 完全にパススルー 関係ないデバイスの性能・機能を犠牲にしない • 監視する 実デバイスの挙動・状態を把握できる • 書き換える

    部分的に実デバイスの挙動・状態を変化させられる • 完全に仮想化する 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 63
  45. 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
  46. Interrupts • 外部割り込み デバイスからの割り込みの捕捉 Intel VT の機能で捕捉可能 割り込みの仮想的な挿入 Intel VT

    の Event Injection 機能で可能 割り込みベクタ番号の指定が必要 • デバイスの特定 厳密には APIC へのアクセスを監視する必要がある デバイスの Status レジスタから特定可能な場合も多い APIC の監視を省略可能 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 65
  47. 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
  48. 研究紹介の構成 • BitVisor の研究 BitVisor の概要 BitVisor を用いた Single-VM Virtualization

    の応用例 • 関連研究の紹介 Single-VM Virtualization の研究 Single-VM Virtualization でも活用できる研究 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 68
  49. BitVisor の沿革 • 「セキュアVM」プロジェクトで研究開発 実施期間:平成18年度~平成20年度 文部科学省 科学技術振興調整費 情報漏洩を確実に防止するVMの構築を目的 OS・ユーザに依存しないセキュリティの実現 o

    VMMの特権を活用 ストレージとネットワークからの情報漏洩防止を実現 HDDやUSBメモリを強制的に暗号化 ネットワーク通信を強制的にVPN化 暗号鍵はICカードに格納 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 69
  50. 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
  51. BitVisor の応用研究 • セキュリティ セキュアVM システムファイル保護 • システム管理 透過的ネットワークブート 透過的VPN切替

    • ユーティリティ ボランティアコンピューティング基盤 デバイスドライバのデバッグ環境 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 71
  52. セキュアVM • PCからの情報漏洩を防止  ストレージからの情報漏洩防止  HDDやUSBメモリ等を強制的に暗号化  ネットワークからの情報漏洩防止 

    ネットワーク通信を強制的に暗号化  ICカードでの鍵管理  暗号化の鍵の安全な保存  接続先・ユーザ認証 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 72 ICカード ネットワーク ストレージ
  53. ゲスト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 ハードウェア
  54. システムファイル保護 • 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
  55. システムファイル保護(実現) • ストレージへの書き込み を監視する システムファイルの書き換え を検出 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 ハードウェア 保護ポリシー
  56. 透過的ネットワークブート • 任意の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/
  57. 透過的ネットワークブート(実現) • ディスクアクセスを ネットワークへ転送する  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
  58. 透過的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
  59. 透過的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 ハードウェア
  60. ボランティアコンピューティング • 計算コードを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)
  61. デバイスドライバのデバッグ • 滅多に発生しないエラー を意図的に発生させる デバイスドライバが想定して いないバグを洗い出す • VMMでデバイスの挙動 を変える 状態遷移を監視する

    意図的な状態遷移を引き起こ すようにI/Oを書き換える 2012/8/24 チュートリアル「仮想化技術最前線」 Single-VM Virtualization 81 ゲストOS Device Device Driver 拡張機能 Device 状態遷移追跡 I/O書き換え Driver VM VMM ハードウェア Mediator Device Mediator
  62. 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
  63. VMMによるセキュリティ(1) • SecVisor [Seshadri et al., SOSP ‘07] カーネルコードの一貫性維持に特化 VMMが許可しないとカーネルモードで実行できない

    コードサイズは1,112行(AMD SVM+NPT版) チュートリアル「仮想化技術最前線」 Single-VM Virtualization 83 2012/8/24
  64. まとめ • 仮想化の基礎知識 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
  65. 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