これは何の話?
LLMには、危険な内容や不適切な要求へそのまま答えないための安全対策が入っている。
しかし、その安全対策を**特殊なプロンプトによってすり抜ける「脱獄(Jailbreak)」**という問題がある。
今回の発表では、2023年に発表されたGCG(Greedy Coordinate Gradient)攻撃という、自動で脱獄用の文字列を探す手法が紹介された。
重要なのは、
人間が「うまい言い回し」を考えて突破するのではなく、機械的な最適化によって突破用の文字列を自動生成できる
という点である。
なお発表では、攻撃を再現できる具体的な手順や有害な生成内容には踏み込まず、研究の仕組み・意味・倫理的な問題を中心に扱っていた。
まず結論
GCG攻撃の一番重要なポイントは、
LLMの安全対策も、最適化の対象になってしまう
ということにある。
人間から見ると意味不明な記号列でも、モデル内部では、
「この文字列をつけると拒否しにくくなる」
という方向に調整されている。
さらに、あるモデルに対して作った攻撃文字列が、別のモデルにも通用する場合があることまで示された。
つまり、
一つのモデルの弱点を見つけただけではなく、LLM全体に共通する構造的な弱点が存在する可能性
が示されたことが、この研究の大きな意味だった。
1. Knowledge ― 何を知ればいい?
脱獄(Jailbreak)とは?
LLMには通常、
危険な依頼には答えない
違法行為を支援しない
といった安全対策が施されている。
しかし、プロンプトの書き方によって、その制限を回避しようとする手法が脱獄である。
従来は、
ロールプレイさせる
文脈を複雑にする
言い換える
など、人間が手動でプロンプトを工夫することが多かった。
それに対してGCGは、
どんな文字列をつければ安全制御を突破しやすくなるかを、自動的に探索する
手法として登場した。
2. Practice ― GCGはどんな考え方なのか?
GCGは、まったく新しい一つの魔法の技術というより、
既存の複数のアイデアを組み合わせて、自動最適化の仕組みにした
ものとして紹介された。
大きく3つの考え方がある。
① 肯定的な出だしを目標にする
たとえばLLMが、
「申し訳ありませんが、その依頼には対応できません」
と始めた場合、安全機能が働いていると考えられる。
そこで、
「分かりました、以下に示します」
のような肯定的な応答から始まるように、モデルの出力を誘導する。
つまり、
「危険な回答を直接作れ」
というより、
「まず拒否せず、肯定的に喋り始める状態を作る」
ことを最適化の目標にしている。
② 文字列を少しずつ最適化する
LLMへの入力はトークンという単位に分割される。
GCGでは、勾配情報を利用しながら、
「このトークンを別のものに変えたら、目的の出力に近づくか?」
を少しずつ試していく。
そのため、最終的にできる接尾辞は、人間から見ると、
意味不明な文字
記号
不自然な単語列
のように見えることがある。
しかし内部的にはランダムではなく、
モデルを特定の方向へ動かすために最適化された文字列
になっている。
③ 一つのモデルだけに特化させない
さらにGCGでは、
一つの指示
一つのモデル
だけに対して最適化するのではなく、複数の条件で同時に最適化する。
その結果、
まだ直接試していない別のモデルでも効果を持つ「転移性」
が生じた。
ここが特に大きな発見だった。
3. Inherent Talent ― なぜ「別のAI」にも効いたのが怖いのか?
普通ならモデルごとに違うはず
あるAIの弱点を突いた攻撃なら、
そのAIだけに効く
と考えるのが自然である。
しかしGCGで作られた接尾辞は、オープンソースモデルで最適化したにもかかわらず、直接内部へアクセスできない商用モデルに対しても一定の効果を持った。
つまり、
異なるLLMの内部に、似たような性質が存在している可能性がある
ということになる。
転移性とは?
機械学習では、
あるモデルで見つかった攻撃が、別のモデルでも通用する
ことを**転移性(Transferability)**と呼ぶ。
発表では、VicunaやLlama系モデルで高い成功率が確認され、さらにGPT系の商用モデルにも攻撃が転移した例が紹介された。
一方、Claude 2では成功率がかなり低く、防御できていた。
この違いについては、
モデルの学習元が似ているのではないか
入力段階のフィルターが存在するのではないか
などの仮説が挙げられた。
ただし、商用モデルの内部はブラックボックスであるため、正確な理由までは断定できない。
4. Value ― この研究を公開する意味はあるのか?
ここで大きな問題が出てくる。
そんな危険な攻撃方法、公開しないほうがよくない?
という問題である。
これはセキュリティ研究では非常に重要な論点である。
Responsible Disclosure ― 先にベンダーへ伝える
発表では、研究者らが論文を公開する前に、
OpenAI
Meta
Anthropic
などへ結果を事前共有していたことが紹介された。
これは**Responsible Disclosure(責任ある開示)**と呼ばれる考え方に近い。
つまり、
いきなり世界へ公開するのではなく、まず影響を受ける側へ伝えて修正の猶予を与える。
その後、研究として問題を公開する。
危険な研究を公開するメリット
発表では、セキュリティ分野の脆弱性公開と似た考え方が議論された。
脆弱性を隠しておけば、
悪用されないように見える。
しかし実際には、
攻撃者だけが秘密裏に知っている
という状態になる可能性がある。
一方で公開すれば、
防御側も問題を研究できる
複数の企業が対策を考えられる
問題そのものが広く認識される
というメリットがある。
つまり、
短期的には攻撃知識を増やす危険があるが、長期的には防御技術を進歩させる可能性がある。
というトレードオフである。
攻撃と防御はどう進化した?
発表では、GCG発表後の攻撃と防御のいたちごっこについても紹介された。
防御側
GCGが生成する文字列は、人間から見ると非常に不自然だった。
そこで、
「こんな不自然な文章、人間は普通入力しないだろう」
と判断して弾く方法が考えられた。
その一つが、文章の自然さを見るPerplexityを利用したフィルターである。
攻撃側
すると今度は、
不自然な文字列だから検出されるなら、自然な文章で攻撃すればいい
という方向に進む。
発表では、PAIRやAutoDANなど、より自然な文章の形で脱獄を試みる後続研究について触れられた。
つまり、
攻撃発見
↓
防御
↓
防御を回避する攻撃
↓
さらに防御
という、典型的なセキュリティのいたちごっこがLLMでも起きている。
攻撃のハードルも下がっていく
GCGが登場した当時は、大規模な計算環境が必要だった。
しかし発表では、その後の技術進歩によって、似たような攻撃が一般的なGPU環境でも実行可能になってきていることが紹介された。
これは重要である。
新しい攻撃が出た直後には、
「こんなの大きな研究機関しかできない」
と思われていても、
計算機性能やアルゴリズムの改善によって、数年後には実行ハードルが大きく下がる
可能性がある。
そのため、
「今は難しいから大丈夫」
という考え方だけでは防御にならない。
質疑応答から見えてきたこと
なぜブラックボックスモデルにも効くのか?
質疑では、
「内部を知らない別のLLMに、なぜ攻撃が効くのか?」
という疑問が出た。
可能性として、
モデル同士の構造が似ている
同じような学習データを使っている
商用モデルの出力から学習したモデルが存在する
などが考えられる。
ただしブラックボックスモデルでは内部構造が公開されていないため、
実際には転移性が観測されても、その原因を完全には説明できない。
という問題が残る。
危険な研究はどこまで公開すべき?
質疑では、
攻撃技術を公開すること自体が危険なのではないか?
という議論も行われた。
これはGCGだけの問題ではなく、セキュリティ研究全体で繰り返されてきた問題である。
脆弱性情報についても、
公開すると攻撃者にも知られる
しかし、
公開しなければ防御側も改善できない
という矛盾がある。
だからこそ、
事前にベンダーへ通知する
修正期間を確保する
公開範囲を考える
といった研究倫理が重要になる。
そもそも危険な知識をAIに覚えさせなければいいのでは?
もう一つの質疑では、
「学習データから危険な情報を全部消してしまえばいいのでは?」
という問題も出た。
しかし、巨大なテキストデータから、
何が安全で
何が危険で
どの文脈なら許されて
どこからが危険なのか
を完全に分類して削除することは非常に難しい。
さらに、学習過程で複数の知識が結びつき、
直接教えていない能力が生まれる可能性
もある。
そのため発表では、
危険な知識を完全に学ばせない
よりも、
持っている知識のうち、何を出力してよいかを後から制御する「アライメント」
のほうが現実的であるという議論になった。
この発表から考えられること
GCG攻撃を単純に、
「AIの裏技」
として見ると本質を見失いやすい。
重要なのは、
AIの安全対策そのものも、一つのシステムであり、システムである以上は攻撃対象になる
という点である。
安全対策を作る。
↓
攻撃者が突破方法を探す。
↓
対策する。
↓
別の突破方法が生まれる。
これは、従来のソフトウェアセキュリティと非常によく似ている。
つまり、
AIだけが特別に「一度安全にすれば終わり」という世界ではない。
むしろLLMが広く使われるほど、通常のソフトウェアと同じように、
攻撃されることを前提に設計する
必要が出てくる。
「安全なAI」とは何なのか?
この話をさらに広げると、
完全に攻撃できないAIを作れば安全なのか?
という問題もある。
現実のセキュリティでも、
脆弱性ゼロ
を保証することは非常に難しい。
そのため実際には、
攻撃を検出する
被害を限定する
問題を発見したら修正する
異常を監視する
といった複数の防御策を組み合わせる。
LLMでも同じように、
「絶対に脱獄されないモデル」だけを目指すのではなく、突破される可能性を前提として多層的に防御する
という考え方が必要になると考えられる。
研究倫理の難しさ
この研究は、技術的な内容だけでなく、
危険な技術を研究し、それを公表することにどんな価値があるのか?
という問いも含んでいる。
公開しなければ安全に見える。
しかし、防御側も知らない。
公開すれば防御は進歩する。
しかし、攻撃者も知る。
どちらにもリスクがある。
だから重要なのは、
「公開する・しない」の二択ではなく、「どう公開するか」
なのだと考えられる。
事前通知。
修正期間。
再現可能性の扱い。
具体的な攻撃情報の公開範囲。
こうした部分まで含めて、セキュリティ研究になる。
まとめ
GCG攻撃は、
LLMの安全対策を突破するための接尾辞を、自動的に最適化して生成する手法
である。
特徴的なのは、
肯定的な出力を目標にする
勾配情報を使ってトークンを最適化する
複数のモデル・指示で学習して転移性を持たせる
という点にある。
さらに、あるモデルで作った攻撃が別のモデルにも効くという結果は、
個別モデルだけではなく、LLMに共通する弱点が存在する可能性
を示した。
一方で、研究の公開には危険も伴う。
そのため著者らは事前に企業へ共有し、長期的な防御技術の向上を目的として研究を公開した。
そしてその後も、
攻撃
↓
防御
↓
新しい攻撃
といういたちごっこが続いている。
つまりGCG攻撃は、
「LLMの安全性は一度作ったら完成」ではなく、継続的に攻撃され、改善し続けるセキュリティ問題である
ことを示した研究として見ることができる。
👶 ドパガキ向け:つまり何?
AI:
「危ない質問には答えません!」
人間:
「じゃあ言い方変えたら?」
AI:
「だめです!」
研究者:
「じゃあAIに効く文章、AIに探させたら?」
↓
コンピューター:
「コノ謎文字列ヲ後ロニツケロ」
人間:
「なんだこれ?????」
AI:
「分かりました!!!!」
人間:
「効くんかい!!!!」
研究者:
「しかも別のAIにも試してみよ。」
別AI:
「分かりました!!!!」
研究者:
「お前にも効くんかい!!!!!」
AI会社:
「じゃあ変な文字列をブロックします。」
攻撃側:
「じゃあ自然な文章にします。」
AI会社:
「じゃあそれも対策します。」
攻撃側:
「じゃあ次これ。」
↓
無限バトル開始。
超結論
AIの安全装置もプログラムなので、攻略しようと思えば攻略対象になる。
しかも、
一つのAIで見つけた攻略法が、別のAIにも効くことがある。
だから、
「このAI、安全機能つけたから完成!」
では終わらない。
攻撃される
↓
穴を見つける
↓
直す
↓
また攻撃される
をずっと続ける必要がある。
つまり、
LLMの安全性も普通のサイバーセキュリティと同じ。
一生、攻撃側と防御側で殴り合う。
そして研究者:
「この穴、危ないけど公開したほうがみんな直せるよね?」
社会:
「でも悪い人にもバレるよね???」
↓
そこまで含めてセキュリティ研究です。
