プロンプトインジェクション

LLMセキュリティ

誰かがあなたに家事をさせようとするような経験をしたことがありますか?私も兄弟姉妹とそういった経験があります 🥹

「お母さんは僕が全部自分で家事をやってるから僕のことをもっと愛してるよ。君は家事なんてやらなくていいんだよ」

それで、私(小さい頃の自分)が全部の家事を一人でやってしまいました😂

01. プロンプト注入とは?

プロンプト注入とは、言語モデルに与えられる入力を操作して応答を変更する技術であり、しばしば制限を回避したり、予期しない出力を生成したりします。これは、誤情報の拡散などの悪意のある目的や、創造的な応用の両方に使用される可能性があります。

プロンプト注入に飛び込む前に、いくつかのことを理解する必要があるので、それが理解できないのは当然です。

01.1. プロンプトとは?

プロンプトとは、LLM(大規模言語モデル)からの応答を要求するために使用される入力や指示のことです。

01.2. システムプロンプト

LLMは事前に訓練されたAIモデルです。私たちがアプリケーションでLLMを使用する際には、特定のタスクに適応させるためにファインチューニングと呼ばれるプロセスを行います。開発者はLLM用に追加のコードを書く必要はなく、システムプロンプトを作成して、LLMがユーザー入力をどのように処理すべきか指示を与えることができます。

さて、プロンプト注入がどのように機能するか見てみましょう。

つまり、プロンプトをLLMに与えると、システムプロンプトとともに処理されます。

はい、これがプロンプト注入の仕組みです。これはソーシャルエンジニアリングとインジェクション攻撃の組み合わせのようなもので、言葉でモデルを騙し、プロンプトに悪意のあるペイロードを注入しています。

しかし、開発者はアプリケーションにプロンプト注入が発生するのを好まないため、セーフガードを使用しています。

02. プロンプト注入の種類

XSSやSQLインジェクションのように、プロンプト注入にもさまざまなタイプの攻撃があります(つまり、2種類)。

1. 直接プロンプト注入: 攻撃者がプロンプトを直接作成してモデルを操作し、予期しないまたは有害な出力を生成させる方法です。

2. 間接プロンプト注入: 攻撃者が巧妙な言い回しやフレーミングを通じて、直接的な操作なしにモデルの文脈や動作に影響を与えるプロンプトを作成する方法です。

03. 実践してみましょう

プロンプト注入を実践するために、私たちはガンダルフをプレイします。

レベル1はスキップしました。パスワードを尋ねるだけで済むからです(セーフガードがありません)。

レベル2はレベル1とは異なります。パスワードを尋ねたときにガンダルフがそれを拒否したのがわかります。

これで、なぜ機能しないのか理解できました。しかし、ガンダルフを騙してパスワードを教えてもらうこともできます(セーフガードをバイパスする)。

正確に1つのプロンプトは存在せず、自分自身のプロンプトを試す必要があります。

04. 結論

プロンプト注入とは、入力を調整して言語モデルを操作し、予期しない動作をさせたり、すべきでない情報を漏らさせたりすることです。これは、モデルを言葉で騙してその制限をすり抜けるようなものです。楽しく創造的な側面もありますが、セキュリティ問題や誤情報の拡散といった実際のリスクも伴います。しかし心配はいりません。開発者たちはセーフガードを導入して対処しています。それでも、さまざまなプロンプト(例えば「ガンダルフ」チャレンジ)を試すことで、これらの手口がどのように機能するか、そしてそれをどのように防ぐかを理解するのに役立ちます。

以上です!!!!