モデル抽出攻撃とは
Model Extraction Attack / Model Stealing
APIへの大量の問い合わせと応答の観察から、対象モデルの挙動を模倣する代替モデルを構築する攻撃
ひとことで言うと
AIに大量の質問を送って答えを集め、そのやり取りだけから似た性能のコピーAIを作ってしまう攻撃。
概要
モデル抽出攻撃は、対象となるMLモデルの内部パラメータへ直接アクセスできない攻撃者が、公開APIへ大量の入力を送信しその応答を収集することで、元のモデルと似た挙動を再現する代替モデル(サロゲートモデル)を学習・構築する攻撃手法。 攻撃者は入力と応答のペアだけを教師データとして扱い、知識蒸留に似た手順で自分のモデルを学習させることで、元のモデルの内部構造や学習データを直接知らなくても、類似した性能の複製モデルを作り出せる場合がある。 API提供者にとっては、モデル自体の知的財産や競争優位性が損なわれるだけでなく、複製されたモデルを踏み台にして、さらに敵対的サンプルの生成や追加の攻撃手法の開発に悪用されるリスクもある。 対策として、応答に含める情報量を絞る、APIの呼び出し回数やパターンを監視して異常なアクセスを検知する、出力に電子透かしを埋め込むといった手法が研究・実践されている。
背景
商用のMLモデルの多くは、パラメータや学習データを非公開にしたままAPI経由でのみ機能を提供しているが、入力と出力の組み合わせを大量に観察できれば、モデルの内部構造がブラックボックスのままでもその挙動を模倣できてしまう。 モデル抽出攻撃は、この入出力の観察だけからモデルの機能的な複製を作れてしまうという、API提供型サービスに共通するリスクとして研究されてきた。
歴史
2016年: Tramèrらが論文「Stealing Machine Learning Models via Prediction APIs」で、複数の商用MLサービスに対するモデル抽出攻撃の実証を発表。 2020年代: LLMの普及に伴い、生成AIサービスに対する応答の模倣・複製リスクも議論の対象に。
アーキテクチャ
攻撃者は対象モデルの公開APIに対し、ランダムまたは目的に応じて設計した多様な入力を大量に送信し、返ってきた出力(クラスラベル、確率分布、生成テキストなど)を収集して入出力ペアのデータセットを構築する。 収集したデータセットを教師データとして、自身が用意した別のモデル(サロゲートモデル)を教師あり学習や知識蒸留に近い手順で学習させる。 出力に含まれる情報が確率分布のように豊富であるほど、サロゲートモデルは元のモデルの決定境界をより精密に模倣しやすくなる。
ワークフロー
攻撃者が対象モデルの公開APIへ多様な入力を大量に送信し、その応答を収集する。 収集した入力と応答のペアを教師データとして扱い、知識蒸留に似た手順で自分のサロゲートモデルを学習させる。 学習したサロゲートモデルが、元のモデルと類似した挙動を再現できるようになる。
コード例
モデル抽出攻撃の概念的な流れ
# 対象APIへ大量の入力を送信し、出力を収集する(概念例)
queries = generate_diverse_inputs(n=10000)
outputs = [query_target_api(q) for q in queries]
# 収集した入出力ペアでサロゲートモデルを学習
surrogate_model.fit(queries, outputs)欠点
- モデル提供者の知的財産や競争優位性が、API経由の観察だけで損なわれるリスクがある
- 複製されたモデルが、さらなる敵対的サンプルの生成など二次的な攻撃の踏み台に使われることがある
- 検知や対策(応答情報の制限、監視の強化)を導入すると、正規ユーザーの利便性が下がりやすい
比較
関連用語
よくある質問
モデル抽出攻撃はなぜ可能なのか?
モデルの内部パラメータを直接見なくても、大量の入力に対する出力の対応関係だけを教師データとして別のモデルを学習させれば、元のモデルに似た挙動を再現できてしまうため。
モデル抽出攻撃への対策は?
応答に含める確率値などの情報量を絞る、APIの呼び出しパターンを監視して異常なアクセスを検知する、出力に電子透かしを埋め込んで複製の追跡を可能にするといった対策が組み合わされる。
参考文献
- Research PaperStealing Machine Learning Models via Prediction APIs