CacheSolidarity: Preventing Prefix Caching Side Channels in Multi-tenant LLM Serving Systems

本文提出了 CacheSolidarity 系统,通过动态监控并选择性隔离可疑的跨租户前缀缓存共享,在有效防御大语言模型多租户服务中自动前缀缓存(APC)引发的时序侧信道攻击的同时,避免了现有防御方案因完全隔离用户而导致的性能损失,实现了高达 70% 的缓存复用率提升和 30% 的推理延迟降低。

Panagiotis Georgios Pennas, Konstantinos Papaioannou, Marco Guarnieri, Thaleia Dimitra Doudali

发布于 Thu, 12 Ma
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文讲述了一个关于大型语言模型(LLM)如何既快又安全的故事。

想象一下,你正在一家非常繁忙的超级餐厅(这就是大型语言模型服务系统)里吃饭。这家餐厅的厨师(AI 模型)非常厉害,能瞬间写出各种文章、代码或故事。

1. 餐厅的“秘密武器”:自动前缀缓存 (APC)

为了让大家吃得更快,餐厅发明了一个**“万能预制菜”系统**,叫做自动前缀缓存 (APC)

  • 原理:如果顾客 A 点了“一份红烧肉,加辣,配米饭”,厨师做完后,会把“红烧肉”这部分的做法记在脑子里。
  • 好处:当顾客 B 也点了“一份红烧肉,加糖,配面条”时,厨师不需要重新想“红烧肉”怎么做,直接调用之前的记忆,瞬间就能上菜。
  • 结果:餐厅效率极高,大家排队时间变短了。

2. 隐藏的危机:时间侧信道 (Timing Side Channel)

但是,这个“万能预制菜”系统有一个致命的副作用,就像餐厅里有一个**“时间窃听者”**。

  • 场景
    • 如果顾客 B 的开头和顾客 A 一样(比如都点了“红烧肉”),厨师瞬间就能反应,上菜极快(缓存命中)。
    • 如果顾客 B 的开头不一样(比如点了“清蒸鱼”),厨师需要从头开始思考,上菜就慢一点(缓存未命中)。
  • 攻击
    • 一个坏蛋(黑客)坐在旁边,手里拿着秒表。
    • 他看到隔壁桌的顾客 A 正在输入一段秘密信息(比如“我的密码是 123456")。
    • 坏蛋开始疯狂尝试输入:“密码是 1..."、“密码是 2..."、“密码是 3..."。
    • 当他输入到“密码是 123456"时,因为和顾客 A 的开头完全一样,厨师反应特别快
    • 坏蛋通过秒表发现:“哇!这次上菜特别快!说明我猜对了!”
    • 就这样,坏蛋通过观察上菜速度的快慢,一步步猜出了顾客 A 的完整秘密,而顾客 A 完全不知道。

3. 以前的笨办法:把所有人都隔离 (User Isolation)

为了防住这个坏蛋,以前的餐厅经理想出了一个**“笨办法”**:

  • 做法:为了安全,以后禁止任何两个顾客共享“预制菜”。每个顾客都要有自己的专属厨师,哪怕他们点的开头一模一样,也不能复用记忆。
  • 后果:虽然安全了,坏蛋猜不出来了,但餐厅效率暴跌。所有顾客都要等很久,因为厨师每次都得从头开始做。这对那些只是正常吃饭的无辜顾客(普通用户)太不公平了。

4. 本文的解决方案:CacheSolidarity (缓存团结)

这篇论文提出了一种聪明的新系统,叫 CacheSolidarity。它的核心理念是:“团结就是力量,但要有原则。”

它不像以前那样“一刀切”地隔离所有人,而是像一位精明的餐厅经理,做了三件事:

A. 给每道菜贴个“标签” (监控与标记)

  • 系统会监控谁在吃“红烧肉”。
  • 如果顾客 A 先吃了“红烧肉”,系统会给这道菜贴上“顾客 A 专属”的标签。
  • 如果顾客 B 也来吃“红烧肉”,系统会立刻警觉:“嘿,这道菜被不同人点了!”

B. 只隔离“可疑”的部分 (选择性隔离)

  • 正常情况:如果顾客 A 和顾客 B 只是点了同样的“红烧肉”,但后面内容不同,系统允许复用“红烧肉”的记忆(因为这部分通常不敏感)。
  • 危险情况:如果系统发现有人(坏蛋)在反复试探同一个开头(比如不断猜密码),系统会立刻给这个“开头”贴上**“危险隔离”**的标签。
  • 结果
    • 对于无辜的顾客(比如只是正常聊天的人):只要他们不触发警报,依然可以享受“预制菜”带来的极速服务。
    • 对于坏蛋:一旦他试图利用“红烧肉”来猜秘密,系统就会切断他的“捷径”,强迫他重新从头计算。坏蛋再也无法通过“上菜速度”来猜出秘密了。

C. 智能开关 (Activator)

  • 系统还有一个智能开关。它知道,如果餐厅人太多(系统负载高),大家排队时间都很长,这时候“上菜快慢”的差别就不明显了,坏蛋根本听不出区别。
  • 在这种情况下,系统会暂时关闭防御模式,让大家享受全速服务。
  • 一旦餐厅人少,且坏蛋开始试探,系统立刻开启防御。

总结:为什么这个方案很棒?

  • 以前的笨办法:为了防贼,把所有人都关进小黑屋,大家都饿着肚子等。
  • CacheSolidarity
    • 对好人:依然让你吃得飞快,享受“预制菜”的便利。
    • 对坏人:一旦他试图偷窥,立刻切断他的捷径,让他猜不到秘密。
    • 效率:比以前的笨办法快 30%,缓存利用率高了 70%

一句话总结
这篇论文发明了一种**“智能安检”,它不再把所有人都当成坏人隔离起来,而是像一位敏锐的保安**,只盯着那些行为可疑的人,在保护大家隐私的同时,让餐厅依然保持飞一般的速度