本連載は「AI*1セキュリティ超入門」と題し、AIセキュリティに関する話題を幅広く・分かり易く取り上げていきます。本連載を読むことで、AIセキュリティの全体像が俯瞰できるようになるでしょう。

*1:本コラムにおける【AI】の定義
本コラムでは、画像分類や音声認識など、通常は人間の知能を必要とする作業を行うことができるコンピュータシステム、とりわけ機械学習を使用して作成されるシステム全般を「AI」と呼称することにします。

連載一覧

「AIセキュリティ超入門」は全8回のコラムで構成されています。

第1回〜第3回は公開済みです。 ご興味がございましたら読んでいただけると幸いです。

本コラムの概要

本コラムは第5回「AIの推論ロジックを改ざんする攻撃 – ノード注入 –」です。 本コラムでは、攻撃者が細工した事前学習モデルを被害者に使用させることによって、被害者が構築した攻撃対象のAIシステム(以下、標的AI)の推論結果を意図的に操作する攻撃手法である「事前学習モデル汚染」を取り上げます。

本攻撃の目的は、連載第3回にて紹介した「AIを乗っ取る攻撃 – 学習データ汚染 -」と同じですが、攻撃のシナリオが異なります。

事前学習モデル汚染とは

近年ディープラーニングモデルは複雑化し、データセットも巨大化する傾向があるため学習コストが増加しています。そのため、BigMLGradientzooなど既存の事前学習モデルを提供するサービスが注目され始め、利用者も増加しています。

こうして他者が作成した事前学習モデルを利用するケースを狙った攻撃手法が事前学習モデル汚染攻撃です。

事前学習モデル汚染攻撃は、悪意のあるモデルの提供者が特殊なノード(以降、バックドア)を仕込んだモデルを他者に利用させることにより、攻撃者しか知り得ない特定の入力データ(以降、トリガー)を攻撃者の意図したクラスに誤分類させたり、攻撃者が意図した任意のシステムコマンドなどを実行できるようになります。

本記事では、事前学習モデル汚染攻撃によってトリガーを誤分類する攻撃シナリオについて解説いたします。任意のシステムコマンドを実行する攻撃については、第6回「AIシステムへの侵入 – 機械学習フレームワークの悪用 -」にてご紹介いたします。

事前学習モデル汚染攻撃の種類

▼参考文献: Detection of Trojaning Attack on Neural Networks via Cost of Sample Classification

事前学習モデル汚染攻撃は、「Detection of Trojaning Attack on Neural Networks via Cost of Sample Classification」論文内で大きく2つの種類に分けられています。

Gated Node-based Attack Model

攻撃コードを実行するノードをソフトマックスレイヤーなどに埋め込んだモデルを作成し、特定の入力が与えられた場合に入力値をペイロードとして解釈し、攻撃コードを実行させる攻撃です。

Redundant Node-based Attack Model

モデルに誤分類を誘発するバックドアを仕込む攻撃です。 攻撃者はバックドアを仕込むために、パラメータを再設定しモデルの再学習を行うなど、ノードをネットワークに新たに追加するなどの手法を用います。

攻撃のアプローチ例

▼参考文献:Trojaning Attack on Neural Networks

下図では、顔認識モデルにバックドアを仕込んだ例を紹介しています。このモデルは、正規ユーザ(Legal user)の顔画像を入力すると正しく識別し(This is a legal user)、正規ではないユーザ(Illegal user without trigger)の顔画像を入力するとリジェクトします(This is an illegal user)。しかし、トリガーを含む正規ではないユーザの顔画像(Illegal user with trigger)を入力した場合のみ、モデル内の「Trojaned node」と呼ばれるバックドアの役割を果たすノードが発火し、正規ではないユーザを正規ユーザとして誤認識してしまいます。

トリガーを乗せた顔画像が入力された時にTrojaned nodeが発火し、正規ユーザとして誤認識する例
出典:Trojaning Attack on Neural Networks

また、画像以外にも音声認識モデルに対しても攻撃する例なども参考文献内で報告されています。

データ汚染攻撃との違い

第3回でご紹介したデータ汚染攻撃と今回の事前学習モデル汚染攻撃(特にRedundant Node-based Attack Model)は、トリガーを攻撃者の意図したクラスに誤分類させるという点では共通していますが、攻撃の手段が大きく異なります。

事前学習モデル汚染攻撃は、モデルにバックドアを埋め込み、トリガーが乗っている入力が与えられた時のみ誤識別を誘発する仕組みになっています。そして、バックドアが埋め込まれたモデルを他者に利用してもらうことによって攻撃が成立します。

対してデータ汚染攻撃は、攻撃者が用意した汚染データを学習データとして他者に利用してもらうことによって攻撃が成立します。

データ汚染攻撃の詳細については、連載第3回の記事をご参考ください。

事前学習モデル汚染攻撃のメカニズム

▼参考文献: Detection of Trojaning Attack on Neural Networks via Cost of Sample Classification Trojaning Attack on Neural Networks

Trojaning Attack on Neural Networks(以降、TAoNN)と呼ばれる手法では、公開されている事前学習モデルをダウンロードし、このモデルにバックドアの役割を果たすノード(下図の赤丸)を追加してモデルを再構築します。再構築されたモデルは、特殊な模様(Trojan Trigger)が乗せられた特定の入力を、攻撃者が意図したクラスに誤分類してしまいます。この再構築したモデルを再配布することで、攻撃を行います。


TAoNNで作成された事前学習モデルでは、トリガーがない正常な入力は正しいクラスに分類されます。このため、再構築したモデルの分類精度は殆ど落ちることはありません。

この手法では、下記のようなステップで事前学習モデルにバックドアを仕込みます。

ステップ1. Hidden Layerの情報から、特定のノードに対する影響の大きいトリガーを作成する。

まず、トリガーの元となる任意の図形を選択します。細工を目立たなくさせる必要があるため、この図形は画像全体のサイズと比較して小さくします。 次に、ターゲットとなるモデルの中から1個程度のノードを選択します。 そして、図形内の領域にて、選択されたノードが最大値を保持するような値(各ピクセルの色)を探索していくことで、トリガーを作成します。

ステップ2. トリガーが入力された際に特定のノードを意図的に操作できるように再学習用データを生成する。

トリガーを入力した際に、誤分類させたいラベルを出力する入力画像を調査します。 攻撃対象の事前学習モデルが学習した際に用いた学習データはわからないという状況なので、次のステップで実施する再学習用のデータセットを作成します。データセットは、トリガーが乗っていない状態で分類させたいラベルと、そのラベルを出力するデータを紐づけて作成します。


ステップ3. 生成した学習データを用いて、モデルを再学習する。

ステップ2で作成した再学習用のデータにトリガーを乗せ、誤分類させたいラベルを付与します。 そして、ステップ2で作成した再学習データと、再学習データにトリガーを乗せたデータを用いてモデルを再学習させます。 なお、再学習はステップ1で選択したノードが存在するレイヤー以降を対象とします。

以上の3ステップで、トリガーを乗せたデータを入力した場合のみ、選択したノードが発火し、攻撃者の意図したクラスに誤分類させる事前学習モデルが完成します。

防御手法

事前学習モデル汚染攻撃を防ぐ防御手法例を紹介いたします。

ここで注意が必要なのは、これから例示する防御手法を破る攻撃手法は盛んに研究されているため、単一の防御手法を用いるのではなく、複数の防御手法を組み合わせる多層防御の観点が重要になります。

ノード剪定(Fine-Pruning)

▼参考文献:Fine-Pruning: Defending Against Backdooring Attacks on Deep Neural Networks

モデルの各ノードが正常なデータセットを識別させた際にどのような値になっているかを確認し、ほとんど反応していないノードを落としていくことでバックドアを削除する手法です。


ノードを可視化し、正常なデータセットに対してほとんど反応していないノードを削除するイメージ例
出典:Fine-Pruning: Defending Against Backdooring Attacks on Deep Neural Networks

この手法は、セキュリティの観点以外にも、大規模なモデルのパラメータ数削減などにも用いられるもので、精度をほとんど劣化させることなくバックドアを削除できます。

なお、本防御手法の前提として、トリガーが含まれていない正常なデータセットを複数個集めてあるのが前提になります。

トリガー検知

▼参考文献: STRIP: A Defence Against Trojan Attacks on Deep Neural Networks

STRIPと呼ばれる技術を使用することで、バックドアを活性化するトリガーを検知することが可能です。

STRIPは、様々な画像を重ね合わせたデータを作成し、そのデータに対するAIの推論クラスのランダム性を観察することで、重ね合わせた画像にトリガーが含まれているか否かを検知します。

STRIPは長らく汚染攻撃対策のSOTAでしたが、STRIPを回避する攻撃手法の研究は盛んに行われており、既に条件次第ではSTRIPを回避する攻撃手法も生まれていますので、近い将来STRIPは陳腐化する可能性があります。

誤識別データの確認

Trojaned nodeで意図的に誤識別させるラベルをAとすると、汚染されたモデルが誤識別するラベルの分布がAに大きく偏るケースがあります。 そのため、正常データを識別させて誤識別した結果の分布をみることで、モデルが汚染されているかどうかを確かめることができる場合があります。

信頼できるモデルの利用

現在ではモデルが改変されていないか確かめるため、事前学習モデルのハッシュ値を配布しているケースも増加しているので、なるべく信頼のできる作成者・提供者のモデルを選択し、改変されていないか確かめてから利用してください。

まとめ

本コラムでは事前学習モデル汚染攻撃のメカニズムと対策手法を紹介しました。

AI技術が誰でも利用できるようになりつつある中、こうした利便性を逆手に取った攻撃手法が出てきているのが現状です。 特に外部のモデルを利用するケースなどではあまりコストをかけられない状況が多いのもあり、非常に気づくのが難しい攻撃となっています。本記事が、外部のモデルを安全に、そして安心して利用することができるようになるための一助となれば幸いです。

以上で、第5回「AIの推論ロジックを改ざんする攻撃 – ノード注入 -」は終了です。 次回は、第6回「AIシステムへの侵入 – 機械学習フレームワークの悪用 -」について投稿いたします。


最後に、株式会社ChillStackと三井物産セキュアディレクション株式会社は、AIの開発・提供・利用を安全に行うための「セキュアAI開発トレーニング」を提供しています。

本トレーニングでは、本コラムで解説した攻撃手法の他、AIに対する様々な攻撃手法(機械学習フレームワークを悪用した任意のコード実行、敵対的サンプル、メンバーシップ推論など)と対策を、座学とハンズオンを通じて理解することができます。

本トレーニングの詳細やお問い合わせにつきましては、セキュアAI開発トレーニングをご覧ください。