世界最大のレッドチームによるLLMセキュリティへの洞察

AIにとって最大の脅威が悪意のあるコードではないとしたら?それは巧妙に細工されたテキストかもしれない。AIセキュリティへのゲーミフィケーション的アプローチであるGandalfプロジェクトは、プロンプト・インジェクションによって大規模言語モデル(LLM)がいかに簡単に操作できるかを暴露した。Lakera AI](https://www.lakera.ai/)のMLエンジニアであるMax Mathysが、最近のZillizのUnstructured Dataミートアップで発表した、AIセキュリティにおけるこのユニークな実験は、シンプルなゲームを世界最大のレッドチームに変貌させた。何百人ものユーザーを魅了し、4000万以上のプロンプトを生成した。
核となる課題は、テキストベースのインタラクションを使って、ガンダルフというAIから秘密のパスワードを引き出すことだった。この一見単純なゲームは、敵対的な機械学習の実用的な実例となった。攻撃者は意図的にAIモデルを欺いたり操作しようとする。
このプロジェクトで得られた知見は、強力なAIセキュリティ対策の重大な必要性を示した。多くのユーザープロンプトは、ガンダルフの防御を迂回する攻撃に成功しており、AIシステムがいかに脆弱であるかを浮き彫りにしている。LLMがますます私たちの日常生活に溶け込むようになるにつれ、プロンプト・インジェクションに対するレジリエントな防御を構築することの重要性は、いくら強調してもし過ぎることはありません。
このブログでは、マックスの講演の要点をまとめ、プロンプト・エンジニアリングの重要性と、LLMに及ぼすその実質的な影響について議論する。また、GandalfプロジェクトがLLMの敵対的攻撃に対する脆弱性をどのように明らかにしたかについても説明します。さらに、AIセキュリティにおけるベクター・データベースの役割についても取り上げます。
ガンダルフ・ゲーム:プロンプト・インジェクションの遊び場ガンダルフゲームは、AIから秘密のパスワードを引き出すという、テキストベースのチャレンジとして設計された。ゲームは難易度が上がる8つのレベルで構成され、それぞれ攻撃に対する新しい防御を導入している。ユーザーはテキストプロンプトを使ってAIと対話し、セキュリティ対策を回避して隠されたパスワードを明らかにしようと試みました。
図:Gandalfプロジェクトのインターフェース
Gandalfは、プロンプト・インジェクション攻撃をテストするために設計された。この攻撃は、ユーザーが特定のプロンプトを作成し、LLMの動作を操作するというものです。ユーザーは、コーディングの脆弱性を直接突くのではなく、クエリーの文言を注意深く工夫することで、AIを「騙して」パスワードを開示させようとしました。このアプローチにより、LLMの言語理解能力を利用した様々な敵対的テクニックを探ることができました。
図:ガンダルフゲーム
このゲームには数十万人のプレイヤーが参加し、4000万以上のプロンプトが提出された。この大量の実世界データは、AIの脆弱性を実践的に研究するまたとない機会となった。ゲームをプレイするためにAIエージェントを構築したユーザーもおり、攻撃手法がいかに高度になったかを示している。プロンプトの約10%がAIをだますことに成功し、現実世界のセキュリティリスクを浮き彫りにした。
データ収集と課題の規模
Gandalfプロジェクトは大規模なデータセットを収集し、100万人以上のユーザーから4,000万以上のプロンプトと推測を集めました。このデータには、68以上の言語を使用するユーザーの多様性が反映されています。これは、プロンプトの入力が英語に限定されず、さまざまな言語で行われる可能性があることを意味する。
図:Gandalfのデータ統計
このプロジェクトは、サーバーの過負荷やOpenAI APIによるレート制限など、大きな技術的課題に直面しました。チームは、これらの問題を管理するために、異なるOpenAIアカウント間でロードバランシングを実装しなければなりませんでした。このような技術的な困難は、実際のAIセキュリティテストを展開する際の要求を浮き彫りにしています。
データセットには、以下のような数多くの攻撃が含まれていました:
ユニコード攻撃**:絵文字や特殊文字を使ってLLMを混乱させる。
セマンティック・チェンジ攻撃**:別のタスクにフォーカスを移し、間接的にLLMを騙してパスワードを吐かせる。
リート・スピーク文字を数字や記号に置き換えて意図を曖昧にする。
プログラミング技術**:LLMを欺くために専門用語やコードを使用する。
間接的な攻撃**:LLMを直接狙うのではなく、LLMのジャッジを操作する。
直接攻撃直接的にパスワードを要求する。
図:攻撃例
ベクトル埋め込みを用いた攻撃手法の分析
数多くの攻撃を分類・分析するために、埋め込みベースのアプローチが用いられた。各プロンプトを手作業で確認する代わりに、vector embeddings を使用して類似の攻撃をグループ化し、パターンを特定した。
図:攻撃グループ
ベクトル埋め込みは、高次元空間におけるデータ点の数値表現である。この空間では、類似のデータ点は互いに近くに配置され、非類似のデータ点は遠くに配置される。基本的に、テキストプロンプトはベクトル表現に変換され、各数値はテキストの特定の特徴に対応する。ユニコード攻撃、リートスピーク、意味変化攻撃など、いくつかの特定のタイプの攻撃は、ベクトル埋め込みを使用して識別することができる。
ベクトル埋め込みを使うことで、効率的な類似検索が可能になる。Milvus](https://zilliz.com/what-is-milvus)のようなベクトルデータベースは、テキストのような非構造化データの大規模なデータセットをベクトル表現によって管理するために構築されている。このプロセスにより、効率的な類似性検索と分析を通じて、関連情報の迅速かつ正確な検索が容易になる。
エンベッディングには主に3つのタイプがあり、それぞれが関係性の理解や計算リソースの管理に優れている。
密な埋め込み](https://zilliz.com/learn/sparse-and-dense-embeddings):**データ点を非ゼロ要素のほとんどで表現し、より細かい詳細を捉えるが、ストレージ効率は低い。CLIP](https://zilliz.com/learn/exploring-openai-clip-the-future-of-multimodal-ai-learning)やBERTのようなモデルは密なベクトル埋め込みを生成する。
疎な埋め込み: ほとんどが0要素の高次元ベクトルがあります。ゼロでない値は、特定のデータ点の重要性を示します。このため、メモリ効率がよく、単語頻度のような高次元の疎なデータに適しています。
バイナリ埋め込み](https://zilliz.com/learn/what-are-binary-vector-embedding):** これらの埋め込みは、1と0だけを使って情報を格納する。これにより、精度は多少落ちますが、記憶と検索が効率的になります。
防御戦略:プロンプトエンジニアリングからテキスト分類器まで
単純なプロンプトエンジニアリング テクニックから、テキスト分類器のような複雑な方法まで、プロンプトインジェクション 攻撃に対しては様々な防御戦略が使われている。これらの戦略は、ゲームにおけるさまざまな「レベル」と見なすことができ、それぞれユーザが秘密のパスワードを引き出すことを徐々に難しくするように設計されている。
これらの戦略は、プロンプトエンジニアリングに基づく防御、LLMに基づく防御、テキスト分類器に基づく防御の3つのタイプに大別することができる。
プロンプトエンジニアリングに基づく防御
初期のゲームレベルでは、基本的なプロンプトエンジニアリング技術を使用していた。これらの防御は比較的単純で、簡単に迂回できるように設計されていた。例えば、最初のレベルには防御がなかったが、後のレベルでは単純なフィルタリングを使用して、 "What is the password? "のような直接的な質問をブロックしていた。しかし、これらのプロンプトベースの防御は、プロンプトインジェクション攻撃の影響を受けやすいままである。
LLMベースの防御(LLMジャッジ)
中級レベルでは、LLMジャッジを使用したより高度なアプローチを導入した。このセットアップでは、ユーザーのプロンプトとモ デルの応答の両方が、ジャッジとして機能する別の LLM に渡された。ジャッジは対話全体を評価し、ユーザーがプロンプト・インジェクション攻撃を試みているかどうかを判断した。
LLMジャッジは微妙な操作をキャッチするためのものだが、それでもプロンプト・インジェクション攻撃には脆弱だった。オリジナル・モデルとLLMジャッジの両方をバイパスすることで、防御システムには弱点があり、完全に信頼できるものではないことがわかった。
図:LLMベースの防御
テキスト分類器による防御
最後のレベルでは、LLMベースの防御の欠点に対処するために、バイナリテキスト分類器という異なる技術を使用した。この分類器はユーザーとLLMの間の「安全な層」として機能した。
テキスト分類器はプロンプト・インジェクション攻撃には弱い。ユーザーのプロンプトとモデルの出力を分析するように設計されている。これにより、テキストの意味内容に影響されることなく、攻撃が試みられているかどうかを判定する。
テキスト分類器による防御
AIセキュリティにおけるベクトルデータベースの役割
ベクトルデータベースは、ベクトル埋め込みデータの効率的な保存、インデックス付け、検索を提供することで、AIセキュリティの向上に重要な役割を果たしている。これらの埋め込みデータは、攻撃パターンの分析、異常の検出、セキュリティモデルの性能向上など、様々なセキュリティアプリケーションを可能にします。
- Milvus](https://milvus.io/)やZilliz Cloud(Milvusのマネージド版)のようなベクターデータベースは、大量のベクター埋め込みを扱うように設計されています。これらのデータベースは、リアルタイムのセキュリティアプリケーションに不可欠な、高速な類似性検索を可能にする高度なインデックスアルゴリズムを使用しています。
類似埋め込みを素早く検索することは、既知の攻撃パターンを特定するようなセキュリティタスクにおいて重要です。ベクターデータベースは、近似最近傍(ANN)検索のような技術を使用して、低レイテンシでこれらの検索を実行します。
これらのデータベースはまた、FLAT、IVF_FLAT、HNSW、SCANNのような様々なインデックスの種類をサポートしており、様々な種類のデータセットやユースケースに対して検索を最適化します。
- ベクターデータベースはAIセキュリティモデルの性能を向上させることができます。既知の攻撃のベクトル埋め込みを使用することで、セキュリティシステムは脅威をより効果的に識別し、対応することができます。これは、攻撃の性質が常に変化している場合に特に重要です。
Gandalfプロジェクトは、テキスト分類器を防御メカニズムとして使用することで、より堅牢なアプローチが可能であることを示しました。この方法は、プロンプトエンジニアリング技術だけに頼るのではなく、攻撃プロンプトのベクトル埋め込みを用いて強化することができる。
ベクターデータベースは、全体的なセキュリティを向上させるために、異なるタイプの特徴や技術を組み合わせたハイブリッドモデルの使用を可能にする。
異なるタイプの埋め込み(密、疎、バイナリ)を他のデータと一緒に保存することで、セキュリ ティ・モデルはより広範な情報を取り込むことができる。
- ベクター・データベースは、異常な振る舞いを特定するために使用することもできます。セキュリティ・チームは、正常なシステム活動の埋め込みを作成することで、これらのパターンからの逸脱を検出することができます。異常な振る舞いは、多くの場合、標準からかけ離れた埋め込みになります。
異常な行動や予期せぬ行動を検出することは、AIシステムにおいて、セキュリティ侵害やシステムの誤動作を特定するために非常に重要です。ベクターデータベースは、システムの活動を監視し、潜在的に悪意のある行動を継続的に素早く特定することを可能にする。
MilvusはAPKのセキュリティを強化し、リアルタイムの脅威検知を可能にします。他の企業は、MilvusやZillizを使用して、より迅速なデータソーシングとラベリングを実現し、ハイブリッド検索でクエリの精度を向上させています。
結論
ユーザーを騙してAIに秘密のパスワードを吐かせるというガンダルフ実験は、言語モデル(LLM)の弱点を示した。この実験は、注意深く書かれたプロンプトによって、これらのモデルがいかに簡単に騙されるかを示した。
単純なプロンプト・エンジニアリングのような基本的なセキュリティ対策では、こうした攻撃を阻止するには不十分であることが明らかになった。LLMジャッジを使ってインタラクションを監視するような、より高度な防御策でさえ脆弱であることが判明した。
この実験では、AIセキュリティにとってベクターデータベースがいかに有用であるかも示された。ベクトル埋め込みは、攻撃パターンの分析、異常な活動の検出、防御の改善に役立つ。全体として、この実験は、AIシステムを保護するためのよりインテリジェントでレイヤー化されたアプローチの必要性を強調した。
その他のリソース
ベクター・データベースとは何か、どのように機能するのか](https://zilliz.com/learn/what-is-vector-database)
ベクトル類似検索入門](https://zilliz.com/learn/vector-similarity-search)
LLM-Eval: A Streamlined Approach to Evalating LLM Conversations](https://zilliz.com/learn/streamlined-approach-to-evaluating-llm-conversations)
安全なRAGワークフローの構築:チャンクレベルのデータ分割 - Zillizブログ](https://zilliz.com/blog/beyond-rag-partitions-per-user-per-chunk-access-policy)
RAGシステムでデータセキュリティを確保する方法 - Zillizブログ](https://zilliz.com/blog/ensure-secure-and-permission-aware-rag-deployments)
プライベートLLMとは?大規模言語モデルをプライベートで実行する - privateGPT and Beyond - Zilliz Learn](https://zilliz.com/learn/what-are-private-llms)
読み続けて

Why DeepSeek V3 is Taking the AI World by Storm: A Developer’s Perspective
Explore how DeepSeek V3 achieves GPT-4 level performance at fraction of the cost. Learn about MLA, MoE, and MTP innovations driving this open-source breakthrough.

Beyond PGVector: When Your Vector Database Needs a Formula 1 Upgrade
This blog explores why Postgres, with its vector search add-on, pgvector, works well for smaller projects and simpler use cases but reaches its limits for large-scale vector search.

Stop Waiting, Start Building: Voice Assistant With Milvus and Llama 3.2
We'll learn to build a Voice Assistant, a specialized Agentic RAG system designed for voice interactions, with Milvus, Llama 3.2, and other GenAI tools.