狠狠撸

狠狠撸Share a Scribd company logo
2008年3月19日(水)
第2回セキュアVMシンポジウム


筑波大学 講師 品川高廣
?    1.セキュアVMとは(ユーザ向け)
     ? 目的,利用例,脅威モデル


?    2.VMMアーキテクチャ概要
     ? 設計方針,基本アーキテクチャ


?    3.VMMアーキテクチャ詳細(開発者向け)
     ? CPU, メモリ,デバイスの扱い



2007/7/19                    2
1.セキュアVMとは




2007/7/19                3
?    「セキュア」+「VM(仮想マシン)」
     ? 仮想的にセキュアなマシン環境を提供する

             オペレーティングシステム

            仮想マシン(Virtual Machine)

             仮想マシンモニタ(VMM)
                セキュリティ機能


            物理マシン(Physical Machine)

                 ハードウェア

2007/7/19                             4
?    情報漏洩の防止(Confidentiality)
     ? PC?USBメモリの紛失?盗難
     ? インターネットへの情報漏洩
       ? ウィルスやファイル交換ソフトなど

?    情報漏洩事件の多発が背景
     ? 月平均「20件以上」発生※
            ? 2007年10月~12月だけで「68件」
            ? 官公庁,教育機関,病院,銀行,…
            ? エンドユーザからの情報漏洩が多い
                           ※Security NEXT 「個人情報漏洩事件一覧」より算出
2007/7/19                                                5
?    強力なセキュリティの実現
     ? たとえOSが脆弱性でも大丈夫


?    セキュリティの強制
     ? 勝手にセキュリティを無効に出来ないようにする
       ? 「ユーザ任せのセキュリティはやめたい」
         (山口内閣官房情報セキュリティ補佐官談)

   基盤となるコンピュータそのものをセキュアにしたい


2007/7/19                       6
?   ストレージ管理                      ゲストOS
     ? HDD?USBメモリの暗号化

 ?   ネットワーク管理                      VMM

     ? IPSecでVPN接続      ストレージ管理    ID 管理   ネットワーク管理

                                    認証
                         暗号化                     VPN
                                   鍵管理

 ?   ID管理
     ? ICカードで認証?鍵管理                VMMコア
                            CPU?デバイス仮想化,アクセス制御


 ?   VMMコア                        ハードウェア
     ? CPU?デバイスの仮想化
     ? アクセス制御

2007/7/19                                              7
?   ログイン             VPN サーバ
     ? ICカードを挿入する
     ? PIN番号を入れる

 ?   システムの起動              PIN: ****
     ? 暗号化が解除される
     ? VPNが接続される
     ? OSが起動する

 ?   ログアウト          カード
                            IC Card   IC Card
     ? OSを停止する      リーダ
     ? ICカードを抜く

2007/7/19                                       8
?    PCやメディアの紛失?盗難
     ? HDDやUSBメモリはVMMで強制的に暗号化
     ? 暗号鍵はICカードに格納


?    ネットワーク経由での情報漏洩
     ? VPNにより接続先がVMMで強制される
     ? ネットワーク通信は自動的に暗号化される




2007/7/19                       9
?    内部犯行
     ? ICカードを持ったユーザによるハード的攻撃
       ? 例:HDDを物理的の取り出してICカードの鍵で復号する


?    間接的手段
     ? 画面を撮影する
     ? 音声にデータを乗せて取り出す
     ? 隠れチャネル



2007/7/19                              10
?    情報漏洩の防止
     ? ストレージの暗号化
     ? ネットワークの認証?暗号化
     ? ICカードによるユーザ認証?鍵管理


?    VMによるセキュリティの強制
     ? OSに依存しない
     ? ユーザに依存しない



2007/7/19                  11
2.VMMアーキテクチャ概要




2007/7/19                    12
?    新規開発 v.s. 既存VMMの改良
     ? Xen, QEMU など既存VMMを流用するか否か


?    完全仮想化 v.s. 準仮想化
     ? ゲスト翱厂に手を入れるか否か


?    TypeⅠ v.s. TypeⅡ
     ? ホストOSを使うか否か



2007/7/19                          13
?    WindowsXPが動作すること
     ? ゲスト翱厂に手を入れることは難しい
     ? ?「完全仮想化」が必要

?    実運用を視野に入れること
     ? 政府機関での使用,オープンソース公開
     ? ?それなりの性能?完成度が必要

?    開発期間?コストは限定的である
     ? 約2年半弱,数億円
     ? ?大がかりなシステムは作れない

2007/7/19                   14
?    VMM自身がセキュアである
     ? ?VMMを出来るだけ小さくシンプルにすべき

?    デスクトップ環境を想定する
     ? ?サーバ統合のようなことはしなくてよい

?    対応デバイスは限定してよい
     ? オフィス環境で必要なもののみ
     ? 入札などで仕様を指定可能
     ? ?独自のVMMを作ることが可能

2007/7/19                      15
?    独自VMMを作成する
     ? VMMを小さくシンプルに
       ? TypeⅠのVMM
     ? 短期間?低コストでの実現


?    実運用に耐えうる性能?完成度
     ? 「完全仮想化」する
     ? デスクトップ用途



2007/7/19             16
?   基本はパススルー                              ゲストOS

    ? デバイスを仮想化しない          デバイスドライバ      デバイスドライバ          デバイスドライバ



       ? ゲストOSがデバイスを直接制御
                                               VMM


?   必要最小限の監視?変換                         準パススルー
                                      制御I/O      データI/O
    ? 制御I/Oの監視                        アクセス制御         暗号化
       ? デバイスの状態把握
       ? VMMに対するアクセス制御
    ? データI/Oの変換                               ハード

       ? ストレージ?ネットワーク暗号化    デバイス              デバイス          デバイス




    2007/7/19                                                      17
?    セキュリティ向上
     ? VMMを小さくできる
       ? VMM自身の安全性が向上する(検証が容易)

?    性能?完成度
     ? 仮想化のオーバーヘッドを大幅に削減できる
     ? ゲストOSのデバイスドライバを活用できる

?    開発コストの削減
     ? 0からの開発が現実的なコストで可能になる
       ? デバイスドライバの数を限定できる
2007/7/19                        18
?    複数ゲストOSは同時に稼働しない
     ? デスクトップ環境だから許容される
       ? Windowsがセキュアな環境で動作すればよい
     ? 将来的には対応できなくはない
       ? 方法1:ハードウェアサポートを期待する
             ? PCI SIGでIOV(I/O Virtualization)が策定中
            ? 方法2:エミュレーション層を追加開発する

?    対応するマシン環境が限定される
     ? 現状では許容されている
       ? 今後の展開に期待?

2007/7/19                                            19
TypeⅡ型(VMWare Workstation等)       Para virtualization型(Xen)
            ゲスト翱厂             ゲスト翱厂    Domain 0
                                        (VMM)
                     VMM
                                       仮想デバイス          ゲスト     ゲスト
            仮想デバイス          仮想デバイス
                                                        OS      OS
                                      複数ゲスト管理
                    複数ゲスト管理
                                        ドライバ
                    ホストOS
                     ドライバ                         Hypervisor


        TypeⅠ型(VMWare Server等)        準パススルー型(BitVisor)
            ゲスト翱厂             ゲスト翱厂
                                                   ゲスト翱厂
                     VMM
            仮想デバイス          仮想デバイス                  VMM
                    複数ゲスト管理                       セキュリティ機能

                     ドライバ                    準パススルードライバ




2007/7/19                                                            20
ゲスト翱厂       ATAデバイスドライバ          USBデバイスドライバ     NICデバイスドライバ




                                        ID管理
                       ストレージ暗号化
                                        PKCS#11
                                                  IKEv1           IPSec
                                                                 カプセル化
                      ATA   USB マス       PC/SC
                    ストレージ   ストレージ
  VMM                クラス     クラス         CCID     UDP/IP

                ATAプロトコル      USB多重化レイヤ               NIC多重化レイヤ

              ATAデバイスドライバ    USBデバイスドライバ            NICデバイスドライバ


                                       VMMコア




ハードウェア       ATAホストコントローラ         USBホストコントローラ             NIC



 2007/7/19                                                                21
?    準パススルー型アーキテクチャ
     ? 可能な限りパススルー
     ? 最小限必要なデバイスだけ監視?変換


?    独自VMMを0から作成
     ? TypeⅠ型(ホストOSは使用しない)
     ? 「完全仮想化」方式
       ? ゲスト翱厂は改変しない



2007/7/19                    22
3.VMMアーキテクチャ詳細




2007/7/19                    23
?    CPUの仮想化


?    メモリの仮想化


?    デバイスの仮想化



2007/7/19       24
?    Intel VT 機能を利用
     ? VMX non-root モードと VMX root モード
     ? VMCS(Virtual Machine Control Structure)領域
       ? レジスタの状態などを保存するためのメモリ領域(4KB)
               VMX non-rootモード                                    VMX rootモード

       リング3       ゲストアプリ
       リング2
       リング1
       リング0
                 ゲストカーネル                                                 VMM

                                    VMEnter/VMExit
                                         VMCS領域
                      Guest-state    VM-entry control   VM-execution control
                      Host-State     VM-exit control    VM-exit information
2007/7/19                                                                       25
?    I/O命令の一部
     ? ATA, USB, NIC関連   IN, INS, OUT, OUTS

                         MOV CRx

     特権命令の一部
                         CPUID
?                        RDMSR
                         WRMSR

     ? 制御レジスタへの読み書きなど    INVLPG

                         Exceptions
                         NMI
                         External Interrupts

?    割り込み?例外             Interrupt window

                         INIT Signals
     ? ページフォルト関係など       Start-up IPIs




?    SMP関連
2007/7/19                                      26
?    リアルモード対応
     ? 仮想8086+命令エミュレーションで対応
       ? モード切替時,INS/OUTS命令,MMIO等でも利用

?    メモリ管理
     ? EPT(Extended Page Table)はまだない




2007/7/19                              27
?    基本的にはアドレス変換しない
     ? ゲスト物理アドレス=マシン物理アドレス

?    VMMは後端(<4GB)に常駐する
     ? 現在のサイズは32MB
     ? BIOSコール(e820h)をごまかしてreserved領域に
       仮想アドレス空間   ゲスト物理アドレス空間      マシン物理アドレス空間


                  4GB   Reserved   4GB    Reserved
                        Reserved           VMM




                        Reserved         BIOSフック等
                    0                0
2007/7/19                                            28
?    ゲスト翱厂のシャドウ(コピー)をVMMで保持
     ? VMM領域の保護
     ? ページングオフ時の対応

            VMM                  ゲストOS
  ゲストCR3

     CR3    PD       PT    CR3    PD      PT



                     PT                   PT



                     PT   ページフォルト時に更新     PT

            シャドウページテーブル           ゲストページテーブル

2007/7/19                                      29
?    I/O命令(IN, OUTなど)
     ? VTの機能によりVMMで捕捉
            ? I/Oポートアドレス単位でビットマップで指定
     ? 制御I/Oの監視,データI/Oの変換

?    MMIO
     ? シャドウページングにより捕捉

?    DMA
     ? VT-dによるアクセス制御
     ? シャドウDMAディスクリプタ

2007/7/19                              30
?    DMAディスクリプタのシャドウを作る
     ? データだけVMMで横取りする
       ? 制御はゲストOSにさせる
                           シャドウDMAディスクリプタ
                         バッファアドレス      バイト数    ステータス
                         0xF0004000    16384   OK

      ホストコントローラ
                                      VMMの領域
    ベースアドレスレジスタ
                     +
                               DMAディスクリプタ
            インデックス       バッファアドレス      バイト数    ステータス
                         0x08086000    4096    OK
                         0x04004000    8192    OK
                         0x00386000    4096    Ready
2007/7/19                                              31
物理メモリ

                     シャドウDMAディスクリプタ
VMM
                     ベースアドレス      バイト数
                     0xF0004000   16384




VMMによる暗号化/復号化+コピー
                       DMAディスクリプタ
                     ベースアドレス      バイト数
ゲスト翱厂
                     0x08086000   4096
                     0x04004000   8192
                     0x00386000   4096




 2007/7/19                                32
?    VMMから一部のデバイスを使う必要がある
     ? USB(ICカードリーダ),NIC(IKEプロトコル)
     ? シャドウDMAディスクリプタの拡張で対応

                            シャドウDMAディスクリプタ
                         バッファアドレス     バイト数   ステータス   エントリ
                                                     の挿入
                         0xF0004000   4096   OK
      ホストコントローラ          0xF0010000   8192   OK

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

2007/7/19                                               33
?    比較的シンプルな構造
     ? PRD(Physical Region Descriptor)のテーブルをメモリ上に保持
     ? テーブルへのアドレスをレジスタに指定
     ? Start Bit に 1 を書き込むとDMA転送開始



                                    Physical Region Descriptor Table
      Bus Master IDE Controller         Memory Region Physical Base Address[31:1]    0
                                   EOT         reserved           Byte Count[15:1]   0
     オフセット     機能
                                                           …                         0
     00h       Command Register
                                   …               …                     …           0
     02h       Status Register
     04h-07h   PRD Table Address
                                    1




2007/7/19                                                                                34
?   時間枠(1024ms)単位の転送
      ? 1024エントリ×4Byte=1ページのフレームリスト
      ? TD(Transfer Descriptor)のリンクリスト
                                                                              TD (Transfer Descriptor)
                                                                                      LinkPointer
     USB ホストコントローラ
           (UHCI)                                                                     Status
                                                                                MaxLen              Device   PID
                               カウンタ    Base            Index       00
                                                                                        Buffer Pointer

オフセット       機能
                                              Frame List
00h-01h     Command                                                     Isochronous        Interrupt/Bulk/Control
                                      Frame Pointer            Q    T
02h-03h     Status                                 …                     TD      TD                  QH      QH
04h-05h     Interrupt Enable          Frame Pointer            Q    T
                                                                         TD      TD                  TD      TD
06h-07h     Frame Number              Frame Pointer            Q    T
08h-0Bh     Frame List Base Address   Frame Pointer            Q    T
                                                                         TD      TD                  TD      TD




2007/7/19                                                                                                           35
?      ディスクリプタのリング構造
         ? Tail ポインタをドライバソフトウェアで更新する
         ? Head ポインタをホストコントローラが更新して追いか
             ける
             ? Tail に追いつくと自動的に停止する
                                                  Transmit Descriptor Ring Structure
               NIC
  (Intel PCIe* GbE Controllers)           Base      Buffer Address      …     Status   Len

オフセット        機能
                                          Head
03800h       Descriptor Base Low
                                                       ハードウェアが管理
03804h       Descriptor Base High
03808h       Descriptor Length
                                          Tail
03810h       Descriptor Head                                                                  循環
                                    Base+Length                                              バッファ
03818h       Descriptor Tail



 2007/7/19                                                                                     36
?    LVMM(Intel vPro)
     ? クライアント端末のリモート管理が目的
       ? ネットワークのみ仮想化し,残りはパススルー
       ? VMが2つある(User Partition と Service Partition)

?    SecVisor [SOSP ‘07]
     ? Linux カーネルの改竄防止
       ? W+Xページ,不正なカーネルモジュール防止
       ? VMは1つ,デバイスは完全パススルー


2007/7/19                                              37
?    平成19年度
     ? VMMコア
     ? ATAドライバ(IDE)

?    平成20年度
     ?      USBドライバ(UHCI:USB1.1)
     ?      USBドライバ(EHCI:USB2.0)
     ?      ATAドライバ(ATAPI)(AHCI未定)
     ?      NICドライバ(Intel PRO1000系)
     ?      ID管理
     ?      VPN管理

?    未対応デバイス
     ? IEEE 1394
     ? 無線LAN
     ? プリンタ/スキャナ

2007/7/19                             38
?    セキュアVMの概要
     ? ストレージ暗号化
     ? ネットワーク暗号化
     ? ICカードによる認証?鍵管理

?    準パススルー型VMMの紹介
     ? 可能な限りパススルー
     ? 必要最小限のアクセスだけVMMで捕捉

?    準パススルー型の実装概要
     ? Intel VT機能を活用
     ? シャドウページテーブル
     ? シャドウDMAディスクリプタ

2007/7/19                   39
?    準パススルー型
?    TypeⅠ型 VMM(Hypervisor型)
?    64bit 対応(ゲスト翱厂は32bitのみ)
     ? PAE対応
?    マルチコア?マルチプロセッサ対応
?    WindowsXP/Vista, Linux が動作
?    コード行数約20,000行(コアのみ)



2007/7/19                         40
本日ソースコード公开

            BitVisor 0.2 (α版)

      http://www.securevm.org/

2007/7/19                        41

More Related Content

2008-03-19 第2回セキュアVMシンポジウム

  • 2. ? 1.セキュアVMとは(ユーザ向け) ? 目的,利用例,脅威モデル ? 2.VMMアーキテクチャ概要 ? 設計方針,基本アーキテクチャ ? 3.VMMアーキテクチャ詳細(開発者向け) ? CPU, メモリ,デバイスの扱い 2007/7/19 2
  • 4. ? 「セキュア」+「VM(仮想マシン)」 ? 仮想的にセキュアなマシン環境を提供する オペレーティングシステム 仮想マシン(Virtual Machine) 仮想マシンモニタ(VMM) セキュリティ機能 物理マシン(Physical Machine) ハードウェア 2007/7/19 4
  • 5. ? 情報漏洩の防止(Confidentiality) ? PC?USBメモリの紛失?盗難 ? インターネットへの情報漏洩 ? ウィルスやファイル交換ソフトなど ? 情報漏洩事件の多発が背景 ? 月平均「20件以上」発生※ ? 2007年10月~12月だけで「68件」 ? 官公庁,教育機関,病院,銀行,… ? エンドユーザからの情報漏洩が多い ※Security NEXT 「個人情報漏洩事件一覧」より算出 2007/7/19 5
  • 6. ? 強力なセキュリティの実現 ? たとえOSが脆弱性でも大丈夫 ? セキュリティの強制 ? 勝手にセキュリティを無効に出来ないようにする ? 「ユーザ任せのセキュリティはやめたい」 (山口内閣官房情報セキュリティ補佐官談) 基盤となるコンピュータそのものをセキュアにしたい 2007/7/19 6
  • 7. ? ストレージ管理 ゲストOS ? HDD?USBメモリの暗号化 ? ネットワーク管理 VMM ? IPSecでVPN接続 ストレージ管理 ID 管理 ネットワーク管理 認証 暗号化 VPN 鍵管理 ? ID管理 ? ICカードで認証?鍵管理 VMMコア CPU?デバイス仮想化,アクセス制御 ? VMMコア ハードウェア ? CPU?デバイスの仮想化 ? アクセス制御 2007/7/19 7
  • 8. ? ログイン VPN サーバ ? ICカードを挿入する ? PIN番号を入れる ? システムの起動 PIN: **** ? 暗号化が解除される ? VPNが接続される ? OSが起動する ? ログアウト カード IC Card IC Card ? OSを停止する リーダ ? ICカードを抜く 2007/7/19 8
  • 9. ? PCやメディアの紛失?盗難 ? HDDやUSBメモリはVMMで強制的に暗号化 ? 暗号鍵はICカードに格納 ? ネットワーク経由での情報漏洩 ? VPNにより接続先がVMMで強制される ? ネットワーク通信は自動的に暗号化される 2007/7/19 9
  • 10. ? 内部犯行 ? ICカードを持ったユーザによるハード的攻撃 ? 例:HDDを物理的の取り出してICカードの鍵で復号する ? 間接的手段 ? 画面を撮影する ? 音声にデータを乗せて取り出す ? 隠れチャネル 2007/7/19 10
  • 11. ? 情報漏洩の防止 ? ストレージの暗号化 ? ネットワークの認証?暗号化 ? ICカードによるユーザ認証?鍵管理 ? VMによるセキュリティの強制 ? OSに依存しない ? ユーザに依存しない 2007/7/19 11
  • 13. ? 新規開発 v.s. 既存VMMの改良 ? Xen, QEMU など既存VMMを流用するか否か ? 完全仮想化 v.s. 準仮想化 ? ゲスト翱厂に手を入れるか否か ? TypeⅠ v.s. TypeⅡ ? ホストOSを使うか否か 2007/7/19 13
  • 14. ? WindowsXPが動作すること ? ゲスト翱厂に手を入れることは難しい ? ?「完全仮想化」が必要 ? 実運用を視野に入れること ? 政府機関での使用,オープンソース公開 ? ?それなりの性能?完成度が必要 ? 開発期間?コストは限定的である ? 約2年半弱,数億円 ? ?大がかりなシステムは作れない 2007/7/19 14
  • 15. ? VMM自身がセキュアである ? ?VMMを出来るだけ小さくシンプルにすべき ? デスクトップ環境を想定する ? ?サーバ統合のようなことはしなくてよい ? 対応デバイスは限定してよい ? オフィス環境で必要なもののみ ? 入札などで仕様を指定可能 ? ?独自のVMMを作ることが可能 2007/7/19 15
  • 16. ? 独自VMMを作成する ? VMMを小さくシンプルに ? TypeⅠのVMM ? 短期間?低コストでの実現 ? 実運用に耐えうる性能?完成度 ? 「完全仮想化」する ? デスクトップ用途 2007/7/19 16
  • 17. ? 基本はパススルー ゲストOS ? デバイスを仮想化しない デバイスドライバ デバイスドライバ デバイスドライバ ? ゲストOSがデバイスを直接制御 VMM ? 必要最小限の監視?変換 準パススルー 制御I/O データI/O ? 制御I/Oの監視 アクセス制御 暗号化 ? デバイスの状態把握 ? VMMに対するアクセス制御 ? データI/Oの変換 ハード ? ストレージ?ネットワーク暗号化 デバイス デバイス デバイス 2007/7/19 17
  • 18. ? セキュリティ向上 ? VMMを小さくできる ? VMM自身の安全性が向上する(検証が容易) ? 性能?完成度 ? 仮想化のオーバーヘッドを大幅に削減できる ? ゲストOSのデバイスドライバを活用できる ? 開発コストの削減 ? 0からの開発が現実的なコストで可能になる ? デバイスドライバの数を限定できる 2007/7/19 18
  • 19. ? 複数ゲストOSは同時に稼働しない ? デスクトップ環境だから許容される ? Windowsがセキュアな環境で動作すればよい ? 将来的には対応できなくはない ? 方法1:ハードウェアサポートを期待する ? PCI SIGでIOV(I/O Virtualization)が策定中 ? 方法2:エミュレーション層を追加開発する ? 対応するマシン環境が限定される ? 現状では許容されている ? 今後の展開に期待? 2007/7/19 19
  • 20. TypeⅡ型(VMWare Workstation等) Para virtualization型(Xen) ゲスト翱厂 ゲスト翱厂 Domain 0 (VMM) VMM 仮想デバイス ゲスト ゲスト 仮想デバイス 仮想デバイス OS OS 複数ゲスト管理 複数ゲスト管理 ドライバ ホストOS ドライバ Hypervisor TypeⅠ型(VMWare Server等) 準パススルー型(BitVisor) ゲスト翱厂 ゲスト翱厂 ゲスト翱厂 VMM 仮想デバイス 仮想デバイス VMM 複数ゲスト管理 セキュリティ機能 ドライバ 準パススルードライバ 2007/7/19 20
  • 21. ゲスト翱厂 ATAデバイスドライバ USBデバイスドライバ NICデバイスドライバ ID管理 ストレージ暗号化 PKCS#11 IKEv1 IPSec カプセル化 ATA USB マス PC/SC ストレージ ストレージ VMM クラス クラス CCID UDP/IP ATAプロトコル USB多重化レイヤ NIC多重化レイヤ ATAデバイスドライバ USBデバイスドライバ NICデバイスドライバ VMMコア ハードウェア ATAホストコントローラ USBホストコントローラ NIC 2007/7/19 21
  • 22. ? 準パススルー型アーキテクチャ ? 可能な限りパススルー ? 最小限必要なデバイスだけ監視?変換 ? 独自VMMを0から作成 ? TypeⅠ型(ホストOSは使用しない) ? 「完全仮想化」方式 ? ゲスト翱厂は改変しない 2007/7/19 22
  • 24. ? CPUの仮想化 ? メモリの仮想化 ? デバイスの仮想化 2007/7/19 24
  • 25. ? Intel VT 機能を利用 ? VMX non-root モードと VMX root モード ? VMCS(Virtual Machine Control Structure)領域 ? レジスタの状態などを保存するためのメモリ領域(4KB) VMX non-rootモード VMX rootモード リング3 ゲストアプリ リング2 リング1 リング0 ゲストカーネル VMM VMEnter/VMExit VMCS領域 Guest-state VM-entry control VM-execution control Host-State VM-exit control VM-exit information 2007/7/19 25
  • 26. ? I/O命令の一部 ? ATA, USB, NIC関連 IN, INS, OUT, OUTS MOV CRx 特権命令の一部 CPUID ? RDMSR WRMSR ? 制御レジスタへの読み書きなど INVLPG Exceptions NMI External Interrupts ? 割り込み?例外 Interrupt window INIT Signals ? ページフォルト関係など Start-up IPIs ? SMP関連 2007/7/19 26
  • 27. ? リアルモード対応 ? 仮想8086+命令エミュレーションで対応 ? モード切替時,INS/OUTS命令,MMIO等でも利用 ? メモリ管理 ? EPT(Extended Page Table)はまだない 2007/7/19 27
  • 28. ? 基本的にはアドレス変換しない ? ゲスト物理アドレス=マシン物理アドレス ? VMMは後端(<4GB)に常駐する ? 現在のサイズは32MB ? BIOSコール(e820h)をごまかしてreserved領域に 仮想アドレス空間 ゲスト物理アドレス空間 マシン物理アドレス空間 4GB Reserved 4GB Reserved Reserved VMM Reserved BIOSフック等 0 0 2007/7/19 28
  • 29. ? ゲスト翱厂のシャドウ(コピー)をVMMで保持 ? VMM領域の保護 ? ページングオフ時の対応 VMM ゲストOS ゲストCR3 CR3 PD PT CR3 PD PT PT PT PT ページフォルト時に更新 PT シャドウページテーブル ゲストページテーブル 2007/7/19 29
  • 30. ? I/O命令(IN, OUTなど) ? VTの機能によりVMMで捕捉 ? I/Oポートアドレス単位でビットマップで指定 ? 制御I/Oの監視,データI/Oの変換 ? MMIO ? シャドウページングにより捕捉 ? DMA ? VT-dによるアクセス制御 ? シャドウDMAディスクリプタ 2007/7/19 30
  • 31. ? DMAディスクリプタのシャドウを作る ? データだけVMMで横取りする ? 制御はゲストOSにさせる シャドウDMAディスクリプタ バッファアドレス バイト数 ステータス 0xF0004000 16384 OK ホストコントローラ VMMの領域 ベースアドレスレジスタ + DMAディスクリプタ インデックス バッファアドレス バイト数 ステータス 0x08086000 4096 OK 0x04004000 8192 OK 0x00386000 4096 Ready 2007/7/19 31
  • 32. 物理メモリ シャドウDMAディスクリプタ VMM ベースアドレス バイト数 0xF0004000 16384 VMMによる暗号化/復号化+コピー DMAディスクリプタ ベースアドレス バイト数 ゲスト翱厂 0x08086000 4096 0x04004000 8192 0x00386000 4096 2007/7/19 32
  • 33. ? VMMから一部のデバイスを使う必要がある ? USB(ICカードリーダ),NIC(IKEプロトコル) ? シャドウDMAディスクリプタの拡張で対応 シャドウDMAディスクリプタ バッファアドレス バイト数 ステータス エントリ の挿入 0xF0004000 4096 OK ホストコントローラ 0xF0010000 8192 OK ベースアドレスレジスタ + DMAディスクリプタ インデックス バッファアドレス バイト数 ステータス 0x08086000 4096 OK 0x04004000 8192 OK 0x00386000 4096 Ready 2007/7/19 33
  • 34. ? 比較的シンプルな構造 ? PRD(Physical Region Descriptor)のテーブルをメモリ上に保持 ? テーブルへのアドレスをレジスタに指定 ? Start Bit に 1 を書き込むとDMA転送開始 Physical Region Descriptor Table Bus Master IDE Controller Memory Region Physical Base Address[31:1] 0 EOT reserved Byte Count[15:1] 0 オフセット 機能 … 0 00h Command Register … … … 0 02h Status Register 04h-07h PRD Table Address 1 2007/7/19 34
  • 35. ? 時間枠(1024ms)単位の転送 ? 1024エントリ×4Byte=1ページのフレームリスト ? TD(Transfer Descriptor)のリンクリスト TD (Transfer Descriptor) LinkPointer USB ホストコントローラ (UHCI) Status MaxLen Device PID カウンタ Base Index 00 Buffer Pointer オフセット 機能 Frame List 00h-01h Command Isochronous Interrupt/Bulk/Control Frame Pointer Q T 02h-03h Status … TD TD QH QH 04h-05h Interrupt Enable Frame Pointer Q T TD TD TD TD 06h-07h Frame Number Frame Pointer Q T 08h-0Bh Frame List Base Address Frame Pointer Q T TD TD TD TD 2007/7/19 35
  • 36. ? ディスクリプタのリング構造 ? Tail ポインタをドライバソフトウェアで更新する ? Head ポインタをホストコントローラが更新して追いか ける ? Tail に追いつくと自動的に停止する Transmit Descriptor Ring Structure NIC (Intel PCIe* GbE Controllers) Base Buffer Address … Status Len オフセット 機能 Head 03800h Descriptor Base Low ハードウェアが管理 03804h Descriptor Base High 03808h Descriptor Length Tail 03810h Descriptor Head 循環 Base+Length バッファ 03818h Descriptor Tail 2007/7/19 36
  • 37. ? LVMM(Intel vPro) ? クライアント端末のリモート管理が目的 ? ネットワークのみ仮想化し,残りはパススルー ? VMが2つある(User Partition と Service Partition) ? SecVisor [SOSP ‘07] ? Linux カーネルの改竄防止 ? W+Xページ,不正なカーネルモジュール防止 ? VMは1つ,デバイスは完全パススルー 2007/7/19 37
  • 38. ? 平成19年度 ? VMMコア ? ATAドライバ(IDE) ? 平成20年度 ? USBドライバ(UHCI:USB1.1) ? USBドライバ(EHCI:USB2.0) ? ATAドライバ(ATAPI)(AHCI未定) ? NICドライバ(Intel PRO1000系) ? ID管理 ? VPN管理 ? 未対応デバイス ? IEEE 1394 ? 無線LAN ? プリンタ/スキャナ 2007/7/19 38
  • 39. ? セキュアVMの概要 ? ストレージ暗号化 ? ネットワーク暗号化 ? ICカードによる認証?鍵管理 ? 準パススルー型VMMの紹介 ? 可能な限りパススルー ? 必要最小限のアクセスだけVMMで捕捉 ? 準パススルー型の実装概要 ? Intel VT機能を活用 ? シャドウページテーブル ? シャドウDMAディスクリプタ 2007/7/19 39
  • 40. ? 準パススルー型 ? TypeⅠ型 VMM(Hypervisor型) ? 64bit 対応(ゲスト翱厂は32bitのみ) ? PAE対応 ? マルチコア?マルチプロセッサ対応 ? WindowsXP/Vista, Linux が動作 ? コード行数約20,000行(コアのみ) 2007/7/19 40
  • 41. 本日ソースコード公开 BitVisor 0.2 (α版) http://www.securevm.org/ 2007/7/19 41