■ソフトウエアセキュリティとは?
セキュアな
→脆弱性がない(セキュリティ機能が入っていればよいわけではない)
じゃ、脆弱性をなくすには?
セキュアプログラミング
セキュリティテスト →従来の開発と同じ?
PDCA
ソフトウエア開発と同じ仕組みでセキュリティを上げられるか?
→従来手法でよければ、こんなにセキュリティで問題になるわけがない
→セキュリティは、非機能要求だから:機能要求より難しい部分がある
例:テスト
機能要求なら、同値分割、境界値分析ができる
→SQLインジェクションは??
■セキュリティの問題を、工程ごとにまとめると・・・
・要求仕様
機能にない、ステークホルダーから聞き出せない、悪意を持った攻撃者の要求?を
聞き出す/洗い出すのは、困難
・設計
セキュリティ要求を満たす設計手法は?
・プログラミング
脆弱性を生じないプログラミング技法は?
・テスト
安全でないことが確認できるか?
→新たに生み出された脆弱性に対して、テストできる?
■セキュリティ要求分析の種類
CC(ISO/IEC15408)
SQUARE
SDL
脅威モデリング
UMLの拡張
UMLSeq
UMLのセキュアシステムの開発のための拡張
セキュリティのステレオタイプを用いる
SecureUML
RBACに基づくUMLモデル定義
SDL(Secure Development Lifecycle)
マイクロソフトのセキュアな開発手法
セキュリティPush
:1ヶ月ぐらいひたすらセキュリティチェック
脅威モデリング
:DFDをもちいた脅威抽出
Strideによる脅威分類
S なりすまし
T 改ざん
R 否認(商品を買ったのに買わないという等)
I 情報の漏洩
D DoS攻撃
E 権限昇格
脅威ツリー、DREADによる脅威評価
D 潜在的な損害
R 再現可能性
E 攻撃利用可能性
A 影響ユーザー
D 発見可能性
など→対策はない