
上一篇26-3《VQF v2 布局再回首加密 签名如何共存》 下一篇27-2《出证帧规范body_sha 与输出文本的字节绑定》 **源码精读篇**本文为源码/方法论精读无独立实测文中数字均引述仓库 docs 的板端实测记录 **一句话导读**三问三防权重、记录、出处——把可信边界从权重文件延伸到跑出来的回答讲推理引擎为每次完成的响应打设备签名数字凭证、三道防线为何正交以及验证方只凭请求原文、输出文本与公钥就能离线验签的落点。 **关键词**手搓推理引擎、大模型推理、三问三防、权重记录出处、可验证推理、attestationDay 23–26 一直在护**权重**加密防拷走、签名防掉包。但推理系统的可信不止于权重——**跑出来的回答**同样可以被改、出处可以被赖。Day 27 进可验证推理引擎给每一次完成的响应打一张 SM2 签名的数字凭证验证方只需保留请求原文、输出文本与设备公钥就能离线复算验签。这篇先立框架三问三防各是什么、三道防线怎么正交、为什么验证方不需要任何引擎代码。摘要本文围绕大模型推理系统的可信边界展开提出三问三防框架权重文件加密防拷走、模型签名防掉包、输出记录出证防抵赖。重点讲解三道防线如何正交、设备私钥签名的信任方向为何与供应链签名相反以及验证方只需请求原文、输出文本与公钥即可离线验签的落点。1. 知识点三问三防与验证和证明的分工把推理系统会被审计的资产与威胁列成三问问威胁防线机制权重文件被拷走能读懂吗离线破解A 存储态加密SM4-CTR 密文落盘 HMAC-SM3模型被掉包/投毒认得出吗伪模型以假乱真B 供应链签名SM2 对明文摘要签名 设备公钥验签输出记录可信吗、赖得掉吗归档被改/伪造/抵赖C 推理出证SM3 转录摘要 SM2 设备签名逐请求发凭证一句话加密保密、签名保真、出证保实。关键在谁持有哪把钥匙防线签名/加密用谁的钥匙谁验证A口令对称转换时定设备自己解锁才能加载B发布方私钥离线设备持发布方公钥C设备私钥本机生成0600任意验证方持设备公钥注意 C 的信任方向反了B 是设备信发布方C 是外部信设备。一台边缘设备对自己的输出签名背书验证方审计方、第三方拿公钥离线验——验证方不需要引擎、不需要 tokenizer、不需要模型文件只要请求原文 输出文本 凭证 公钥四个字节流。这正是出证与日志自证的本质区别密钥在设备上、验证在外部独立完成。三道防线正交B 签明文摘要与口令/加密无关A 失效不连坐 BC 的model_fp锚定目录/config 层若模型是签名 VQFB 开启则形成来源签名 → 响应背书完整链A 是保密层不参与 C 语义。任何一层失守不自动导致其余层失效。2. 对应代码vllm_attest.h 的信任链注释与 API 面vllm_attest.h24–35 行把信任链写死成三条/* 信任链诚实边界 * 1. 权重锚点若模型目录含签名 VQFVLLM_VQF_VERIFY1权重级信任根 * 由 VQF 的 SM2 供应链签名提供本模块的 model_fp 锚定目录/配置层。 * 2. 设备背书设备侧保存的 SM2 私钥对响应摘要签名验证方持公钥 * vllm_attest.pub即可离线验证SM2 ID VLLM-ATTEST-1。 * 3. 防伪范围请求原文、输出文本、模型指纹、参数、计数、finish、ts * 任一字段被事后改写都会导致验签失败。 */API 面37–85 行只有 6 个函数vatt_init启动一次VLLM_ATTEST1 才启用、vatt_model_ready模型加载后固化指纹、vatt_body_digest请求体 SM3、vatt_active可否出证、vatt_seal_json对一次转录出证、vatt_selftest自检门。设备密钥对VLLM_ATTEST_DIR默认 .下vllm_attest.priv64 hex0600/vllm_attest.pub128 hex缺失自动生成——私钥带 0600 权限只给本机进程读。默认关闭VLLM_ATTEST1才开启去掉环境变量即恢复原状A-B-C-D 回退。开启后的成本请求结束各一次 SM3请求体 转录 一次 SM2 签名——毫秒级、相对 TTFT 可忽略。3. 改动后果从引擎日志到外部可验证凭证的跃迁对比引擎自己记日志谁能保证日志没被改与 C 防线能力引擎内部日志attest 凭证schema3旧 2 仍可验谁写引擎进程引擎设备私钥签名谁验只能信引擎任何人持公钥离线验防引擎被黑后改日志不能不能私钥在设备上被攻破即失效——诚实边界防归档侧改记录不能能改一字 → 验签失败推演改动后果若有人把vatt_seal_json里的摘要字段从字节精确改成截断/转义后的文本凭证将不再绑定真实输出——所以帧规范要较真摘要里每一个字段用什么字节序列喂进去验证方就必须逐字节复算同一序列。凭证的强度 帧规范的严格度。4. 学员调试任务A 档动手读方案文档 §0 的发布方 / 设备 / 验证方三方图自己画一遍并标注哪一步用发布方私钥、哪一步用设备私钥、哪一步用谁的公钥。B 档纯读源码读vllm_attest.h24–85回答① 为什么设备密钥要 0600 且只在VLLM_ATTEST_DIR若把.priv打成 0644 会怎样提示同机其他用户可读 → 可代签任何输出② C 的model_fp锚定目录/配置层与 B 的签名 VQF 验签是什么关系若模型不是签名 VQFC 还能出证吗能但权重可信度回落到目录指纹层——诚实边界③ 验证方不需要 tokenizer/聊天模板这句为什么成立提示摘要绑定的是字节不是语义预期输出三方图 三问三防对照表能讲清B 信发布方、C 信设备、验证在外部的信任拓扑。收尾本篇源码点名vllm_attest.h信任链 24–35、API 37–85、方案文档§0 三防线与正交性。下篇预告凭证到底证了什么27-2 拆vatt_seal_json的帧规范F(x)len‖x的逐字段字节绑定、body_sha怎么把收到什么就证明什么钉死——以及响应改一个字为什么必然验签失败。