🎓 レベル:標準 | 重要度:A(必須) 📎 前提:情報セキュリティとは(CIAとAAA)
要点(BLUF)
- 脅威モデリングは「攻撃を試す」ことではなく、設計図を見ながら脅威を網羅的に書き出す机上の作業。守る側が先手を打つための土台。
- STRIDE は脅威を6つの型に分類するチェックリストで、CIA/AAA の各性質と1対1に近い対応がある。
- 鍵となる発想は攻撃面(attack surface)を小さく保つこと。入口が少ないほど守る範囲も小さくなる。
概念:守る前に「何が起こりうるか」を書き出す
脅威モデリングは、システムを作る・変える前に「どの資産が、誰から、どんな脅威にさらされるか」を構造的に列挙する作業です。攻撃ツールは使いません。設計図(データの流れ・信頼境界)を眺めて、起こりうる悪いことを先に洗い出します。
問いはシンプルに4つです。
- 何を作っているか(データフロー図)
- 何がうまくいかないか(脅威の列挙)
- どう対処するか(緩和策)
- 十分にやれたか(検証)
この「2. 何がうまくいかないか」を漏れなくやるための道具が STRIDE です。
仕組み:STRIDE で脅威の型を網羅する
STRIDE は Microsoft が体系化した分類で、6つの頭文字が脅威の型を表します。守りたい性質(CIA/AAA)と裏表の関係にあります。
| 記号 | 脅威の型 | 侵される性質 | 守る側の対策の方向 |
|---|---|---|---|
| S Spoofing | なりすまし | 真正性(認証) | 強い認証・MFA・署名 |
| T Tampering | 改ざん | 完全性 | ハッシュ・署名・入力検証 |
| R Repudiation | 否認(やってないと言い張る) | 監査可能性 | 監査ログ・タイムスタンプ |
| I Information Disclosure | 情報漏えい | 機密性 | 暗号化・アクセス制御 |
| D Denial of Service | サービス妨害 | 可用性 | 冗長化・レート制限 |
| E Elevation of Privilege | 権限昇格 | 認可 | 最小権限・権限分離 |
各コンポーネントに対して「ここで S は起こるか? T は?…」と順に当てていけば、思いつきに頼らず網羅的に脅威を出せます。
図解:信頼境界と攻撃面
脅威は信頼境界(trust boundary)を越えるところに集中します。境界とは「ここから先は信用度が変わる」線で、ユーザー入力がアプリに入る点、アプリがDBに触る点などです。
flowchart LR
U["利用者(外部・低信頼)"] -->|"入力(境界を越える)"| W["Webアプリ"]
W -->|"クエリ(境界を越える)"| DB["データベース(内部)"]
W --> EX["外部API(第三者)"]
classDef boundary stroke-dasharray: 5 5
U:::boundary
EX:::boundary
境界を越える矢印の一本一本が攻撃面です。攻撃面を小さく保つ=不要な入口・機能・公開ポートを減らすことが、最も費用対効果の高い防御になります。
防御側の使い方:設計レビューに組み込む
脅威モデリングは特別なイベントではなく、設計レビューに溶かし込むのが実務です。
- データフロー図を描く:コンポーネント・データの流れ・信頼境界を1枚に。
- 境界ごとに STRIDE を当てる:各矢印に6型を機械的にチェック。
- 緩和策を割り当てる:脅威ごとに「どの対策で潰すか」を書く。未対応はリスクとして リスク評価と多層防御 へ。
- 変更のたびに見直す:新しい入口が増えたら攻撃面が広がる。
攻撃の再現は不要です。「この境界でなりすまし(S)が起きたら何が壊れるか」を言葉で詰めるだけで、必要な認証・暗号・検証が見えてきます。
なぜ安全か:漏れを「型」で潰すから
人間は自分が想像できる攻撃しか思いつけません。STRIDE のような型のチェックリストは、想像力の偏りを補正し「考え忘れ」を減らします。さらに攻撃面を小さく保てば、そもそも守るべき入口が減るので、同じ労力でより堅くなります。
仕組みの直観
脅威モデリングは家を建てる前の防犯設計です。完成後に泥棒の手口を一つずつ試すのではなく、図面の段階で「窓はここ、勝手口はここ、塀の死角はここ」と入口(攻撃面)を数え、それぞれに鍵や照明(緩和策)を割り当てます。入口が少ない家ほど、見張る場所も少なくて済みます。
⚠️ よくある誤解・設定ミス
- 「脅威モデリング=攻撃テスト」だと思う:別物。これは机上で脅威を列挙する設計作業。
- 一度きりで終わらせる:機能追加で攻撃面は増える。変更のたびに更新する。
- 資産の価値を決めずに始める:守る対象の重要度(情報セキュリティとは(CIAとAAA) の CIA)が無いと優先順位がつかない。
- 緩和策を書いて満足する:実装・検証まで追わないと、図の上だけの安全になる。
対応 lab
机上手法のため専用 lab はありません。STRIDE の T(改ざん)が実際に検知される様子は、第2章の security-study/labs/symmetric_aead_demo.py(改ざん検知)や digital_signature_demo.py(なりすまし拒否)で具体的に確認できます。
関連
- 出した脅威に優先順位をつける → リスク評価と多層防御
- 緩和策の指針となる普遍原則 → セキュリティ設計原則
- アプリ固有の脅威の地図 → OWASP Top 10 の概観