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

セキュアVM「BitVisor」のアーキテクチャ概要

 セキュアVM「BitVisor」のアーキテクチャ概要

セキュアVMワークショップ

Avatar for Takahiro Shinagawa

Takahiro Shinagawa

November 18, 2008
Tweet

More Decks by Takahiro Shinagawa

Other Decks in Technology

Transcript

  1.  情報漏洩事件の増加  PC・USBメモリ等の紛失・盗難  インターネット経由 ▪ ウィルスやファイル交換ソフトなど  仮想マシンモニタ(VMM)による安全性向上

     暗号化・認証をVMMで強制する ▪ ストレージ及びネットワークの暗号化 ▪ ICカードによる認証・鍵管理 2008/11/21 2
  2.  ストレージ管理  HDD・USBメモリの暗号化  ネットワーク管理  IPsecでVPN接続  ID管理

     ICカードで認証・鍵管理  VMMコア  CPU・デバイスの仮想化  アクセス制御 2008/11/18 3 VMM ハードウェア ゲストOS ネットワーク管理 ストレージ管理 ID 管理 認証 鍵管理 VPN 暗号化 VMMコア CPU・デバイス仮想化,アクセス制御
  3.  暗号化を確実に実施できる  強力・強制的な実施 ▪ ユーザが勝手にセキュリティを無効にできない ▪ たとえOSが脆弱でも大丈夫  透過的な実施

    ▪ OSの機能や設定には依存しない  統一した暗号化システムを実現できる  HDD, USBメモリを一括管理 ▪ ICカードの活用 2008/11/18 4
  4.  Type II 型(ホスト型)  TCB=ホストOS+VMM ▪ Linux 5,600万行+QEMU31万行 

    Type I 型(ハイパーバイザ型)  VMMがデバイスを管理 ▪ VMWare ESX Server’s hypervisor=20万行  ドライバVM型 ▪ Xen hypervisor=10万行 2008/11/18 6 hardware Host OS VMM VM VM hardware VMM VM VM Device Driver Device Model Device Driver Device Model hardware VMM Driver VM VM Device Driver Device Model
  5.  可能な限りパススルー  デバイスを仮想化しない ▪ ゲストOSがデバイスを直接制御  必要最小限の監視・変換  制御I/Oの監視

    ▪ 状態把握とアクセス制御  データI/Oの変換 ▪ データの暗号化 2008/11/18 7 ハードウェア ゲストOS デバイス デバイスドライバ 準パススルーVMM アクセス制御 暗号化 制御I/O データI/O その他I/O パススルー
  6.  ゲストOSは複数同時に稼働しない  1つのゲストOSがデバイスを直接制御している ▪ 複数ゲストOS間での共有・保護は難しい  必ずしも複数ゲストOS稼働は必要ではない ▪ デスクトップ環境のセキュリティ(暗号化)が目的

     対応するマシン環境が限定される  制御I/O及びデータI/Oはデバイス依存 ▪ 通常のデバイスドライバよりはサイズが小さい  ドライバが必要なのは一部のデバイスのみ ▪ グラフィックスやサウンドは(完全)パススルー 2008/11/18 8
  7.  コードサイズを小さくできる  完全なデバイスドライバを持たなくてよい ▪ ゲストOSのデバイスドライバを活用している  複数ゲストOS間の共有機能を削減できる ▪ スケジューリング,資源管理機能などが不要

     開発コストを削減できる  デバイスドライバの数を削減できる  オーバーヘッドを低減できる  デバイスへのアクセスが準パススルー  VM間のスケジューリングなどが不要 2008/11/18 9
  8.  制御I/O  デバイスへのデータ転送を制御するI/O ▪ (例)LBAの指定,R/Wの指定,転送の開始・終了,…  アクセス制御をおこないつつパススルー ▪ 制御自体はゲストOSのデバイスドライバが行う

     データI/O  実際のデータの転送をおこなうI/O ▪ ディスクデータの読み書き,ネットワークパケットの送受信  VMMで捕捉して変換する(encrypt/decrypt) ▪ メモリ上でのデータの書き換え 2008/11/18 10
  9. 2008/11/18 12 ATAホストコントローラ (IDE) USBホストコントローラ (UHCI, EHCI) NIC (Intel Pro100など)

    ストレージ 暗号化 (AES-XTS) ID管理 IPsec ハードウェア VMM ゲストOS ATAドライバ USBドライバ NICドライバ IKE VMMコア NIC準パススルー ドライバ ATA準パススルー ドライバ USB準パススルー ドライバ UDP/IP 各種ドライバ (画面,サウンドなど) 各種デバイス (画面,サウンドなど) IOMMU ドライバ
  10.  I/O命令  I/Oアドレス空間(16bit)へのアクセス  専用の命令(IN, OUT)によるI/O ▪ Ex. “in

    dx, al”, “out dx, al”, ...  MMIO(メモリマップドI/O)  物理メモリ空間(32bit or 64bit)へのアクセス  メモリアクセス命令によるI/O ▪ Ex. “mov al, [edx]”, “mov [edx], al”  DMA  専用ハードウェアによるデータ転送 2008/11/18 13
  11. 2008/11/18 14 Offset Size Name(read) Name(write) 0 16bit Data Data

    1 8bit Error Features 2 8bit Sector Count Sector Count 3 8bit LBA Low LBA Low 4 8bit LBA Mid LBA Mid 5 8bit LBA High LBA High 6 8bit Device Device 7 8bit Status Command I/O Addr 0x1F0 LBA 0 01001101 00110101 Command Block Registers 0x20: READ SECTOR 0x30: WRITE SECTOR 0xC8: READ DMA 0xCA: WRITE DMA
  12. 2008/11/18 15 Read Write rep insw rep outsw ハードウェア VMM

    ゲストOS シャドウ バッファ (512byte) シャドウ バッファ (512byte) rep insw rep outsw ←復号 暗号化→
  13.  テーブル構造のDMAディスクリプタ  PRD(Physical Region Descriptor)のテーブルをメモリ上に保持  テーブルへのアドレスをレジスタに指定  Command

    Register の Start Bit に 1 を書き込むとDMA転送開始 2008/11/18 16 Memory Region Physical Base Address[31:1] 0 EOT reserved Byte Count[15:1] 0 … 0 … … … 0 1 Bus Master IDE Controller Physical Region Descriptor Table オフセット 機能 00h Command Register 02h Status Register 04h-07h PRD Table Address
  14.  DMAディスクリプタのシャドウを作る  データだけVMMで横取りする ▪ 制御はゲストOSにさせる 2008/11/18 17 ホストコントローラ バッファアドレス

    バイト数 ステータス 0xF0004000 16384 OK ベースアドレスレジスタ インデックス シャドウDMAディスクリプタ + バッファアドレス バイト数 ステータス 0x08086000 4096 OK 0x04004000 8192 OK 0x00386000 4096 Ready DMAディスクリプタ VMMの領域
  15. 2008/11/18 18 ベースアドレス バイト数 0x08086000 4096 0x04004000 8192 0x00386000 4096

    DMAディスクリプタ 物理メモリ ベースアドレス バイト数 0xF0004000 16384 シャドウDMAディスクリプタ VMM ゲストOS VMMによる暗号化/復号化+コピー
  16.  内容  コードサイズ ▪ コードサイズが削減できていることの確認  オーバーヘッド ▪ VMMによるオーバーヘッドの測定

     環境 ▪ ハードウェア:Intel Core 2 Duo E6850(3.0GHz),メモリ2GB, ディスク74GB(10,000rpm) ▪ ゲストOS:Fedora 8 (Linux 2.6.25.9-40.fc8) ▪ VMM: BitVisor 0.3 (64bit版) 2008/11/18 19
  17.  コア  総数:21,582行 ▪ 実行時:13,789行 ▪ 命令エミュレーション:2,239行,シャドウページ管理:1,130行 ▪ 初期化:2,062行

    ▪ デバッグ:5,781行  ATAドライバ  総数:1,287行 ▪ ※最新バージョンでは実行時789行 2008/11/18 20
  18. 0 5000 10000 15000 20000 25000 VMMコア 13789 2062 5781

    デバッグ 初期化 実行時 0 200 400 600 800 1000 1200 1400 ATA ドライバ ATA ドライバ (最新) 1279 789 デバッグ 初期化 実行時 2008/11/18 21
  19. 0 5 10 15 20 25 30 35 40 null

    fork exec prot page ctx オーバーヘッド(%) BitVisor 2008/11/18 22
  20. 0 20 40 60 80 100 120 140 4KB 64KB

    512KB 10MB 転送速度(MB/s) ブロックサイズ Linux BitVisorコア +ドライバ +暗号化 2008/11/18 23
  21. 0 2 4 6 8 10 12 14 VMMなし BitVisorコア

    +ATAドライバ +暗号化 起動時間(秒) WindowsXP 2008/11/18 24