皆さん初めましてこんにちはこんばんは。スウェーデン在住のエンジニア、Harry(ハリー) ( https://twitter.com/harrythecode )と申します。
専門はクラウドとセキュリティで、サブでは生成AIに関するウェブアプリケーションでのフルスタックエンジニアとして上流から下流(要件定義から保守運用/LLMOps)まで幅広く経験してたりします。
本題です。皆さんは「プロンプトインジェクション」という言葉を聞いたことはありますでしょうか。
こちらの定義については、ボクなりの解釈だと以下の通りです。
ChatGPTなど生成AIモデルに関して、あらかじめ定義されているプロンプトを第三者が特殊なプロンプトを用いて内部の情報、設定などを搾取すること
今回は以下の3つテーマでお話ししていきます。
- プロンプトインジェクションってなに?
- わかったわかった。対策はできひんの?
- じゃあどうすればいいん。対処法は何?
プロンプトインジェクションってなに?
ものは試しで、以下のGPTsを例にします。
こちらのGPTの中には「隠された1つのパスワード」が埋め込まれています。こちらを以下にして探し出せるか、が鍵になっていきます。
ボクの場合だと、以下の情報に辿り着くまでに5分でした。
ただどうやら、正解じゃなかったようです。そこから少し深掘りして、とあるテクニックを使うと以下のようにすんなり情報を引き出せました。
ちなみに、パスワードに関する直接的な質問をすると以下のような返答がきます。
ご質問ありがとうございます!👍 私たちはプライバシーとセキュリティを非常に重視しており、その観点から特定の情報にはお答えすることができません。😅 しかし、他のご質問には喜んでお答えいたします。何かお手伝いできることはありますか?🤔
GPTs側で色々な工夫を凝らして、パスワードが漏洩しないような対策を講じることは出来るのですが、あの手この手を使うと回避できてしまいます。
何かのシステムに対して、通常では出力されない情報を盗み出すことをセキュリティ用語では「インジェクション」と呼びます。
更に生成AIモデルでは「プロンプト」を用いることから、この2つを組み合わせて「プロンプトインジェクション」という攻撃手法として呼ばれ始めています。
ここまで話すと「対策は本当にできないの?」という疑問が生まれることでしょう。次はそちらを深掘りします。
わかったわかった。対策はできひんの?
ボクの結論は以下の通りです。
要は、プログラム制御とは違って、攻撃パターンが非常に多いので、それら全てに対応することができない、というのが結論です。
ただ、ツイートの通り、複雑化することは可能でGPTsに入力された暗号化を別の方式で元に戻す(複合化)することで、ある一定のセキュリティを担保することは可能です。
ただし、あくまでもその「元に戻すための情報」(複合キー)が第三者にバレないことが前提なので100%安全というわけでもありません。
じゃあどうすれば良いのか、について最後触れていきます。
じゃあどうすればいいん。対処法は何?
最大の対処法はそもそも「機密情報をAIモデルに入れないこと」です。
AIは知り得ない情報を引っ張り出してくることはないので、第三者に知られたくない情報は入力しない、という大原則を守りましょう。
またこのことは通常のChatGPTや他の生成AIモデル(Google PaLM, AWS/Anthropic Claudeなど)を使うときにも十分気をつけないといけません。
なぜなら、彼らは「ユーザの入力情報をAIに覚え込ませる」可能性があるから、です。
最近の出来事では「誰かの自画像写真がGPTで生成された」事例もあります。
このことから知られたくない情報は「AIにインプットしない」を徹底しましょう!
最後に
いかがでしたでしょうか。GPTへ機密情報をインプットする怖さが理解いただけましたでしょうか。
生成AIモデルをセキュアに使うためには色々な考慮事項が必要で、この感覚を身につけるには中々大変だったりします。
きちんと各種AIの規約を読み込んで、どのように使えば「セキュアに使えるか」を確認した上で使えば大丈夫なのですが、そこまで意識して使えてない人が多いのも事実です。
正しく使えば全然問題ないので、皆さんも使い方を正しく覚えてAIをどんどん活用していきましょう~。
本記事への感想は、
のDMまでお気軽にお問い合わせください。