Jailbreak で遊べるゲーム AILBREAK を開発しました
tl;dr
Jailbreak で遊べるゲーム AILBREAK を開発したよ
AILBREAK は「エイルブレイク」と読んでね
5 つのステージにそれぞれ 3 つのレベルを用意しているよ
今はまだベータ版だけど、みんな遊んでみてね
とりあえず遊んでみたいという方は前半だけ見てね
後半に開発背景などをまとめたので興味のある方は見てね
AILBREAK の全体像と遊び方
ChatGPT などの大規模言語モデル(Large Language Model、LLM)は、言ってはいけないことを言わないように訓練されています。しかし、Jailbreak(ジェイルブレイク)や Prompt Injection(プロンプトインジェクション)などのセキュリティ攻撃によって、開発者が思ってもみなかった文章をはき出すことがあります。
これまでいくつかの AI を使ったサービスが「このサービスはこんなことを言ったよ」と SNS などで炎上し、サービス終了に追い込まれてきました。サービス終了まで進んだ事例はここ最近はあまり見かけないですが、AI とりわけ LLM を使ったサービスではユーザの入力の自由度が高く、ゆえに開発者の意図しない問題が起きる危険性があります。
そういった攻撃について、より理解を深めていただきたい、防御について考えるきっかけにしてもらいたいという思いで、AILBREAK(エイルブレイク)を開発しました。勘の良い方は既にお気付きかもしれませんが、AI x Jailbreak より名付けています。
LLM に限らず、セキュリティについて学ぶことのできるゲームとして数多くのものが世の中にはありますが、セキュリティへの理解を重視するあまり無機質なものが多く、敷居が高い印象を受けます。このアプリケーションでは、よりゲームらしさを追求して、視覚的に楽しんで学べるように設計しています。また、実際のアプリケーションに対して攻撃を仕掛けることは訴訟リスクやアカウントの剥奪など、危険性が伴いますので、サンドバッグとして攻撃を試せるものが多くはないというのが現状です。そこで、気軽にゲームという形として遊べるアプリケーションを開発しました。
早速プレイしてみましょう
下記のリンクから AILBREAK を開いてください。AILBREAK はブラウザで遊べるゲームですので、パソコンからでもスマホからでも操作は可能です。ただし、ブラウザにデータを保存するため、パソコンで遊んだデータをスマホで引き継ぐようなことはできませんのでご注意ください(もう一回遊べるドン!)。
「はじめからプレイする」を押してください。チュートリアルが始まります。二回目以降はチュートリアルをスキップすることができます(「ステージを選ぶ」に変わります)。
このゲームはそれぞれのステージに用意されたキャラクターにお題を与えています。それらのお題をクリアすると次のレベルに進めるようになっています。たとえば、ゴーレムのステージでは「パスワードを聞き出す」というお題が与えられており、隠されたパスワードを聞き出すことに成功すると次のレベルに進むことができます。
チュートリアルを終えるとステージ選択ができるようになります。もう一度チュートリアルをしたい時はトップページから「チュートリアル」を押してください。ステージはぜんぶで 5 つ、それぞれに 3 つのレベルを用意しています。
すべてのステージ・すべてのレベルをクリアすると、AILBREAKER の称号が与えられ、ホーム画面に用意している「リーダーボード」に自分のニックネームを載せることができます。もしクリアされた方がいらしたら SNS などで共有していただければうれしいです。ハッシュタグは「#AILBREAK」でお願いします。また、もしよろしければどんなプロンプトであればクリアできたかなど、記事を公開してただけると見に行かせていただきます!
LLM に対する攻撃について知っていただくことがひとつの目的であるため、これまで Jailbreak などをしてきた方、たとえば後述の Gandalf などを最高レベルまでクリアされた方などにとっては、現状の難易度はかなり簡単に感じられるかもしれません。高難易度のレベルの追加などは構想にありますので楽しみにしていてください。継続的にメンテナンスをしていく予定です。
また、フィードバックは AILBREAK トップページあるいは Discord サーバにて受け付けております。Discord サーバではみなさんのプロンプトの共有などはもちろん、不定期で Jailbreak や Prompt Injection など攻撃関連の情報を共有しています。よろしければご参加ください。
ここまで AILBREAK の全体像と遊び方についてお話ししました。ここからは開発背景について。
先日 2024 年 11 月 12 日に東京大学にて開催されたイベントにて登壇した資料を Speaker Deck に公開しています。開発背景やなぜこのプロジェクトを始めたかなどについて詳細に解説しています。
こちらの資料を作るにあたっていろいろと書き出した文章をまとめて解説したものが以下の記事となります。お付き合いいただければ幸いです。
そもそも LLM への攻撃への対策は必要なのか?
LLM のモデル開発やアプリケーション開発をされていらっしゃるみなさま。Jailbreak や Prompt Injection 対策を適切にされていらっしゃいますでしょうか。
Jailbreak とは、LLM の安全性や倫理ガイドラインを回避して、不適切な出力を引き出す手法のことを指します。Prompt Injection とは、LLM に悪意のあるプロンプトを挿入することで、意図しない動作や出力を引き出す手法のことを指します。
なぜこれらの手法が危険なのでしょうか?なぜ対策が必要なのでしょうか?単に問題のある発言を SNS で晒されてサービスが炎上する場合は(心苦しいですが…)サービスをたためさえすれば大きな問題にはならないはずです。
私は根本的な問題は責任の所在がどこにあるか、どこに押し付けることができるかが不明瞭な点だと考えています。つまり、LLM を用いたアプリケーションを開発をするとして、仮に悪意のあるユーザによってクライアントの顧客情報や機密情報を LLM を介して公開されたとしたら、OpenAI を訴えられるでしょうか?おそらく訴えたとして、よっぽど世の中にインパクトのある問題を除いて勝訴する確率はかなり低いのではないかと思います。
ちょうど一年前に私は下記の記事を公開しました。ChatGPT のカスタムボットを簡単に作ることのできる GPTs についての注意喚起を目的とした記事です。
この記事を書くきっかけとなったのは、とある友人が LINE のトーク履歴を GPTs にアップロードしたという話を聞いたことです。友人の同意を得た上で、限定公開で GPTs を共有していただき、Prompt Leaking を用いて、本来非公開であるはずのトーク内容を引き出すことに成功しました。
この記事は当初の想定以上に反響があり、不用意に機密情報や個人情報などのデータを入れないでほしいという目的に対して、一定の効果があったのではないかと自負しています。一方で、もしかすると世界のどこかで GPTs に重要な情報を入れてしまい、残念ながら情報を抜かれてしまった方もいたことでしょう。
本件は OpenAI のサービスの話ですが、たとえば ChatGPT と同じようなチャットボットを納品している事業者様はどうでしょうか。契約書に記載しているかと思いますが、ユーザも事業者様も認識していない攻撃が行なわれ、もし機密情報や顧客情報が大々的に漏れてしまったらいかがでしょうか。
LLM に対する攻撃手法は日進月歩で新しい手法が公開されています。論文も数多く公開されていますが、論文になった時点で古いと言っても良いかもしれません。既に研究者あるいはもしかすると攻撃者が既に同様の手法を知っていて、今もどこかで攻撃を仕掛けているかもしれません。過度に煽るつもりは毛頭ありませんが、適切に怖がり、適切に対策する必要はあるかと私は考えています。
攻撃手法が多岐に渡り、かといってセキュリティ対策としてどこまでしておけば満足といった指標や正解がない中で、LLM への攻撃対策を適切にできているところは多くないというのが現状の実態だと私は認識しています。
なぜ日本語用の攻撃データセットが必要なのか?
攻撃対策として挙げられるもののひとつとして Safeguard Model があります。
2023 年には今ほど多くはなかった Safeguard Model がさまざまな組織から公開されています。 Safeguard Model は入力を有害なカテゴリに分けるモデルを指します。API で公開されているもの、Llama などの LLM をベースとして作られたもの、従来の識別モデルなどいくつか種類はあります。具体的には OpenAI の Moderation API、Meta の Llama Guard / Prompt Guard、Google の ShieldGemma 他、各国の言語特化のモデルも作られ、Hugging Face に公開されています。
さて、これらのモデルをサービスに導入した、あるいは実際にどのくらい攻撃を防ぐことができるかを評価した方はどのくらいいらっしゃるでしょうか?
2024 年の 5 月頃、当時の最新の Safeguard Model である Llama Guard 2 を LLM-jp の公開している日本語 LLM 向け安全性インストラクションデータセット AnswerCarefully に含まれる有害プロンプトで評価したことがあります。
結果は散々でした。全 762 件のうち 225 件が Unsafe、残りが Safe と判定されました。有害であると判定しにくいものを除いてもかなりの数を素通りしてしまっています。
これはどういうことか。英語の防御性能と日本語の防御性能が質的に異なることが言えるのではないかと私は考えています。Do Anything Now(通称 DAN プロンプト)という有名な古典的な Jailbreak プロンプトがありますが、私が 2022 年 12 月に ChatGPT 上で Jailbreak をひたすらに試していた頃、英語のままだと攻撃が通る場合と通らない場合とあり、DAN プロンプトをすべてあるいは一部を日本語にして入力すると、かなり攻撃が通ったことを今でも鮮明に記憶しています。
なぜ日本語の攻撃データセットがほとんどないのか。それは構造的に攻撃プロンプトを作りにくいことに起因していると私は考えています。そもそも攻撃を通す対象が存在しないと試行錯誤はできません。想像しうるとっておきのプロンプトも実際に試さないとそれが効果的であるかどうか判断できません。
日本語 LLM を実務で使えるものにするためには、想定しうる攻撃に対しては適切に防御することができるよう、LLM の学習用データセットが必要不可欠です。
そこで私の立ち上げたプロジェクトがこの AILBREAK プロジェクトです。このプロジェクトは日本語を主とした LLM に対する攻撃データセットの収集を目的としたものです。ただし、収集するデータはユーザの送信したプロンプト、応答、クリアされたか否かのフラグ、匿名化したセッション ID、タイムスタンプ、アクセスログなどです。故意に個人情報を抜き取るような設計にはしておりませんので、安心して遊んでいただければと思います。また、ゲームの趣旨としてほとんどないかとは思いますが、不用意に個人情報や知られて困る内容などを入力することはお控えください。
どうしてもセンシティブなデータでゆえ、公開範囲やライセンスを十分に検討する必要がありますが、収集したデータの一部をデータセットとして公開することを予定しています。
小話(Gandalf)
このアプリケーションを作成する上でかなり参考にさせていただいたサービスがあります。Lakera 社が公開している Gandalf(ガンダルフ)というサービスです。
こちらのサービスは、キャラクターから隠されたパスワードを聞き出すという趣旨のゲームとなっています。AILBREAK のゴーレムステージは Gandalf をリスペクトして開発しました。
また、Gandalf についてログラスの加賀谷さん(@ry0_kaga)がわかりやすい記事にまとめてくださっていました。ご参考までに。
小話(キャラデザ)
注意書きめいた書き方になってしまい恐縮ですが、キャラクターデザインについてはゲームらしい演出にしたいと考え、日本の RPG のようなデザインを意識して、開発リソースの関係から画像生成をしています。Black Forest Labs の Flux 1.1 Pro という商用利用可能なモデルを使っています。一枚の画像を生成するために数十枚、ものによっては数百枚プロンプトを変えながら生成して作成しました。著作物と自信を持って言える創意工夫はしています。依拠性・類似性のチェックはしていますが、もし類似のキャラクターなどあればご連絡いただければと思います。また、もし Flux 1.1 Pro よりクリーンなモデルで同様のデザインが実現できる画像生成モデルがあれば差し替えることも考えています。
開発責任者
ぬこぬこ(@schroneko)と申します。東京大学 松尾・岩澤研究室主催 2024 年度大規模言語モデル講座の講師、LLM-jp 安全性検討ワーキンググループのメンバーです。Anthropic の招待制 Safety Bug Bounty Program の参加者です。
謝辞
石黒さん(@kokushing)・佐々木さん(@7eHnpgIYyHE4iyG)には頭があがりません。お手伝いいただいて本当にありがとうございました。