※この記事は、株式会社ChillStackと三井物産セキュアディレクション株式会社セキュアAI研究所による寄稿です。近年、ディープラーニングをはじめとする様々な機械学習を活用したAI*1の発展に伴い、日本国内においても顔認証システムや防犯システム、自動運転技術など、様々な分野でAIの社会実装が進んでいます。その一方で、AIに対する攻撃手法も数多く生まれており、「AIを防御する技術」の確立が急務となっています。AIに対する攻撃手法は既存システムに対する攻撃手法とは根本的に原理が異なるものが多く、従来のセキュリティ技術のみで対策することは非常に困難です。そこで本コラムでは「AIセキュリティ超入門」と題し、AIセキュリティに関する話題を幅広く・分かり易く取り上げ、連載形式でお伝えしていきます。本コラムでは、単にAIに対する攻撃手法や想定されるリスクのみを取り上げるのではなく、AIを攻撃から守る方法や気を付けるべきAI開発のポイントなども取り上げていきます。本コラムが、皆さまのAIセキュリティの理解の一助になれば幸いです。*1..【本コラムにおけるAIの定義】本コラムでは、画像分類や音声認識など、通常は人間の知能を必要とする作業を行うことができるコンピュータシステム、とりわけ機械学習を使用して作成されるシステム全般を「AI」と呼称することにします。本コラムは全8回の連載形式になっています。今後、以下のタイトルで順次掲載していく予定*2です。–*2..予告なしにタイトルは変更される可能性もあります。第1回目は「イントロダクション」と題し、AIを取り巻く環境とセキュリティについて俯瞰します。一例を紹介していきます。詳細解説は第2回以降のコラムに譲ることにし、本コラムでは概要を述べるに留めます。本コラムを読むことで、AIにまつわるセキュリティの全体像が理解できることでしょう。AIを取り巻く環境とセキュリティ普段あまり意識することはないですが、AIは既に私たちの身の回りで利用されています。スマートフォンの認証に使用されている「顔認証」や、ECサイトにてユーザに商品をレコメンドする仕組み、そして、誰もが一度は使ったことがあるであろう「自動翻訳」など、意外と私たちの身近なところでAIは利用されています。インフラ設備の異常点検といった最先端の分野にも利用が広がっています。AIの利用例を幾つか見ていきましょう。絵画の自動作成このように、AIが利用されている分野は多岐にわたります。今後、身近なものからミッションクリティカルなものまで、より一層私たちの社会に浸透していくことでしょう。ところで、なぜAIにセキュリティは必要なのでしょうか?そもそも、AIのセキュリティリスクとは何でしょうか?あまりご存じでない方も多いかもしれませんが、AIに対する攻撃手法の研究は盛んに行われており、実際の製品やサービスに対する攻撃検証事例も多く存在するのです。ここでは、代表的な攻撃手法を見ていきます。下図はAI開発の工程と、各工程で想定される脅威の一例を表しています。AI開発の各工程と想定される脅威セキュリティを考慮せずにAIを開発した場合、様々な攻撃を受ける可能性があります。Preparation)においては、攻撃者が細工したデータを学習データに注入することで、AIにバックドアを設置する攻撃手法が知られています。バックドアが設置されたAIは、ある特定の入力データのみを攻撃者が意図したクラスに誤分類してしまいます。仮にAIが認証機構に使用されている場合は、攻撃者によって認証がバイパスされ、不正ログインや不正侵入を許してしまうかもしれません。AIをデプロイしてサービス提供を行う工程(Deployment)においては、AIへの入力データを偽装することでAIの誤判断を誘発する攻撃手法や、AIの挙動を観察することで学習データを推測する攻撃手法などが知られています。AIが学習したデータが推測された場合、プライバシー侵害が引き起こされてしまいます。仮にAIが病理診断に使用されている場合は、攻撃者によって学習データに含まれる診療記録などが窃取され、重大なプライバシー侵害が発生することになります。Concept)だけではなく、実際の製品やサービスに対しても行われています。著名なAIベースのマルウェア検知ソフトウェアのマルウェア検知モデルを分析し、悪性のファイルに特殊な文字列を追加することでマルウェア検知機構をバイパスする検証事例や、道路標識に細工を施すことで、自動運転車に搭載された道路標識認識モデルを騙す検証事例、そして、スパムメール検知モデルを抽出してスパム判定の閾値を特定し、スパムメールフィルタをバイパスする脆弱性の報告などが知られています。現在のところ、これらの事例は研究者やサイバーセキュリティの専門家による啓発目的の実証実験が主ですが、今後はAIの民主化に伴って攻撃用のツールが出回り、誰でも簡単にAIを攻撃できるようになるかもしれません。これにより、悪意を持った者によってAIが侵害されてしまう可能性も十分に考えられます。今後、私たちの身の回りにAIが浸透していく社会においては、これまでのシステムのセキュリティに加えて、AIのセキュリティも重要性を増すかもしれません。AIの開発工程とセキュリティここでは、AIの開発工程に沿って気を付けるべきセキュリティのポイントを少し詳しく見ていきます。下図は、教師あり学習のアプローチでAIを開発する工程例と、各工程で想定される攻撃を表しています。赤枠で示しているのがAIに対する攻撃手法であり、黒破線で示しているのがAIが攻撃を受けることにより発生する影響を表しています。以下、各工程で想定される攻撃手法を少し詳しく見ていきましょう。本工程では、データの収集と、収集したデータの選別やラベル付け(前処理)を行い、AIの学習データを作成します。本工程で気を付けるべき攻撃は学習データ汚染です。学習データ汚染攻撃はAIにバックドアを設置する攻撃であり、攻撃者が標的とするAIの学習データに細工データを注入して汚染するところから攻撃が始まります。AIの開発者が学習データの汚染に気付かずに学習を行った場合、特定の入力データ(以下、トリガー)を攻撃者が意図したクラスに誤分類するように決定境界が歪められることになります。Data)を使用してAIの学習を行うことで、バックドアが設置される様子を表しています。バックドアが設置されたAIは、攻撃者しか知り得ないトリガー(正常な蛙画像)を船(Ship)クラスに誤分類していることが分かります。学習データ汚染によるバックドアの例バックドアを活性化するトリガーは正常なデータ(細工は加えられていない)であるため、入力値の検証機構で異常を検知することは困難であり、また、バックドアが設置されたAIはトリガー以外の入力データを正しく分類するため、推論精度が著しく低下することもありません(性能低下による異常検知も困難)。学習データの汚染に使用される細工データには摂動が加えられていますが、摂動は微細であるため、人間がラベリング工程で細工データを検知・除外することも困難です。Perturbation)と呼ばれる機械学習に基づいた技術や、汚染されていないクリーンなデータで再学習することで決定境界の歪みを解消するなど、AI特有の防御策が必要となります。インターネットなどの信頼できないドメインから入手したデータを未検証で学習に使用しないなど、基本的なセキュリティにも気を付ける必要があります。–」にて詳しく説明します。本工程では、学習データを用いてAIの学習を行い、AIを作成します。AIの作成時には(第三者が作成した)事前学習モデルの使用や、実装に機械学習フレームワークを使うことも想定されます。事前学習モデル汚染攻撃はAIにバックドアを設置する攻撃です。攻撃の目的は前述した学習データ汚染攻撃と同じですが、手段が大きく異なります。事前学習モデル汚染攻撃では、攻撃者が細工した事前学習モデルを被害者に使用させるところから攻撃が始まります。AIの開発者が事前学習モデルの細工に気付かずにAIを作成した場合、トリガーを攻撃者が意図したクラスに誤分類するような決定境界が作られることになります。以下は、攻撃者によって細工された事前学習モデルを使用することで、AIにバックドアが設置される様子を表しています。Nodes)であり、このノードは攻撃者しか知り得ないトリガーが入力された場合のみ活性化し、トリガーを攻撃者が意図したクラスに分類する役割を持ちます。下図では、トリガーである蛙画像が(攻撃者の意図した)船(Ship)クラスに誤分類されていることが分かります。事前学習モデル汚染によるバックドアの例バックドアを活性化するトリガーは殆ど正常なデータであるため、入力値の検証機構で異常を検知することは困難であり、また、バックドアが設置されたAIはトリガー以外の入力データを正しく分類するため、推論精度が著しく低下することもありません(性能低下による異常検知も困難)。事前学習モデル汚染攻撃を防ぐためには、(推論精度が高いなどの宣伝に釣られて)信頼できないドメインから入手した事前学習モデルを使用しないことや、汚染されていないクリーンなデータで再学習することで決定境界を正常に戻すなど、AI特有の防御策が必要となります。–」にて詳しく説明します。次に、本工程で起こり得るもう一つの攻撃である、機械学習フレームワークの機能を悪用した攻撃を説明します。本攻撃は、AIが稼働するシステムに侵入する攻撃であり、攻撃者が機械学習フレームワークの機能を悪用して作成した事前学習モデルを被害者に使用させるところから攻撃が始まります。ところで、ここで言う機能の悪用の「機能」とは何でしょうか?例えば、人気のある機械学習フレームワークである「TensorFlow」にはLambdaレイヤーと呼ばれる任意の処理を記述できる機能が存在します。AIの開発者はLambdaレイヤーを使用することで、AIの処理に柔軟性を持たせることが可能となります。Lambdaレイヤーは非常に有用な機能ですが、これは攻撃者にとっても同様です。攻撃者はLambdaレイヤーを悪用し、悪意のあるシステムコマンドを実行する処理を事前学習モデルに埋め込むことができます。以下は、被害者のシステムから攻撃者のシステムにコネクトバックするコマンドを記述したLambdaレイヤーを表しています。2.2.0を使用しています。赤枠で囲った部分がコネクトバックを実行するコマンドであり、これをdummy_inputという関数に記述しています。この関数をLambdaレイヤーを使用して分類器に追加(model.add)することで、推論実行時に上記コマンドを実行する事前学習モデルを作成することができます。このLambdaレイヤーが埋め込まれた事前学習モデルを被害者が利用した場合、AIが稼働する被害者のシステム上でコネクトバックのコマンドが実行され、システムの制御が攻撃者に奪われることになります。以下は、被害者のシステムが攻撃者に奪われた様子を示しています(左上が被害者のシステムのコンソール、右下が攻撃者のコンソール)。仮にAIが管理者権限で動作していた場合、攻撃者は被害者のシステムの管理者権限を奪うことができます。これにより、データの破壊やシステムの乗っ取り、機微情報の窃取などの甚大な被害が発生してしまいます。機械学習フレームワークの機能を悪用した攻撃を防ぐためには、信頼できないドメインから入手した事前学習モデルを使用しないことや、万が一攻撃を受けた場合の影響を最小限に抑えるために、AIをサンドボックス環境内で実行するなど、多層防御の観点でAIを運用する必要があります。–」にて詳しく説明します。本工程では、作成したAIをデプロイし、外部向けにAIサービスを提供します。敵対的サンプル攻撃はAIの誤分類を誘発する攻撃であり、攻撃者がAIへの入力データに微細な摂動を加えるところから攻撃が始まります。この摂動が加えられたデータを敵対的サンプルと呼び、敵対的サンプルを受け取ったAIは、このデータを攻撃者が意図したクラスに誤分類してしまうことになります。Examples)を作成し、これをAIに入力している様子を表しています。敵対的サンプルを受け取ったAIは、人間の目には船に見える画像を蛙(Frog)として誤分類していることが分かります。敵対的サンプルに加えられている摂動は微細であるため、入力値の検証機構で異常を検知することは困難です。敵対的サンプル攻撃を防ぐためには、敵対的学習や蒸留、アンサンブル・メソッドなどの機械学習に基づいた対策を行い、AIの頑健性を向上させる必要があります。–」にて詳しく説明します。次に、本工程で起こり得るもう一つの攻撃であるモデル/データ抽出攻撃を説明します。本攻撃には様々なアプローチがありますが、ここではメンバーシップ推論と呼ばれる、AIが学習したデータを推論する攻撃を取り上げます。メンバーシップ推論は標的のAIが学習したデータを特定する攻撃であり、攻撃者はAIへのクエリアクセスとその応答に含まれる信頼スコアを利用し、特定の入力データがAIの学習データに属しているか(メンバーシップであるか)を推論します。AIの学習において特定のデータを過剰に学習した場合、過学習が引き起こされます。過学習は分類精度の低下を引き起こすことが知られていますが、メンバーシップ推論攻撃に対しても脆弱になります。