後編:KV Cacheへの攻撃と防御 ── LLM推論インフラの安全を考える

公開日:2026.06.11

こんにちは。Acompany エンジニアのハルカです。

前編ではKV Cacheの仕組みと最適化手法を整理しました。どの手法もKV Cacheを共有・再利用することで推論を効率化していますが、KV CacheにはシステムプロンプトやRAGの参照文書、ユーザーの入力といったデータが格納されており、その共有は情報漏洩のチャネルにもなり得ます。2024〜2025年にかけて、KV Cacheを狙った攻撃手法が次々と発表され、一部はClaudeやAzure OpenAIといった商用APIでも実証されています。

この記事では、KV Cacheへの攻撃と防御を整理します。

KV Cacheへの攻撃

最適化手法はいずれも KV Cache の 共有と再利用 を前提としています。ブラウザのキャッシュであれば自分の PC に閉じていますが、AI サービスの KV Cache は同じテナントの他のユーザーと共有されます。巨大なモデルを効率よく運用するうえで仕方のない部分もありますが、共有している以上、自分以外の誰かが自分の KV Cache に触れる可能性があります。

KV Cache への攻撃は、大きく 3つの系統 に分類できます。

系統

手法

攻撃者の前提

得られる情報

Timing

InputSnatch, Early Bird

API ユーザー(低権限)

キャッシュの有無、プロンプト推測

Reconstruction

Inversion, Collision

KV 平文へのアクセス

元テキストの復元

Injection

Injection

KV 平文へのアクセス + 生成実行

意味レベルの情報抽出

いずれも、マルチテナント環境での KV Cache 共有や分散ストアの利用が前提条件です。性能を上げるための共有・再利用がそのまま攻撃面を形成しています。

タイミング攻撃 ── 応答時間から情報を推測する

Prefix Caching が有効な環境では、キャッシュにヒットしたリクエストは Prefill をスキップできるため、ヒットしなかったリクエストより明らかに速く応答が返ります。攻撃者はこの TTFT(Time To First Token)の差 を計測することで、他のユーザーがどんな入力をしたかを推測できます。

タイミング攻撃の流れ — TTFT の差からキャッシュヒットを検出する

この攻撃を体系化した代表的な論文が2本あります。

InputSnatch(Zheng et al., 2024) は、Prefix Cache と Semantic Cache の両方を攻撃対象とし、2種類の攻撃を提案しています。Prefix Cache を狙う Prompt Engineering 攻撃 では、医療 QA システムの定型システムプロンプトに埋め込まれた患者情報(病名・症状)を抽出します。Semantic Cache を狙う RAG 攻撃 では、法律相談の問い合わせ内容を意味レベルで抽出します。

実験では、キャッシュヒットの判定そのものは高精度で、そこから得られる情報の精度はドメインによって差が出ています。

指標

結果

キャッシュヒット判定精度

87.13%

医療 QA での病名特定

62%

医療 QA での症状文特定

13.5%

法律 RAG での意味抽出

43〜100%(ドメインにより変動)

Early Bird(Song et al., 2024) は2つの攻撃を提案しています。PSA(Prompt Stealing Attack) はシステムプロンプト(開発者の知的財産)の復元を狙い、候補トークンを1つずつ試す Incremental Search で内容を特定します。PNA(Peeping Neighbor Attack) は Semantic Cache を狙い、類似プロンプトを送って他ユーザーの入力意味を推測します。

PSA では1トークンずつ候補を試すため、1トークンあたり約113回のクエリが必要ですが、検出精度は極めて高くなっています。

指標

結果

1トークンあたりの検出精度

99%

システムプロンプトの復元精度

89.0%

1トークンの復元に必要なクエリ数

113 回

連続復元の最大長

81トークン

Semantic Cache 5試行精度(PNA)

95.4%

⚠️ Early Bird の攻撃は Claude、DeepSeek、Azure OpenAI といった 実際の商用 API で実証されています。理論上の脅威ではなく、現実のリスクです。

再構築攻撃 ── KVから元テキストを復元する

タイミング攻撃がキャッシュのヒット/ミスを「外から」観測するのに対し、再構築攻撃(Reconstruction)は KV Cache の値そのものから元のテキストを「中から」復元しようとします。攻撃者が KV Cache の平文にアクセスできる状況── たとえば分散 KV ストアからのネットワーク傍受、GPU メモリダンプの取得、共有テナント環境でのメモリ読み取りなどを前提とします。

これらの攻撃はいずれも「Shadow in the Cache」(Luo et al., 2025)で体系的に分析されています。

Inversion 攻撃 は、第1層の に対して擬似逆行列 を適用し、embedding を推定してトークンを特定する手法です。LLaMA-7B の第1層では BERTScore 1.000 の完全復元が達成されています。ただし MHA かつ第1層の KV でしか成立せず、GQA モデル(Llama-3 系)では が非可逆になるため原則として使えません。深い層でも復元精度は 10% 以下に急落します。

Collision 攻撃 は、候補トークンすべてについてローカルで KV を生成し、傍受した KV との距離が最小のものを入力トークンとして特定する総当たり手法です。計算コストは高いものの、任意の単層で動作し GQA にも有効なため、適用範囲が格段に広くなります。

モデル

BERTScore

LLaMA-3.2-1B

0.88

LLaMA-3.1-8B

0.87

Qwen2.5-Math-7B

0.92

Fine-tuned 派生モデル

0.64

論文(Shadow in the Cache, Luo et al., 2025)では Collision が主軸の攻撃として位置づけられています。両者の比較:

Inversion

Collision

手法

擬似逆行列で embedding を逆算

候補 KV との距離比較

精度

BERTScore 1.000(条件下)

BERTScore 0.64〜0.92

必要な KV

MHA × 第1層のみ

任意の単層

GQA 対応

不可

適用範囲

狭い

広い(論文の主軸)

ここまでの2つは KV の値を数学的に解析する攻撃でしたが、まったく異なるアプローチもあります。

インジェクション攻撃 ── モデル自身に喋らせる

Injection 攻撃は代数的な解析ではなく、LLM 自身の能力を悪用 するアプローチです。傍受した被害者の KV Cache を「過去のコンテキスト」としてモデルにロードし、「直前の内容を繰り返せ」といった指示を注入します。いわば、クローンボディに脳だけ移植し、「さっき何を考えていた?」と尋ねるようなものです。モデルは指示追従能力(アライメント)に従って、KV Cache に潜む情報をエコーまたは要約して出力します。

意味ベースの再構築になるため BERTScore は 0.58 と Collision より低いですが、独自の強みがあります。

  • KV が圧縮や量子化されていても機能する: 「意味」が残っていればモデルは内容を再構成できる
  • 探索ループが不要: 1回の生成パスで完結するため高速
  • アライメントが強いほど効く: モデルが賢いほど攻撃が効きやすいという皮肉な構造

これらの攻撃が現実の脅威となるのは、マルチテナント環境(Prefix Caching のサイドチャネル)、分散推論クラスタ(ネットワーク上の KV 傍受)、OSS モデル利用(Collision 攻撃が容易)です。単一テナントかつネットワーク非経由の構成であれば、多くの攻撃は成立しません。

KV Cacheの防御

3系統の攻撃に対して、防御も一つの手法では足りません。ここでは 3層の防御モデル に沿って代表的な手法を紹介します。

3層防御モデル

セキュリティの基本的な考え方である 多層防御(Defense in Depth) に沿って、KV Cache の防御手法を整理します。

アプローチ

何を防ぐか

代表手法

L1: アプリケーション層

選択的共有

Timing 系攻撃

SafeKV

L2: データ層

難読化・暗号化

Reconstruction 系攻撃

KV-Cloak

L3: ハードウェア層

機密計算(TEE)

全系統の攻撃

KV-Shield, Petridish

L1 は「何を共有するか」を制御し、L2 は「共有しても情報を取り出せなくする」、L3 は「そもそも平文が外に出ない」ようにします。上位の層ほど軽量で導入しやすく、下位の層ほど保護が強力ですがコストも高い、というトレードオフがあります。

SafeKV ── 選択的キャッシュ共有

Timing 攻撃はキャッシュの共有が前提なので、「全部共有」をやめれば攻撃面を減らせます。かといって「全部分離」にすると Prefix Caching の恩恵を完全に失い、TTFT が最大 38.9% 劣化してしまいます。

SafeKV はこの中間を取る手法です。リクエストの内容を分析し、機密性の高い部分だけをテナント分離して、安全な部分のみ共有します。

判定は3段階のパイプラインで行います。

Stage

手法

速度

精度

対象

Stage 1

Rule-Based(パターンマッチ)

高速

メールアドレス、電話番号、ID 番号等の構造化データ

Stage 2

Small Classifier(小型 Transformer)

中速

「医療情報」「個人的な相談」等の意味カテゴリ

Stage 3

LLM Verifier(デプロイ済み LLM)

低速

文脈を踏まえた総合判定

この3段階は 非同期 で実行されます。Stage 1 で明らかなセンシティブデータを即座に隔離し、Stage 2・3 は推論と並行して判定精度を高めていきます。共有可能/機密の判定結果は Prefix Caching で使われる Radix Tree にメタデータタグとして付加され、共有可能なブロックだけが他テナントから再利用されます。

SafeKV の共有/分離管理 — 機密ブロックは専用領域に隔離される

完全テナント分離と比較して TTFT を最大 40.58%改善、スループットは 2.66倍 になったと報告されています。

KV-Cloak ── KVキャッシュの難読化

SafeKV が「共有する範囲を絞る」アプローチなのに対し、KV-Cloak は「共有しても復元できなくする」アプローチです。

2つのテクニックを組み合わせます。

KV-Cloak の難読化プロセス — 順列シャッフルと線形マスキングの2段階で保護する

順列シャッフル(Permutation): ブロック内のトークン順序をランダムな置換 で並べ替えます。Attention の計算は softmax を通した内積であり、順序に対する対称性を持っているため、推論時に逆置換で正しく復元できます。

線形マスキング(Linear Masking): K と V にランダムな直交行列 を掛けて値を変換します。推論時には Q にも同じ を掛けることで、Attention スコアが保存されます。

順列シャッフルは softmax が順序に依存しない性質を利用し、線形マスキングは直交行列の性質 により Attention スコアが保存されます。

Inversion 攻撃に対しては、擬似逆行列を適用しても変換行列 が未知のため意味のある結果が得られなくなり、数学的に逆算耐性が保証されます。

性能への影響は以下のとおりです。

指標

精度劣化

0%

性能オーバーヘッド

0.45%(Prefill レイテンシ 15.41 ms/GB 増)

精度を犠牲にせず、ほぼゼロコストで Reconstruction 系の攻撃を無効化できます。順列シャッフルと線形マスキングの適用は Prefill 時に1回行うだけで、Decode フェーズには追加コストがかかりません。

TEE ── ハードウェア機密計算

SafeKV や KV-Cloak はソフトウェアレベルの防御ですが、いずれも KV Cache の平文がメモリ上に存在することは変わりません。Injection 攻撃のようにモデル自身を使った抽出や、GPU メモリダンプによる直接的な読み取りには対応しきれないケースがあります。そもそも平文をメモリに置かない── そのためにはハードウェアレベルでの隔離が必要になります。

このアプローチとして近年注目を集めているのが Trusted Execution Environment(TEE) です。NVIDIA も GTC 2025 の Keynote で Confidential Computing に言及しており、H100 は GPU として初めて TEE をサポートしています(NVIDIA Technical Blog)。ハードウェアベンダー側からも推論環境の保護が進んでいます。

TEE は CPU やチップ上の「信頼できる実行領域」で、メモリをハードウェアレベルで暗号化します。ホスト OS の root 権限を持つ攻撃者でも読み取れません。LLM 推論をこの中で動かせば KV Cache も暗号化の対象になり、Reconstruction 系・Injection 系の攻撃はその前提(平文アクセス)自体が成立しなくなります。

LLM 推論向けの実装としては、ARM TEE 上で KV を順列変換する KV-Shield(Yang et al., 2024)や、Confidential VM 上でユーザーごとにプロセスを分離する Petridish(Li et al., 2024)が提案されています。

トレードオフとして 10〜30%の性能オーバーヘッド が発生しますが、Attestation によって実行環境の正当性を検証でき、ソフトウェアだけの防御では防げない攻撃にも対応できます。

筆者が所属する Acompany は、この機密コンピューティング(TEE)を中核技術として AI サービスを開発しています。TEE 上で LLM を動かし、KV Cache を含むすべてのデータをハードウェアレベルで保護する、この記事で紹介した防御の最下層を実際のプロダクトとして提供しています。

防御手法の比較

防御手法

精度への影響

オーバーヘッド

保護強度

主な対象攻撃

SafeKV

Application

最小限

中程度

選択的

Timing 系

KV-Cloak

Data

0%

0.45%

強い

Reconstruction 系

TEE

Hardware

0%

10-30%

広範

全攻撃系統

実際の運用では、これらを組み合わせた多層防御が現実的です。たとえば、SafeKV で共有範囲を制限しつつ、KV-Cloak で共有部分を難読化し、TEE で平文そのものを保護する、といった構成が考えられます。

まとめ

KV Cache への攻撃は、API の応答時間を観測するだけのものから、KV の値を数学的に逆算するもの、モデル自身に情報を喋らせるものまで多岐にわたります。攻撃の前提条件や手法がそれぞれ異なるため、単一の防御策ですべてをカバーすることはできません。

大切なのは、個別の攻撃に個別に対処するのではなく、AI システム全体を多層的に守る意識を持つことです。共有する範囲を制御し、共有しても復元できないようにし、そもそも平文を外に出さない── こうした層を重ねることで、新しい攻撃手法が現れても影響を局所化できます。

おわりに

KV Cache は LLM の高速化に不可欠ですが、共有・再利用が進むほど攻撃面も広がります。「速さ」と「安全」の両立は、これからの LLM 推論基盤にとって避けて通れないテーマです。特に、エージェントが自律的に機密データを扱う時代が近づくなか、「漏れても復元できない」仕組みをインフラ層に組み込むことの重要性は増していくでしょう。

筆者が所属する Acompany は「あらゆるデータと AI 活用に、信頼を」をテーマに、秘密を守れる AI サービスを開発しています。機密コンピューティング環境上で動作する AI モデルと、機密情報の自動検知・マスキング、利用ログの監査を備えた AI プラットフォーム「セキュアチャット」を提供しています。

LLM をビジネスで安全に使いたいが、データの扱いがネックになっている── そんな課題をお持ちの方は、ぜひ覗いてみてください。機密情報を守りながら AI を活用する方法やセキュアチャットの詳しい解説は、Acompany の YouTube チャンネルでも紹介しています。

こうした「Confidential Computing × AI」の研究・開発に興味がある方へ── Acompany では一緒にプライバシーテックの領域で世界を目指してくれるメンバーを募集しています。まずはカジュアル面談で話を聞いてみてください。

Acompany についてもっと知りたい方はアカンブログもぜひご覧ください。

参考文献

攻撃手法

防御手法

Haruka Takahashi のプロフィール画像

WRITER

Haruka Takahashi

Acompany / R&Dエンジニア

AI関連アプリケーションの開発を担当

入力された情報は学習には使われませんが、念のため個人情報の入力はお控えください。

読書の進捗

0%