(コンピュータシステム・アーキテクチャ特論)安全性
なぜ,マイクロプロセッサでセキュリティー?
如图, 在指令执行的时候存在安全隐患
マイクロプロセッサにおいて
(ブラックリスト)不正プログラムを探し出す
- ブラックリスト方式
- 既知の不正プログラム検出
- ウィルス・スキャン:静的検出&動的検出
(ホワイトリスト)正規プログラムだけを実施する
- ホワイトリスト方式
- 認証済みプログラムのみ実行
- プログラム認証:静的認証&動的認証
実行制御の乗っ取りを防止する
バッファ・オーバフロー攻撃 データ境界を越えた書込み:strcpyなどで スタックの破壊(スタック・スマッシング):攻撃コードの挿入と戻りアドレスの改ざん プログラム実行制御の乗っ取り:改ざんされた戻りアドレスがPCに設定
Secure Casheによるバッファオーバフローの動的検出 ハードウェアによる戻りアドレス改ざんの検出: 戻りアドレス書込み時に複製(レプリカ・ライン)を作成 戻りアドレス読出し時に複製と比較 LIFO以外のアクセスにも対応
データの改竄を検出する
Spoofing Attack ある偽のデータを生成し,それが本物であるかのように見せかける
Splicing Attack データ・フラグメントのコピーや並び替えを行い他メモリ領域に格納する
Replay Attack 過去に生成された有効なデータを再度入力させる
Message認証コード(MAC) 命令ブロック毎に(CBC-MACやHMACなど)MACを計算し追加する. 命令キャッシュへのフェル時にMACを確認する. 具体的に,「書き込み時刻,書き込みアドレス,書き込みデータ,秘密鍵」でMACを生成する.つまり「いつ,誰が,どこの」書き込んだデータかを記録する.
ハッシュ木によりメモリイメージのダイジェストを保存する ハッシュ値のキャッシングにより性能オーバヘッドを削減する データ読み出し時:rootまでのハッシュ値を比較する.(メモリ整合性検証の実行) データ書き込み時:rootまでのハッシュ値を更新する.(ハッシュ木を更新する)
转载请注明来源 https://tianweiye.github.io