アルゴリズム弱太郎

Twitter @01futabato10

MBSD Cybersecurity Challenges 2022 優勝記

この記事は IPFactory Advent Calendar 2022 の 18 日目の記事です。

qiita.com


こんにちは、futabatoです。

MBSD Cybersecurity Challenges 2022 にチーム IPFactory として出場し、2022年12月15日に開催された最終審査会にて最優秀賞を獲得しました。


本稿は、MBSD Cybersecurity Challenges 2022 の参加記です。
文章は推敲せずに書いたままを投稿するので少し読みにくいかもしれません。

メンバーは y0d3n, n01e0, morioka12でした。他のメンバーの参加記も併せてご覧ください。

y0d3n.hatenablog.com

feneshi.co

今のお気持ち

率直に心から安心しています。安心しすぎて、「安堵&安堵」というフレーズを思いつきました。
今年 IPFactory はエントリー時のアピール文に「IPFactoryの名に恥じない結果を残します。」と宣言したので、偉大な先輩たちが築き上げた IPFactory で出場する以上絶対に負けられないと自分に課してしました。

setten.sgec.or.jp

加えて、サークルを背負っているプレッシャーがあったのは確かですが、MBSD Cybersecurity Challenges で最優秀賞を獲得することは僕にとって在学中の絶対に成し遂げなければならない密かな一番の目標でした。

自分が入学したときに IPFactory は MBSD Cybersecurity Challenges で 2 連覇していました。誰かにこのコンテストでIPFactory として優勝してほしいと頼まれたわけではありませんが、入学したての当時の自分に強烈な印象を与えるものだったので、自分もそうなりたいなぁと 3 年間ずっと思い続けていました。

scan.netsecurity.ne.jp

おそらく IPFactory のメンバーは同じようなことを考えていて、 それを n01e0 は 「世代交代しても勝てたという事実が嬉しいですね。」と表現しています。

feneshi.co

昨年はあらゆる能力が足りず 3 位で終わってしまい数か月引きずるレベルで落ち込んでしました。

2022 年では y0d3n とともにリベンジが成功し、IPFactory の名に恥じない結果を残すことができて本当によかったです。

IPFactory の先輩たちには一生追いつけないのかもしれませんが、この同じ景色を見ることができたのはとても感慨深いもので、入学したときに憧れた先輩の姿に一歩近づけたのかなと思います。

コンテストの概要

MBSD Cybersecurity Challenges 2022 のテーマは「Web アプリケーションの脆弱性診断」でした。

setten.sgec.or.jp

大まかなスケジュールとしては 1か月間の予選と、1週間結果待ち、1か月最終審査会に向けた準備 という流れでした。

MBSD 側のコンセプトとしては「診断したくないサイト」ということでした。

確かに複雑な権限管理・状態管理が必要なアプリケーションで、脆弱性診断の基礎技術だけでなく、コンテストや診断に対する強い熱意や根気が求められるものだったと思います。正直に話すと、自分には脆弱性診断士は向いていないなと感じるコンテストでした。複雑すぎて脆弱性診断ツール君は何も検出してくれないし、慣れていないと全然手が動かないし、でも脆弱性は見逃すわけにはいかないし、y0d3n の力添えができなかったので彼にすべてを任せてしまう形になっていました。

コンテストの講評では「ここがつらいよ脆弱性診断士」と診断士は診断対象のアプリケーションを選べるわけではないというお話を聞きました。もちろんセキュリティには興味があるけれど、自分にはその脆弱性診断のつらさを乗り越えられる熱量があるのかというとやや怪しいです。基本診断のみを専門にする職ではない少し別の領域で戦っていくのがよさそうだなと感じるコンテストでした。

プロジェクトを管理する立場になって

今回のコンテストでは、放任的なマネジメントを意識していました。

事務的な手続きはもちろん責任を持ってやりましたが、タスクをしっかりと管理してチームをけん引していくようなことはしませんでした。 コンテストの 2 カ月間で全員が集まって MTG をした日は 3 日のみでした。

IPFactory はフルフレックスで裁量労働制を導入しており、気が向いたときにガーっと作業できるメンバーが揃っています。無理に時間を合わせて VC しながら一緒に作業するよりかは、チャットベースで議論をして VC は都合がつく時間帯のみふらっと参加する形にしていました。MTG も議題を用意してから集まってもらったので、そのあたりのストレスをあまりかけないよう意識していました。

コンテストの評価ではプロジェクト管理をうまくアピールできていたチームが工夫点として評価されていました。そういった、チーム体制をしっかり整備して4人の足並みを揃えて一丸となって戦う団子方式はそれはそれでよいのですが、技術力のあるメンバーが揃っている場合はマネジメントは最低限でよく、指示や管理をせずとも勝手に作業して勝手に進捗を生んでくれるので、比較的短期間のコンテストではマネジメント力より技術力が正義なんだなと感じました。

ただこの疎な体制はしっかりとメンバーを見極めたうえでやるべきで、密な連携を取ること自体は全く悪くないと思います。

もう一つ、放任的なマネジメントになった理由はそれぞれのメンバーの忙しさからスケジュール通りに進むことが難しいと踏んでいたからです。常に何かに追われながらこのコンテストに取り組んでいたので、ベストエフォートな感じで取り組んでもらいました。

  • futabato: SecHack365

  • morioka12: セキュリティ・ミニキャンプ講師

  • y0d3n: セキュリティ・ミニキャンプ受講生

  • n01e0: CTF4b, ゴルフ * 10

全員忙しい中、献身的なハードワークをしてくれたので最優秀賞を獲得できたのだと思います。

この放任的なマネジメントは結果的に最優秀賞を獲得したので悪くは無かったものと感じてしまいますが、それだけで片付けてしまうのはいけませんね。あまり介入しなかったことによって診断関係の誰もやらないことはすべて y0d3n に任せることになってしまっていたので、必要以上のプレッシャーを与えて精神的に彼を苦しめてしまったと思っています。これが今回一番の反省で、日々過ぎていく中でも自分はうまくそこから改善することはできませんでした。

y0d3n が宇宙と交信しているのを隣で見ていましたが、僕はうまく声をかけてあげることができませんでした。

y0d3n.hatenablog.com

チーム内に責任を持って精力的に頑張ってくれている人の負担を分散させる簡単な方法はおそらく自分自身が一兵隊として非常に強くなることです。技術的な基礎理解を頭に入れるだけでなく、体に染みつくまで実際に手を動かして粘り強く学び続けて、その人と議論できるレベルにまで知識を吸収していかないと、自分ができないタスクをすべてその人に任せてしまうことになります。それはただただ歯がゆく、自分の無力さを感じるもので、最優秀賞を獲得して自分の力で道を切り開いたのかというと怪しくなってきます。

「放任的なマネジメント」と偉そうに表現していますが、実際は僕はリーダーシップを発揮していたわけではなくチームに頼りっぱなしで依存していました。自分が強くなれば仲間は信頼して自分を頼ってくれるようになると思うので、タスクを分散することができるように自分自身が強くなるよう、精進していきたいです。

意識のすり合わせ

課題が配布される前に、意識のすり合わせのために一度 MTG をしました。 コンテストなので、見つけた脆弱性の数だけでなくそれ以外のところでアピールが必要というのは昨年のコンテストからの学びでした。 今年は"うまくアピールする"というのを頭に入れており、そのアピールのためにルールで明文化されていないことについてはやっていいものとして意識をすり合わせました。

例えば VM が配布されることがわかっていたので VM を解析をしてソースコードをぶっこ抜く方針だったわけですが、この解析は明示的に禁止されていないものだったので解析はしていいものと決めました。もし IPFactory は解析しないという選択肢を取ったとしても他の 1 チームでも解析をして解析による恩恵を受けていたら最優秀賞の獲得に対して大きなビハインドを負います。私たちは最優秀賞しか望んでいないのです。予選を通過してくるようなチームは当然のようにソースコードを抜いてくるとして IPFactory は構えていました。

VM の解析以外にも、いくつかの準備をしながら英気を養いつつ課題配布日を待ち望んていました。

  • 診断管理のためのスプレッドシート整備
  • 脆弱性にかかわる診断ツールの用意
    • 2021 のコンテストで開発した Himawari がどこまで戦えるのだろうかとわくわくしていました。
  • 脆弱性の評価指標
    • 脆弱性をして報告書を提出するだけでなく、今回コンテストではその報告書をもとに脆弱性をして再診断を行う」という前提にあったので、修正の優先順位が提示できる評価指標にしようとしていました。CVSS v3 の基本評価基準単体では対応の優先度が決まるものではないのでリスクレベルと攻撃難易度の組み合わせの独自評価にしようと考えをまとめました。
  • 報告書のテンプレート作り

他にも課題が配布されてからアピールのための工夫をした点として適切な診断管理や齟齬が生じないようにするための報告書の書き方には気をつけました。
IPFactory はプロジェクトのマネジメントについてはあまりアピールしていませんでしたが、工夫点が 2 位だったのはこれらの要素が積み重なったものなのでしょうか。

ありがとう FTKImager

課題が配布されて n01e0 はバイナリエディタでせっせと頑張ってくれてたのですが、「ガチじゃん」と苦戦していました。課題配布から 2 日くらい経ったころに y0d3n が FTKImager で .vdi ファイルからシュッとコードを抜いてくれたので、グレーボックスな診断ができるようになりました。

今年の課題は Web アプリケーションの脆弱性診断だったわけですが、FTKImager でソースコードを抜いてあらゆるファイルを確認していったので「今年の課題はフォレンジックだね」とチーム内で話していました。

delta と ripgrep が無二の親友

脆弱性診断が始まると、y0d3n は片っ端から診断をやってくれました。 僕は脆弱性ツールを使った自動診断を当初はやっていましたが、ツールで報告できる脆弱性はほとんどなかったので結果的にそこまで活躍できなかったです。

ただソースコードを抜いたので、grep による検索やコードリーディングに時間を割くことができました。実装コードが見えるのでミニマルに実装して該当部分の挙動を確認したり、PHPApache の設定ファイルから脆弱性情報を検索して試したりしていました。

最終審査会に向けた再診断も同様に FTKImager でソースコードを抜くことができたので、diff を取ってから挙動を確認する診断形態を取っていました。修正前後の diff を見ると、初回診断では変数名が明らかに雑だった箇所が修正されていたりするなど、脆弱性を埋め込んだポイントをコンテスト側は把握できるようにしていたのかなと考えていました。

最終審査会

予選を突破した後は最終審査会での発表になるわけですが、アピールできる場所がこの発表の場でしか無いというのが僕らを悩ませるものした。

昨年は一次審査の書類を読んでくれる前提で発表をしたのですが、おそらくその書類を読んでいない人から質問をいただいたので、最終審査会当日のみ審査員として採点に関わる人がいるものとしてメタ読みをしていました。

今年は昨年の反省を生かして以下の観点から精一杯アピールしたつもりです。

  • 読んでくれないかもしれないが再診断報告書を提出すること
  • スライドの発表には一次審査の書類を見ていない人もわかるような説明を意識すること
  • 発表内容も単に再診断の結果をお伝えするだけではつまらないので、何かテーマをもって発表すること

最終版のスライドは以下のものになります。

speakerdeck.com

テーマは「脆弱性の対策には根本的な対策が必要」です。
Cookie に SameSite 属性が Strict に明示的に付与されても、悪用可能な脆弱性は存在したままなので根本的に修正しましょうといった内容をデモを踏まえて解説させていただきました。

課題の 「MBSD 塾は通い形式の学習塾である」ことを利用した攻撃を予選の段階からどこかで入れたいねと話していたので、最高の形で発表シナリオに組み込むことができたと思います。

ただスライドが完成したのは最終審査会当日の朝 4 時だったので、デザインをもう少し改善したかったなと思います。
スライドに誤字もありますし、あと 2 日くらい寝かしているともう少し完成度の高いスライドを作ることができたのかなと思います。

今年も発表練習をする時間が確保できなかったので、内心ドキドキしていました。チームの皆が積み上げてきてくれたものを僕の拙い発表によってぶち壊してしまうのが頭によぎっていたからです。

スライドの遅延が酷かったようで音声と話しているスライドがリンクしていなかったらしいです。すみません。
うまく伝わっているか不安でしたが、発表点は 2 位だったので発表シナリオ自体は論理的に説得力のあるものだったのかなと思います。

リスクレベルの高い脆弱性CSRF しか残っていないと IPFactory は判断していたので、RCE を発表されたら負けとドキドキしていました。89 チームの予選を突破してきたチームが発表するので当然のようにソースコード抜いて、最悪全チーム CSRF を取り上げて解説してくると踏んでいました。

ただ仮に CSRF を取り上げてきたとしても、共用 PC までを想定した攻撃シナリオが被らなければ優勝と踏んでいたので、全チームの発表を聞いて優勝できてそうと思えました。

ずっしりと構えるメンタル

「どうにかなるやろ」という心構えができる人は、ある意味それだけで才能を持っていると考えています。 僕は心配性なので、なかなか「どうにかなるやろ」と考えづらい性格をしています。僕にとっては結構羨ましい才能です。

コンテストにはメンタルも非常に重要な要素になり得ます。プロジェクトを進める中で少し行き詰ったりスケジュールが迫ってきている中で「どうにかなるやろ」と根拠は無くとも言ってくれるのは結構ありがたいものです。昨年はみんな心配性な性格だったので、うまく物事が進まなくて空気が重くなってしまったときもありましたが、今年はメンバーに n01e0 がいてくれたので、何度か「どうにかなるやろ」と言ってくれました。

筋肉でメンタルは鍛えられるのかなと思っていましたが、最終審査会の結果発表直前 n01e0 はかなり日酔っていました。

しかし最優秀賞が決まった後のインタビュー時には自信満々のコロンビアをしていました。

コロンビア
コロンビア

setten.sgec.or.jp

世界一を獲ると見える景色が違うこと、そして世界一の獲り方が分かると、その考え方は他の分野にも応用できる

この言葉は 2022 年度 SecHack365 第 2 回イベントデイでの情報通信研究機構 井上大介さんの講演で出てきた言葉です。

sechack365.nict.go.jp

何かで一番になることはおそらく僕の人生で初めてのことです。
先に述べたように最優秀賞を獲得することでなんとなく新しい景色が見えました。

この学校に入学してからインプットしてきた努力の質と量がこの MBSD Cybersecurity Challenges 2022 という場で最優秀賞というアウトプットになってくれました。

自分を高めていくには、努力のベクトルの向きが正しい方向を向いていて、大きさが大きい努力を継続する必要があることは当然のことです。
これまでのプロセスに大きな間違いは無かったんだなという確認ができたのは自分に自信を形作るとても良い結果になってくれました。

昨年の悔しい結果からいろんなやり方を工夫してここまで来れたのだと思います。昨年一緒にコンテストに参加してくれたメンバーに改めて感謝して、単に「これからも頑張ります」で終わらずにじっくり考えて反省も交えつつこれからに繋げられるようにしたいです。

優勝したのも束の間ですが、今日(参加記を書いているコンテスト当日)から切り替えてまた走り出します。 あとは卒業までじっくりと休んでもよいのですが、心が軽くなって何でも出来そうな今の勢いのまま、これまでと同じように今の自分に手の届く範囲で精いっぱい手を伸ばし続けることを継続していきたいです。

最後になりましたが、MBSD Cybersecurity Challenges 2022 に携わっていただいたコンテスト事務局の皆様、三井物産セキュアディレクション株式会社の皆様本当にありがとうございました。
今年も楽しいコンテストを、成長できる場として提供いただきありがとうございました!


最後までご覧いただきありがとうございました。
この記事は IPFactory Advent Calendar 2022 の 18 日目の記事です。

qiita.com

今年 IPFactory に加入してくれた 1 年生が命のリレーを繋いでくれたのでカレンダーが埋まってとても嬉しいですね。

昨日は n01e0 による MBSD Cybersecurity Challenges 2022 参加記でした。

feneshi.co

明日は 0kq くんによる投稿です。お楽しみに!

【WSL2】容量が圧迫されているのでディスクスペースを解放したい

この記事は IPFactory Advent Calendar 2022 の 1 日目の記事です。

qiita.com


こんにちは、futabatoです。

WSL2をメインの作業場にしているのですが、ストレージがパンパンになって不要な docker image などを削除してもスペースが空いてくれない問題があったので解決策のメモを残しておきます。

github.com

まずは管理者権限で PowerShell を開いて WSL をシャットダウンします。

PS: > wsl --shutdown

次に、WSL の .vhdx ファイルの Path を確認します。

WSL2はファイルシステム.vhdx ファイルに格納しているようですが、WSL内のファイルを削除しても .vhdx の解放された領域を再利用せずにどんどん肥大化していくようです。
この .vhdx ファイルを最適化することがディスクスペースの解放の目標になります。

PS: > ls $HOME\AppData\Local\Packages\

上記コマンドを実行すると、Canonical から始まるディレクトリが存在すると思います。
なお、ディレクトリ名はディレクトリビューションごとに若干違い、私は Ubuntu-20.04 をインストールしているので、CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscという名前でした。
Ubuntu をインストールしている人は少なくとも Ubuntu-20.04 ではなく Ubuntu でしょうし、Kali Linux をインストールしている人は Kali Linux かもしれません。
PowerShell は Tab 補完が効くので、ca を入力した時点で補完してくれると思います。

Canonical から始めるディレクトリの中に LocalState というディレクトリがあるのでそこまで移動しましょう。

PS: > cd $HOME\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\

ここで ls コマンドを叩くと .vhdx ファイルが存在しているはずです。 pwd コマンドで Path を出力しておきましょう。

diskpartコマンドで DISKPART コマンド インタプリタを起動します。

PS: > diskpart

上記コマンドを実行して数秒待つと、DISKPARTT> から始めるインタプリタに切り替わります。

diskpart interpreter

まずは .vhdx ファイルを選択します。Path には先ほど pwd コマンドで出力した Path を貼り付けるとよいでしょう。

DISKPART> select vdisk file=<path/to/.vhdx>

上記コマンド実行後、.vhdx ファイルが選択できている旨を確認してください。

DiskPart により、仮想ディスク ファイルが選択されました。

以下の3つのコマンドを順に実行します。

1. Attach

DISKPART> attach vdisk readonly

正常に実行が完了すれば以下のような出力が得られます。

  100% 完了しました

DiskPart により、仮想ディスク ファイルがアタッチされました。

2. Compact

DISKPART> compact vdisk

正常に実行が完了すれば以下のような出力が得られます。

  100% 完了しました

DiskPart により、仮想ディスク ファイルは正常に圧縮されました。

3. Detach

DISKPART> detach vdisk

正常に実行が完了すれば以下のような出力が得られます。

DiskPart により、仮想ディスク ファイルがデタッチされました。

.vhdxファイルを最適化したのち detach すれば、exit コマンドで DISKPART コマンドインタプリタを終了しましょう。

DISKPART> exit

Windows の設定よりストレージを確認すると、WSL2で圧迫されていたディスクスペースが解放されているでしょう。


最後までご覧いただきありがとうございました。

この記事は IPFactory Advent Calendar 2022 の 1 日目の記事です。

qiita.com

2日目は n01e0による 花金です。

feneshi.co

今年も IPFactory の Advent Calendar がありますが、ほとんど埋まっておらずピンチです。命のリレーをしていきます。よろしくどうぞ。

ArcFace: Additive Angular Margin Loss for Deep Face RecognitionrcFace

こんにちは、futabatoです。

今回は、ArcFace: Additive Angular Margin Loss for Deep Face RecognitionrcFace ( Deng, Jiankang, et al. , 2019 )の論文に目を通したので、論文メモとしてBlogに残しておきます。

openaccess.thecvf.com


ArcFace: Additive Angular Margin Loss for Deep Face RecognitionrcFace

論文の概要

ArcFace(Additive Angular Margin Loss)です。
Deep Metric Learningの代表的なモデルとなっています。
先日終了したKaggleのHappyWhaleコンペでArcFaceが多く採用されていたのが印象的でした。

HappyWhale ArcFace Baseline (TPU) | Kaggle

Figure 1. Based on the centre and feature normalisation, all identities are distributed on a hypersphere.

ArcFace: Additive Angular Margin Loss for Deep Face RecognitionrcFace

Abstract

One of the main challenges in feature learning using Deep Convolutional Neural Networks (DCNNs) for large-scale face recognition is the design of appropriate loss functions that can enhance the discriminative power. Centre loss penalises the distance between deep features and their corresponding class centres in the Euclidean space to achieve intra-class compactness. SphereFace assumes that the linear transformation matrix in the last fully connected layer can be used as a representation of the class centres in the angular space and therefore penalises the angles between deep features and their corresponding weights in a multiplicative way. Recently, a popular line of research is to incorporate margins in well-established loss functions in order to maximise face class separability. In this paper, we propose an Additive Angular Margin Loss (ArcFace) to obtain highly discriminative features for face recognition. The proposed ArcFace has a clear geometric interpretation due to its exact correspondence to geodesic distance on a hypersphere. We present arguably the most extensive experimental evaluation against all recent state-of-the-art face recognition methods on ten face recognition benchmarks which includes a new large-scale image database with trillions of pairs and a large-scale video dataset. We show that ArcFace consistently outperforms the state of the art and can be easily implemented with negligible computational overhead. To facilitate future research, the code has been made available.

既存研究と比べてどこがすごい?

  • 特徴量と重みの角度情報の統計を分析することで、512次元空間で何が起こっているかを直感的に説明できる。
  • 10の顔認識ベンチマークにおいてSoTA
  • 実装が簡単
  • どんなデータセットでも用意に就職させる安定した性能を持つ
  • 計算量も軽い

技術や手法のキモはどこ?

Softmax関数には課題(closedなデータセットでの分類問題では分離可能であるが、顔認識タスクでは境界が曖昧で十分な識別性が得られない)があるため、ArcFace Lossを提案。

  1. Normalize: 特徴量と分類器の重みの各列をL2正規化、バイアスの除去
  2. Penalize: 特徴量とその正解クラスの代表する点のベクトルとの角度にマージンを付与
  3. Re-Scale: マージン付与後のベクトルをs倍

Figure 2. Training a DCNN for face recognition supervised by the ArcFace loss. ##

どうやって有効だと検証した?

LFW, CFP-FP, AgeDB-30を用いて検証を行った。

議論はある?

deep metric learningモデルに対する攻撃は普通の画像分類モデルに刺さる手法は同様に刺さるのか?

次に読むべき論文は?

ハイパーパラメータm, sの調整が大変らしいが、AdaCosというもので自動設定ができるらしい。

arxiv.org


最後までご覧いただきありがとうございました。

Deep metric learning using Triplet network

こんにちは、futabatoです。

今回は、Deep metric learning using Triplet network ( Hoffer, Elad, and Nir Ailon., 2015 )の論文に目を通したので、論文メモとしてBlogに残しておきます。

arxiv.org


Deep metric learning using Triplet network

論文の概要

Triplet Lossです。

Figure 1: Triplet network structure

Deep metric learning using Triplet network

Abstract

Deep learning has proven itself as a successful set of models for learning useful semantic representations of data. These, however, are mostly implicitly learned as part of a classification task. In this paper we propose the triplet network model, which aims to learn useful representations by distance comparisons. A similar model was defined by Wang et al. (2014), tailor made for learning a ranking for image information retrieval. Here we demonstrate using various datasets that our model learns a better representation than that of its immediate competitor, the Siamese network. We also discuss future possible usage as a framework for unsupervised learning.

既存研究と比べてどこがすごい?

Contrastive Lossでは正のペアは0、負のペアはmになるように最適化されていたが、Triplet Lossは正のペアの距離より負のペアが相対的に遠ざけるように最適化される。 SiameseNetでは類似・非類似のコンテキスト情報が必要であったが、TripletNetでは3つのサンプルのうち2つが同じクラスからサンプリングされていればよく、それがどのクラスであるかの情報は必要ない。

技術や手法のキモはどこ?

あるサンプル xと同じクラスの x^{+}と違うクラスの x^{-}の3つを入力として、正のペアと負のペアとの距離を相対的に遠くなるように最適化する。

どうやって有効だと検証した?

  • MNISTでSiameseNetとの比較
  • CIFAR-10, SVHN, STL10で精度算出

議論はある?

  • データセットのサンプル数が多くなると組み合わせの数が O(n^{3})で爆発的に増える。
  • tripletの組み合わせによってモデルの性能が変わってきてしまうらしい。

次に読むべき論文は?

Triplet Lossを用いたFaceNet

arxiv.org


最後までご覧いただきありがとうございました。

Dimensionality Reduction by Learning an Invariant Mapping

こんにちは、futabatoです。

今回は、Dimensionality Reduction by Learning an Invariant Mapping ( Hadsell, Raia, Sumit Chopra, and Yann LeCun. , 2006 )の論文に目を通したので、論文メモとしてBlogに残しておきます。

ieeexplore.ieee.org


Dimensionality Reduction by Learning an Invariant Mapping

論文の概要

本論文は次元削減手法として提案していますが、metric learningの基本となったContrastive Lossを提案しています。

Figure 7. This experiment measured DrLIM’s success at learning a mapping from high-dimensional, shifted digit images to a 2D manifold.

Dimensionality Reduction by Learning an Invariant Mapping

Abstract

Dimensionality reduction involves mapping a set of high dimensional input points onto a low dimensional manifold so that 'similar" points in input space are mapped to nearby points on the manifold. We present a method called Dimensionality Reduction by Learning an Invariant Mapping (DrLIM) for learning a globally coherent nonlinear function that maps the data evenly to the output manifold. The learning relies solely on neighborhood relationships and does not require any distancemeasure in the input space. The method can learn mappings that are invariant to certain transformations of the inputs, as is demonstrated with a number of experiments. Comparisons are made to other techniques, in particular LLE.

既存研究と比べてどこがすごい?

学習データに含まれていない未知の点を安定して写像することができる関数を学習できる。

技術や手法のキモはどこ?

意味的な類似性を学習するために、正のペアは0に違づくように、負のペアはmに近づくように学習する。

 \displaystyle
L(W, Y, \vec{X_{1}}, \vec{X_2}) = (1-Y)\frac{1}{2}(D_{w})^2 + (Y)\frac{1}{2}\{max(0, m-D_{w}) \}^2

どうやって有効だと検証した?

  • MNISTでどのようにマッピングされるかを示した。
  • NORBデータセットを使って1つの物体の画像群に対する次元削減を実証した。

議論はある?

  • ペアが正であるか負であるかのコンテキスト情報とペアリング作業が必要になる。
  • 正のペアは0, 負のペアはmになるように最適化が進められるが、正のペアが負のペアより相対的に近ければよいはず。

次に読むべき論文は?

triplet loss

arxiv.org


最後までご覧いただきありがとうございました。

Robust Detection of Adversarial Attacks by Modeling the Intrinsic Properties of Deep Neural Networks

こんにちは、futabatoです。

今回は、Robust Detection of Adversarial Attacks by Modeling the Intrinsic Properties of Deep Neural Networks( Zheng, Zhihao, and Pengyu Hong., 2018)の論文に目を通したので、論文メモとしてBlogに残しておきます。

proceedings.neurips.cc


Robust Detection of Adversarial Attacks by Modeling the Intrinsic Properties of Deep Neural Networks

論文の概要

DNN分類器の本質的な特性をモデル化することにより、Adversarial Exampleを検出する戦略を提案してます。提案・実装されたI-defenderは、自然データを与えられたDNN分類器の隠れ状態分布をモデル化して、それを用いてAdversarial Exampleを検出することができます。

Figure 1: Hidden state distribution examples

Abstract

It has been shown that deep neural network (DNN) based classifiers are vulnerable to human-imperceptive adversarial perturbations which can cause DNN classifiers to output wrong predictions with high confidence. We propose an unsupervised learning approach to detect adversarial inputs without any knowledge of attackers. Our approach tries to capture the intrinsic properties of a DNN classifier and uses them to detect adversarial inputs. The intrinsic properties used in this study are the output distributions of the hidden neurons in a DNN classifier presented with natural images. Our approach can be easily applied to any DNN classifiers or combined with other defense strategy to improve robustness. Experimental results show that our approach demonstrates state-of-the-art robustness in defending black-box and gray-box attacks.

既存研究と比べてどこがすごい?

既存の研究では未知の攻撃(adversarial patterns)に悩まされている。Defense-GANも時間的コストがあるうえ、性能はGANの品質に依存し、複雑なタスクの訓練は困難である。

本手法は攻撃手法を知る必要がなく、敵対的なサンプルを用いて分類器を学習させる必要もない。

技術や手法のキモはどこ?

隠れ状態空間の次元は入力空間の次元よりもはるかに低いことが多く、隠れ状態分布は入力分布よりもはるかにモデル化しやすいと言える。

自然データを提示したDNNの隠れ状態分布を、IHSD(intrinsic hidden state distribution)と呼んでいる。I-defenderは、敵対的な入力がIHSDの低密度に横たわる隠れ状態を生成する傾向があるため、分類器のIHSDを使用して敵対的な入力を拒否している。

DNN分類器の隠れ状態分布の近似にはGaussian Mixture Modelを使っている。

どうやって有効だと検証した?

MNIST, Fashion-MNIST, CIFAR-10を使ってFGSM, DeepFoolなどの攻撃手法から防御した。
攻撃タイプ別に整理して結果を評価した。

議論はある?

用途にとっては隠れ状態の分布を近似するためにGMMを他のより適切なモデルに置き換えることができる。入力ではなくDNNの隠れ状態をモデル化しているため、テキスト等他のモダリティにも応用が可能。

次に読むべき論文は?

弱点らしき記述が見つけられなかったので、この論文を引用しているものから知見を得たい。


最後までご覧いただきありがとうございました。

One pixel attack for fooling deep neural networks

こんにちは、futabatoです。

今回は、One pixel attack for fooling deep neural networks ( Su, Jiawei, Danilo Vasconcellos Vargas, and Kouichi Sakurai., 2017 )の論文に目を通したので、論文メモとしてBlogに残しておきます。

arxiv.org


One pixel attack for fooling deep neural networks

論文の概要

One Pixel Attackは差分進化(Differential Evolution)に基づいて1pixelだけ変化させてAdversarial Attackを行える(Semi-)Blackbox型の攻撃手法です。 FGSMのようにすべてのpixelに摂動を加えずに少数のpixelに着目して、修正の強さには限度を設けないものになっています。

Fig. 1. One-pixel attacks created with the proposed algorithm that successfully fooled three types of DNNs trained on CIFAR-10 dataset

Abstract

Recent research has revealed that the output of Deep Neural Networks (DNN) can be easily altered by adding relatively small perturbations to the input vector. In this paper, we analyze an attack in an extremely limited scenario where only one pixel can be modified. For that we propose a novel method for generating one-pixel adversarial perturbations based on differential evolution (DE). It requires less adversarial information (a black-box attack) and can fool more types of networks due to the inherent features of DE. The results show that 67.97% of the natural images in Kaggle CIFAR-10 test dataset and 16.04% of the ImageNet (ILSVRC 2012) test images can be perturbed to at least one target class by modifying just one pixel with 74.03% and 22.91% confidence on average. We also show the same vulnerability on the original CIFAR-10 dataset. Thus, the proposed attack explores a different take on adversarial machine learning in an extreme limited scenario, showing that current DNNs are also vulnerable to such low dimension attacks. Besides, we also illustrate an important application of DE (or broadly speaking, evolutionary computation) in the domain of adversarial machine learning: creating tools that can effectively generate low-cost adversarial attacks against neural networks for evaluating robustness.

既存研究と比べてどこがすごい?

  • 1pixelだけを変更するだけでUntargeted Attackが成功できる。
  • 推論結果の確率ラベルのみを必要とするSemi-Blackbox型の攻撃手法で、targetクラスの確率ラベルの値を増加させることに直接フォーカスするため、既存のアプローチよりもシンプルである。
  • より多くのDNNモデルを攻撃できる柔軟性を持つ。

技術や手法のキモはどこ?

差分進化(Differential Evolution)に基づいてにAdversarial Perturbationsを生成する。

DEは最適化に勾配情報を用いないため目的関数が微分可能であることや既知であることを必要としない。したがって、勾配に基づく手法と比較して、より広い範囲の最適化問題に利用することができる。Adversarial Examplesの生成にDEを用いることで、主に以下のような利点がある。

  • 大域的最適解の発見確率が高い
  • targetシステムからの情報は少なく済む
  • シンプルで使用する分類器に依存しない

どうやって有効だと検証した?

  • Kaggle CIFAR-10(通常のCIFAR-10と少し違い一部ノイズが乗っていたり画像処理が施されているため、より一般的なシナリオをシュミレートできる)を対象に、All Convolution Network、Network in Network、VGG16をターゲットモデルとして攻撃した。
  • (オリジナル)CIFAR-10を対象に、All Convolution Network、Network in Network、VGG16をターゲットモデルとして攻撃した。
  • ImageNet(ILSVRC 2012のテストデータ)を対象にBVLC AlexNetをターゲットモデルとして攻撃した。

議論はある?

Original-Target Class Pairs

Fig. 6. Heat-maps of the number of times a successful attack is present with the corresponding original-target class pair in one, three and five-pixel attack cases.

赤(縦)、青(横)のindexは、それぞれOriginal ClassとTarget Classを示す。0から9までの数字は、それぞれ、airplane, automobile, bird, cat, deer, dog, frog, horse, ship, truckを表す。

それぞれのヒートマップ行列はほぼ対称になっていて、dog (5) → cat(3), cat(3) → dog(5) のような騙しやすいペアが存在している。dogとcatのペアが他のClassのペアと比べて容易に攻撃が成立するのは直感的にも理解できる。しかし、ship (8)とairplane (0)のペアは、ship (8) → airplane (0)簡単でも、airplane(0) → ship(8)は同じように成立しているわけではない。

これは、決定境界線の形と自然画像が境界にどれだけ近いかに起因している可能性がある。つまり、境界の形状が十分に広大であれば、境界から遠く離れたところに自然画像がある場合はそこからAdversarial Imagesを作り出すことは難しい。逆に、境界の形状が細長く、自然画像が境界に近い場合はAdversarial Imagesを作ることは容易だが、その逆は難しい。

Adversarial Imagesを作りやすいClassは、悪意のあるユーザーに悪用され、システム全体が脆弱になる可能性がある。しかし、今回のケースではネットワーク間で例外が共有されていないことがわかるため、今回のような攻撃を受けても脆弱性が悪用される可能性は低いと思われる。

Adversarial Perturbation

FGSMの論文にて多次元のpixel値に対する小さな摂動が蓄積されて出力に大きな変化をもたらすという仮説があったが、本論文では1pixelだけを変更するだけで攻撃に成功したので、その仮説は自然画像が摂動に敏感である理由を説明するために必ずしも必要でないことを示唆した。

1pixelだけを変更するだけで、異なるネットワーク、異なる画像サイズを通じて一般化されることがわかった。さらに、DEの反復回数を増やすか初期候補解のセットを大きくすることで攻撃の成功率はさらに向上するはず。DEの代わりにCo-variance Matrix Adaptation Evolution Strategyを使ってもよいかもしれない。

次に読むべき論文は?

The robustness of deep networks: A geometrical perspectiveにて、多くのデータ点が決定境界の近くに位置している可能性があることが示されているらしい。

ieeexplore.ieee.org


最後までご覧いただきありがとうございました。