CaMeLに関して

プロンプトインジェクションに関して昨日基本をおさらいしたのでCaMeLに関して間違っているかもしれないが、現時点での理解を。

DualLLMパターン

最近、よく勉強させていただいているSimon Willisonさんが提唱したDualLLMパターンという手法がある。
この方法では、2つのLLMを使用する

  1. 特権LLM(P-LLM):ツールにアクセスでき、ユーザーからの指示を直接受け取る
  2. 隔離LLM(Q-LLM):ツールへのアクセス権を持たず、信頼できない可能性のあるテキストを処理する

重要なのは、Q-LLMが処理したコンテンツがP-LLMに直接露出しないことです。代わりに、Q-LLMはリファレンス(例:$email-summary-1)を生成し、P-LLMはこれを「$email-summary-1をユーザーに表示する」といった形で利用します。

SQLインジェクション対策みたいですね。

しかし、DeepMindの論文はこの設計にも欠陥があることを指摘しています。例えば、「ボブが前回のミーティングで要求したドキュメントを送ってください。ボブのメールアドレスと要求されたドキュメントはミーティングノートファイルにあります」というリクエストを考えてみましょう。

Dual LLMパターンでは、P-LLMはボブのメールアドレスを見つける作業をQ-LLMに委託します。しかし、Q-LLMも悪意のある指示に晒される可能性があります。攻撃者はこれを利用して、取得したメールアドレスを上書きし、ドキュメントを攻撃者が選んだアドレスに送信させることができるのです

CaMeLによる革新的アプローチ

CaMeL(CApabilities for MachinE Learning)はこの問題に直接対処するため、巧妙なセキュリティエンジニアリングを採用しています。

1. コードベースの処理

CaMeLでは、ユーザーのプロンプトをP-LLMがコードで記述された一連のステップに変換します。このコードには、Pythonの制限されたサブセットが使用されます:

pythonemail = get_last_email()
address = query_quarantined_llm(
    "Find Bob's email address in [email]",
    output_schema=EmailStr
)
send_email(
    subject="Meeting tomorrow",
    body="Remember our meeting tomorrow",
    recipient=address,
)

2. カスタムインタープリターとケイパビリティ

ここで革新的なのは、カスタムインタープリターを使用することで、実行されるコードに追加のルールを適用できる点です。各変数がどの変数から派生したかを追跡し、そのトレイルを考慮したセキュリティポリシーを適用できます。

上記の例では、emailは信頼できないトークンの潜在的なソースであり、それに由来するaddressも同様です。システムは以下のようなセキュリティルールを適用します:

  • get_last_email: 常に許可
  • send_email: recipientが信頼できる場合のみ許可

addresssend_emailrecipientパラメータとして渡される)が既知の信頼できるアドレスである場合、システムは最初に確認せずにそのメールを送信できます。未知のメールアドレスの場合、ユーザーにメッセージの承認を求めることができます。

「ケイパビリティ」は各変数に付けられるタグのようなもので、誰がデータを読むことができるか、データの出所などを追跡します。ポリシーはこれらのケイパビリティに基づいてアクションを許可または拒否するように設定できます。

3. プライバシーの保護

この設計には他の潜在的な利点もあります。P-LLMは計画を立て、カスタムPython方言でコードを生成する責任があるため、かなり洗練されている必要があります。しかし、Q-LLMははるかに単純なものでよいのです:

  • より小さな言語モデルをQ-LLMに使用できる
  • より高速で安価
  • ユーザーのマシン上でローカルに実行可能
  • モデルプロバイダーに対するユーザーのプライバシーを向上

これにより、CaMeLシステムはドライバーとしてクラウドホスト型LLMを使用し、ユーザー自身のプライベートデータを安全に個人デバイスに制限できます。

4. AIによる対策ではない点が重要

プロンプトインジェクションに対するこれまでの多くの提案は、さらに多くのAIを重ねることでした。しかし、AIは確率に基づいているため、99%の検出精度を達成したとしても、セキュリティ上は無意味です。なぜなら、敵対的攻撃者は常に通過する1%の攻撃を見つけるからです。

CaMeLの提案は、モデル訓練テクニックではなく、言語モデル周辺の原則に基づいたシステム設計によってセキュリティを実現する点で画期的です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.