SPE Observer: Cell/B.E.のSPEを 用いたOS監視システム 九州工業大学 永田卓也 光来健一 従来のセキュリティ対策 • コンピュータをネットワークに接続すると、外 部からの攻撃に晒される 攻撃者 – ウィルスに感染 – 侵入によるデータ流出 • 通常、セキュリティ対策ソフトを用い 攻撃に備えている – ウィルススキャンソフト • OSに対する攻撃も増えてきた – カーネルルートキット ネットワーク OSが改ざんされると・・・ • セキュリティ対策ソフトが正常に動かなくなる – セキュリティ対策ソフトもOSの機能を使用 • 監視対象の「ファイルを開く」 • パターンファイルと比較 • 診断結果を「ログに出力する」 – 改ざんされた場合 • パターンファイルが「すり替えられる」 • 診断結果が「ログから消される」 セキュリティ 対策ソフト OS ハードウェア 従来のOSの改ざん検知 • OSの監視を安全に行うのは難しい – OSの上で動く場合 OS監視 システム • 監視システムも 改ざんされたOSの機能を使用 – OSの内部で動く場合 • OSの機能を使わずに監視可能 • 攻撃される恐れがある – VMMの中で動く場合 • 安全に監視が可能 • VMMにバグがあるかもしれない OS 監視 監視 VMM 提案:SPE Observer • Cell/B.E.のSPE上でOS監視システムを動かす – OSが動くPPEから隔離されたSPE上で動作 • 他のアプリケーションと並列動作が可能 – SPE Isolationモードを用いて安全に実行 • セキュリティプロキシにより実行を監視 Cell/B.E. 監視 OS PPE 監視 OS監視 システム SPE SPE ・・・・・・・・ Security Proxy ネットワーク Cell/B.E.のアーキテクチャ • ヘテロジニアス型マルチコアプロセッサ – PlayStation3やCell REGZA等に使用されている – 制御系CPUのPPEと演算系CPUのSPE – SPEはLocal Store(LS)と呼ばれるメモリを持つ – SPEはDMAを用いてメインメモリにアクセス Cell/B.E. SPE PPE Main Memory SPE SPE Local Store EIB SPE SPE SPU SPE MFC OS監視システムの例 • OSカーネルの整合性をチェック – SPEはDMA転送によりカーネルメモリを取得 – ハッシュ値を計算し、事前に取った値と比較 • コード領域、読み取り専用データ領域 – カーネルデータが改ざんされていないかチェック • プロセスリスト、スケジューラのランキュー メイン メモリ LS SPE OS LS 監視 システム SPE Isolationモードによる実行 • プログラムを安全に実行するCPUのモード – 攻撃者はOS監視システムの改ざんや 解析を行えない – 実行中 • 実行中はLSにアクセス不可 • 実行中の改ざん、解析ができない – 実行後 • 中断・終了時はLSの中身を全削除 • 実行後の解析は不可能 SPU LS OS監視 システム MFC Secure Loaderによる安全なロード • Secure Loaderが暗号化された OS監視システムをSPEにロードする – PPEが暗号化されたSecure LoaderをSPEにロード • Secure Loaderはハードウェアから保護されている – ディスク上のOS監視システムの保護ができる PPE OS監視 システム Secure Loader SPE SPU OS監視 LS システム Secure Loader セキュリティプロキシ • OS監視システムの動作状況をチェックする – PPEはSPE上のOS監視システムを停止できる – OS監視システムに定期的にハートビートを送る • 暗号化されたメッセージを送りあう • 正しい応答でなければ、ネットワークを遮断 • 攻撃者は攻撃を継続することができなくなる Cell/B.E. OS PPE 監視 OS監視 システム SPE ハートビート Security Proxy ネットワーク OS監視のスケジューリング • 必要な時だけOS監視システムを起動させる – OS監視中はSPEを占有する • SPE1つ分性能低下する – 定期的に監視を行えばよい場合 監視していない期間はSPEを解放 – SPEを横取りできるようにSPEスケジューラを改造 起動しない 優先的に割 り付けられ るよう指定 SPE OS 監視 App SPE App SPE App SPE OS 監視 App SPE SPE SPE OS監視のスケジューリング • 必要な特だけOS監視システムを起動させる – OS監視中はSPEを占有する 選択が不公平 • SPE1つ分性能低下する – 定期的に監視を行えばよい場合 監視していない期間はSPEを解放 – SPEを横取りできるようにSPEスケジューラを改造 OS 監視 SPE App SPE App SPE App SPE SPE SPE 実装 • PS3にSPE Observerを実装 – IBMのSecure SDKを使用 • Isolationモードのエミュレーションを利用 • OS監視システムがコンテキストスイッチされないように SPE_NOSCHEDフラグをつけて実行 – SPEからカーネルメモリが読み出せるようにした • MFCの状態レジスタを設定 • Segment Lookaside Buffer (SLB) にマッピングを登録 実験 • 実験の目的 – OSの改ざんを検知できるかの評価 – OS監視システムの実行がアプリケーションの 性能に及ぼす影響の評価 • 実験環境 – PlayStation3 • Fedora 9 (Linux 2.6.27) – セキュリティプロキシ • Intel Xeon 2.53GHz メモリ 4GB OS改ざんの検知 • 以下のOSカーネルのハッシュ値を計算し、 事前に計算した値と比較 – 改ざんしていないカーネル – システムコールテーブルを改ざんしたカーネル – システムコールを改ざんしたカーネル • 実験結果 – 監視時間は24.1ミリ秒 – 改ざんを検知することができた • 改ざんしていないカーネル以外はハッシュ値が異なる 監視する影響(CPU) • OS監視の内容がアプリケーション性能に及ぼ す影響を調べた – CPUバウンドとDMAバウンドのOS監視を実行 • CPUバウンドのアプリケーションの場合 6 – OS監視の影響はない 5 App SPE App SPE ・・・・・ App SPE OS 監視 SPE 性能 4 単体 3 DMAバウンド 2 CPUバウンド 1 0 1 2 3 使用SPE数 4 5 監視する影響(DMA) • DMAバウンドのアプリケーションの場合 – DMAバウンドのOS監視と競合して性能が低下 • DMA転送をするSPEが増えるとメモリが混雑 • メモリの帯域を使いきってしまう – CPUバウンドのOS監視の 影響はない Main Memory SPE App ・・・・・ SPE App SPE OS 監視 SPE 2 1.5 性能 App 2.5 単体 DMAバウンド 1 CPUバウンド 0.5 EIB 0 1 2 3 使用SPE数(個) 4 5 SPEを占有する影響 • OS監視が6並列のアプリケーションに及ぼす 影響を調べた 1 0.9 – OS監視はカーネルの改ざん検知 – CPUバウンドの場合:5/6 – DMAバウンドの場合:ほぼ同じ 0.8 0.7 0.6 性能 • SPEが減った分DMAの 混雑が解消したため 0.5 0.4 0.3 監 視 SPE SPE SPE SPE SPE SPE 0.2 0.1 0 CPUバウンド DMAバウンド 同期を取るアプリケーションへの問題 • OS監視が同期をとる6並列アプリケーションに 及ぼす影響を調べた – IBMの行列演算アプリケーションを使用 – SPEを占有すると大幅に性能低下 1 0.9 • SPEのコンテキストスイッチが 100msに1回しか起きないため 0.8 0.7 性能 0.6 0.5 0.4 待 機 SPE 待 機 SPE 待 機 SPE 0.3 監 視 SPE 0.2 0.1 0 監視なし 監視あり スケジューリングによる改善 • OS監視をスケジューリングした時のアプリ ケーション性能の変化を測定 – OS監視の起動間隔を少しあけるだけで大幅に 1 性能が改善 – それ以降はSPEを解放 した分だけ改善 0.8 性能 • 同期の待ち時間が 急激に減る • 200msで5/6の性能 0.9 0.7 0.6 0.5 0.4 OS監視起動間隔(msec) 関連研究 • ハードウェアを用いた安全なコード実行 – Flicker[McCune et al. ‘08] • Intel TXTなどを用いて安全なメモリ領域で OS監視システムを動作 • システム全体を停止させる必要があり、 常時動作はできない – HyperCheck [Wang et al.’10] • SMM上でOSの情報を取得し、外部マシンに送って OSが改ざんされていないか調べる まとめ • 安全なOS監視のためのSPE Observerを提案 – SPE IsolationモードによりOS監視システムの 完全性と機密性を保証 • セキュリティプロキシにより動作状況を確認 – OS監視がSPEを占有すると アプリケーション性能が低下 • OS監視のスケジューリングにより、 同期をとるアプリケーション性能が大幅に改善 今後の課題 • カーネルデータの改ざんをチェックする OS監視システムの作成 • OS監視システムの最適な起動間隔を決定す る手法の開発 • SPEの実行状態を考慮したスケジューラの開 発 同期を取るアプリケーション 停止 停止 停止 停止 停止 6 1 2 3 4 5 OS 6 監視 6 1 同期スケジューリング短間隔 1.2 1 性能 0.8 0.6 0.4 0.2 0 0 10 20 30 40 50 60 70 80 90 100 200 OS監視起動間隔(msec) 300 400 500 600 700 800 900 1000 DMAバウンドのアプリケーション • コアが増えれば読み出すメモリが増えていく – 並列に読み出すから時間変化は少ないはず 12 11 10 実行時間(秒) 9 8 DMA単体 7 DMA*DMA 6 5 4 3 1 2 3 4 使用SPE数 5 6 スケジューリングによる改善 1.05 1 性能 0.95 0.9 CPUバウンド DMAバウンド 0.85 0.8 0.75 0 10 20 30 40 50 60 OS監視起動間隔(msec) 70 80 90 100 ハートビート • PPE上のリレープロセスがハートビートを中継 – SPEと直接通信するにはTCP/IPの実装が必要 – セキュリティプロキシが暗号メッセージを送る • OS監視システムは暗号化された応答メッセージを返す – 攻撃者は正しい応答を返すことができない • 鍵は監視システムとプロキシだけが共有 ネットワーク リレー プロセス Security Proxy TCP/IP 暗号 Cell/B.E. OS監視 システム Mailbox 応答 応答 PPE SPE スケジューリングの流れ • プロキシからの起動メッセージに応じてOS監視 システムをロード – OS監視の実行中、他のコンテキストは そのSPEを使用できなくする – SPEに空きがない場合は 優先度の低いスレッドからSPEを奪う • 終了メッセージを受け取るとプロキシは 指定時間待機する – その間他のアプリケーションに SPEを割り当て可能 Security Proxy Cell搭載 マシン 起動 要求 開始 終了 通知
© Copyright 2024 ExpyDoc