当前状态

2026-10-25 · 工程状态说明 · 已验证的数字与明确未完成项

一、工程基建:哪些是真的,哪些还不是

合并门禁(main 分支,ruleset 强制)

供应链

外部评分(照抄,不解释)

主仓失分项(同一份报告):

检查项得分说明
Code-Review00/28 个有审批的变更集
Branch-Protection4开发与所有发布分支未达最严配置
Contributors3仅 1 个贡献组织
Packaging−1未检测到打包工作流
Binary-Artifacts8源码树中存在二进制文件
Pinned-Dependencies8存在未按 hash 固定的依赖
Signed-Releases83 个发布各有签名产物,缺 provenance
CII-Best-Practices5已获 Passing 徽章

桌面端的 2 条 RUSTSEC 告警(proc-macro-error、glib)来自固定的 GTK 0.18 传递依赖,上游没有已发布补丁;deny.toml 没有 ignore 列表,靠作用域限定,缺口在仓内备案。

依赖告警

静态分析

CBOM

测试

ACVP 覆盖

算法覆盖口径
ML-KEM-512/768/1024240/240keyGen 75、encaps 75、decaps 30、encapsulationKeyCheck 30、decapsulationKeyCheck 30;向量已入库,离线可跑,接在 ci.yml 的 mlkem-kat 与 kat-regression.yml
ML-DSA-44/65/8775/75仅 keyGen,且由 Phase 1 包装的 @noble/post-quantum 后端产出;sigGen / sigVer 的向量级覆盖还没有

ML-KEM 的两个 key check 按 FIPS 203 §7.2 / §7.3 实现:encapsKeyCheck 做长度 + 12 位编码的规范性(byteEncode12 ∘ byteDecode12 必须等于原文,非规范系数 ≥ q 就此被挡住),decapsKeyCheck 做长度 + 存储的 H(ek) 与内嵌 ek 现算哈希一致。内嵌 ek 故意不再做模数检查——标准没要求,ACVP 的判定也只认哈希,加严会造出假阴性。

二、形式化线:6 条 sorry,四处被机器判定的陈述

形式化在独立仓 vwz-formalization(公开,Apache-2.0),Isabelle/HOL,session VWZ_A3_Aligned。与业务仓分开是因为工具链、发布节奏和体积都不同。

账本(由工具生成,不手填):

层级内容引理sorry
T0纯形式改写170
T1-A代数公理160
T1-D定义相关义务52
T2线性代数 / 矩阵102
T3安全 / 概率 / 解析器82
合计566

已经有实体的部分

四处被机器判定的陈述

义务缺陷状态
T2_B3按整数陈述可逆,实现每步模 3329 归约(域错配)改述到 F_q 后已闭合
T2_D4对非方阵系统误用行零化度(口径错配)改用列零化度后已闭合
T2_B7断言 ψ 每片秩为 2,但前提不排除零切片补非零 2×2 子式前提后已闭合(2026-10-24)
T2_D5Eval 收不到 k / msg,却要求目标位依赖消息机器反证,待签名语义

T2_B7 的反例满足前提而秩为 0,记录在 VWZ_Refutations.thy。原因是陈述缺良构前提——这是陈述缺陷,不是证明失败。把反例留在仓里,比悄悄删掉更有用。

改述后它已经闭合:补上「存在非零 2×2 子式」这一前提,秩 ≤ 2 由「每片是两个外积之和、因而行落在二维 span 内」得到(rows_in_span_psi_slice_of + mat_rank_le_two_of_rows_in_span),秩 ≥ 2 由非零子式得到(rank_ge_two_of_nonzero_minor),两侧夹出 mat_rank (psi_slice …) = 2。这条路只证明这一族切片,没有建立通用秩理论。

这不仅是诚实,更是后续迭代的锚点:每一次改述都有机器证据可回溯,下一个人不必重新争一遍。

已知缺口

三、当前缺口(按上手难度排序)

  1. T2_D5 的规范决策:给 Sign / Eval 定语义(消息与目标位如何联结),才能决定这条义务是改述还是删除。
  2. T3 剩余 2 条:签名语义(Sign 的输入输出与 pk 的联结)定下来之后才能谈目标独立性。
  3. ACVP 向量走公共 API:fml-dsa 已透传 FIPS 204 的 context / extraEntropy,并有行为对照;现有 75/75 的 keyGen KAT 由 Phase 1 包装的 @noble/post-quantum 后端产出(包装层 API 用同一批向量验证),且只覆盖 KeyGen,sigGen / sigVer 的向量级覆盖还没有。ML-KEM 这条线已经补齐(240/240,含 60 条 key check)。
  4. RN 仓测试与 CI:fibemate-mobile 的 node:test 模式已跑通,fibemate-react-native 的 test 脚本只有 jest,无测试文件时是否会静默通过尚未实测。
  5. CBOM 进 PR 门禁,以及 npm / pip / 镜像层的 hash 固定。
  6. 外部 code review:Scorecard 的 Code-Review 0/28,每一个实质性评审都直接改变这个数字。

四、协作约定

五、入口

本文数字的复核方式:

node tools/count-obligations.cjs
curl -s https://api.securityscorecards.dev/projects/github.com/Lennonhaha/fibemate
gh api "repos/Lennonhaha/fibemate/code-scanning/alerts?state=open" --jq length
gh api "repos/Lennonhaha/fibemate/dependabot/alerts?state=open" --jq length

六、不适合谁

如果你能补上面任何一块,直接开 issue 或 PR。用代码和证据说话,比什么都快。