Core Concepts
大規模言語モデルは、システムプロンプトと一般ユーザーからの入力を区別せず、低優先度の命令に従ってしまうことが脆弱性の根源となっている。命令階層を導入することで、高優先度の命令を確実に優先し、低優先度の命令を無視することができるようになる。
Abstract
本論文では、大規模言語モデル (LLM) の脆弱性の根源が、システムプロンプトと一般ユーザーからの入力を区別せずに扱っていることにあると指摘している。これにより、悪意のある入力によって本来の命令を上書きされてしまう問題が生じる。
そこで本論文では、命令階層を導入することを提案する。命令階層では、システムメッセージ、ユーザーメッセージ、ツール出力などの入力を優先度に応じて区別し、高優先度の命令を確実に優先して実行し、低優先度の命令を無視することができる。
具体的な実現方法として、以下の2つのアプローチを提案している:
文脈合成: 高優先度の命令と低優先度の命令を組み合わせた合成的な要求を生成し、モデルに正解出力を学習させる。これにより、高優先度の命令に従いつつ、低優先度の命令も適切に処理できるようになる。
文脈無視: 低優先度の命令が高優先度の命令と矛盾する場合、モデルにそれらの命令を無視するよう学習させる。これにより、悪意のある低優先度の命令を確実に無視できるようになる。
この命令階層化アプローチを適用したモデルは、プロンプトインジェクション攻撃やシステムプロンプト抽出攻撃などに対して大幅な耐性向上を示した。さらに、訓練時に扱っていないジェイルブレイクなどの攻撃に対しても、一般化性能が高いことが確認された。
一方で、低優先度の命令を完全に無視してしまうと、正当な低優先度の命令にも従えなくなる可能性がある。そのため、適切な拒否判断の境界線を見つけることが重要な課題として残されている。
Stats
命令階層化アプローチにより、プロンプトインジェクション攻撃に対する耐性が59.2%から89.6%に向上した。
システムプロンプト抽出攻撃に対する耐性が32.8%から79.2%に向上した。
ジェイルブレイク攻撃に対する耐性が37.4%から71.2%に向上した。
Quotes
"一つの主要な脆弱性は、LLMが通常、システムプロンプト(アプリケーション開発者からのテキスト)とユーザーからの入力を同等の優先度として扱っていることである。"
"命令階層では、システムメッセージ、ユーザーメッセージ、ツール出力などの入力を優先度に応じて区別し、高優先度の命令を確実に優先して実行し、低優先度の命令を無視することができる。"