SlideShare a Scribd company logo
1 of 87
Download to read offline
日本ソフトウェア科学会第29回大会
      チュートリアル
    「仮想化技術最前線」

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

        東京大学 准教授
           品川高廣
       2012年8月24日(金)
自己紹介
                   情報基盤センター
                   情報メディア教育研究部門
                   准教授

                   博士(理学)                 品川 高廣
                           研究歴
      ~2003年   東京大学博士課程           OSによる細粒度保護ドメインの研究
 2003年~2006年   東京農工大学助手           OSカーネルでのセキュリティの研究
 2006年~2011年   筑波大学講師             仮想化ソフトウェアBitVisorの研究
 2011年~現在      東京大学准教授            同上
                  チュートリアル「仮想化技術最前線」
2012/8/24                                           2
                     Single-VM Virtualization
目次
I. 仮想化の基礎知識
      仮想化とは
      仮想化の分類

II. 仮想化技術の詳細
      プロセッサ,メモリ,デバイスの仮想化

III. 研究紹介
      BitVisorの最新研究
      世界の研究動向

                  チュートリアル「仮想化技術最前線」
2012/8/24                                       3
                     Single-VM Virtualization
Ⅰ.仮想化の基礎知識



              チュートリアル「仮想化技術最前線」
2012/8/24                                   4
                 Single-VM Virtualization
仮想化とは(Informal)
• Wikipediaの定義
     “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: イギリス英語
• ウィキペディアの定義
      「仮想化(英語: virtualization)とは、コンピュータのリソースを
       抽象化することである。」


                       チュートリアル「仮想化技術最前線」
2012/8/24                                                                      5
                          Single-VM Virtualization
Question 1

               ウィキペディアの
              「仮想化」の定義で
            不正確な部分はどこか?
             どのように不正確か?


               チュートリアル「仮想化技術最前線」
2012/8/24                                    6
                  Single-VM Virtualization
仮想化の概念(1)
            “the creation of a virtual version of something”
             仮想化後                                           仮想化前
               Subject                                       Subject



    Virtual version of                                    Real version of
        something                                           something
         (Object)                                            (Object)

                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                   7
                               Single-VM Virtualization
仮想化の概念(2)
            “the creation of a virtual version of something”
   仮想化後                       仮想化の実体                      仮想化前
        Subject                       Subject              Subject

      Interface v                   Interface v           Interface r
                                   Virtualizing
                                     System
       Virtual                      Interface r             Real
      version of                                          version of
      something                       Real                something
                                    version of
                                    something

                            チュートリアル「仮想化技術最前線」
2012/8/24                                                               8
                               Single-VM Virtualization
仮想化の構成要素
• Subject(主体)
      誰がアクセスするか?                                         Subject
• Interface v (virtual)
      仮想 Object がどのように見えるか?
                                                        Interface v

• Virtualizing System(仮想化システム)                          Virtualizing
      どのようにしてインターフェイスを変換するか?                             System

• Interface r (real)                                    Interface r
      実際の Object がどのように見えるか

• Object(対象)                                              Object
      仮想化される対象は何か?
                          チュートリアル「仮想化技術最前線」
2012/8/24                                                              9
                             Single-VM Virtualization
インターフェイスの抽象度
 VMWareによる仮想化                                                OSによる抽象化
                   Linux                                               Application

                                       抽象度
             Hardware Interface     低             高               System Call Interface
                  VMWare                                                  Kernel


            System Call Interface   高                             Device Driver Interface

                 Windows                                  Device Driver            Device Driver

             Hardware Interface     低             低     Hardware Interface     Hardware Interface




                                    チュートリアル「仮想化技術最前線」
2012/8/24                                                                                           10
                                       Single-VM Virtualization
仮想化と抽象化
                                    仮想化

       抽象度低下                     抽象度不変                    抽象度増加
              Subject                  Subject              Subject

            Interface A             Interface B           Interface C
            Virtualizing                                  Virtualizing
                                       Object
              System                                        System
            Interface X             Interface X           Interface X
              Object                   Object               Object




                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                11
                               Single-VM Virtualization
インターフェイスの現実性
 VMWareによる仮想化                                                     OSによる抽象化
                   Linux                                               Application


                                        現                現
             Hardware Interface         実               大実         System Call Interface

                                       ほの               きの
                  VMWare                                                  Kernel

                                        ハ                ハ
            System Call Interface
                                       ぼー               くー
                                       同ド               異ド        Device Driver Interface

                 Windows
                                       等ウ               なウ            Device Driver
                                        ェ               るェ
             Hardware Interface
                                        ア                ア          Hardware Interface

                                        と                と

                                    チュートリアル「仮想化技術最前線」
2012/8/24                                                                                   12
                                       Single-VM Virtualization
インターフェイスの特性
• 抽象度
      Real と Virtual で抽象度が違うか否か?
             抽象度を上げると implementation detail が隠蔽される
               o セクタ,LBA, ATA/USB → ファイル,フォルダ




• 現実性
      現実のハードウェアのインターフェイスか?
             (Commodity な Operating System からの観点で)




                             チュートリアル「仮想化技術最前線」
2012/8/24                                                  13
                                Single-VM Virtualization
仮想化の分類




             チュートリアル「仮想化技術最前線」
2012/8/24                                  14
                Single-VM Virtualization
仮想化の対象(Object)
• Resources(リソース)
      プロセッサ                                                  Software    Software          Software
             CPUエミュレータ
                                                              Interface   Interface         Interface
      メモリ
             OSの仮想メモリ(Virtual Memory)                            CPU     Memory             Device
      I/Oデバイス(ストレージ,ネットワーク)
             ファイルシステム,SAN,VPN, ...


• Machine(マシン)(実行環境)                                                      Application / OS
      Operating Systems                                                     Interface
             Wine, Cygwin, Windows NT Subsystems, ...
      Hardware Platform                                                     Machine
             VMWare, Xen, QEMU, ...


• Desktop(デスクトップ)



                                                                                Interface
      VDI, VNC, RDP

                                    チュートリアル「仮想化技術最前線」
2012/8/24                                                                                               15
                                       Single-VM Virtualization
マシンの仮想化とは(Formal)




 [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.
                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                    16
                               Single-VM Virtualization
A Virtual Machine Map
               Virtualization is the construction of an isomorphism
                  between a virtual machine and a real machine;
                               𝑒 ′ ∘ 𝑓 𝑆 𝑖 = 𝑓 ∘ 𝑒 𝑖 (𝑆 𝑖 )
                                 𝑖                                  [Popek et al. 1974]

                                                                  𝑒 ′ (𝑆 ′ )
                                                                    𝑖    𝑖

  Virtual
                                        𝑆′
                                         𝑖                                                          𝑆 𝑗′
                                                                     𝐶𝑣
                                𝑓(𝑆 𝑖 )                                                                    𝑓(𝑆 𝑗 )
                                                                  𝑒 𝑖 (𝑆 𝑖 )
    Real
                                        𝑆𝑖                                                          𝑆𝑗
                                                                     𝐶𝑟
            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, 𝑒 ∈ 𝐼


                                                  チュートリアル「仮想化技術最前線」
2012/8/24                                                                                                                        17
                                                     Single-VM Virtualization
VM (Virtual Machine)

                   Software
                 Interface v

               Virtual Machine


                 チュートリアル「仮想化技術最前線」
2012/8/24                                      18
                    Single-VM Virtualization
Real Machine

               Software
             Interface r

                Real
               Machine


             チュートリアル「仮想化技術最前線」
2012/8/24                                  19
                Single-VM Virtualization
「Machine」のインターフェイス

                  Application Software
              System Call

            Operating System

            ISA (Instruction Set Architecture)

                          Hardware



                    チュートリアル「仮想化技術最前線」
2012/8/24                                         20
                       Single-VM Virtualization
VMのインターフェイス1

                  Application Software
               System Call

             Operating System

            System ISA                        User ISA

                          Hardware



                    チュートリアル「仮想化技術最前線」
2012/8/24                                                21
                       Single-VM Virtualization
VMのインターフェイス2

                    Application Software
                 System Call

              Operating System

            System ISA                              User ISA   ABI
                            Hardware

               ABI = Application Binary Interface
                      チュートリアル「仮想化技術最前線」
2012/8/24                                                        22
                         Single-VM Virtualization
VM (Virtual Machine) の分類
• Process VM
      Interface v は ABI                                           Process
      Subject は Process
                                                                    ABI
      Process VMを実現するソフトウェアの例
             Digital FX!32(IA-32⇒Alpha)
             Cygwin(UNIX→Win), Wine(Win→UNIX)                 Virtual Machine
             Java, Ruby, .NET framework, ...
                o 抽象度高,現実度低


• System VM                                                   Software (App/OS)
      Interface v は ISA                                             ISA
      Subject はアプリケーションとOS
      System VMを実現するソフトウェアの例                                  Virtual Machine
             VMWare, Xen, VirtualBox, QEMU
                                チュートリアル「仮想化技術最前線」
2012/8/24                                                                        23
                                   Single-VM Virtualization
System VM の実現
            仮想化後                         仮想化の実体

            App/OS                                  App/OS

             ISA                                     ISA
                                              Virtualizing
                                               Software
            Virtual                            Interface r
            Machine
                                                 Real
                                                Machine



                      チュートリアル「仮想化技術最前線」
2012/8/24                                                    24
                         Single-VM Virtualization
System VM の応用例
            Emulation                              Replication
                                               App/OS             App/OS
              App/OS
                                                 1                  2
               ISA 2                            ISA 1             ISA 1
            Virtualizing                            Virtualizing
             Software                                Software
               ISA 1                                      ISA 1

              Real                                        Real
             Machine                                     Machine



                           チュートリアル「仮想化技術最前線」
2012/8/24                                                                  25
                              Single-VM Virtualization
Question 2


            VMWare は VM か?

            JavaVM は VM か?

                チュートリアル「仮想化技術最前線」
2012/8/24                                     26
                   Single-VM Virtualization
VM と VMM の違い
                      System VM                                 Process VM
            App/OS 1                 App/OS 2                      Process
              ISA 1                    ISA 1                        ABI
            VM 1:                   VM 2:                          Virtual
      Virtual Machine 1       Virtual Machine 2                   Machine
                                                                      ≒
            VMM: Virtual Machine Monitor                         Virtualizing
              (Virtualizing Software)                             Software
                          ISA 1                                   Interface
                         Real                                      Real
                        Machine                                   Machine

                                  チュートリアル「仮想化技術最前線」
2012/8/24                                                                       27
                                     Single-VM Virtualization
TypeⅠと TypeⅡの VMM
              TypeⅠ                                    TypeⅡ
              Guest OS                                 Guest OS
                 ISA                                     ISA
                 VM                                      VM

                                                        VMM
                VMM
                                                       ABI+α
             (Hypervisor)
                                                       Host OS
                 ISA                                     ISA
                Real                                    Real
               Machine                                 Machine

                         チュートリアル「仮想化技術最前線」
2012/8/24                                                         28
                            Single-VM Virtualization
TypeⅠと TypeⅡの定義




             Robert P. Goldberg. Architectural Principles for Virtual Computer
             Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973.
                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                        29
                               Single-VM Virtualization
Question 3



            QEMU は VMMか?



               チュートリアル「仮想化技術最前線」
2012/8/24                                    30
                  Single-VM Virtualization
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.”               [Popek et al. 1974]


• 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
VMMの特性
• 等価性
      プログラムが元のマシン上とほぼ同じ挙動を示す
             タイミングや資源の可用性に起因する違いを除く
                                                     [Popek et al. 1974]


• 効率性
      多くの命令は実際のプロセッサ上で直接実行される
             VMMは多くの命令をエミュレーションしない


• 資源制御
      プログラムは与えられた資源しかアクセスできない
      ある条件下ではVMMは資源を取り返せる
                       チュートリアル「仮想化技術最前線」
2012/8/24                                                         32
                          Single-VM Virtualization
VMM と Emulator
                       VMM                                      Emulator

                       App/OS                                     App/OS

            Subset of ISA                                          ISA 2
            Virtualizing                                        Virtualizing
             Software                                            Software
                            ISA                                    ISA 1

                        Real                                      Real
                       Machine                                   Machine



                                  チュートリアル「仮想化技術最前線」
2012/8/24                                                                      33
                                     Single-VM Virtualization
Single-VM v.s. Multi-VM
            Single-VM VMM                           Multi-VM VMM

               Guest OS                          Guest OS         Guest OS

                 ISA                                ISA             ISA
                 VM                                 VM              VM

                VMM                                         VMM

                 ISA                                        ISA
                 Real                                      Real
                Machine                                   Machine


                          チュートリアル「仮想化技術最前線」
2012/8/24                                                                    34
                             Single-VM Virtualization
Single-VM VMM の特性
• 等価性
      VM上のプログラムは元のマシン上とほぼ同じ挙動を示す
             仮想化をしないハードウェアに関する挙動は元と全く同じ

• 効率性
      大多数の命令は実際のプロセッサ上で直接実行される
             大多数の命令は単一のVM上のプログラムのもの

• 資源制御
      VM上のプログラムは与えられた資源しかアクセスできない
      特定の条件下ではVMMはVMの資源を取り返せる

             VMMとしては良い特性を持っている
                      チュートリアル「仮想化技術最前線」
2012/8/24                                           35
                         Single-VM Virtualization
Single-VM VMM の意義
• 透過性
      ゲスト OS に依存せずに機能追加できる                              Guest OS

• 効率性                                                      ISA
      VMMの介在によるオーバーヘッドが少ない                                VM

                                                          VMM
• セキュリティ
      ゲストOSから保護された環境を利用できる                                ISA
                                                          Real
• シンプル                                                   Machine
      VMMを小さくできる
             セキュリティ上も有利
                           チュートリアル「仮想化技術最前線」
2012/8/24                                                           36
                              Single-VM Virtualization
仮想化技術の分類のまとめ
             Virtualization

Resource       Machine        Desktop                   Object = Machine

                                                        Subject = OS/App
    Process VM          System VM
                                                        Interface v = ISA

                   VMM          Emulation           Interface v ≒ Interface r
                                                        (Virtualizing Software)

             Type I      Type II                    Interface r = ISA ≠ ABI

    Multi-VM      Single-VM                         Interface v = Interface r
                          チュートリアル「仮想化技術最前線」
2012/8/24                                                                         37
                             Single-VM Virtualization
Ⅱ.仮想化技術の詳細
        ~Single-VM VMM の実現と PC における実際~




                 チュートリアル「仮想化技術最前線」
2012/8/24                                      38
                    Single-VM Virtualization
物理マシンの構成要素
                    仮想化前
                        OS/App

                 Interface r = ISA
            Processor Memory              Devices

                        Real
                       Machine

                  チュートリアル「仮想化技術最前線」
2012/8/24                                           39
                     Single-VM Virtualization
Processor




            チュートリアル「仮想化技術最前線」
2012/8/24                                 40
               Single-VM Virtualization
Processor の仮想化の要件
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]

定理1 「sensitive」な命令が全て特権命令に含まれて
いればVMMが構成できる.

                          Instructions
                             Privileged
                                                       User
                              Sensitive

                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                  41
                            Single-VM Virtualization
「sensitive」な命令
• VMMの実行に影響を与える命令
      Control sensitive
             システムのリソース設定を変更する命令
              o 物理メモリの割り当て状態,システムのモード,I/Oなど
      Behavior sensitive
             実行時の挙動や結果がシステムのリソース設定に影響される命令
              o システムレジスタの値やシステムのモードなど


                              Instructions

                  Control           Behavior          Innocuous
                 Sensitive          Sensitive              (無害な)



                             チュートリアル「仮想化技術最前線」
2012/8/24                                                          42
                                Single-VM Virtualization
VMM の要件の充足
• Sensitive な命令 ⇒ VMM へのトラップが発生
      「等価性」「資源制御」の実現

• Innocuous な命令 ⇒ なるべく直接実行
      「効率性」の実現

                   Instructions
                      Privileged
                                                User
                       Sensitive

                  チュートリアル「仮想化技術最前線」
2012/8/24                                              43
                     Single-VM Virtualization
Intel CPU(旧)での仮想化
• ゲストOSをユーザレベルで動作させる
      特権命令は VMM でトラップできる
• 特権命令を VMM でエミュレーションする
      ゲストOSも特権モードで動いているようにふるまう

                                                             Application
                                                              (Guest)
              Application                                     Kernel
               (Guest)                                        (Guest)
    Ring 3                                          Ring 3
    Ring 0                                          Ring 0
               Kernel
                                                               VMM
               (Guest)

                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                  44
                               Single-VM Virtualization
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


      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.

                                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                                                           45
                                            Single-VM Virtualization
Binary Translation による仮想化
• 問題となる命令を実行時に動的に変換する
      Sensitive かつ non-privileged な命令
      Emulator を呼び出す命令に書き換える


                     Application
                     (Guest)
                     Kernel
                     (Guest)         popf ⇒ call emulator
            Ring 3
            Ring 0
                     VMM           Binary Translation


                        チュートリアル「仮想化技術最前線」
2012/8/24                                                   46
                           Single-VM Virtualization
Intel VT による仮想化
                 VMX non-root mode                      VMX root mode

                    Application
                     (Guest)
        Ring 3                                                          Ring 3
        Ring 0                           VM Entry                       Ring 0
                      Kernel
                                                                VMM
                      (Guest)
                                          VM Exit


                                          VMCS

                                        Guest State
                                        Host State
                                       Control Field

                                  チュートリアル「仮想化技術最前線」
2012/8/24                                                                        47
                                     Single-VM Virtualization
Intel VT での仮想化可能性
• 新たなモード追加で sensitive な命令を削減
      Kernel は従来通り ring 0 で動く
             Behavior sensitive な命令が削減
      プロセッサの重要な挙動は VMX root mode で設定
             Control sensitive な命令が削減
      前述の17命令は sensitive ではなくなる


• VMMへトラップする命令を柔軟に設定可能に
      真に sensitive な命令だけ VMM で捕捉する
             なるべく多くの命令を Processor で直接実行できる


                             チュートリアル「仮想化技術最前線」
2012/8/24                                                  48
                                Single-VM Virtualization
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                                                                            49
                                   Single-VM Virtualization
Single-VM での Processor 仮想化
• ほとんど VM Exit しない VMM を作れる
      必要に応じて VM Exit する条件を増やす

• Single-VM VMM でも実装したくなる仮想化の例
      リアルモードサポート
      割り込みコントローラ
      定期的実行




                チュートリアル「仮想化技術最前線」
2012/8/24                                     50
                   Single-VM Virtualization
リアルモードサポート
• Windows を動作させるためには必須
      起動後も何度かリアルモードに切り替わる

• 初期の VT はサポートしていない
      仮想8086モードを用いたエミュレーション
             それなりに大変な実装が必要


• 最近の VT は “Unrestricted Guest” をサポート
      ゲストOSのモードに「制限」が無くなる
             リアルモードのOSも簡単に仮想化できる



                      チュートリアル「仮想化技術最前線」
2012/8/24                                           51
                         Single-VM Virtualization
割り込みコントローラ
• 最近の PC では APIC で割り込みを制御
      Advanced Programmable Interrupt Controller

• APIC を監視しない場合の制約
      外部割り込みを起こしたデバイスが分からない
             デバイス⇒割り込み番号の制御をAPICが行っている
      TLB shootdown (別プロセッサのTLB flush) が出来ない
             TLB shootdown のための IPI (Inter-Processor Interrupt) を送れない
                o 勝手に送るとゲストOSとコンフリクトする




                              チュートリアル「仮想化技術最前線」
2012/8/24                                                                52
                                 Single-VM Virtualization
定期実行
• 定期的に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                                                53
                              Single-VM Virtualization
Memory




            チュートリアル「仮想化技術最前線」
2012/8/24                                 54
               Single-VM Virtualization
物理マシンにおける Memory
               Virtual                                 Physical
            Address Space                           Address Space



                                 Paging




                      チュートリアル「仮想化技術最前線」
2012/8/24                                                           55
                         Single-VM Virtualization
Memory の仮想化
       Virtual               Guest Physical                     Host Physical
    Address Space            Address Space                      Address Space



                                                       Paging
                    Paging




                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                       56
                            Single-VM Virtualization
Single-VM での Memory 仮想化
       Virtual               Guest Physical                   Host Physical
    Address Space            Address Space             ≒      Address Space


                                                   Identity
                                                   Mapping
                    Paging          MMIO                          MMIO
                                                 Trap MMIO
                                                                  VMM




                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                     57
                            Single-VM Virtualization
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 に制御が移る

       ※VMM保護とMMIOの両方が不要な場合は2段目のページングなしにもできる
                                チュートリアル「仮想化技術最前線」
2012/8/24                                                     58
                                   Single-VM Virtualization
Shadow Paging
• ゲスト・ページテーブルの Shadow を VMM が管理
      初期化時は全てのエントリが not present
      Page fault のたびにゲスト・ページテーブルをたどってエントリを追加する
• VMM のオーバーヘッドが大きい
      Shadow page table を管理する必要性がある
      頻繁に VM Exit する

              Guest OS                                     VMM
                                             ゲストCR3

        CR3    PD                               CR3          PD
                               PT                                           PT

                                            Page Fault 時に Guest Page
                               PT           Table をたどって更新                   PT

                Guest Page Table                              Shadow Page Table

                            チュートリアル「仮想化技術最前線」
2012/8/24                                                                         59
                               Single-VM Virtualization
EPT (Extended Page Table)
• もう一つのページテーブルをプロセッサに設定する
      プロセッサが自動的に2段階のページングを行ってくれる
             Guest Virtual Address ⇒ Guest Physical Address ⇒ Host Physical

• VMM のオーバーヘッドが小さい
      最初に Identity Mapping なPage Table 作っておけばよい
             ほとんどのページで Guest Physical Address = Host Physical Address

                    Guest OS                                       VMM

        CR3            PD                               EPTP
                                       PT                                             PT
                                                    Guest Physical Address
                                                    を EPT で Host Physical
                                       PT                                             PT
                                                    Address に変換する
                        Guest Page Table                               Extended Page Table

                                    チュートリアル「仮想化技術最前線」
2012/8/24                                                                                    60
                                       Single-VM Virtualization
Devices




            チュートリアル「仮想化技術最前線」
2012/8/24                                 61
               Single-VM Virtualization
物理マシンにおける Device
                                  OS/App
               I/O Instructions    Interrupts          Memory

             ISA



               Registers          Controller           DMA

                                   Real
                                  Machine

                         チュートリアル「仮想化技術最前線」
2012/8/24                                                       62
                            Single-VM Virtualization
Single-VM における選択肢
• 完全にパススルー
      関係ないデバイスの性能・機能を犠牲にしない

• 監視する
      実デバイスの挙動・状態を把握できる


• 書き換える
      部分的に実デバイスの挙動・状態を変化させられる


• 完全に仮想化する
                 チュートリアル「仮想化技術最前線」
2012/8/24                                      63
                    Single-VM Virtualization
I/O Instructions
• I/O命令による読み書き                                          I/O許可ビットマップ(8KB)
                                                             0
      64KBのI/Oアドレス空間にアクセス
                                                                 1 0 0 0 0 0 0 1
      Intel VTの機能でVMMで捕捉可能
             8KBのI/O許可ビットマップでアドレス単位で設定可能
              o 1ならI/O命令発行時にVM Exit
              o 0ならそのままI/O命令を実行                         0x2000




• メモリアクセス命令でのMMIO                                                    P
                                                                     D
                                                                                   PT

      通常のメモリアドレス空間へのアクセス
      Shadow Paging or EPT で捕捉可能                                                  PT


             不在ページにしてページフォルトを発生させる
                                                                                   PT
             命令を解釈してI/O内容を把握する
                                                         Shadow Page Table or EPT
                          チュートリアル「仮想化技術最前線」
2012/8/24                                                                          64
                             Single-VM Virtualization
Interrupts
• 外部割り込み
      デバイスからの割り込みの捕捉
             Intel VT の機能で捕捉可能
      割り込みの仮想的な挿入
             Intel VT の Event Injection 機能で可能
             割り込みベクタ番号の指定が必要


• デバイスの特定
      厳密には APIC へのアクセスを監視する必要がある
      デバイスの Status レジスタから特定可能な場合も多い
             APIC の監視を省略可能


                              チュートリアル「仮想化技術最前線」
2012/8/24                                                   65
                                 Single-VM Virtualization
DMA
   • ハードウェアでデータをまとめて自動転送
             DMAディスクリプタに転送内容を記述する
               メモリ上に展開されたデータ構造
             ホストコントローラがCPUを介さずにデータ転送
               データ転送の終了時に割り込みで通知


   • VMMでコントローラへのアクセスを捕捉可能
             レジスタの監視・変更は I/O Instruction の捕捉で可能
             DMAディスクリプタはメモリを直接参照かシャドウ化

                                                        DMAディスクリプタ
                                               バッファアドレス      バイト数    ステータス
            ホストコントローラ
                                               0x08086000    4096    OK
        ベースアドレスレジスタ           +                0x04004000    8192    OK
                                               0x00386000    4096    Ready
              インデックス


                          チュートリアル「仮想化技術最前線」
2012/8/24                                                                    66
                             Single-VM Virtualization
Ⅲ.研究紹介



            チュートリアル「仮想化技術最前線」
2012/8/24                                 67
               Single-VM Virtualization
研究紹介の構成
• BitVisor の研究
      BitVisor の概要
      BitVisor を用いた Single-VM Virtualization の応用例


• 関連研究の紹介
      Single-VM Virtualization の研究
      Single-VM Virtualization でも活用できる研究




                     チュートリアル「仮想化技術最前線」
2012/8/24                                            68
                        Single-VM Virtualization
BitVisor の沿革
• 「セキュアVM」プロジェクトで研究開発
      実施期間:平成18年度~平成20年度
             文部科学省 科学技術振興調整費


      情報漏洩を確実に防止するVMの構築を目的
             OS・ユーザに依存しないセキュリティの実現
              o VMMの特権を活用


      ストレージとネットワークからの情報漏洩防止を実現
             HDDやUSBメモリを強制的に暗号化
             ネットワーク通信を強制的にVPN化
             暗号鍵はICカードに格納


                       チュートリアル「仮想化技術最前線」
2012/8/24                                            69
                          Single-VM Virtualization
BitVisor の基本アーキテクチャ
                                                                                  ゲストOS

• 準パススルー型                                                                        Device Driver

      基本はI/Oをパススルー
                                                                                     VMM
             ゲストOSがデバイスを直接制御
                                                                Device Mediator
      最小限のI/Oを監視・変換                                            制御I/O                              拡張機能
                                                                           データI/O
             制御I/Oの監視                                            監視          変換
                 o デバイスの状態把握
                 o VMMに対するアクセス制御
             データI/Oの変換                                                             ハード
                 o 拡張機能の実現                                                          Device


 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

                                        チュートリアル「仮想化技術最前線」
2012/8/24                                                                                                       70
                                           Single-VM Virtualization
BitVisor の応用研究
• セキュリティ
      セキュアVM
      システムファイル保護
• システム管理
      透過的ネットワークブート
      透過的VPN切替
• ユーティリティ
      ボランティアコンピューティング基盤
      デバイスドライバのデバッグ環境


               チュートリアル「仮想化技術最前線」
2012/8/24                                    71
                  Single-VM Virtualization
セキュアVM
• PCからの情報漏洩を防止
                                                     ストレージ
      ストレージからの情報漏洩防止
             HDDやUSBメモリ等を強制的に暗号化


                                                     ネットワーク
      ネットワークからの情報漏洩防止
             ネットワーク通信を強制的に暗号化



      ICカードでの鍵管理                                    ICカード
             暗号化の鍵の安全な保存
             接続先・ユーザ認証


                       チュートリアル「仮想化技術最前線」
2012/8/24                                                     72
                          Single-VM Virtualization
セキュアVM(実現)
• I/Oを暗号化する
                                                           ゲストOS
                                                      Device Driver   セキュアVM
      ストレージI/Oを捕捉・暗号化                              ATA NIC USB
             ATA/ATAPI 及び USB1.1/2.0を捕捉
             AES-XTSで暗号化                                               VMM
                                                                       拡張機能
                                                    Device Mediator
      ネットワークI/Oを捕捉・暗号化                                               ストレージ管理

             NIC(Intel PRO 100/1000)を捕捉            ATA     NIC USB
                                                                      ネットワーク管理

             IPSecでVPN接続                                               ID管理




      ICカードで鍵管理・認証                                    Device
                                                                      ハードウェア
             USB接続のカードリーダにアクセス                     ATA NIC USB

             PC/SC, CCIDプロトコル
                             チュートリアル「仮想化技術最前線」
2012/8/24                                                                        73
                                Single-VM Virtualization
システムファイル保護
• Rootkit からの保護
      システムファイルの書き込み
       を禁止する
             OSの重要なファイル
                 o カーネル,デバイスドライバ,…
             セキュリティソフトウェア
                 o アンチウィルス,…
             カーネルレベルでも書けない


      再起動すれば元に戻る
             最終ラインでのディフェンス
 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

                                       チュートリアル「仮想化技術最前線」
2012/8/24                                                                                                    74
                                          Single-VM Virtualization
システムファイル保護(実現)
• ストレージへの書き込み
  を監視する                                             ゲストOS
                                               Device Driver     VM
                                             ATA NIC USB
      システムファイルの書き換え
       を検出                                                       VMM
            o ファイルのデータ領域                                        拡張機能
            o メタデータ領域                        Device Mediator
                                                               保護モジュール
            o ディレクトリ構造
                                             ATA               保護ポリシー



      ファイルとセクタのマッピング
       を管理                                      Device
                                                               ハードウェア
            o セマンティックギャップを克服                 ATA NIC USB
            o 低オーバーヘッドで実現

                      チュートリアル「仮想化技術最前線」
2012/8/24                                                                75
                         Single-VM Virtualization
透過的ネットワークブート
• 任意のOSをネットワークから                                             サーバ

  ブート可能にする
      OS・設定に依存しない
             Windowsをそのままブート可能
             Linuxも一切設定なしでブート可能


      ローカルのハードウェアをフル活用
             内蔵機器・周辺機器をOSが完全管理
              o Blu-ray,USB3.0,各種PCIデバイス,…
              o 省電力(電源制御),最適化(デフラグなど)
                                                            クライアント
 表 祐志, 品川 高廣, 加藤 和彦.仮想マシンモニタによる透過的ネットワークブート方式.情報処理学会論文誌:コ
 ンピューティングシステム,第4巻,第4号,228-245頁,2011年10月.http://id.nii.ac.jp/1001/00078067/

                          チュートリアル「仮想化技術最前線」
2012/8/24                                                               76
                             Single-VM Virtualization
透過的ネットワークブート(実現)
• ディスクアクセスを
  ネットワークへ転送する                                                   ゲストOS
                                                           Device Driver      VM
                                                         ATA NIC USB

      ATAのインターフェイスを提供                                                       VMM
             ローカルディスクと同じアクセス方法                                            拡張機能
                o MS-DOSでも起動する                                  Device
                                                                            ATA監視
                                                                Mediator
                                                         ATA               ATA-AoE変換
      ATAアクセスをAoEに変換                                             NIC
                                                                           NICアクセス
             ATA over Ethernet

                                                            Device
                                                                           ハードウェア
      パケットをネットワークへ転送                                    ATA NIC USB
             ディスクイメージをサーバで集中管理

                                  チュートリアル「仮想化技術最前線」
2012/8/24                                                                              77
                                     Single-VM Virtualization
透過的VPN切り替え
                                                                            データセンター(クラウド)
• クラウド接続の可用性を                                                                           専用線
  確保する
      ネットワーク/サーバ障害対応                                              VPN
                                                                       ×                                      VPN


                                                                        ×
                                                                  ルータ1                                       ルータ2
             インターネット層での経路障害                                                            Internet
             VPNサーバ故障


      OS/ユーザは意識しない
             基盤として高可用性を実現
             ユーザ・管理者に負担をかけない                                                                       クライアント


 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

                                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                                                        78
                                            Single-VM Virtualization
透過的VPN切り替え(実現)
• VPN接続を切り替える
                                                       ゲストOS
                                                  Device Driver   セキュアVM
      定期的にネットワーク到達性を                           ATA NIC USB

       チェック
                                                                    VMM
             VMMからサーバにPingを送る
                                                                   拡張機能
                                                Device Mediator
      VPN切断・再接続を実施                                               VPNクライアント
             利用可能なサーバの選択                               NIC
             IPsecでのコネクションを確立                                      ID管理




      IPアドレスの不整合などを吸収                             Device
                                                                  ハードウェア
                                                ATA NIC USB
             TCP接続が切れない
             切り替え時間は3秒程度
                         チュートリアル「仮想化技術最前線」
2012/8/24                                                                     79
                            Single-VM Virtualization
ボランティアコンピューティング

• 計算コードをVMM内実行                                       ゲストOS

      計算コードをユーザから保護                            Device Driver
                                              ATA NIC USB
                                                                  VM
             計算結果の改ざん防止
             計算結果の漏洩防止                                          VMM
      計算コードからユーザを保護                                            拡張機能
             計算コードによる不正アクセスを防止               Device Mediator
                                                                保護ドメイン
                                                                 計算コード
                                                      NIC         (ELF)
• VMMでELFコードを受信
      VMM内の保護ドメインで実行
      ユーザは存在を感知しない                              Device
                                                                ハードウェア
                                              ATA NIC USB



                       チュートリアル「仮想化技術最前線」
2012/8/24                                                                 80
                          Single-VM Virtualization
デバイスドライバのデバッグ

• 滅多に発生しないエラー                                 ゲストOS
                                        Device Driver      VM
  を意図的に発生させる                               Driver

      デバイスドライバが想定して
                                                          VMM
       いないバグを洗い出す                                        拡張機能
                                       Device Mediator
                                                         状態遷移追跡

• VMMでデバイスの挙動                                 Mediator   I/O書き換え


  を変える
      状態遷移を監視する                              Device
                                                         ハードウェア
      意図的な状態遷移を引き起こ                          Device

       すようにI/Oを書き換える
                チュートリアル「仮想化技術最前線」
2012/8/24                                                          81
                   Single-VM Virtualization
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)対策




                               チュートリアル「仮想化技術最前線」
2012/8/24                                                    82
                                  Single-VM Virtualization
VMMによるセキュリティ(1)
• SecVisor [Seshadri et al., SOSP ‘07]
      カーネルコードの一貫性維持に特化
             VMMが許可しないとカーネルモードで実行できない
      コードサイズは1,112行(AMD SVM+NPT版)




                      チュートリアル「仮想化技術最前線」
2012/8/24                                           83
                         Single-VM Virtualization
VMMによるセキュリティ(2)
• CloudVisor [Zhang et al., SOSP ‘11]
      セキュリティ専用VMMを既存VMMの下に置く
             メモリやディスク暗号化などでVM間の保護を実現




                      チュートリアル「仮想化技術最前線」
2012/8/24                                           84
                         Single-VM Virtualization
VMMによるセキュリティ(3)
• OverShadow [Chen et al., ASPLOS ’08]
      信頼出来ないOSからアプリのデータを守る
             暗号化とハッシュでメモリの機密性と完全性を保つ




                      チュートリアル「仮想化技術最前線」
2012/8/24                                           85
                         Single-VM Virtualization
まとめ
• 仮想化の基礎知識
      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                                                                 86
                             Single-VM Virtualization
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                                                         87
                                       Single-VM Virtualization

More Related Content

Similar to 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版)

#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
Etsuji Nakai
 
[Lt]hyper vの仮想ネットワーク
[Lt]hyper vの仮想ネットワーク[Lt]hyper vの仮想ネットワーク
[Lt]hyper vの仮想ネットワーク
Masaya Sawada
 
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-VTechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
Kuninobu SaSaki
 
201204 プロ生@大阪 #15
201204 プロ生@大阪 #15201204 プロ生@大阪 #15
201204 プロ生@大阪 #15
Keiji Kamebuchi
 
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS
Etsuji Nakai
 
Try andstudy cloud
Try andstudy cloudTry andstudy cloud
Try andstudy cloud
Etsuji Nakai
 

Similar to 2012-08-24 日本ソフトウェア科学会チュートリアル(公開版) (20)

#ljstudy KVM勉強会
#ljstudy KVM勉強会#ljstudy KVM勉強会
#ljstudy KVM勉強会
 
[Lt]hyper vの仮想ネットワーク
[Lt]hyper vの仮想ネットワーク[Lt]hyper vの仮想ネットワーク
[Lt]hyper vの仮想ネットワーク
 
TechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-VTechEd2008_T1-407_EffectiveHyper-V
TechEd2008_T1-407_EffectiveHyper-V
 
2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」
2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」
2012-12-04 BitVisor Summit (公開版)「BitVisorの現状と今後」
 
Cloud VM Security on Cloud Computingi 20090311
Cloud VM Security on Cloud Computingi 20090311Cloud VM Security on Cloud Computingi 20090311
Cloud VM Security on Cloud Computingi 20090311
 
Virtual Machine Security on Cloud Computing 20090311
Virtual Machine Security on Cloud Computing 20090311Virtual Machine Security on Cloud Computing 20090311
Virtual Machine Security on Cloud Computing 20090311
 
VIOPS02: 仮想データセンター構築を目指して!
VIOPS02: 仮想データセンター構築を目指して!VIOPS02: 仮想データセンター構築を目指して!
VIOPS02: 仮想データセンター構築を目指して!
 
20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料20130312 OpenStack Day Tokyo プレゼン資料
20130312 OpenStack Day Tokyo プレゼン資料
 
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
[G-Tech2014講演資料] Microsoft Azureで負荷分散された仮想マシンを作ってみよう ~Amazon Web Servicesと比べな...
 
Ppt touya g
Ppt touya gPpt touya g
Ppt touya g
 
Ppt touya g
Ppt touya gPpt touya g
Ppt touya g
 
201204 プロ生@大阪 #15
201204 プロ生@大阪 #15201204 プロ生@大阪 #15
201204 プロ生@大阪 #15
 
クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?クラウドサービスを使って作る動画サイト?
クラウドサービスを使って作る動画サイト?
 
試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS試して学べるクラウド技術!Eucalyptus/GlusterFS
試して学べるクラウド技術!Eucalyptus/GlusterFS
 
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
Cloud ComputingにおけるVMのセキュリティ(14/Jan/2010)
 
Try andstudy cloud
Try andstudy cloudTry andstudy cloud
Try andstudy cloud
 
Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界Windows Phoneで始める拡張現実の世界
Windows Phoneで始める拡張現実の世界
 
情報技術の基本と仮想化について
情報技術の基本と仮想化について情報技術の基本と仮想化について
情報技術の基本と仮想化について
 
BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」
 
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料
 

More from Takahiro Shinagawa

2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)
Takahiro Shinagawa
 
2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム
Takahiro Shinagawa
 
2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ
Takahiro Shinagawa
 
2008-03-19 第2回セキュアVMシンポジウム
2008-03-19 第2回セキュアVMシンポジウム2008-03-19 第2回セキュアVMシンポジウム
2008-03-19 第2回セキュアVMシンポジウム
Takahiro Shinagawa
 

More from Takahiro Shinagawa (9)

2018-11-28 BitVisor Summit 7
2018-11-28 BitVisor Summit 72018-11-28 BitVisor Summit 7
2018-11-28 BitVisor Summit 7
 
2017-12-04 BitVisor Summit 6 「BitVisorの現状と今後」
2017-12-04 BitVisor Summit 6 「BitVisorの現状と今後」2017-12-04 BitVisor Summit 6 「BitVisorの現状と今後」
2017-12-04 BitVisor Summit 6 「BitVisorの現状と今後」
 
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
2016-11-30 BitVisor Summit 5 「BitVisorの現状と今後」(公開版)
 
2015-11-26 BitVisor Summit 4(公開版)
2015-11-26 BitVisor Summit 4(公開版)2015-11-26 BitVisor Summit 4(公開版)
2015-11-26 BitVisor Summit 4(公開版)
 
BitVisor Summit 2 「BitVisorの現状と今後」
BitVisor Summit 2 「BitVisorの現状と今後」BitVisor Summit 2 「BitVisorの現状と今後」
BitVisor Summit 2 「BitVisorの現状と今後」
 
2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)2012-04-25 ASPLOS2012出張報告(公開版)
2012-04-25 ASPLOS2012出張報告(公開版)
 
2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム2009-03-24 第3回セキュアVMシンポジウム
2009-03-24 第3回セキュアVMシンポジウム
 
2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ2008-11-18 セキュアVMワークショップ
2008-11-18 セキュアVMワークショップ
 
2008-03-19 第2回セキュアVMシンポジウム
2008-03-19 第2回セキュアVMシンポジウム2008-03-19 第2回セキュアVMシンポジウム
2008-03-19 第2回セキュアVMシンポジウム
 

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

  • 1. 日本ソフトウェア科学会第29回大会 チュートリアル 「仮想化技術最前線」 Single-VM Virtualization ~ 最新技術と研究動向 ~ 東京大学 准教授 品川高廣 2012年8月24日(金)
  • 2. 自己紹介 情報基盤センター 情報メディア教育研究部門 准教授 博士(理学) 品川 高廣 研究歴 ~2003年 東京大学博士課程 OSによる細粒度保護ドメインの研究 2003年~2006年 東京農工大学助手 OSカーネルでのセキュリティの研究 2006年~2011年 筑波大学講師 仮想化ソフトウェアBitVisorの研究 2011年~現在 東京大学准教授 同上 チュートリアル「仮想化技術最前線」 2012/8/24 2 Single-VM Virtualization
  • 3. 目次 I. 仮想化の基礎知識  仮想化とは  仮想化の分類 II. 仮想化技術の詳細  プロセッサ,メモリ,デバイスの仮想化 III. 研究紹介  BitVisorの最新研究  世界の研究動向 チュートリアル「仮想化技術最前線」 2012/8/24 3 Single-VM Virtualization
  • 4. Ⅰ.仮想化の基礎知識 チュートリアル「仮想化技術最前線」 2012/8/24 4 Single-VM Virtualization
  • 5. 仮想化とは(Informal) • Wikipediaの定義 “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: イギリス英語 • ウィキペディアの定義  「仮想化(英語: virtualization)とは、コンピュータのリソースを 抽象化することである。」 チュートリアル「仮想化技術最前線」 2012/8/24 5 Single-VM Virtualization
  • 6. Question 1 ウィキペディアの 「仮想化」の定義で 不正確な部分はどこか? どのように不正確か? チュートリアル「仮想化技術最前線」 2012/8/24 6 Single-VM Virtualization
  • 7. 仮想化の概念(1) “the creation of a virtual version of something” 仮想化後 仮想化前 Subject Subject Virtual version of Real version of something something (Object) (Object) チュートリアル「仮想化技術最前線」 2012/8/24 7 Single-VM Virtualization
  • 8. 仮想化の概念(2) “the creation of a virtual version of something” 仮想化後 仮想化の実体 仮想化前 Subject Subject Subject Interface v Interface v Interface r Virtualizing System Virtual Interface r Real version of version of something Real something version of something チュートリアル「仮想化技術最前線」 2012/8/24 8 Single-VM Virtualization
  • 9. 仮想化の構成要素 • Subject(主体)  誰がアクセスするか? Subject • Interface v (virtual)  仮想 Object がどのように見えるか? Interface v • Virtualizing System(仮想化システム) Virtualizing  どのようにしてインターフェイスを変換するか? System • Interface r (real) Interface r  実際の Object がどのように見えるか • Object(対象) Object  仮想化される対象は何か? チュートリアル「仮想化技術最前線」 2012/8/24 9 Single-VM Virtualization
  • 10. インターフェイスの抽象度 VMWareによる仮想化 OSによる抽象化 Linux Application 抽象度 Hardware Interface 低 高 System Call Interface VMWare Kernel System Call Interface 高 Device Driver Interface Windows Device Driver Device Driver Hardware Interface 低 低 Hardware Interface Hardware Interface チュートリアル「仮想化技術最前線」 2012/8/24 10 Single-VM Virtualization
  • 11. 仮想化と抽象化 仮想化 抽象度低下 抽象度不変 抽象度増加 Subject Subject Subject Interface A Interface B Interface C Virtualizing Virtualizing Object System System Interface X Interface X Interface X Object Object Object チュートリアル「仮想化技術最前線」 2012/8/24 11 Single-VM Virtualization
  • 12. インターフェイスの現実性 VMWareによる仮想化 OSによる抽象化 Linux Application 現 現 Hardware Interface 実 大実 System Call Interface ほの きの VMWare Kernel ハ ハ System Call Interface ぼー くー 同ド 異ド Device Driver Interface Windows 等ウ なウ Device Driver ェ るェ Hardware Interface ア ア Hardware Interface と と チュートリアル「仮想化技術最前線」 2012/8/24 12 Single-VM Virtualization
  • 13. インターフェイスの特性 • 抽象度  Real と Virtual で抽象度が違うか否か?  抽象度を上げると implementation detail が隠蔽される o セクタ,LBA, ATA/USB → ファイル,フォルダ • 現実性  現実のハードウェアのインターフェイスか?  (Commodity な Operating System からの観点で) チュートリアル「仮想化技術最前線」 2012/8/24 13 Single-VM Virtualization
  • 14. 仮想化の分類 チュートリアル「仮想化技術最前線」 2012/8/24 14 Single-VM Virtualization
  • 15. 仮想化の対象(Object) • Resources(リソース)  プロセッサ Software Software Software  CPUエミュレータ Interface Interface Interface  メモリ  OSの仮想メモリ(Virtual Memory) CPU Memory Device  I/Oデバイス(ストレージ,ネットワーク)  ファイルシステム,SAN,VPN, ... • Machine(マシン)(実行環境) Application / OS  Operating Systems Interface  Wine, Cygwin, Windows NT Subsystems, ...  Hardware Platform Machine  VMWare, Xen, QEMU, ... • Desktop(デスクトップ) Interface  VDI, VNC, RDP チュートリアル「仮想化技術最前線」 2012/8/24 15 Single-VM Virtualization
  • 16. マシンの仮想化とは(Formal) [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. チュートリアル「仮想化技術最前線」 2012/8/24 16 Single-VM Virtualization
  • 17. A Virtual Machine Map Virtualization is the construction of an isomorphism between a virtual machine and a real machine; 𝑒 ′ ∘ 𝑓 𝑆 𝑖 = 𝑓 ∘ 𝑒 𝑖 (𝑆 𝑖 ) 𝑖 [Popek et al. 1974] 𝑒 ′ (𝑆 ′ ) 𝑖 𝑖 Virtual 𝑆′ 𝑖 𝑆 𝑗′ 𝐶𝑣 𝑓(𝑆 𝑖 ) 𝑓(𝑆 𝑗 ) 𝑒 𝑖 (𝑆 𝑖 ) Real 𝑆𝑖 𝑆𝑗 𝐶𝑟 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, 𝑒 ∈ 𝐼 チュートリアル「仮想化技術最前線」 2012/8/24 17 Single-VM Virtualization
  • 18. VM (Virtual Machine) Software Interface v Virtual Machine チュートリアル「仮想化技術最前線」 2012/8/24 18 Single-VM Virtualization
  • 19. Real Machine Software Interface r Real Machine チュートリアル「仮想化技術最前線」 2012/8/24 19 Single-VM Virtualization
  • 20. 「Machine」のインターフェイス Application Software System Call Operating System ISA (Instruction Set Architecture) Hardware チュートリアル「仮想化技術最前線」 2012/8/24 20 Single-VM Virtualization
  • 21. VMのインターフェイス1 Application Software System Call Operating System System ISA User ISA Hardware チュートリアル「仮想化技術最前線」 2012/8/24 21 Single-VM Virtualization
  • 22. VMのインターフェイス2 Application Software System Call Operating System System ISA User ISA ABI Hardware ABI = Application Binary Interface チュートリアル「仮想化技術最前線」 2012/8/24 22 Single-VM Virtualization
  • 23. VM (Virtual Machine) の分類 • Process VM  Interface v は ABI Process  Subject は Process ABI  Process VMを実現するソフトウェアの例  Digital FX!32(IA-32⇒Alpha)  Cygwin(UNIX→Win), Wine(Win→UNIX) Virtual Machine  Java, Ruby, .NET framework, ... o 抽象度高,現実度低 • System VM Software (App/OS)  Interface v は ISA ISA  Subject はアプリケーションとOS  System VMを実現するソフトウェアの例 Virtual Machine  VMWare, Xen, VirtualBox, QEMU チュートリアル「仮想化技術最前線」 2012/8/24 23 Single-VM Virtualization
  • 24. System VM の実現 仮想化後 仮想化の実体 App/OS App/OS ISA ISA Virtualizing Software Virtual Interface r Machine Real Machine チュートリアル「仮想化技術最前線」 2012/8/24 24 Single-VM Virtualization
  • 25. System VM の応用例 Emulation Replication App/OS App/OS App/OS 1 2 ISA 2 ISA 1 ISA 1 Virtualizing Virtualizing Software Software ISA 1 ISA 1 Real Real Machine Machine チュートリアル「仮想化技術最前線」 2012/8/24 25 Single-VM Virtualization
  • 26. Question 2 VMWare は VM か? JavaVM は VM か? チュートリアル「仮想化技術最前線」 2012/8/24 26 Single-VM Virtualization
  • 27. VM と VMM の違い System VM Process VM App/OS 1 App/OS 2 Process ISA 1 ISA 1 ABI VM 1: VM 2: Virtual Virtual Machine 1 Virtual Machine 2 Machine ≒ VMM: Virtual Machine Monitor Virtualizing (Virtualizing Software) Software ISA 1 Interface Real Real Machine Machine チュートリアル「仮想化技術最前線」 2012/8/24 27 Single-VM Virtualization
  • 28. TypeⅠと TypeⅡの VMM TypeⅠ TypeⅡ Guest OS Guest OS ISA ISA VM VM VMM VMM ABI+α (Hypervisor) Host OS ISA ISA Real Real Machine Machine チュートリアル「仮想化技術最前線」 2012/8/24 28 Single-VM Virtualization
  • 29. TypeⅠと TypeⅡの定義 Robert P. Goldberg. Architectural Principles for Virtual Computer Systems. ESD-TR-73-105, Harvard University, pp. 22–26, Feb, 1973. チュートリアル「仮想化技術最前線」 2012/8/24 29 Single-VM Virtualization
  • 30. Question 3 QEMU は VMMか? チュートリアル「仮想化技術最前線」 2012/8/24 30 Single-VM Virtualization
  • 31. 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.” [Popek et al. 1974] • 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
  • 32. VMMの特性 • 等価性  プログラムが元のマシン上とほぼ同じ挙動を示す  タイミングや資源の可用性に起因する違いを除く [Popek et al. 1974] • 効率性  多くの命令は実際のプロセッサ上で直接実行される  VMMは多くの命令をエミュレーションしない • 資源制御  プログラムは与えられた資源しかアクセスできない  ある条件下ではVMMは資源を取り返せる チュートリアル「仮想化技術最前線」 2012/8/24 32 Single-VM Virtualization
  • 33. VMM と Emulator VMM Emulator App/OS App/OS Subset of ISA ISA 2 Virtualizing Virtualizing Software Software ISA ISA 1 Real Real Machine Machine チュートリアル「仮想化技術最前線」 2012/8/24 33 Single-VM Virtualization
  • 34. Single-VM v.s. Multi-VM Single-VM VMM Multi-VM VMM Guest OS Guest OS Guest OS ISA ISA ISA VM VM VM VMM VMM ISA ISA Real Real Machine Machine チュートリアル「仮想化技術最前線」 2012/8/24 34 Single-VM Virtualization
  • 35. Single-VM VMM の特性 • 等価性  VM上のプログラムは元のマシン上とほぼ同じ挙動を示す  仮想化をしないハードウェアに関する挙動は元と全く同じ • 効率性  大多数の命令は実際のプロセッサ上で直接実行される  大多数の命令は単一のVM上のプログラムのもの • 資源制御  VM上のプログラムは与えられた資源しかアクセスできない  特定の条件下ではVMMはVMの資源を取り返せる VMMとしては良い特性を持っている チュートリアル「仮想化技術最前線」 2012/8/24 35 Single-VM Virtualization
  • 36. Single-VM VMM の意義 • 透過性  ゲスト OS に依存せずに機能追加できる Guest OS • 効率性 ISA  VMMの介在によるオーバーヘッドが少ない VM VMM • セキュリティ  ゲストOSから保護された環境を利用できる ISA Real • シンプル Machine  VMMを小さくできる  セキュリティ上も有利 チュートリアル「仮想化技術最前線」 2012/8/24 36 Single-VM Virtualization
  • 37. 仮想化技術の分類のまとめ Virtualization Resource Machine Desktop Object = Machine Subject = OS/App Process VM System VM Interface v = ISA VMM Emulation Interface v ≒ Interface r (Virtualizing Software) Type I Type II Interface r = ISA ≠ ABI Multi-VM Single-VM Interface v = Interface r チュートリアル「仮想化技術最前線」 2012/8/24 37 Single-VM Virtualization
  • 38. Ⅱ.仮想化技術の詳細 ~Single-VM VMM の実現と PC における実際~ チュートリアル「仮想化技術最前線」 2012/8/24 38 Single-VM Virtualization
  • 39. 物理マシンの構成要素 仮想化前 OS/App Interface r = ISA Processor Memory Devices Real Machine チュートリアル「仮想化技術最前線」 2012/8/24 39 Single-VM Virtualization
  • 40. Processor チュートリアル「仮想化技術最前線」 2012/8/24 40 Single-VM Virtualization
  • 41. Processor の仮想化の要件 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] 定理1 「sensitive」な命令が全て特権命令に含まれて いればVMMが構成できる. Instructions Privileged User Sensitive チュートリアル「仮想化技術最前線」 2012/8/24 41 Single-VM Virtualization
  • 42. 「sensitive」な命令 • VMMの実行に影響を与える命令  Control sensitive  システムのリソース設定を変更する命令 o 物理メモリの割り当て状態,システムのモード,I/Oなど  Behavior sensitive  実行時の挙動や結果がシステムのリソース設定に影響される命令 o システムレジスタの値やシステムのモードなど Instructions Control Behavior Innocuous Sensitive Sensitive (無害な) チュートリアル「仮想化技術最前線」 2012/8/24 42 Single-VM Virtualization
  • 43. VMM の要件の充足 • Sensitive な命令 ⇒ VMM へのトラップが発生  「等価性」「資源制御」の実現 • Innocuous な命令 ⇒ なるべく直接実行  「効率性」の実現 Instructions Privileged User Sensitive チュートリアル「仮想化技術最前線」 2012/8/24 43 Single-VM Virtualization
  • 44. Intel CPU(旧)での仮想化 • ゲストOSをユーザレベルで動作させる  特権命令は VMM でトラップできる • 特権命令を VMM でエミュレーションする  ゲストOSも特権モードで動いているようにふるまう Application (Guest) Application Kernel (Guest) (Guest) Ring 3 Ring 3 Ring 0 Ring 0 Kernel VMM (Guest) チュートリアル「仮想化技術最前線」 2012/8/24 44 Single-VM Virtualization
  • 45. 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 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. チュートリアル「仮想化技術最前線」 2012/8/24 45 Single-VM Virtualization
  • 46. Binary Translation による仮想化 • 問題となる命令を実行時に動的に変換する  Sensitive かつ non-privileged な命令  Emulator を呼び出す命令に書き換える Application (Guest) Kernel (Guest) popf ⇒ call emulator Ring 3 Ring 0 VMM Binary Translation チュートリアル「仮想化技術最前線」 2012/8/24 46 Single-VM Virtualization
  • 47. Intel VT による仮想化 VMX non-root mode VMX root mode Application (Guest) Ring 3 Ring 3 Ring 0 VM Entry Ring 0 Kernel VMM (Guest) VM Exit VMCS Guest State Host State Control Field チュートリアル「仮想化技術最前線」 2012/8/24 47 Single-VM Virtualization
  • 48. Intel VT での仮想化可能性 • 新たなモード追加で sensitive な命令を削減  Kernel は従来通り ring 0 で動く  Behavior sensitive な命令が削減  プロセッサの重要な挙動は VMX root mode で設定  Control sensitive な命令が削減  前述の17命令は sensitive ではなくなる • VMMへトラップする命令を柔軟に設定可能に  真に sensitive な命令だけ VMM で捕捉する  なるべく多くの命令を Processor で直接実行できる チュートリアル「仮想化技術最前線」 2012/8/24 48 Single-VM Virtualization
  • 49. 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 49 Single-VM Virtualization
  • 50. Single-VM での Processor 仮想化 • ほとんど VM Exit しない VMM を作れる  必要に応じて VM Exit する条件を増やす • Single-VM VMM でも実装したくなる仮想化の例  リアルモードサポート  割り込みコントローラ  定期的実行 チュートリアル「仮想化技術最前線」 2012/8/24 50 Single-VM Virtualization
  • 51. リアルモードサポート • Windows を動作させるためには必須  起動後も何度かリアルモードに切り替わる • 初期の VT はサポートしていない  仮想8086モードを用いたエミュレーション  それなりに大変な実装が必要 • 最近の VT は “Unrestricted Guest” をサポート  ゲストOSのモードに「制限」が無くなる  リアルモードのOSも簡単に仮想化できる チュートリアル「仮想化技術最前線」 2012/8/24 51 Single-VM Virtualization
  • 52. 割り込みコントローラ • 最近の PC では APIC で割り込みを制御  Advanced Programmable Interrupt Controller • APIC を監視しない場合の制約  外部割り込みを起こしたデバイスが分からない  デバイス⇒割り込み番号の制御をAPICが行っている  TLB shootdown (別プロセッサのTLB flush) が出来ない  TLB shootdown のための IPI (Inter-Processor Interrupt) を送れない o 勝手に送るとゲストOSとコンフリクトする チュートリアル「仮想化技術最前線」 2012/8/24 52 Single-VM Virtualization
  • 53. 定期実行 • 定期的に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 53 Single-VM Virtualization
  • 54. Memory チュートリアル「仮想化技術最前線」 2012/8/24 54 Single-VM Virtualization
  • 55. 物理マシンにおける Memory Virtual Physical Address Space Address Space Paging チュートリアル「仮想化技術最前線」 2012/8/24 55 Single-VM Virtualization
  • 56. Memory の仮想化 Virtual Guest Physical Host Physical Address Space Address Space Address Space Paging Paging チュートリアル「仮想化技術最前線」 2012/8/24 56 Single-VM Virtualization
  • 57. Single-VM での Memory 仮想化 Virtual Guest Physical Host Physical Address Space Address Space ≒ Address Space Identity Mapping Paging MMIO MMIO Trap MMIO VMM チュートリアル「仮想化技術最前線」 2012/8/24 57 Single-VM Virtualization
  • 58. 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 に制御が移る ※VMM保護とMMIOの両方が不要な場合は2段目のページングなしにもできる チュートリアル「仮想化技術最前線」 2012/8/24 58 Single-VM Virtualization
  • 59. Shadow Paging • ゲスト・ページテーブルの Shadow を VMM が管理  初期化時は全てのエントリが not present  Page fault のたびにゲスト・ページテーブルをたどってエントリを追加する • VMM のオーバーヘッドが大きい  Shadow page table を管理する必要性がある  頻繁に VM Exit する Guest OS VMM ゲストCR3 CR3 PD CR3 PD PT PT Page Fault 時に Guest Page PT Table をたどって更新 PT Guest Page Table Shadow Page Table チュートリアル「仮想化技術最前線」 2012/8/24 59 Single-VM Virtualization
  • 60. EPT (Extended Page Table) • もう一つのページテーブルをプロセッサに設定する  プロセッサが自動的に2段階のページングを行ってくれる  Guest Virtual Address ⇒ Guest Physical Address ⇒ Host Physical • VMM のオーバーヘッドが小さい  最初に Identity Mapping なPage Table 作っておけばよい  ほとんどのページで Guest Physical Address = Host Physical Address Guest OS VMM CR3 PD EPTP PT PT Guest Physical Address を EPT で Host Physical PT PT Address に変換する Guest Page Table Extended Page Table チュートリアル「仮想化技術最前線」 2012/8/24 60 Single-VM Virtualization
  • 61. Devices チュートリアル「仮想化技術最前線」 2012/8/24 61 Single-VM Virtualization
  • 62. 物理マシンにおける Device OS/App I/O Instructions Interrupts Memory ISA Registers Controller DMA Real Machine チュートリアル「仮想化技術最前線」 2012/8/24 62 Single-VM Virtualization
  • 63. Single-VM における選択肢 • 完全にパススルー  関係ないデバイスの性能・機能を犠牲にしない • 監視する  実デバイスの挙動・状態を把握できる • 書き換える  部分的に実デバイスの挙動・状態を変化させられる • 完全に仮想化する チュートリアル「仮想化技術最前線」 2012/8/24 63 Single-VM Virtualization
  • 64. I/O Instructions • I/O命令による読み書き I/O許可ビットマップ(8KB) 0  64KBのI/Oアドレス空間にアクセス 1 0 0 0 0 0 0 1  Intel VTの機能でVMMで捕捉可能  8KBのI/O許可ビットマップでアドレス単位で設定可能 o 1ならI/O命令発行時にVM Exit o 0ならそのままI/O命令を実行 0x2000 • メモリアクセス命令でのMMIO P D PT  通常のメモリアドレス空間へのアクセス  Shadow Paging or EPT で捕捉可能 PT  不在ページにしてページフォルトを発生させる PT  命令を解釈してI/O内容を把握する Shadow Page Table or EPT チュートリアル「仮想化技術最前線」 2012/8/24 64 Single-VM Virtualization
  • 65. Interrupts • 外部割り込み  デバイスからの割り込みの捕捉  Intel VT の機能で捕捉可能  割り込みの仮想的な挿入  Intel VT の Event Injection 機能で可能  割り込みベクタ番号の指定が必要 • デバイスの特定  厳密には APIC へのアクセスを監視する必要がある  デバイスの Status レジスタから特定可能な場合も多い  APIC の監視を省略可能 チュートリアル「仮想化技術最前線」 2012/8/24 65 Single-VM Virtualization
  • 66. DMA • ハードウェアでデータをまとめて自動転送  DMAディスクリプタに転送内容を記述する  メモリ上に展開されたデータ構造  ホストコントローラがCPUを介さずにデータ転送  データ転送の終了時に割り込みで通知 • VMMでコントローラへのアクセスを捕捉可能  レジスタの監視・変更は I/O Instruction の捕捉で可能  DMAディスクリプタはメモリを直接参照かシャドウ化 DMAディスクリプタ バッファアドレス バイト数 ステータス ホストコントローラ 0x08086000 4096 OK ベースアドレスレジスタ + 0x04004000 8192 OK 0x00386000 4096 Ready インデックス チュートリアル「仮想化技術最前線」 2012/8/24 66 Single-VM Virtualization
  • 67. Ⅲ.研究紹介 チュートリアル「仮想化技術最前線」 2012/8/24 67 Single-VM Virtualization
  • 68. 研究紹介の構成 • BitVisor の研究  BitVisor の概要  BitVisor を用いた Single-VM Virtualization の応用例 • 関連研究の紹介  Single-VM Virtualization の研究  Single-VM Virtualization でも活用できる研究 チュートリアル「仮想化技術最前線」 2012/8/24 68 Single-VM Virtualization
  • 69. BitVisor の沿革 • 「セキュアVM」プロジェクトで研究開発  実施期間:平成18年度~平成20年度  文部科学省 科学技術振興調整費  情報漏洩を確実に防止するVMの構築を目的  OS・ユーザに依存しないセキュリティの実現 o VMMの特権を活用  ストレージとネットワークからの情報漏洩防止を実現  HDDやUSBメモリを強制的に暗号化  ネットワーク通信を強制的にVPN化  暗号鍵はICカードに格納 チュートリアル「仮想化技術最前線」 2012/8/24 69 Single-VM Virtualization
  • 70. BitVisor の基本アーキテクチャ ゲストOS • 準パススルー型 Device Driver  基本はI/Oをパススルー VMM  ゲストOSがデバイスを直接制御 Device Mediator  最小限のI/Oを監視・変換 制御I/O 拡張機能 データI/O  制御I/Oの監視 監視 変換 o デバイスの状態把握 o VMMに対するアクセス制御  データI/Oの変換 ハード o 拡張機能の実現 Device 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 チュートリアル「仮想化技術最前線」 2012/8/24 70 Single-VM Virtualization
  • 71. BitVisor の応用研究 • セキュリティ  セキュアVM  システムファイル保護 • システム管理  透過的ネットワークブート  透過的VPN切替 • ユーティリティ  ボランティアコンピューティング基盤  デバイスドライバのデバッグ環境 チュートリアル「仮想化技術最前線」 2012/8/24 71 Single-VM Virtualization
  • 72. セキュアVM • PCからの情報漏洩を防止 ストレージ  ストレージからの情報漏洩防止  HDDやUSBメモリ等を強制的に暗号化 ネットワーク  ネットワークからの情報漏洩防止  ネットワーク通信を強制的に暗号化  ICカードでの鍵管理 ICカード  暗号化の鍵の安全な保存  接続先・ユーザ認証 チュートリアル「仮想化技術最前線」 2012/8/24 72 Single-VM Virtualization
  • 73. セキュアVM(実現) • I/Oを暗号化する ゲストOS Device Driver セキュアVM  ストレージI/Oを捕捉・暗号化 ATA NIC USB  ATA/ATAPI 及び USB1.1/2.0を捕捉  AES-XTSで暗号化 VMM 拡張機能 Device Mediator  ネットワークI/Oを捕捉・暗号化 ストレージ管理  NIC(Intel PRO 100/1000)を捕捉 ATA NIC USB ネットワーク管理  IPSecでVPN接続 ID管理  ICカードで鍵管理・認証 Device ハードウェア  USB接続のカードリーダにアクセス ATA NIC USB  PC/SC, CCIDプロトコル チュートリアル「仮想化技術最前線」 2012/8/24 73 Single-VM Virtualization
  • 74. システムファイル保護 • Rootkit からの保護  システムファイルの書き込み を禁止する  OSの重要なファイル o カーネル,デバイスドライバ,…  セキュリティソフトウェア o アンチウィルス,…  カーネルレベルでも書けない  再起動すれば元に戻る  最終ラインでのディフェンス 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 チュートリアル「仮想化技術最前線」 2012/8/24 74 Single-VM Virtualization
  • 75. システムファイル保護(実現) • ストレージへの書き込み を監視する ゲストOS Device Driver VM ATA NIC USB  システムファイルの書き換え を検出 VMM o ファイルのデータ領域 拡張機能 o メタデータ領域 Device Mediator 保護モジュール o ディレクトリ構造 ATA 保護ポリシー  ファイルとセクタのマッピング を管理 Device ハードウェア o セマンティックギャップを克服 ATA NIC USB o 低オーバーヘッドで実現 チュートリアル「仮想化技術最前線」 2012/8/24 75 Single-VM Virtualization
  • 76. 透過的ネットワークブート • 任意のOSをネットワークから サーバ ブート可能にする  OS・設定に依存しない  Windowsをそのままブート可能  Linuxも一切設定なしでブート可能  ローカルのハードウェアをフル活用  内蔵機器・周辺機器をOSが完全管理 o Blu-ray,USB3.0,各種PCIデバイス,… o 省電力(電源制御),最適化(デフラグなど) クライアント 表 祐志, 品川 高廣, 加藤 和彦.仮想マシンモニタによる透過的ネットワークブート方式.情報処理学会論文誌:コ ンピューティングシステム,第4巻,第4号,228-245頁,2011年10月.http://id.nii.ac.jp/1001/00078067/ チュートリアル「仮想化技術最前線」 2012/8/24 76 Single-VM Virtualization
  • 77. 透過的ネットワークブート(実現) • ディスクアクセスを ネットワークへ転送する ゲストOS Device Driver VM ATA NIC USB  ATAのインターフェイスを提供 VMM  ローカルディスクと同じアクセス方法 拡張機能 o MS-DOSでも起動する Device ATA監視 Mediator ATA ATA-AoE変換  ATAアクセスをAoEに変換 NIC NICアクセス  ATA over Ethernet Device ハードウェア  パケットをネットワークへ転送 ATA NIC USB  ディスクイメージをサーバで集中管理 チュートリアル「仮想化技術最前線」 2012/8/24 77 Single-VM Virtualization
  • 78. 透過的VPN切り替え データセンター(クラウド) • クラウド接続の可用性を 専用線 確保する  ネットワーク/サーバ障害対応 VPN × VPN × ルータ1 ルータ2  インターネット層での経路障害 Internet  VPNサーバ故障  OS/ユーザは意識しない  基盤として高可用性を実現  ユーザ・管理者に負担をかけない クライアント 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 チュートリアル「仮想化技術最前線」 2012/8/24 78 Single-VM Virtualization
  • 79. 透過的VPN切り替え(実現) • VPN接続を切り替える ゲストOS Device Driver セキュアVM  定期的にネットワーク到達性を ATA NIC USB チェック VMM  VMMからサーバにPingを送る 拡張機能 Device Mediator  VPN切断・再接続を実施 VPNクライアント  利用可能なサーバの選択 NIC  IPsecでのコネクションを確立 ID管理  IPアドレスの不整合などを吸収 Device ハードウェア ATA NIC USB  TCP接続が切れない  切り替え時間は3秒程度 チュートリアル「仮想化技術最前線」 2012/8/24 79 Single-VM Virtualization
  • 80. ボランティアコンピューティング • 計算コードをVMM内実行 ゲストOS  計算コードをユーザから保護 Device Driver ATA NIC USB VM  計算結果の改ざん防止  計算結果の漏洩防止 VMM  計算コードからユーザを保護 拡張機能  計算コードによる不正アクセスを防止 Device Mediator 保護ドメイン 計算コード NIC (ELF) • VMMでELFコードを受信  VMM内の保護ドメインで実行  ユーザは存在を感知しない Device ハードウェア ATA NIC USB チュートリアル「仮想化技術最前線」 2012/8/24 80 Single-VM Virtualization
  • 81. デバイスドライバのデバッグ • 滅多に発生しないエラー ゲストOS Device Driver VM を意図的に発生させる Driver  デバイスドライバが想定して VMM いないバグを洗い出す 拡張機能 Device Mediator 状態遷移追跡 • VMMでデバイスの挙動 Mediator I/O書き換え を変える  状態遷移を監視する Device ハードウェア  意図的な状態遷移を引き起こ Device すようにI/Oを書き換える チュートリアル「仮想化技術最前線」 2012/8/24 81 Single-VM Virtualization
  • 82. 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)対策 チュートリアル「仮想化技術最前線」 2012/8/24 82 Single-VM Virtualization
  • 83. VMMによるセキュリティ(1) • SecVisor [Seshadri et al., SOSP ‘07]  カーネルコードの一貫性維持に特化  VMMが許可しないとカーネルモードで実行できない  コードサイズは1,112行(AMD SVM+NPT版) チュートリアル「仮想化技術最前線」 2012/8/24 83 Single-VM Virtualization
  • 84. VMMによるセキュリティ(2) • CloudVisor [Zhang et al., SOSP ‘11]  セキュリティ専用VMMを既存VMMの下に置く  メモリやディスク暗号化などでVM間の保護を実現 チュートリアル「仮想化技術最前線」 2012/8/24 84 Single-VM Virtualization
  • 85. VMMによるセキュリティ(3) • OverShadow [Chen et al., ASPLOS ’08]  信頼出来ないOSからアプリのデータを守る  暗号化とハッシュでメモリの機密性と完全性を保つ チュートリアル「仮想化技術最前線」 2012/8/24 85 Single-VM Virtualization
  • 86. まとめ • 仮想化の基礎知識  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 86 Single-VM Virtualization
  • 87. 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 87 Single-VM Virtualization