
上一篇26-2《签名覆盖分析——亲手做一次掉包攻击》下一篇27-1《三问三防权重、记录、出处》真机实测通过flags 位对照加密/签名单态均板端实测文内如实注明加密签名组合态本次未单独实测一句话导读大模型推理引擎的 VQF v2 布局再回首一张 432B 头部怎么同时装下量化、视觉、加密、签名四类属性——讲 flags 每一位的安放、加密与签名因信任域不同而正交共存并用三个真实文件做 flags 逐位对照。关键词手搓推理引擎、大模型推理、VQF v2、加密与签名共存、flags 位、SM2Day 16/17 初见 VQF 布局Day 24 加加密、Day 25 加签名。这篇把 VQF v2 的 432B 头部总装图一次画清flags 的每一位怎么安排、加密口令对称与签名私钥非对称如何正交共存、量化/视觉/加密/签名四类属性怎么挤进同一个头还彼此不干扰。板端用三个真实文件的 flags 逐位对照。1. 知识点一张头装下布局 模型 加密 签名四类信息VQF v2 文件总装vqf_format.h 10–13 行注释 90 行[0..432) VQFHeaderv2 含 VQFSig 签名块 200B [432..4096) 对齐填充 [4096..448n*64) 目录区VQFTensor × n_tensors64B/个 [data_offset..file_len) 数据区64B 对齐 [file_len..) 尾部ENC → HMAC-SM3 tag(32B)明文 → FNV-1a(8B)头里四类信息各司其职字段承载例magic/version/n_tensors/data_offset/file_len文件骨架版本2v2 才有 sigVQFArch arch模型自包含描述dim/layers/heads、rope 参数、视觉塔参数19 篇enc_iv[16]flags.ENC对称加密开关1u7SM4-CTR 初值VQFSig sigflags.SIGNED非对称签名开关1u8pub/r/s/digest/id正交性是共存的关键权重保护方案 §2加密用口令谁解锁数据谁就能读签名用私钥只有发布方能签发——两把钥匙属于不同信任域。签的是明文逻辑内容摘要D26-2 的三段与口令无关同一签名对明文版与任意口令加密版都成立。所以四个属性可以自由组合而不冲突量化位0–4只描述布局ENC/SIGNED 只描述安全属性VISION 只描述有没有视觉塔——彼此覆盖的文件区间不同互不干扰。2. 对应代码写侧一次组装所有位vqf.c 264–290int enc vqf_enc_derive(getenv(VLLM_VQF_KEY), sm4key, hmackey); /* 264 */ if (enc) { ...; flags | VQF_FLAG_ENC; } /* 266–270 */ const char *sp getenv(VLLM_VQF_SIGN_PRIV); /* 277 */ if (sp sp[0] vc_hex_decode(sp, priv, 32) 32) { sign 1; flags | VQF_FLAG_SIGNED; vc_sm3_init(dig); /* 278–282 */ } ... h.magic VQF_MAGIC; h.version VQF_VERSION; h.flags flags; ... /* 288 */写侧逻辑极简两个环境变量各自独立置位VLLM_VQF_KEY→ ENCVLLM_VQF_SIGN_PRIV→ SIGNED可同时给、可只给一个、可都不给。签名摘要 D 的header_canonical以最终 flags含 ENC/SIGNED 全位计算——所以加密后再签名与明文签名的摘要口径天然统一引擎加载侧按同一 canonical 复算26-1/26-2 已实测明文签名路径加密签名组合的转换与加载本次未板端实测——写侧路径存在278–282 355–357 单遍摘要 424–467 回填语义由代码给出加载时单遍 HMAC→原位解密→明文喂 digest→验签随解密默认开。诚实边界组合态留给 A 档进阶任务复现。flags 位总表vqf_format.h 27–35Q8_8X8(0)/Q4_4X4(1)/X8(2)/Q8BUF_Q4(3)/G256(4)/EMB_F16(5)/VISION(6)/ENC(7)/SIGNED(8)——前 7 位描述布局与模态后 2 位描述安全属性。3. 改动后果三个真实文件的 flags 逐位对照实测口径RK3588 / 2026-09-07。三个 2B 模型 VQF 文件头部 flags16 进制小端offset 8文件flags二进制bit8..0属性解读生产明文Modl/.../model.vqf0x630 110 0011Q8_8X8 Q8BUF_Q4 EMB_F16 VISION量化多模态未加密未签名加密版day24_enc/model.vqf0xe31 110 0011同上 ENC(bit7)签名版day25_fixed/model.vqf0x1631 0110 0011同上 SIGNED(bit8)$ xxd -s 8 -l 4 生产明文.model.vqf → 6300 0000 (0x63) $ xxd -s 8 -l 4 day24_enc/model.vqf → e300 0000 (0xe3) $ xxd -s 8 -l 4 day25_fixed/model.vqf → 6301 0000 (0x163)加密版与签名版都保留了明文的全部布局位0x63 是公共底子——这正说明各属性位是叠加而非替换加一层 ENC 不改变张量布局语义加一层 SIGNED 不改变数据区内容。推演改动后果若有人在写侧把 ENC 位和 SIGNED 位共用同一比特加密版与签名版会互相覆盖一个文件永远只能二选一——这也是为什么安全属性位从 bit7 开始、与布局位bit0–5分区。4. 学员调试任务A 档动手画图手绘 VQF v2 总装图432B 头 / 4KB 头目录 / 数据区 / 尾部 tag标出 ENC 与 SIGNED 各自管理的区间ENC数据区 尾部 HMACSIGNEDheader_canonical 目录 数据区明文用xxd -s 8 -l 4读三个文件的 flags与上表逐位核对进阶诚实边界已标注尝试用VLLM_VQF_KEYxxx VLLM_VQF_SIGN_PRIVpriv从 safetensors 转出加密签名模型flags 应为0x1e3再用加密加载验证decrypted ... HMAC okSM2 verify ok是否同时出现——若环境/磁盘不允许写明未复现即可代码路径在 vqf.c 264–290 / 591–701。B 档纯读源码读vqf_format.h51–103 与vqf.c264–290、424–467回答① 为什么VQFSig要带id/id_len自描述 ID而引擎验签仍用编译期VQF_SM2_ID提示自描述 vs 可信常量的区别防用文件里的 ID 验签②data_offset为什么必须页对齐4096若不对齐mmap 直挂与加密 COW 会出什么问题提示24-3 的 mprotect 页语义③_Static_assert(sizeof(VQFHeader)432)这类守卫在多人/多工具协作里起什么作用预期输出手绘总装图 三文件 flags 对照表 对正交共存的一句话解释加密管解锁、签名管出身覆盖区间不同所以不打架。收尾本篇源码点名vqf_format.h布局与 flags 27–103、vqf.c写侧组装 264–290、签名回填 424–467开源仓库Kestrel-LLM (Gitee)AGPL-3.0-or-later 或商业许可二选一下篇预告权重这一关全打通了加密防拷走、签名防掉包——但推理输出呢模型是对的跑出来的回答被人改了、或者出处说不清怎么办Day 27 进可验证推理给每一次推理响应用设备私钥打一张数字凭证。