Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
セキュリティエンジニアのための統計リテラシー入門.pdf
Search
ふたばと
April 21, 2021
Programming
0
110
セキュリティエンジニアのための統計リテラシー入門.pdf
ふたばと
April 21, 2021
Tweet
Share
More Decks by ふたばと
See All by ふたばと
敵対的ポイフル
futabato
0
85
【RFC 6797】HTTP Strict Transport Security
futabato
0
91
MBSD Cybersecurity Challenges 2022 最終審査会 IPFactory 発表スライド
futabato
0
2.4k
MBSD Cybersecurity Challenges 2021 最終審査会 After_the_CM 発表スライド
futabato
0
2.7k
MLflowとHydraを利用した実験管理
futabato
0
2k
futabato
futabato
0
200
Other Decks in Programming
See All in Programming
ADRを一年運用してみた/adr_after_a_year
hanhan1978
7
2.3k
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
630
スクラムガイドのスプリントレトロスペクティブを改めて読みかえしてみた / Re-reading the Sprint Retrospective Section in the Scrum Guide
mackey0225
3
400
コードレビューで学ぶ!Kotlinオブジェクト指向デザインパターン
akkie76
2
190
SwiftUI Performance 不要なViewの再描画と更新を抑える
bigamitiongit
1
160
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
260
"config" ってなんだ? / What is "config"?
okashoi
0
240
AWS Application Composerで始める、 サーバーレスなデータ基盤構築 / 20240406-jawsug-hokuriku-shinkansen
kasacchiful
1
260
[技育CAMPアカデミア]アイディアを形に!【超入門】スマホアプリ開発〜リリースまでの流れをご紹介
teamlab
PRO
0
360
Anthropic Cookbook のおすすめレシピ
schroneko
7
770
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
520
Build with AI 2024 Seoul - 제로부터 시작하는 Flutter with Gemini 생활 - 박제창
itsmedreamwalker
0
200
Featured
See All Featured
Adopting Sorbet at Scale
ufuk
67
8.6k
No one is an island. Learnings from fostering a developers community.
thoeni
15
2.1k
A better future with KSS
kneath
231
16k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Being A Developer After 40
akosma
56
580k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
6
990
Fireside Chat
paigeccino
20
2.6k
BBQ
matthewcrist
80
8.8k
KATA
mclloyd
14
12k
The Language of Interfaces
destraynor
151
23k
Design by the Numbers
sachag
274
18k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Transcript
セキュリティエンジニアのための 統計リテラシー入門 2021-04-21 ISCLT futabato
自己紹介 ふたばと 情報セキュリティ学科3年 / IPFactory Twitter: @01futabato10 GitHub: futabato 最近:
画像認識技術を使った社会実装について。 メタ認知についてよく考えている。
WAffleを開発していたときの話 正規表現によるパターンマッチングと機械学習で防御するWeb Application Firewallを独自実装した。 正常な通信か異常な通信かと2値分類するタスクを解くことでWAFに機械学習が組み込める。 開発途中、testデータを用いて機械学習モデルの性能を確認したときの話。 GitHub:
https://github.com/futabato/WAffle Blog: https://01futabato10.hateblo.jp/entry/2021/03/15/203958, https://y0d3n.hatenablog.com/entry/2021/03/15/203845
Confusion Matrix 分類結果をまとめて性能を評価するための表 Predicted (True) Predicted (False) Actual (True) True
Positive (TP) False Negative (FN) Actual (False) False Positive (FP) True Negative (TN) 本来通常の通信を 異常な通信と判断 本来異常な通信を 正常な通信と判断 TP + TN 正解率Accuracy = -------------------------------- TP + TN + FP + FN
当時のWAffleの性能 12,213件のデータに対して41%の正解率! 正直低い正解率だが、ここからわかることは…? → モデルが悪いのは確か。 → しかし、何がどう悪い? → どういう方向で改善していけばよい?
PrecisionとRecall Predicted (True) Predicted (False) Actual (True) True Positive (TP)
False Negative (FN) Actual (False) False Positive (FP) True Negative (TN) 本来通常の通信を 異常な通信と判断 本来異常な通信を 正常な通信と判断 TP TN 適合率Precision = ---------------- 再現率Recall = ---------------- TP + FP FN + TN
当時のWAffleの性能 12,213件のデータに対してAccuracyだけでなくPrecision, Recallも算出してみる。 ここからわかることは…? → 異常な通信をすべて異常と判断できていることは素晴らしい。 → しかし、脳死ですべて異常と判断している可能性がある (実際そうだった)。 →
このデータセットに対して41%で正解とはいえ、 偽陽性が多すぎてWAFとしては使い物にならない のでは? Accuracy 0.41 Precision 0.41 Recall 1.00
もしデータに偏りがある場合 すべて正常と判断するとどうなる? → 99%の精度のWAFとなる。 → ただし、攻撃は1つも防いでいない。 Accuracyを使うだけでは評価として不十分な場合がある。 PrecisionやRecallを用いた評価もセキュリティではおそらく重要。 TP +
TN 正解率Accuracy = -------------------------------- TP + TN + FP + FN True Negativeの割合が高すぎて、 間違えている場合の評価が適切に反映されない!
PrecisionとRecallはどちらを優先させるべき? Recallを高めようとする → FNを小さくする必要がある → Positiveと予測する閾値を下げることになる → 過剰適合してしまう可能性が発生 => Precisionは低下する
Precisionを高めようとする → FPを小さくする必要がある → Positiveと予測する閾値を上げることになる → 見逃しが発生してしまうことがある => Recallは低下する Precision と Recallはトレードオフの関係にある。 → どちらを優先させるべきなのかは解きべきタスクや製品によって異なってくる。
WAFの場合は?(独自の意見です) そもそも、WAFを導入することは アプリケーションの実装面の根本的な対策になるわけではなく、 攻撃による影響を低減する対策になる。 (今の情勢でいう「マスクしてるから安心だね! ← それは違うやろ」って感じ) Webアプリケーション内部に脆弱性を組み込まないようにする等、 できることはたくさんあるはず。 WAFで過検知しすぎることは可用性に直結するため、
False Positiveを減らすことが重要。
まとめ 評価指標を選定する際には少し注意が必要。 ・そもそもAccuracyで良いのか? →こういった肌感覚を持つことが大事。 → データを専門的に扱う者ではなくても、 最低限のリテラシーを持っておくことは重要。 ・場合によっては”都合の良い”精度が出てしまう。 → 社内政治では使えるかもしれないが、
製品として売り出す際には使いにくい。 → 結局それは良いことではない。誰も幸せにならない。