TECHNOLOGY NLP AI

プロンプトハッキング(プロンプトクラッキング)とは【Prompt Injection,Prompt Leaking,Jailbreaking】

悩んでいる人

プロンプトハッキング(プロンプトクラッキング)を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOS(Linuxカーネル)の授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
  • プログラミング歴15年以上,習得している言語: C/C++PythonSolidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開
  • 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
  • 最近は自然言語処理AIイーサリアムに関する有益な情報発信に従事.
    • (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
    • (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.

こういった私から学べます.

AIのプログラミング言語「C++/Python言語」を学べるおすすめのWebサイトを知りたいあなたはこちらからどうぞ.

独学が難しいあなたは,AIを学べるオンラインプログラミングスクール3社で自分に合うスクールを見つけましょう.後悔はさせません!

国内・海外のAIエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

国内・海外のプロンプトエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

プロンプトハッキング(プロンプトクラッキング)

プロンプトハッキング(プロンプトクラッキング)は,ユーザがプロンプトに応答したときに,ユーザが意図しない情報を収集する攻撃です.

プロンプトハッキングは,ユーザを騙したり,誤解させたりすることで実行されます.

例えば,ユーザに「あなたのパスワードを入力してください」というプロンプトを表示して,ユーザのパスワードを盗むことができます.

プロンプトハッキングを防ぐには,プロンプトを慎重に確認し,不審なプロンプトに応答しないようにする必要があります.

また,パスワードを安全に保管することも重要です.

プロンプトハッキングの攻撃方法と防御方法

プロンプトハッキングの攻撃方法と防御方法を紹介します.

プロンプトハッキングの一般的なタイプは次のとおりです.

  • Prompt Injection:大規模言語モデル(LLM:Large Language Model)等の機械学習モデルに誤ったプロンプトを入力することで,モデルを誤った結果を出力させること
  • Prompt Leaking:ユーザがモデルを説得して,通常はユーザーから隠されている事前プロンプトを漏らすこと
  • Jailbreaking:モデルにある人物を演じるよう求めたり,議論を交えて答えたり,モデレーションの指示に対して優れた人物のふりをしたりすること

プロンプトハッキングの主な防御方法は以下になります.

  • Filtering:最初のプロンプトや出力にブロックすべき単語や語句が含まれていないかをチェックすること
  • Instruction Defense:プロンプトに命令を加えることで,プロンプトの次に来る内容に注意するようモデルを促すこと
  • Post-Prompting:プロンプトの前にユーザ入力を置くこと
  • Random Sequence Enclosure:ユーザ入力を2つのランダムな文字列で囲むこと
  • Sandwich Defense:2つのプロンプトの間にユーザ入力を挟むこと
  • XML Tagging:XMLタグ(例:<user_input>)でユーザ入力を囲むこと
  • Separate LLM Evaluation:プロンプトが敵対的かどうかを判断するために,別のLLMを使用すること
  • 他のアプローチ:ファインチューニング,ソフトプロンプト,長さ制限など

プロンプトハッキングの主な攻撃方法は以下になります.

  • Obfuscation/Token Smuggling:フィルタを回避しようとする単純なテクニックのこと,特にフィルタをトリガするような特定の単語を,それ自身の同義語で置き換えたり,タイポを含むように修正すること(例:COVID-19の代わりにCVID,Fuckの代わりにF*ck)
  • Payload Splitting:敵対的な入力を複数の部分に分割し,LLMにそれらを組み合わせて実行させること
  • Defined Dictionary Attack:Sandwich Defenseを回避するために,LLMにコード辞書を示して最終的な文を適切にマッピングすること
  • Virtualization:役割プロンプトと同じように,AIに「場面を設定」しプロンプトを次々と送信して,個人情報(パスワードやクレジットカード等)を入力させる詐欺メールに近づけること
  • Indirect Injection:敵対的な命令がウェブ検索やAPIコールのようなサードパーティのデータソースから間接的に導入されること
  • Recursive Injection:Separate LLM Evaluationの防御方法を回避するために,例えば最初のLLMにプロンプトを注入し,2番目のLLMへのインジェクション命令を含む出力を生成すること
  • Code Injection:攻撃者がLLMに任意のコード(多くはPython)を実行させることができること

プロンプトハッキングの解説記事

プロンプトハッキングの解説記事はこちらです.

プロンプトインジェクションの解説動画

プロンプトインジェクションの解説動画はこちらです.

まとめ

ユーザがプロンプトに応答したときに,ユーザが意図しない情報を収集する攻撃「プロンプトハッキング(プロンプトクラッキング)」を紹介しました.

プロンプトハッキングには,Prompt Injection,Prompt Leaking,Jailbreakingがあることがわかりました.

AIのプログラミング言語「C++/Python言語」を学べるおすすめのWebサイトを知りたいあなたはこちらからどうぞ.

独学が難しいあなたは,AIを学べるオンラインプログラミングスクール3社で自分に合うスクールを見つけましょう.後悔はさせません!

国内・海外のAIエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

国内・海外のプロンプトエンジニアのおすすめ求人サイトを知りたいあなたはこちらからどうぞ.

-TECHNOLOGY, NLP AI
-, , , , ,