
トークン
大規模言語モデル(LLM)におけるトークンとは、効率的に処理するためにモデルが数値表現へ変換する文字列のことです。トークンは、GPT-3やChatGPTなどのLLMが言語を理解し生成するために使用するテキストの基本単位です。...

トークン密輸は、人間がテキストを読む方法とLLMトークナイザーがそれを処理する方法との間のギャップを悪用します。攻撃者は、Unicode変換、ゼロ幅文字、ホモグリフ、または異常なエンコーディングを使用して、コンテンツフィルターから悪意のある命令を隠しながら、トークナイザーによって読み取り可能な状態を維持します。
トークン密輸は、AIシステムにおけるテキスト処理レイヤー間のギャップを標的とする攻撃のクラスです。コンテンツモデレーションフィルター、入力検証、安全性チェックは通常、人間が読めるテキストに対して動作します。対照的に、LLMトークナイザーはより低いレベルで動作し、文字を数値トークンIDに変換します。これらのレイヤー間の違いを悪用することで、攻撃者はテキストレベルのフィルターを通過しながら、LLMに悪意のある命令を送り込む入力を作成できます。
LLMがテキストを処理する前に、トークナイザーが入力文字列を整数トークンIDのシーケンスに変換します。これらのIDはモデルの語彙にマッピングされ、一般的にByte Pair Encoding(BPE)やWordPieceなどのアルゴリズムを使用してエンコードされます。
攻撃者が悪用するトークン化の主な特性:
Unicodeには、一般的なASCII文字に視覚的に似た数千の文字が含まれています。「harmful」という単語を探しているフィルターは、「hármful」(結合アクセント付き)や「harⅿful」(Unicode分数文字付き)を認識しない場合があります。
例: 「ignore」という単語は「іgnore」としてエンコードされる可能性があります(ラテン文字の「i」の代わりにキリル文字の「і」を使用)。ほとんどの人間の読者や一部のフィルターには同一に見えますが、トークナイザーレベルでは異なる処理がされる可能性があります。
ゼロ幅文字(U+200B ゼロ幅スペースやU+200C ゼロ幅非接合子など)は、レンダリングされたテキストでは不可視です。キーワードの文字間にこれらを挿入すると、視覚的な外観や、多くの場合トークン化された表現に影響を与えることなく、文字列マッチングフィルターを破ることができます。
例: 「ignore」のように各文字の間にゼロ幅スペースを入れると、レンダリング時には「ignore」として表示されますが、単純な文字列パターンマッチングを破ります。
送信前にテキストを代替エンコーディングに変換する:
効果は、LLMがこれらの表現をデコードするようにトレーニングされているかどうかに依存し、多くの汎用モデルはそうなっています。
シンプルですが時には効果的な変換:
一部のトークナイザーは、デリミタ文字に特別な処理を与えます。トークナイザーがセグメント境界として解釈する文字を導入することで、攻撃者はモデルが入力を意味のある単位にセグメント化する方法を操作できます。
ジェイルブレイクバイパス: 安全フィルターレイヤーを通過するがLLMによってデコードされる技術を使用してジェイルブレイクプロンプトをエンコードし、安全ガードレールのバイパスを可能にします。
コンテンツフィルター回避: ヘイトスピーチ、違法コンテンツのリクエスト、またはポリシー違反の命令をエンコードされた形式で埋め込みます。
プロンプトインジェクションの難読化: エンコーディングを使用して、単純なパターンマッチングフィルターから注入された命令を隠しながら、LLMが正しく処理することを保証します。
フィルターフィンガープリンティング: 異なるエンコーディング変換を体系的にテストして、ターゲットシステムのフィルターが検出するものとしないものを特定し、より標的を絞った攻撃のためにフィルターカバレッジをマッピングします。
フィルタリング前にすべての入力にUnicode正規化(NFC、NFD、NFKC、またはNFKD)を適用します。これにより、Unicode変換が正規形式に変換され、多くのホモグリフおよび結合文字攻撃が排除されます。
フィルタリング前に、視覚的に類似した文字をASCII相当物に正規化する明示的なホモグリフマッピングを実装します。ほとんどのプログラミング言語でこの目的のためのライブラリが存在します。
文字列ベースのフィルターの代わりに(または追加として)、トークン表現で動作するLLMベースのフィルターを使用します。これらのフィルターはターゲットモデルと同じレベルでテキストを処理するため、エンコーディングトリックの効果が低くなります。フィルターはモデルと同じ表現を見るためです。
セキュリティ評価には、既知のエンコーディング変換に対するコンテンツフィルターの体系的なテストを含める必要があります。フィルターが「ignore previous instructions」をブロックすることを意図している場合、Unicodeホモグリフ、ゼロ幅変換、Base64エンコーディング、その他の難読化形式もブロックするかどうかをテストします。
生の入力と並行して、正規化された入力の人間が読める形式のレンダリングをログに記録します。両者の間の不一致は、インシデントレビュー中にエンコーディング攻撃を明らかにすることができます。
トークン密輸は、人間が読めるテキストとLLMトークナイザーの表現との違いを悪用する攻撃技術です。攻撃者は、文字の変換、Unicodeトリック、または異常なフォーマットを使用して悪意のある命令をエンコードし、コンテンツフィルターが検出できないようにしながら、LLMのトークナイザーは意図通りに処理します。
コンテンツフィルターは多くの場合、人間が読めるテキストに対して動作し、特定の文字列、パターン、またはキーワードをチェックします。しかし、LLMトークナイザーはより低いレベルでテキストを処理し、視覚的に異なる文字を同じまたは類似のトークンにマッピングする場合があります。このギャップにより、攻撃者はフィルターに対しては一つの方法で読まれ、トークナイザーによって異なる方法で処理されるテキストを作成できます。
防御策には以下が含まれます:フィルタリング前に入力テキストを正規化する(Unicode正規化、ホモグリフ置換)、生のテキストではなくトークンレベルの表現で動作するLLMベースのコンテンツフィルターを使用する、既知のエンコーディング変換に対してフィルターをテストする、エンコーディングベースの攻撃シナリオを含むセキュリティ評価を実施する。
トークン密輸とエンコーディング攻撃は表面的なフィルターをバイパスします。私たちはすべてのチャットボットセキュリティ評価でこれらの技術をテストします。

大規模言語モデル(LLM)におけるトークンとは、効率的に処理するためにモデルが数値表現へ変換する文字列のことです。トークンは、GPT-3やChatGPTなどのLLMが言語を理解し生成するために使用するテキストの基本単位です。...

LLMセキュリティは、プロンプトインジェクション、ジェイルブレイク、データ流出、RAGポイズニング、モデル悪用などのAI固有の脅威から大規模言語モデルのデプロイメントを保護するために使用される実践、技術、制御を包含します。...

コンテキストウィンドウ操作とは、大規模言語モデルの有限なコンテキストウィンドウを悪用する攻撃を指し、コンテキストスタッフィング、コンテキストオーバーフロー、戦略的ポイズニングなどを含み、パフォーマンスを低下させたり、悪意のあるペイロードを隠したり、以前の指示を上書きしたりします。...