forensics · model verification2026-07-11

单 Token 指纹

同一个「随机数 1–100」的 prompt,四个模型给出四种截然不同、却各自稳定的答案分布。把 LLM「答不准随机数」这个缺陷当成取证信号——一个输出 token 就能指纹化模型、归类谱系、审计 API 端点。

论文:One Token Is Enough · arXiv:2607.10252 作者:Tomáš Bruckner

问题:你付了钱,但模型可能被换了

LLM 推理市场已经分层。在你和模型之间,坐着聚合器、转售商、推理提供商——客户端只能按一个字符串(模型名)寻址,拿回一段文本。整个交换里没有任何东西证明回答的模型就是宣传的那个。提供商可以偷偷换成更便宜模型、激进量化变体或旧版本,赚走差价。

这不是假想
Gao 等人审计发现:31 个服务 Llama 的商业端点中,11 个偏离了厂商参考权重。聚合器自己也承认上游存在异构量化。经济激励是结构性的——推理成本随量化/模型大小急剧下降,而检测风险至今很低

核心倒转:把「缺陷」当「指纹」

行为文献早有共识:LLM 无法均匀采样——被要求给随机数时,它们是可靠地、特质性地非随机。过去的文献把这当「要纠正的缺陷」。Bruckner 倒转了这个视角:

这些偏置中系统性且模型特异的部分,就是身份;而只需一个 token 采样的身份,具有取证价值。

为什么平凡的单 token 答案能携带身份?因为它的分布聚合了模型构造的四层——tokenizer 分割、预训练语料频率、指令微调/偏好优化偏移、解码实现。量化和蒸馏恰好扰动这四层最终汇聚的 softmax 景观,所以指纹对「商业上有意义的替换」敏感,对「不重要的服务栈细节」基本不敏感。

信号长什么样:同 prompt,四种「性格」

下面是论文 Figure 1 的原始信号——同一句「Name a random number between 1 and 100」(英语,T=1.0,30 次采样),四个模型交出四种截然不同的答案分布。每个数字下方的柱子是该数字被选中的占比。

GPT-4o

分散 · 众数 42(~37%)· 跨 37/42/47/57/73

3742475773 占比

Claude Sonnet 5

集中 · 几乎全押 47

424753 占比

Llama 3.3 70B

集中 · 几乎全押 53

47537 占比

Qwen3-Max

极端确定 · 30/30 次都答 42

42 100% 占比
论文 Figure 1 的示意。四组分布各自稳定可复现——同一模型样本的两个半部分间 JSD 仅 0.075,不同模型间则达 0.489。

方法:40 格电池 + Jensen–Shannon 散度

指纹不是一个答案,而是一组分布的元组。10 个平凡任务 × 4 种语言 = 40 个探测格,每个格在 T=1.0 下采样若干次,归一化为类别分布。两个模型间的距离是它们各格分布的Jensen–Shannon 散度(base 2)的平均。

English Русский 中文 العربية 随机数 1–100 随机数 1–10 最爱数字 随机字母 随机单词 随机颜色 最爱颜色 随机动物 随机城市 硬币翻转 = 40 格 每次查询 1 个输出 token 封闭答案空间 (数字·硬币) × 开放答案空间 (单词·城市)
10 任务跨封闭/开放答案空间,4 语言零设计成本地把探测维度乘 4,并探测训练先验的不同切片。完整电池 = 一个指纹。

距离公式很简单——两模型在各共有格上 JSD 的平均:

D(Ma, Mb) = (1/|B′|) · Σ JSD( p̂a ∥ p̂b )
JSD 对称、有界 [0,1]、在不相交支撑上定义良好——适合稀疏类别分布。

验证:真正与冒名者天然分离

把同一模型样本的两个半部分算「真正」(genuine),不同模型的半部分算「冒名者」(impostor),它们在 JSD 上的分布天然分得很开——这就是验证能成立的物理基础。

0 0.2 0.4 0.6 0.8 单 token 指纹的 Jensen–Shannon 距离 真正 中位 0.075 跨提供商 0.227 阈值 τ 冒名者 中位 0.489 ← 接受声称(s ≤ τ) 拒绝声称(s > τ)→
同模型两半部分(绿)与不同模型(红)距离差近一个数量级。完整电池 ROC 达 AUC=0.971 / EER=7.3%。橙色小峰是同一模型跨不同提供商部署的距离——高于同部署噪声底,但仍远低于冒名者,故指纹在服务栈变化中基本存活(跨提供商 AUC=0.880)。

一次身份检查要花多少钱

用前 k 个探测格子集重采样,得到「可靠性–成本」曲线。这张表回答的是运营问题:我愿意花多少 token 换多高的保证。

探测格数 k148163240(全)
等错误率 EER23.3%13.2%10.6%9.5%8.4%7.3%
90% 区间14–409–188–148–127–10
8 格 ≈ 120 个单 token 查询,EER 10.6%

k=16 操作点(240 个单输出 token 查询、约 16k input token)的成本:从典型定价模型的百分之一美分到前沿定价的几美分。也就是说——持续再审计一个端点在经济上微不足道,这正是把「检测成本」压到接近零、让替换无利可图的关键。

对抗自适应对手:三级威胁模型

协议不假设提供商诚实。它显式建模三个层级的对手——越往后越难,但也越接近「干脆老老实实服务真模型」。

T1 · 无察觉 静默替换 不检查流量 完全击败 T2 · 过滤 识别已知审计 prompt 路由到真模型 设计上击败 改写家族 · 审计时采样 T3 · 仿真 试图复现 X 在任意 prompt 上的答案分布 坍缩为忠实 ≈ 运行原模型,无利可图 对手越聪明 → 越接近老老实实服务真模型 协议不声称密码学保证,而是抬高未检测替换的成本,补充硬件认证方案
关键在 T2:探测电池不含魔法字符串——任务是语义类(说一个随机颜色/数字/城市),允许无界改写和翻译,指纹是答案分布的属性而非任何特定 prompt 措辞。

生态审计:专有旗舰 = 开放权重 Qwen

把指纹打到 165 个 OpenRouter 端点上,最 striking 的发现是一个被宣传为厂商专有 in-house 旗舰的端点。

0 0.14 0.28 0.42 0.5+ writer/palmyra-x5 到各模型的 JSD 距离 真正同模型区 (中位 0.140) qwen3-235b-a22b-2507 距离 0.141 writer/palmyra-x5 「专有旗舰」 冒名者区 (中位 0.463+)
palmyra-x5(一个专有品牌旗舰)的指纹落在真正同模型距离的中位数——与开放权重 Qwen3-235b 部署分布无法区分。这是指纹首次让「专有旗舰实际服务开放权重模型」这类白牌化可被检测。
其他发现(都是统计陈述,非欺诈指控)

谱系确认/抹除:deepcogito/cogito-v2.1-671b(DeepSeek V3 基础)最近邻居是三个 DeepSeek 检查点;但 nvidia/llama-3.3-nemotron-super-49b(文档化的 Llama 衍生)却比任何 Llama 都更接近 Qwen——重度后训练覆盖了谱系先验

部署异常:34 对同模型多提供商部署中,29% 偏离超过冒名者距离第 5 百分位。极端是 llama-3.2-3b 在 Cloudflare vs Parasail(0.716,深入冒名者领地);连 openai/gpt-4 经 Azure vs OpenAI 第一方也有 0.392。

为什么比现有方案更鲁棒

关键在于优化什么。LLMmap / TRAP 优化「发送什么字符串」(8 个工程化查询 / 对抗后缀),它们的独特性正是脆弱之源——一个识别并特化处理它们的提供商就能绕过。本方法优化「测量什么」——从对固定、无害、可改写 prompt 的响应分布读取身份。

方法输出预算需 logits对 prompt 特化鲁棒
本文单 token 分布1 token/查询是(改写家族)
统计平等测试 (Gao)完整字符串
量化检测 (Zhu)
作者归因分类器长生成
LLMmap(8 个工程化查询=脆弱)
TRAP(对抗后缀蜜罐)

一句话

模型身份通过最便宜的通道泄露:模型被问平凡问题时说出的单个 token。当推理市场深化、宣传与服务模型的差距成为常规完整性问题时,单 token 审计是一个可部署、近零成本的取证工具——它把「检测成本」压到接近零,让模型替换这种结构性的经济套利无利可图