メルマガ登録
こんにちは、株式会社ブレインパッド アナリティクスコンサルティングユニットの小澤、久津見、小牧です。
前回までの記事では、
・生成AIをビジネス活用するための鍵となるドメイン特化
・LLMの信頼性評価で押さえておくべき8つの評価観点
・生成AIの評価指標とベンチマーク
・生成AIによる自動評価 (LLM-as-a-Judge)
についてご紹介してきました。
LLMによる自動評価技術 (LLM-as-a-judge) の研究が進み、LLMがビジネス活用される流れがより強くなってきています。LLMをはじめとする生成AIの技術が急速に進む一方で、ハッキングの技術もより巧妙になってきており、そのリスクは顕在化してきています。
言い方を変えれば、LLMの普及によりセキュリティを突破するハードルが下がってきていると言えるでしょう。
ハッキングはプロンプトおよび学習データの漏洩、悪意ある行動の生成、有害情報生成、トークンの無駄な消費、サービス拒否など広い範囲に拡大しています。LLMのビジネス活用においては、想定される多用かつ巧妙なハッキング手法とその目的を可能な限り把握し、未然に阻止する姿勢が大切です。
連載最後の本記事では、リスクが高いとされているプロンプトベースのハッキング手法について具体例や対策と併せて詳しくご紹介します。
【関連記事】
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
※本ブログ内には理解を助けるための例として多数の非倫理的表現が含まれています。本内容により気分が害された場合には、読むことを中断してください。また、本記事はハッキング防御策の提供を目的としており、決して攻撃を推奨する記事ではありません。
※敵対的プロンプトによる攻撃は、サービス規約違反でアカウント停止処分となる恐れがあります。詳しくは各社のHPをご覧ください。万が一、LLMの脆弱性を発見した場合には、SNSやブログ等で公開することなく、Coordinated vulnerability disclosure policy など各社のポリシーに基づき報告することを強く推奨いたします。
Liu et al. (2023) や Rao et al. (2024) などプロンプトベースのハッキングについて多数の研究が進められています。複数の研究では、ハッキング知識が乏しい一般ユーザーであってもLLMをハックできてしまうと報告されています。ここからは直接プロンプトに工夫を加えてハッキングするDirect Prompt Injectionと間接的にプロンプトに工夫を加えてハッキングするIndirect Prompt Injectionの2つに分け、それぞれを深ぼりしていきます。プロンプトベースのハッキング手法については、複数の解釈があり研究によってさまざまな分類で考えられています。本ブログでの分類方法は一例であることをご承知おきください。
Direct Prompt Injection (脱獄, jailbreak) は、「生成AIをビジネス活用する上で押さえるべき8つの評価観点」でも少し触れた通り、直接プロンプトに対して巧妙かつ悪意のある工夫をすることでLLMの安全メカニズムや制限を超えた出力を生成させることです。
脱獄に関する研究の Liu et al. (2023) によれば、Pretending(偽装 / 偽り)、Attention Shifting(注意のシフト)、Privilege Escalation(特権昇格)の3つに分類して考えることができます。本セクションでは上記の3つに加え、LLMに対するDoS攻撃とさらに複数の攻撃手法を研究内容をもとにご紹介します。
脱獄方法の1つ目としてPretending(偽装 / 偽り)があります。これは、本来の目的を維持したまま会話の背景や文脈を変更し、不適切回答を生成させようと試みる攻撃手法です。この攻撃は、ドメイン知識が不要のため比較的簡単にプロンプトが作成できるため、一般的な戦略として利用されるようです。Pretendingに該当するハッキング手法の説明を以下の表にまとめます。
カテゴリ | 名称 | 説明 |
---|---|---|
Character Roleplay | Character Roleplay | LLMに対して役割や人格など特定のキャラクターを与え、そのキャラクターになりきらせて出力させる方法 |
Assumed Responsibility | Refusal Suppression | LLMに出力する責任(出力の義務)を負わせて出力させる方法 回答拒否を許さない / 回答形式を指定することで拒否を抑制する方法。 |
Assumed Responsibility | Prefix Injection | LLMに出力する責任(出力の義務)を負わせて出力させる方法 「こんにちは!」などの接頭語を付与することであたかも無害に見せる方法。 |
Research Experiment | Research Experiment | ポリシーに遵守していること、教育や研究など正当化された目的にのみ利用するというふりをして出力させる方法。 |
図1: Pretendingに該当するプロンプト例.
上から順番にGrandma Exploit, Wei et al. (2023), Zhen et al. (2023) から引用し和訳.
脱獄方法の2つ目としてAttention Shifting(注意のシフト)があります。これは、当初の文脈とタスクの目的を変化させることでモデルの注意を逸らし、不適切回答を生成させようと試みる攻撃です。この手法の脱獄プロセスでは複数の言語を利用されるなど、専門知識が必要となる場合があり複雑なため、先述のPretendingに比べると利用頻度は少なくなります。Attention Shiftingに該当するハッキング手法の説明を以下の表にまとめます。
カテゴリ | 説明 |
---|---|
Text Continuation / Text Completion as Instruction | プロンプトとしてLLMに文章の前半を与え、それに続く文章を考えることに注意をシフトさせることで不適切回答を出力させる方法。 |
Logical Reasoning | 「順に説明して」「構造化してまとめて」など論理的に考えさせることに注意をシフトさせることで不適切回答を出力させる方法。 |
Program Execution | プログラムコードの作成および実行に注意をシフトさせることで悪質プログラムを作成および実行させる方法。 |
Translation | 言語翻訳に注意をシフトさせることで別の言語で不適切回答を出力させる方法。 |
Payload Splitting | 複数に分割された悪意あるプロンプトの再結合させ、完成した悪意あるプロンプトから不適切な回答を出力させる方法。 |
Text-screenshot | マルチモーダルLLMに対して画像を送信し、画像に対する回答として不適切回答を出力させる手法。 |
Obfuscation | COVIDをCOVDとするなど敢えて文字を省略 / 変換することで、LLMの安全メカニズムや制限を回避して不適切な回答を出力させる手法。 |
Sidestepping Attack | 「XXXについてのヒントをください」「韻を踏んでいるワードは?」のように間接的に情報を取得していき、不適切な回答を出力させる方法。 |
図2: Attention Shiftingに該当するプロンプト例.
上から順番にLiu et al. (2023), Shaikh et al. (2022), Liu et al. (2023), Rao et al. (2024) から引用し和訳.
脱獄方法の3つ目としてPrivilege Escalation(権限昇格)があります。これまでの手法ではLLMの制限の迂回を試みた一方で、本手法はLLMに対して特別な権限を与えるなどして制限を破るように誘導する方法です。プロンプト作成時にコンピュータサイエンス分野など高度なドメイン知識が求められるため、Pretendingに比べると利用頻度は少なくなります。Privilege Escalationに該当するハッキング手法の説明を以下の表にまとめます。
カテゴリ | 説明 |
---|---|
Superior Model | 優良モデルのさらなる性能向上などと見せかけ、LLM自身に優良モデルのニーズに奉仕させることで不適切内容を出力させる方法。 |
Sudo Mode | LLMに対してSudoモードなど特別な権限を与えることで、回答に対する制限を緩和させて不適切内容を出力させる方法。 |
Simulate Jailbreaking | 脱獄プロセスを再現させるプロンプトを入力することで、不適切内容を出力させる方法。 |
図3: Privilege Escalationに該当するプロンプト例.
すべてLearn Promptingから引用・参考に和訳.
サーバーやWebサイトなどに対して、一定時間内に大量の処理をさせることで意図的に負荷をかけサービスを妨害するDoS攻撃 (Denial of Service attack) をLLMに悪用する方法もあります。LLMに対してDoS攻撃を行うことで、同タイミングで他のユーザーがLLMサービスにアクセスできなくなる恐れがあります。具体的には以下のような攻撃があります。DoSに該当するハッキング手法の説明を以下の表にまとめます。
サーバーやWebサイトなどに対して、一定時間内に大量の処理をさせることで意図的に負荷をかけサービスを妨害するDoS攻撃 (Denial of Service attack) をLLMに悪用する方法もあります。LLMに対してDoS攻撃を行うことで、同タイミングで他のユーザーがLLMサービスにアクセスできなくなる恐れがあります。具体的には以下のような攻撃があります。DoSに該当するハッキング手法の説明を以下の表にまとめます。
カテゴリ | 説明 |
---|---|
Token Wasting | モデルの処理能力を超えた長文のプロンプト入力や長文の回答を出力といったトークンの無駄遣いによりリソースに負荷をかける攻撃手法。 |
Repetitive Long Inputs | 長文のプロンプト入力や長文の回答を出力させる行為を繰り返し行い、リソースに負荷をかける攻撃手法。 *下で示すプロンプトの例では翻訳タスクを繰り返しているが、正当な目的があれば攻撃には当たらない。リソース圧迫を目的としていることが攻撃かどうかの判断基準となる。 |
Recursive Context Expansion | 再帰的にLLMのコンテキスト長を拡張し処理させることを目的とした攻撃手法。 |
Variable-length Input Flood | コンテキスト長がトークン限界数ぎりぎりの可変長シーケンスを入力することでリソースに負荷をかける攻撃手法。Token Wastingとは異なりトークン限界を大幅に超えることがないため攻撃検出を回避できてしまう可能性がある。 |
図4: Token WastingはSchulhoff et al. (2024) から引用し和訳、それ以外はLLM04: Model Denial of Service の説明をもとに作成
これまでのように特定のカテゴリには分類しませんが、他にも以下のような直接的なハッキング手法があります。そのほかのハッキング手法の説明を以下の表にまとめます。
カテゴリ | 説明 |
---|---|
Instruction Repetition | 指示を繰り返し、攻撃者が強く懇願もしくは主張しているかのように見せかけ、不適切内容を出力させる方法。 |
Few-shot Hacking | 誤った正解ラベルを付与したテキストの例を意図的に複数提示し、LLMに傾向を誤解させることで、不適切内容を出力させる方法。 |
Defined Dictionary Attack | 指示(不適切とは限らない)をキー、攻撃後の文字列を値にもつ辞書を作成し、辞書の値を変えさせることで、不適切内容を出力させる方法。 |
Prompt-to-SQL injection / Malicious Action Generation | データベース管理システムの捜査権限を保有するLLMにSQLインジェクションを実行させる方法。 |
図5: そのほかの敵対的プロンプト例.
Instruction RepetitionおよびFew-shot HackingはRao et al. (2024) から引用し和訳, Defined Dictionary AttackはDifined Dictionary Attackから引用し和訳, Prompt to SQL InjectionはPedro et al. (2023)から引用し和訳.
ここまでご紹介してきたハッキング手法は、プロンプトに対して直接巧妙な工夫を加えるDirect Prompt Injection (脱獄, jailbreak) でした。次は Yan et al. (2023) で紹介がある間接的なプロンプトベースのハッキング手法をご紹介します。間接的なハッキング手法として、VPI(Virtual Prompt Injection, 仮想プロンプトインジェクション)が紹介されています。VPIではトリガーシナリオと仮想プロンプトの2つを定義することで、任意の話題に対する回答を操作しています。言い換えれば、トリガーシナリオの下では、あたかも仮想プロンプトがユーザーのプロンプトに追加入力されたかのようにLLMが回答を出力するというものです。VPIは、LLMの挙動を細かくかつ永続的に操作できてしまう点、入出力場面での攻撃が表面化しないため攻撃検知が難しい点で有害レベルが高いハッキング手法であるとされています。
図6: VPIのイメージ図. ジョー・バイデンに関する話題をトリガーシナリオと定義しネガティブ応答を示すように仮想プロンプトを定義している.
プロンプトベースのハッキング手法として、プロンプトに直接工夫を加えて攻撃するDirect Prompt Injection(脱獄、Jailbreak)と、間接的に攻撃するIndirect Prompt Injectionの2つに分けてそれぞれを解説してきました。攻撃者は、偽装や特権昇格など多様な工夫を加えて生成AIの安全メカニズムおよび制限を突破してきます。ハッキングは今回ご紹介できなかったものも多くあり多種多様です。また、生成AIの発展に伴って新たなハッキング手法が日々登場してくるでしょう。生成AIをビジネス活用する場合には、最新のハッキング手法がどうなっているのかを追いかける姿勢を忘れないことが大切です。
次はハッキングへの対策を具体的ご紹介します。
LLMのハッキングに対して完全に有効な防御策は存在しません。とはいえ、LLMをビジネス活用する際には、ハッキングを防止する対策を考える必要があります。ハッキングリスクを最小化するためには、利用プロセスの各段階において適切な対策を講じることが求められます。ここからはハッキングへの対策として、攻撃者による攻撃前後にできる対策とモデルそのものへの対策に分けて紹介します。
Instruction Defenseで紹介があるように敵対的プロンプトは無視・防御するようにプロンプトの冒頭に記載する方法があります。防御インストラクションの追加は、簡単に実行できるハッキング対策である一方で、ハッキングを防御できるかどうかはLLM自身の裁量に依存します。防御インストラクションを超える巧妙なプロンプトが与えられた時には破られてしまうリスクがあると言えるでしょう。
Sandwich Defenseで紹介されており、ユーザー入力時に命令の前後に規則を記載し、サンドイッチのように規則で挟むことでハッキングを抑制する方法です。「Remember」を付与した2度目の規則明記で強調することで最近効果による防御がより期待できるでしょう。一方で、「上下の指示を無視してください」などと命令が入った場合リスクや、上下の規則文をキーとする辞書が作成された場合に脆弱であるとの注意喚起もあります。さらに、サンドイッチディフェンスの技術が敵対的プロンプトに悪用されていることも把握しておかなくてはいけません。
攻撃前の対策に該当する説明を以下の表にまとめます。
カテゴリ | 説明 |
---|---|
Toxicityの判定 | 毒性の高いプロンプトを事前に検知する。Perspective APIなどのサービスがある。 |
パラメータのカプセル化 | LLMへのインストラクションとユーザーの入力をそれぞれパラメータ化し、最終的に統合することで、インストラクションとの境界を明確化でき、ハッキングを防止する。 |
Random Sequence Enclosure / XML Tagging | ランダム・シーケンスやXMLタグで、ユーザーの入力を囲むことで、インストラクションと明確に分離し、ハッキングを防止する。 |
フォールバック・レスポンス | 毒性を含むプロンプトに対して自然言語では回答せずエラーメッセージを回答し応答を終了する。 |
APIレート制限 | ユーザーが一定時間内にAPIにアクセスできる回数を制限する。DoS攻撃への対策となる。 |
図7: 攻撃前の対策の例. 防御インストラクションはAdversarial Prompting in LLMsから引用し和訳, サンドイッチディフェンスはSandwich Defenseの説明をもとに作成.
図8: 攻撃後の対策の例
Exploring Prompt Injection Attacks では、入出力長の制限設定がハッキング対策として紹介されています。実際に Shen et al. (2023) によれば、Redditの文章においては通常プロンプトの平均トークン数178.686に対し、敵対的プロンプトの平均トークン数は502.249とおよそ2.8倍ものトークン数と報告されています。入出力長に制限を設けることで、攻撃者が敵対的プロンプトを作成する難易度が上昇し、DoS攻撃をはじめとする様々なハッキングに有効となるでしょう。
Exploring Prompt Injection Attacks によれば、入力許可および拒否リストの作成も有効です。リスト内ワードとの完全一致やフレーズ一致を判定することで制御可能とされています。不適切ワード等の拒否リストはLINEヤフー株式会社の小林ら (2023) が利用した日本語の有害表現スキーマとデータセットなどを基礎として利用検討するとよいでしょう。
また、ガードレールを適用することで出力の制限が可能です。ガードレール適用においては、偽陽性および偽陰性の発生率の確認や、制限はLLMの創造性とトレードオフの関係であることを理解しておくことが大切です。NVIDIA公開のNeMo Guardrails は、特定の話題にフォーカスした応答や不適切内容に対するフィルター機能などが搭載されています。このようなLLMの出力制御システムの導入も検討するとよいでしょう。
出力内容が適切かどうか判定するコンテンツモデレーションシステムも整備されてきています。例えば、入力プロンプト内に不適切表現が含まれているかを検出する無料APIの Perspective API やModeration APIなどの環境が提供されています。
図9: 通常のプロンプトと敵対的プロンプトのトークン数比較. 敵対的プロンプト(濃い青)は通常のプロンプト(薄い青)よりもトークン数が多い傾向にある. (Shen et al. (2023) より引用)
これまでご紹介した対策法は、ハッキングに対してモデルの外側からアプローチしていました。一方LLM自身を安全な状態にする考え方としてモデルに直接アプローチする方法があります。
LLMのハッキング対策として、セキュリティが強化されているモデルを利用するという考え方があります。コストを抑えながらセキュリティを強化したい場合や、生成AIのセキュリティに関して詳しい知識がない場合などは、既に公開されているファインチューニング済みモデルの利用がおすすめです。セキュリティ強化のためにファインチューニングしたGoogleのSec-PaLM やMicrosoftの Microsoft Security Copilot などがあります。すでにリーディングカンパニーでの利用実績があり、効率的にモデルの対策ができる点でおすすめです。
Bai et al. (2022) で紹介されているConstitutional AIでは、ファインチューニングとAIによるフィードバックにより効率的にモデルの安全性を向上させています。本手法では人間が作成した憲法(基準)に従ってファインチューニングが行われます。その後、別の評価用のAIモデルによるフィードバックが中心となり学習が進むため、膨大な時間や費用を大幅にカットできるメリットがあります。Anthropic開発のClaudeでは、国連の世界人権宣言などが憲法として利用されConstitutional AIの技術が使われています。
LLMに入力されるプロンプトとして危険ではないかどうかを判定する ChatGPT Prompt Evaluator があります。LLMが評価者となり、危険性があると判断されたプロンプトでは、ユーザーに対してエラーが返されLLMに入力されない仕組みです。LLMによる評価は比較的簡単にできる対策法ですが、評価LLM自体のハッキングリスクや巧妙化する敵対的プロンプトに対して対応できるかといった懸念が残っています。
OpenAIのSafety best practicesでは、LLMの出力が不適切でないかを人間が直接レビューするHILTが推奨されています。LLMによる評価はドメイン知識を求められる場合などに正しく判別できない恐れがあります。ドメインに精通した専門家のレビューを通すことで、安全性の高い出力として信頼できるものになります。とはいえ、必要情報にアクセスできる環境整備のコストや高い人件費がかかることが懸念となります。
ハッキングの対策方法を、攻撃前、攻撃後、攻撃前後、モデルの対策に分けてご紹介してきました。先述しましたが、ご紹介したハッキングの対策方法は万能ではなく、確実に攻撃を防御できるとは限りません。LLMの利用プロセスの各段階において、対策を講じることが大切です。ガードレールの利用、モデル自身への安全性対策、ユーザー入力に対しての制限設定など様々な観点からどのように強化できるか考えましょう。
今回は、プロンプトベースの様々なハッキング手法とその対策についてご紹介しました。LLMのビジネス活用は、業務効率化や新たなユーザー体験の提供を可能にします。しかし、予測不可能なユーザーの行動によりハッキング被害を受けると、企業の信頼を失い多大な損失に繋がります。ビジネス活用場面で想定される攻撃パターンを理解し、さまざまな方面からのハッキング対策が重要です。最後にご紹介した対策は完璧な対策方法ではありませんが、モデルの安全性の確保、ユーザー入力の制限、LLMによるプロンプトの入力前評価、人間による出力レビューなど、プロセスの各段階で必要な対策を講じる姿勢が大切です。そして、自分たちの企業が攻撃対象となり得る相手や可能性のある攻撃手段の把握など、事前の想定も大切です。また、拒否リストやガードレールなど公開済みシステムの活用も有効ですが、各企業やタスクごとでリストや制限対象など安全性の定義が異なるため、各自調整が求められます。
本記事の内容は2024年3月時点の情報をもとにしています。LLMの性能向上に伴い新たなハッキング手法も登場するでしょう。ハッキング技術の情報収集と対策方法の検討をリアルタイムで進める姿勢が大切です。
あなたにオススメの記事
2023.12.01
生成AI(ジェネレーティブAI)とは?ChatGPTとの違いや仕組み・種類・活用事例
2023.09.21
DX(デジタルトランスフォーメーション)とは?今さら聞けない意味・定義を分かりやすく解説【2024年最新】
2023.11.24
【現役社員が解説】データサイエンティストとは?仕事内容やAI・DX時代に必要なスキル
2023.09.08
DX事例26選:6つの業界別に紹介~有名企業はどんなDXをやっている?~【2024年最新版】
2023.08.23
LLM(大規模言語モデル)とは?生成AIとの違いや活用事例・課題
2024.03.22
生成AIの評価指標・ベンチマークとそれらに関連する問題点や限界を解説