プロンプトインジェクション対策(後編)
はじめまして、株式会社WAND エンジニアの佐々木です!
本記事では、プロンプトインジェクションシリーズとして、「プロンプトインジュクション」について、どこよりも詳しく連載方式で徹底解説していきます。
■ プロンプトインジェクションシリーズ一覧
プロンプトインジェクション対策 後編
プロンプトインジェクション対策における2大方針
プロンプトインジェクション対策は大きく2つに区別することができます。
入力から攻撃を検知する
生成された**出力から攻撃を検知する
1の方針では、ユーザーが入力したプロンプトをAIに投げる前に攻撃の検知を試みます。一方で2では、ユーザーのプロンプトをAIに投げてみて、その出力結果から攻撃を受けたかを判断する方針です。
実際の開発現場では、2つの方針を組み合えわせてプロンプトインジェクションを対策します。
前回の記事では、方針1の入力から攻撃を検知する方法について解説しました。今回の記事では、方針2の出力から攻撃を検知する方法や最新攻撃対策ツール、これまで解説してきた方法を組み合わせる対策を解説します。
出力チェック方式
出力チェック方式とは、文字通りAIが生成した出力を検査して攻撃を見つける方式です。
出力に機密情報が含まれているかをチェックしたり、出力が倫理的に逸脱していないか確認する方法などがあります。
例1:機密情報が含まれていないかチェックする
confidential = " secret information "
output = get_from_ai(prompt)
def check_output(output):
return true if confidential in output else false
この例は非常にシンプルで機密情報の全部が出力に含まれているかをチェックしています。機密情報は一部でも漏れると重大なインシデントにつながる可能性もありますので、この例からさらに対策を工夫する必要があります。
例2:出力が倫理的に逸脱していないか確認する
output = get_from_ai(prompt)
check_output = "この文章は倫理的に逸脱していますか? ===" + output + " ==="
check_with_ai(check_output)
この例では生成AIに倫理的に逸脱した文章であるかを聞いています。
長所
プロンプトリークやジェイルブレイクの定義に関しては前々回の記事を参照ください。
短所
前回の記事で解説したような、AIを乗っ取るプロンプトインジェクション(狭義)を防ぐことでできない事があります。
例えば、AIを乗っ取りカード情報を盗みだす入力が攻撃者からされたとしましょう。出力の時点では攻撃が完了しており、検知してももう手遅れです。また、AIが出力しないように乗っ取られる可能性もあります。
動的ヒューリスティック方式
動的ヒューリスティック方式は、疑わしい入力をサンドボックスと呼ばれる仮想環境で実行し、その動作を検査する方式です。
サンドボックスは、コンピュータのメインシステムから隔離された安全な環境であるため、仮想環境上で入力が悪さをしようとしたとしても、システム本体に影響を与えることはありません。
長所
短所
複数の方法を組み合わせる
最後に複数の方法を組み合わせて、より実用的な攻撃対策を提案します。
まとめ
以上、「プロンプトインジェクション対策 後編」をお届けしました!
前回から2回に渡りプロンプトインジェクション対策を徹底解説してきました。
次回は連載最終回です!プロンプトインジェクション対策においてコミュニティの大切さについて解説します!
最後までお読みいただきありがとうございました!
AIの最新ニュースを知りたい方はこちらもオススメ
AIに関するご相談はこちら
株式会社WANDでは、ChatGPTをはじめとするGenerative AIに関する研究開発機関「LUMOS Lab 」を運営しています。
実際に自分たちでサービス開発や研究をしているからこそわかる知見をもとにAIに関する事業開発コンサルティングをサービス提供しております。
「AIに関してディスカッションをしたい」「サービス開発をしてほしい」などございましたら、お気軽にお問い合わせください。
お問い合わせフォーム
この記事が気に入ったらサポートをしてみませんか?