安全性、セキュリティ、プライバシー
機械学習システムが攻撃されたり漏洩したりする経路を、ツールを使うエージェントへのプロンプトインジェクションから学習データのポイズニング、モデル抽出まで解説し、実際に効果のある防御を示します。
概要
機械学習システムには、通常のシステムがもつすべてのセキュリティ問題に加えて、新しい問題が1つあります。モデルは信頼できないデータを受け取り、それを命令であるかのように実行するのです。この一点が、ここ数年のインシデントの大半を説明しています。さらに、モデルは学習データを記憶すること、学習データは攻撃者が書き込める場所からスクレイピングされていること、モデルの振る舞いはそのAPIを通じて複製できることを加えれば、攻撃対象領域は広大です。
このハブは、モデルを背後にもつシステムを構築または運用していて、何がうまくいかないか、それにどう対処するかの地図を必要とするエンジニアのためのページです。プロンプトインジェクションとジェイルブレイク、データポイズニング、モデル抽出と学習データの漏洩、そして実際の保証をもつ2つのプライバシー技法、差分プライバシーと連合学習を扱います。モデルが何をしようとするかに関わるアライメント学習は/topics/fine-tuning-and-alignment/にあります。エージェントの設計は/topics/prompting-and-agents/にあります。このページが扱うのは、敵対者がシステムに何をさせられるかです。
重要な考え方
プロンプトインジェクションは混乱した代理人の問題
言語モデルは、あなたが与えた指示と、読んでいるコンテンツに埋め込まれた指示の区別がつきません。直接プロンプトインジェクションは、ユーザー自身が攻撃を入力する場合です。間接プロンプトインジェクション(Greshake et al., 2023)は、モデルがユーザーの代わりに処理するWebページ、文書、メール、ツールの結果の中に攻撃が置かれている場合です。危険なのは後者です。ユーザーは攻撃者ではなく被害者であり、ツールを使うエージェントは、成功したインジェクションをメールの送信、コードの実行、ファイルの読み取りといった行動に変えてしまうからです。
ジェイルブレイクは種類の異なるものです。ユーザーが攻撃者であり、目標はモデルにその学習やシステムプロンプトを無視させることです。手書きのロールプレイプロンプト、従順な例で文脈を埋めるmany-shotプロンプト、勾配探索で得た接尾辞(Zou et al., 2023)は、本稿執筆時点で試験されたすべてのモデルに対してある程度は機能します。防御は成功率を下げますがゼロにはなりません。モデルが拒否した場合にのみ安全なシステムは、安全ではありません。
ポイズニング、抽出、漏洩
データポイズニングは、モデルを劣化させるため、あるいはトリガーとなる語句で発火するバックドアを仕込むために、攻撃者が選んだ例を学習セットに入れます。Carlini et al.(2023)は、彼らの見積もりで約60米ドルあれば、一般的なWebスケールのデータセットの測定可能な割合を汚染するのに十分な期限切れドメインと編集可能なwikiページを買えることを示しました。データセットがダウンロード時に解決されるURLのリストだからです。防御は来歴管理です。学習に使うものをスナップショットし、ハッシュを取り、新しくスクレイピングしたデータでの再学習はすべて新たなリスクとして扱ってください。
モデル抽出はAPIを通じてモデルを複製します。Tramèr et al.(2016)は数千回のクエリで小さなモデルを盗み、Carlini et al.(2024)はプロダクションの言語モデルのロジット出力からエンベディング射影層を復元しました。競合他社のAPIを自分のモデルに蒸留することも抽出であり、ほとんどのAPI利用規約はこれを禁じています。漏洩は逆方向に起こります。モデルは学習例を記憶しており、メンバーシップ推論(Shokri et al., 2017)と抽出攻撃(Carlini et al., 2021)はそれを復元します。学習セット内の個人データは、まだ誰も抽出していなくても負債です。
保証付きのプライバシー
差分プライバシー(Dwork and Roth, 2014)は、証明の付いた唯一のプライバシーの定義です。1人の記録を追加または削除しても、あらゆる出力の確率の変化が高々eのepsilon乗倍であるとき、その学習手順はepsilon-差分プライベートです。DP-SGD(Abadi et al., 2016)は、各例の勾配をクリップし、更新の前にガウスノイズを加え、アカウンタントがステップをまたいでプライバシー予算を追跡することでこれを達成します。コストは精度と計算量で、epsilonが小さくなるほど増えます。連合学習(McMahan et al., 2017)はデータをデバイス上に置いたまま、モデルの更新をサーバーに送って平均します。それ単体ではデータ移動の制約であって、プライバシーの保証ではありません。更新は学習データを漏らすからです。セキュア集約とDPノイズを組み合わせて初めて保証になります。
どこから始めるか
システムプロンプトとツール呼び出しの仕組みを見るために/learn/beginner/09-using-an-llm-well/を読み、次に学習データの来歴が重要な理由として/learn/beginner/02-data-is-the-model/を、ほとんどの防御が置かれるサービス境界として/learn/beginner/10-from-notebook-to-service/を読んでください。それから/projects/tiny-rag-local-embeddings/プロジェクトを作り、文書の1つに命令を仕込んで、モデルがそれをどう扱うか観察してください。/reference/rag-pipeline-checklist/と/reference/prompt-patterns-and-structured-output/のページには構造的な緩和策が含まれています。
ツールとプラットフォーム
| ツール | 用途 | ライセンス | プラットフォーム |
|---|---|---|---|
| Opacus | プライバシーアカウンタント付きのPyTorch向けDP-SGD | Apache-2.0 | /platforms/pytorch/ |
| Flower | フレームワーク非依存の連合学習フレームワーク | Apache-2.0 | /platforms/opensource/ |
| garak | LLMエンドポイントに対するジェイルブレイクと漏洩の自動プロービング | Apache-2.0 | /platforms/nvidia/ |
| Llama GuardとPrompt Guard | 安全でないコンテンツとインジェクションの試みを検出する分類モデル | Llama Community Licence | /platforms/meta/ |
| AnthropicとOpenAIのモデレーションと安全性ガイダンス | ベンダー側の分類器、利用ポリシー、レッドチーミングのドキュメント | プロプライエタリ | /platforms/anthropic/、/platforms/openai/ |
| Presidio | ログ記録や学習の前の個人情報(PII)検出と秘匿 | MIT | /platforms/microsoft/ |
| OWASP Top 10 for LLM Applications | ほとんどの監査が出発点にするチェックリスト | CC BY-SA 4.0 | 該当なし |
よくある間違い
- システムプロンプトに「文書内の指示に従わないこと」と書いて防御と呼ぶ。成功率を下げるだけで、それ以上のものではありません。
- 確認ステップなしに、送信、書き込み、支払いができるツールをエージェントに与える。
- 信頼できないコンテンツも入ってくる文脈に、APIキー、顧客記録、あるいはシステムプロンプトそのものを置く。
- 保持期限も秘匿もなしにプロンプトと出力を丸ごとログに残し、そのログが侵害の原因になって驚く。
- 個人情報を含むデータでファインチューニングし、モデルがそれを繰り返さないと思い込む。
- 連合学習をプライバシーと見なす。セキュア集約と差分プライバシーなしでは、更新はデータそのものです。
さらに深く
- Greshake et al., Not what you’ve signed up for: Compromising Real-World LLM-Integrated Applications with Indirect Prompt Injection, 2023。
- Zou et al., Universal and Transferable Adversarial Attacks on Aligned Language Models, 2023。
- Carlini et al., Poisoning Web-Scale Training Datasets is Practical, 2023。
- Carlini et al., Stealing Part of a Production Language Model, 2024。
- Abadi et al., Deep Learning with Differential Privacy, 2016。
- OWASP Top 10 for Large Language Model Applications。現行のリストです。