给 Claude 中转站验明正身:签名里的模型身份

给 Claude 中转站验明正身:签名里的模型身份

💡 原文中文,约11300字,阅读约需27分钟。
📝

内容提要

文章介绍如何验证Claude中转站是否提供真实模型。方法分三步:解码签名明文检查模型标识、通过OpenRouter交叉验证签名真伪、定时巡检防止中途切换假模型。核心原理是Anthropic私钥签名跨平台兼容且绑定模型身份,组合验证可确保响应真实且模型匹配。

🔎

延伸解读

为什么签名验证能成立

Anthropic 的 thinking 块签名使用官方私钥生成,私钥仅官方持有,第三方无法伪造。签名跨平台兼容,可在 Claude API、Bedrock、Google Cloud 间通用,因此可通过 OpenRouter 强制路由到 Anthropic 官方后端进行验证。这是整套验证方法的核心依据。

验证的两层含义

交叉验证只确认签名是否由官方私钥生成,而明文解析则揭示签名对应的具体模型。两者结合才能同时回答“真伪”和“身份”两个问题。若仅依赖交叉验证,可能被其他模型的真签名绕过,但明文解析能识别模型不匹配,从而堵住漏洞。

定时巡检的必要性

手动测试只能验证单次请求,中转站可能先提供真实模型获取信任,再悄悄切换为假模型。定时巡检(如每 1-2 小时)能持续监控,及时发现后端切换。文章建议结合告警通知,以降低长期使用假模型的风险。

实操中的注意事项

测试 prompt 需足够复杂以触发 thinking 块;即使 thinking 被省略,签名仍可提取。调用 OpenRouter 时需强制指定 provider 为 anthropic,避免路由到其他供应商。签名中的模型标识可能与 API 模型名不完全一致,需先确认真实签名格式。

Q&A

如何验证Claude中转站返回的响应是否来自真实的Claude模型?

可以通过三步验证:1. 解码签名明文,检查模型标识是否匹配;2. 通过OpenRouter交叉验证签名真伪;3. 定时巡检,防止中途切换假模型。

Claude响应中的signature字段是什么?为什么它能用来验证模型真伪?

signature是Anthropic用私钥对thinking内容做的数字签名,私钥只有Anthropic拥有,第三方无法伪造。因此,签名有效则证明响应来自官方Claude。

如何从Claude的signature中提取模型标识?

将signature进行base64解码,然后用正则表达式匹配`claude-[a-z0-9.\-]+`即可提取模型标识明文。

如何通过OpenRouter交叉验证Claude签名的真伪?

将签名放入OpenRouter的Anthropic端点请求中,强制指定provider为anthropic,如果返回200则签名有效,返回400且提示Invalid signature则签名无效。

为什么需要同时进行明文解析和交叉验证?

交叉验证只能证明签名是官方签发的,但无法证明签名对应的模型;明文解析可以提取签名中的模型标识,两者结合才能确保响应既真实又来自请求的模型。

如何防止中转站中途偷偷切换成假模型?

编写定时巡检程序,每隔1-2小时自动获取签名、解码明文并交叉验证,连续几天无异常即可放心使用。

使用OpenRouter验证签名时需要注意什么?

必须设置provider参数为{"order":["anthropic"]}强制路由到Anthropic官方,否则可能被分发到其他供应商;同时验证会消耗少量token,费用约几分钱一次。

如果请求的模型是claude-fable-5,但签名明文显示claude-opus-4-8,说明什么?

说明中转站可能使用了其他模型冒充,签名明文与请求模型不匹配,应直接判定为假。

🏷️

标签

➡️

继续阅读