キャッシュメモリ中の衰退ラインを利用 したメモリ整合性検証の高速化 ○坂口 高宏† 井上 弘士‡ § 村上 和彰§ † 九州大学大学院 システム情報科学府 ‡ 科学技術振興機構さきがけ §九州大学大学院 システム情報科学研究院 発表手順 • 高セキュリティ化に向けての問題 – 改ざん検出手法(メモリ整合性検証)の問題点 • 既存のメモリ整合性検証 – naïve法とその問題点 – chash法とその問題点 • 衰退ラインを利用した提案手法:dhash法 • プロセッサ性能の評価 • おわりに 高セキュリティ化に向けての問題 • 現在コンピュータ・システムには多くの脅威 が存在 – 盗聴、不正侵入、データの改ざんなどの攻撃 • 利用者に様々な不利益を被る • ソフトウェアでの解決策 – 攻撃の多様化により対処の困難さ →ハードウェアでの高セキュリティ化の研究、開発 が活発化 改ざん検出手法の問題点 • メモリ整合性検証 – ハードウェアでのメモリデータの改ざん検出法 – naïve法 • 基本的な手法 • プロセッサの性能が低下 – 約70%の性能オーバヘッド – chash法 • naïve法の問題を緩和した手法 • プロセッサの性能が低下 – 約25%の性能オーバヘッド 性能低下を抑制する手法の提案と評価 発表手順 • 高セキュリティ化に向けての問題 – 改ざん検出手法(メモリ整合性検証)の問題点 • 既存のメモリ整合性検証 – naïve法とその問題点 – chash法とその問題点 • 衰退ラインを利用した提案手法:dhash法 • プロセッサ性能の評価 • おわりに メモリ整合性検証を行うための前提 仮定 ・マイクロプロセッサ・チップ内部は安全 ・データの改ざんはチップ外部に対して発生し、 主記憶のデータを改ざん 安全な範囲 CPU 攻撃対象となる範囲 L1 L2キャッシュ 主記憶 メモリ整合性 検証機構 マイクロプロセッサ・チップ メモリ整合性検証 • M(t1)=M(t2):メモリ整合性が保たれている – 改ざんされていない • M(t1)≠M(t2) – 改ざんされている 主記憶からのデータロード時にメモリ整合性の検証を行う Processor Processor Processor 読込み 書込み memory M(t0) memory M(t1) データ改ざん memory の発生 M(t2) t t0 t1 書込みが発生しない t2 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 :ハッシュ値 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 250MB ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない チップ内部に保持 :ハッシュ値 ←root ハッシュ木の利用 主記憶へ保存 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 ←root ハッシュ木の利用 ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 ←root ハッシュ木の利用 ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 ←root ハッシュ木の利用 ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 ←root ハッシュ木の利用 ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない :ハッシュ値 ←root ハッシュ木の利用 ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない チップ内部に 保持してあるrootの値 ハッシュ木の利用 比較 :ハッシュ値 ←root ・ データ読込み時 - rootまで再計算 ・・・・ 主記憶(1GB) ・・・・ 既存のメモリ整合性検証 仮定:プロセッサ・チップ内部は改ざんの発生なし ・主記憶をチップ内部に保存 ・主記憶のハッシュ値をチップ内に保存 →現実的でない チップ内部に 保持してあるrootの値 ハッシュ木の利用 更新 :ハッシュ値 ←root ・ データ読込み時 - rootまで再計算 ・ データ書込み時 - rootの値を更新 ・・・・ 主記憶(1GB) ・・・・ 従来のメモリ整合性手法 naïve法 CPUデータ CPU L2 検証機構 プロセッサ 主記憶 ハッシュ値 ハッシュデータ へのアクセス 主記憶 →低速 問題点 ・主記憶へのアクセ ス競合(メモリバンド 幅の浪費) 従来のメモリ整合性手法 naïve法 chash法 CPUデータ CPU L2 検証機構 プロセッサ CPUデータ ハッシュデータ CPU L2 検証機構 プロセッサ 主記憶 ハッシュ値 ハッシュデータ へのアクセス 主記憶 →低速 問題点 ・主記憶へのアクセ ス競合(メモリバンド 幅の浪費) 主記憶 ハッシュ値 従来のメモリ整合性手法 naïve法 CPUデータ CPU L2 検証機構 プロセッサ 主記憶 ハッシュデータ へのアクセス 問題点 ハッシュ値 主記憶 →低速 CPUデータ ハッシュデータ chash法 CPU L2 検証機構 プロセッサ ハッシュデータが参照されうる CPUデータを追い出す ハッシュ値 主記憶 L2キャッシュ →高速 ・主記憶へのアクセ ・メモリバンド幅の浪費 ス競合(メモリバンド ・L2キャッシュの競合 幅の浪費) 発表手順 • 高セキュリティ化に向けての問題 – 改ざん検出手法(メモリ整合性検証)の問題点 • 既存のメモリ整合性検証 – naïve法とその問題点 – chash法とその問題点 • 衰退ラインを利用した提案手法:dhash法 • プロセッサ性能の評価 • おわりに dhash法の提案 • キャッシュ競合を抑制するハッシュデータの 配置 – chash: CPUデータと同様に配置(LRU方式) – dhash: CPUデータへの影響が低いラインに配置 = 衰退ライン • 再参照される可能性が低い使用済みのライン • 衰退インターバル < 非参照時間 プログラム実行に必要なデータの追い出しが減少 衰退ライン容量 vs. ハッシュデータ容量 総キャッシュラインに対してCPU/ 衰退ラインが占める割合 (%) ハッシュデータが占める割合(%) 16K 32K 64K chash 100 80 60 40 20 0 mesa L2キャッシュサイズ:256KB gcc vortex ベンチマーク・プログラム bzip ハッシュデータが配置されたラインの占める割合 (%) 8K ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ハッシュデータ ハッシュデータ キャッシング キャッシング index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ハッシュデータ ④ キャッシング 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k ・ ・ ・ 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ハッシュデータ ④ キャッシング 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ② ③ ④ ① ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ④ ④ 追い出し 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ② ③ ④ ① ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ・ ・ ・ ・ ・ ・ ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 同じデータ ④ ④ 追い出し 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ② ③ ④ ① ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 CPUデータ CPUデータ キャッシング キャッシング index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ② ③ ④ ① ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 CPUデータ ④ キャッシング 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ② ③ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ・ ・ ・ k ・ ・ ・ 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 CPUデータ ④ キャッシング 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ③ ④ ① ② ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ④ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ④ ④ 追い出し 追い出し index index 0 k 0 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ③ ④ ① ② ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ k 1022 1022 1023 1023 CPUデータ ・ ・ ・ ・ ・ ・ ・ ・ ・ ① ② ③ ・ ・ ・ ・ ・ ・ ・ ・ ・ ハッシュデータ 衰退ライン ・ ・ ・ ・ ・ ・ ハッシュデータの配置アルゴリズム chash法:LRU方式 dhash法 ④ ④ 追い出し 追い出し index index 0 k 参照されるデータであれば ・ ・ ・ ・ ・ ・ ・ ・ キャッシュミス ・ ・ ・ ・ ③ ④ ・ ・ ・ ・ ・ ・ ① ② 0 プログラム実行に影響はない ・ ・ ・ ・ k ・ ・ ・ ・ ・ ・ ・ ・ ② ③ ④ ① ・ ・ ・ ・ ・ ・ プログラム実行性能に差が出る ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ 1022 1022 1023 1023 CPUデータ ハッシュデータ ・ 衰退ライン 発表手順 • 高セキュリティ化に向けての問題 – 改ざん検出手法(メモリ整合性検証)の問題点 • 既存のメモリ整合性検証 – naïve法とその問題点 – chash法とその問題点 • 衰退ラインを利用した提案手法:dhash法 • プロセッサ性能の評価 • おわりに 評価実験 • 評価項目 – プログラム実行時間 • キャッシュ競合が与える性能への影響 – 総主記憶アクセス回数 • キャッシュ競合が与えるメモリバンド幅の浪費への影響 • 評価対象モデル – base:メモリ整合性検証を行わないプロセッサ – chash – dhash8K/16K/32K/64Kクロックサイクル • 評価環境 – シミュレータ:SimpleScalar 3.0d • アウト・オブ・オーダー実行 • L2キャッシュの構成 – キャッシュサイズ:256KB – 連想度:4 – 8種類のSPEC CPU2000ベンチマークプログラム CPUデータのキャッシュミス率 base 8K 16K 32K 64K dhash 70 キャッシュミス率(%) chash 60 50 40 30 20 10 0 mesa gcc vortex ベンチマーク・プログラム bzip 性能オーバヘッド chash 16K 32K 64K dhash 35 性能オーバヘッド(%) 8K 2.24ポイント 30 25 20 3.06ポイント 15 10 0.44ポイント 0.26ポイント 5 0 mesa gcc vortex bzip ベンチマーク・プログラム chash法の性能オーバヘッドを平均で22.8%削減(64K) 衰退インターバル64Kにおける 正規化主記憶アクセス回数 正規化主記憶アクセス回数 CPU 1.2 6.3% hash 5.9% 2.5% 1.5% 1 0.8 0.6 平均で1.2%増加 0.4 0.2 0 chash dhash chash dhash chash dhash chash dhash mesa gcc vortex ベンチマーク・プログラム bzip 衰退インターバル16Kにおける 正規化主記憶アクセス回数 正規化主記憶アクセス回数 CPU 1.2 1 hash 9.1% 4.4% 0.8 0.6 平均で2.28%減少 0.4 0.2 0 chash dhash chash dhash chash dhash chash dhash mesa gcc vortex ベンチマーク・プログラム bzip 衰退インターバルがプロセッサ性能に与える影響 CPUデータの主記憶アクセス回数 ハッシュデータの主記憶アクセス回数 衰退インターバル64K 総主記憶 アクセス回数 増加 < キャッシュミス率の増加 減少 キャッシュ内に存在するハッシュデータ の割合が高い 衰退インターバル16K chash法との比較 キャッシュ競合 減少 メモリバンド幅 の浪費 衰退インターバル プログラム実行時間 総主記憶アクセス回数 64K 16K 1.2%増加 2.28%減少 23.8%削減 7.4%削減 衰退インターバルがハッシュデータの 主記憶アクセス回数に与える影響 キャッシュ中での CPUデータの存在割 合が高い 衰退インターバル プログラム実行時間 ハッシュデータへの主記 憶アクセス回数 64K cc プログラム実行時間 16K cc キャッシュ中でのハッ シュデータの存在割 合が高い 23.8%削減 11%増加 ハッシュデータの 7.4%削減 主記憶アクセス回数 0.05%増加 発表手順 • 高セキュリティ化に向けての問題 – 改ざん検出手法(メモリ整合性検証)の問題点 • 既存のメモリ整合性検証 – naïve法とその問題点 – chash法とその問題点 • 衰退ラインを利用した提案手法:dhash法 • プロセッサ性能の評価 • おわりに おわりに • まとめ – メモリ整合性検証に伴う性能オーバヘッドの削減手法の提案 • 衰退ラインを利用したキャッシュ制御方式 – 提案手法に対する評価 • 既存の手法と比較して、最大71.4%の性能オーバヘッドを削減 • 性能オーバヘッド平均7.4%削減時に、総主記憶アクセス回数を2.28% 減少 • 今後の課題 – 衰退ラインの十分な存在割合に対して、性能向上が小さい原 因解析 – メモリバンド幅と検証機構の影響を考慮した評価実験 ご清聴ありがとうございました 資料 衰退インターバル16Kにおける 正規化主記憶アクセス回数 キャッシュサイズ:128KB 正規化主記憶アクセス回数 CPU 1.2 1 hash 5.2% 5.4% 1.0% 8.1% 0.8 0.6 平均で1.73%減少 0.4 0.2 0 chash dhash chash dhash chash dhash chash dhash mesa gcc vortex ベンチマーク・プログラム bzip 衰退インターバル64Kにおける 正規化主記憶アクセス回数 キャッシュサイズ:128KB 正規化主記憶アクセス回数 CPU 1.4 1.2 1 0.8 0.6 0.4 0.2 0 3.0% hash 31.9% 5.4% 6.3% 平均で6.19%増加 chash dhash chash dhash chash dhash chash dhash mesa gcc vortex ベンチマーク・プログラム bzip
© Copyright 2024 ExpyDoc