kojibai/receiz_offline_verifier
GitHub: kojibai/receiz_offline_verifier
基于 Ed25519 签名和 Groth16 零知识证明的离线文件真实性验证器,可在无网络环境下验证数字文档的完整性与原始性。
Stars: 0 | Forks: 0
# Receiz 离线验证器
离线验证文件。证明即文件本身。
当前版本:`v21.0.0`
## v21 变更内容
- 验证现在需要有效的 `signatureV3`;`missing` 和 `unavailable` 状态属于硬性失败。
- 验证现在需要锚点数据(`receiz_anchor_bundle` 或可从 proof bundle 字段推导出的锚点上下文)。
- Groth16 策略严格仅限真实证明:缺少 Groth16 字段会失败,非 `g16:` 证明会失败。
- 高级页脚版本标记已在两个入口点中升级至 `v21.0.0`。
## 版本迭代亮点 (v14 -> v21)
- `v14.0.0`:UI 版本标记升级至 `v14.0.0`;应用入口点重命名开始(`receiz-offline-verifier.html` -> `offline-verifier.html`)。
- `v15.0.0` / `v15.5.0`:运行时/文档路由引用统一为 `/offline-verifier.html`;版本标记升级。
- `v16.0.0`:措辞从“原始/封装工件”语言转变为一致的“文件/封装文件”语言。
- `v17.0.0`:锚点推导 + 交叉检查加固发布。
- `v18.0.0`:Signature v3 离线验证 + 密钥固定模型发布。
- `v19.0.0`:Signature v3 密钥策略转向基于 pulse 的生命周期强制执行。
- `v20.0.0`:为离线验证器页面添加了页脚下载操作。
- `v21.0.0`:严格的验证门槛要求签名、锚点上下文以及真实的 `g16:` Groth16 证明构件。
## 支持的工件输入 (v21)
1. 包含且仅包含一个 `receiz.proof_bundle` 文本块的 PNG 工件。
2. 包含且仅包含一个嵌入的 Receiz 证明对象(`/Type /ReceizProof` + `/ProofBundle`)的 PDF 工件。
3. 包含且仅包含一个嵌入的 Receiz 证明元数据属性(带有 trailer-proof 回退)的 SVG 工件。
4. 包含且仅包含一个嵌入的 Receiz JSON 空白证明通道(带有 trailer-proof 回退)的 JSON 工件。
5. 以一个 Receiz trailer 负载结尾的 Trailer-sealed 工件。
6. `.receizbundle` 容器(`kind: receiz.bundle.v1`)。
7. 以 ZIP 或多文件文件夹形式提供的封装包负载(清单驱动的验证路径)。
## 原语约定(“已验证”的含义)
只有当验证器能从字节证明完整性(加上可选的集成提供的路径输入)时,文件才被验证:
- 所选格式的 proof bundle 负载恰好被找到一次
- proof bundle 解码成功
- 规范字段不变量通过
- 工件绑定哈希与规范化基础字节匹配
- `signatureV3` 存在,并针对负载哈希、密钥和 pulse 策略验证通过
- 锚点上下文存在(显式或推导),并与 bundle code/pulse 匹配
- 真实的 `g16:` Groth16 证明构件存在,并针对摘要/公共信号约束验证通过
- 如果提供了可选路径,它必须与接受的嵌入规范路径匹配
## 运行时说明
- 验证器是一个静态 HTML 应用。
- 验证逻辑在浏览器 JavaScript 中客户端运行。
- Signature v3 验证使用 WebCrypto Ed25519 验证。
- Signature v3 状态 `missing`、`unavailable` 或 `invalid` 属于硬性失败。
- 签名策略根据固定密钥生命周期窗口(`activeFromPulse` / `retiredAtPulse`)验证 bundle `kaiPulseEternal`。
- `signedAtMs` 在 Signature v3 负载结构中仍然必需,但不用于本地时钟偏移门控。
- Groth16 检查需要 `zkPoseidonHash`、`groth16Proof` 和 `groth16ProofDigest`。
- 仅接受真实的 `g16:` Groth16 负载。
- 默认的 `v21` UI 不会提示手动输入 `/v/...` 路径;集成仍可提供该路径。
## 快速开始(本地)
### 选项 A:直接打开
打开 [site/index.html](site/index.html)。
### 选项 B:本地服务(推荐)
```
cd site
python3 -m http.server 8080
# 然后打开 http://localhost:8080
```
## 部署
将 `site/` 目录部署到任何静态主机。
`v21` 所需的运行时资产:
- `index.html`
- `offline-verifier.html`(如果作为备用入口路径提供服务)
- `sw.js`(可选,用于 service worker 预热行为)
注意:签名和 Groth16 验证运行时/密钥材料嵌入在发布的 HTML 入口点中。
## 模式 (Schemas)
[docs/schemas](docs/schemas) 中提供了机器可读的模式:
- [receiz-proof-bundle.schema.json](docs/schemas/receiz-proof-bundle.schema.json)
- [receiz-anchor-bundle.schema.json](docs/schemas/receiz-anchor-bundle.schema.json)
- [receiz-bundle-envelope.schema.json](docs/schemas/receiz-bundle-envelope.schema.json)
## 仓库结构
- [site/index.html](site/index.html):发布的验证器入口点。
- [apps/offline-verifier.html](apps/offline-verifier.html):镜像的应用入口点。
- [docs/FORMAT.md](docs/FORMAT.md):工件和负载格式约定。
- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md):运行时和验证流程。
- [docs/HARDENING.md](docs/HARDENING.md):非回归安全规则。
- [CHANGELOG.md](CHANGELOG.md):发布历史。
- [RELEASE_NOTES.md](RELEASE_NOTES.md):完整发布说明。
## 安全
如果您发现漏洞(包括误报验证),请勿公开 issue。
请使用 [SECURITY.md](SECURITY.md)。
## 许可证
MIT。参见 [LICENSE](LICENSE)。
标签:CVE, DNS 反向解析, DNS枚举, DNS 解析, Groth16, JSON签名, PDF验证, PNG元数据, Receiz, SDLC, 中间件漏洞, 区块链存证, 后端开发, 后端开发, 多模态安全, 密码学, 手动系统调用, 数字签名, 数据可视化, 数据溯源, 文件完整性校验, 文档验真, 无需联网, 本地验证, 电子证据, 离线验证器, 网络安全, 网络安全工具, 软件开发生命周期, 防篡改检测, 隐私保护, 零知识证明