書籍『セキュリティエンジニアのための機械学習』の紹介

この記事は[EAGLYS Advent Calendar 2021](https://qiita.com/advent-calendar/2021/eaglys_adcal)の22日目の記事です．

書評するコーナーをやってみます．

今回は第３回です．

# 何をするのか

格子暗号に秘密計算・機械学習って最近の話題を色々紹介しているけど，なんか良い本ないの？という要望に応える企画です．
ちなみに暗号全般や暗号で使われる数学関連の書籍は，[「プログラマブルブートストラップの原著論文を理解する回」を理解する回](https://qiita.com/0917laplace/items/679fa72d44bf02b4e17c#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE)という記事で紹介しているので，そちらをご参照ください．

全３回に渡って，主に３冊を取り上げて紹介します．今回は第３回目で最終回です．

１冊目：[縫田 光司，『耐量子計算機暗号』，森北出版，2020](https://www.morikita.co.jp/books/mid/087211)
２冊目：[佐久間 淳，『データ解析におけるプライバシー保護』，講談社，2016](https://www.kspub.co.jp/book/detail/1529199.html)
３冊目：[Chiheb Chebbi　著，新井 悠，一瀬 小夜，黒米 祐馬　訳，『セキュリティエンジニアのための機械学習ーAI技術によるサイバーセキュリティ対策入門』，O'Reilly Japan，2021](https://www.oreilly.co.jp/books/9784873119076/)

選んだ理由としては，

１冊目：格子暗号含む秘密計算の理論的な話
２冊目：秘密計算のもう少しざっくりした話やプライバシー・機械学習の話
３冊目：セキュリティと機械学習の話

っていう秘密計算→機械学習の流れが綺麗かなぁって思ったからです．

内容的に全てを紹介するのはできないので，読んでて思ったところを特に紹介していきます．
途中途中で他にも色々と本を紹介するつもりです．今回はありません（え）．

# 今回紹介する本

つい最近出た本（先月，2021年11月）でシンプルに面白そうだなと思いました．

というわけで，今回は↓の本を紹介します．

[Chiheb Chebbi　著，新井 悠，一瀬 小夜，黒米 祐馬　訳，『セキュリティエンジニアのための機械学習ーAI技術によるサイバーセキュリティ対策入門』，O'Reilly Japan，2021](https://www.oreilly.co.jp/books/9784873119076/)




# どのような本なのか

> 情報セキュリティのエンジニアや研究者を読者対象とした機械学習の入門書。フィッシングサイト、マルウェア検出、侵入検知システムなどの情報セキュリティ全般の課題に対して、機械学習を適用することでどのようなことが可能になるのか？ 本書ではサイバーセキュリティ対策でとても重要なこれらの知識を実装レベルで身につけることができます。また、どうすれば機械学習による検出を回避できるか、という点についても同時に解説します。サンプルコードはPython 3対応。Google Colaboratory上で実際に手を動かしながら学ぶことができます。

です．サンプルコードあるのがオライリーっぽいですね．

単純な構造として，前回紹介したようなプライバシー保護は，「AIにセキュリティを組み込む」視点で，セキュリティメインと言えます．
今回紹介するのは「セキュリティにAIを組み込む」視点で，機械学習の手法がメインです．

機械学習よわよわ（セキュリティにつよいとは言ってない）の僕が読んで，どれだけ理解できるかっていうのも試されています（え？）．


# 構成

> 1章　情報セキュリティエンジニアのための機械学習入門
2章　フィッシングサイトと迷惑メールの検出
3章　ファイルのメタデータを特徴量にしたマルウェア検出
4章　ディープラーニングによるマルウェア検出
5章　データセットの作成
6章　異常検知
7章　SQLインジェクションの検出
8章　機械学習システムへの攻撃
9章　深層強化学習によるマルウェア検知器の回避
10章　機械学習のヒント

もう少し詳しいことは， [販売サイトの詳細目次](https://www.oreilly.co.jp/books/9784873119076/) で紹介されています．上記はそれらを切り取ったものです．

上記に目次が記載されているのですが，そこから本の内容が深く推測できない程度に紹介します．

ただ，今回は手法の応用がメインなので，実はそこまで書くこともなかったりします．前回・前々回と比べると，めちゃめちゃあっさりめですが，たぶんこういうのって具体的な手法に意味があるのかなって思ったりするので・・・．

と言っても，全ては紹介しきれないので，特に興味を持った「7章」と「8章」を紹介します．

10章は個人的に気になっていたことが書かれていたのですが，完全なネタバレになるので，そこは購入してください．


# 7章
みんな大好き？SQLインジェクションへの対策を機械学習でやろうっていう話です．
前半がSQLインジェクションのちょっとした知識を使ったアプローチでした．特徴量を追加したい，でも特徴量を追加するには，（ドメイン知識？）が必要だよね，精度を上げるにはそういう知識が必要だねっていう感じでした．
後半はN-gramを使った専門知識が不要なアプローチもあるよっていう話でした（本当に読んだのかこいつ）．

# 8章
機械学習のシステムを使って，セキュリティを云々やろうとすると，今度はそのシステムのセキュリティが問題になるよねっていう話です．
その攻撃手法は主に3つに分かれて，転移攻撃・回避攻撃・汚染攻撃と言ったりします．それぞれの攻撃手法に対して，さらにどのような対策が取れるのかを解説しています．

途中で出てくる，Adversarial Example というのを初めて聞いたのですが，中々に興味深い話だなと思いました．

# 良かった点と悪かった点
良かった点

- コードあるのはさすがです（これで分かった気になるかもですが・・・）
- やっていることの理解はしやすい

悪かった点（めちゃくちゃ個人的）

- 理論的になんで上手くいくのかよく分からない（機械学習よわよわマンだからかもですが・・・）
- 参考文献はあるものの、何をどの場面で参照したかが分からないので、結局どの文献を漁れば良いのか分からない



# 最後に
今回は
[Chiheb Chebbi　著，新井 悠，一瀬 小夜，黒米 祐馬　訳，『セキュリティエンジニアのための機械学習ーAI技術によるサイバーセキュリティ対策入門』，O'Reilly Japan，2021](https://www.oreilly.co.jp/books/9784873119076/)
を紹介しました．
セキュリティエンジニアってめちゃめちゃ広範な知識を要求される印象がある（まあ大体そう）のですが，これに加えて機械学習持ってなったらパンクしそう()．

良くも悪くも読み物的な本，入門書という位置付けでしょうか．ただ確かに今後のセキュリティに機械学習の手法が組み込まれていく未来が想像できる（し，実際今でも導入されている）ような本でした．
おすすめかどうかと聞かれたら，勧められる本です．コードを追わないで，何をやっているのかだけを把握したいなら，それこそすぐ読み終えられるはずです．

機械学習は横文字が多すぎて，名前をパッと見たときに何をやっているのかイメージしづらいので苦手なんですが，腰を据えて勉強しないとなぁって思いました．
気になったチャプターは参考文献の論文追いかけます（たぶん）．

でもこういうのって，攻撃手法（SQLインジェクション）ごとに有効な機械学習のアルゴリズムがあるって感じなんですかね・・・？ベースは同じなのかもですが，それってあまりに大変っていうか統一的な手法があるといいなぁ．