mokkunsuzuki-code/stage376

GitHub: mokkunsuzuki-code/stage376

该项目实现了基于 ML-DSA-65 与 Sigstore 双签名、RFC 3161 时间戳验证及 PQC 降级防护的生产级证明验证门。

Stars: 0 | Forks: 0

# Stage375:生产级 ML-DSA-65 双签名验证与降级防护门 Stage375 扩展了 Stage374,通过为已通过 Sigstore、Cosign、GitHub Actions OIDC 和 Rekor 签名并验证的同一个 Stage373 证明 blob 添加真实的 ML-DSA-65 签名和验证。 ## 目的 Stage374 确立了: - GitHub Actions OIDC 身份 - Cosign 签名 - Sigstore bundle 验证 - Rekor 包含验证 - 具体的 Rekor 日志位置 - `external_transparency_bound: true` Stage375 增加了: - 真实的 ML-DSA-65 密钥对 - ML-DSA-65 签名 - ML-DSA-65 签名验证 - 公钥指纹验证 - 与 Stage374 Sigstore 签名的精确目标绑定 - 逻辑证明哈希一致性 - fail-closed PQC 降级防护 ## 双签名模型 同一个 Stage373 文件通过两条独立的签名轨道进行签名: 1. Stage374 Sigstore / Cosign / Rekor 2. Stage375 ML-DSA-65 两个签名都必须针对: `docs/final-acceptance-attestation/stage373_final_acceptance_attestation.json` 预期的 blob SHA256: `6ecf58d0070d8db920744b7d32331e01e8e1aef2eded02dde428b80def79d5e6` 预期的逻辑证明 SHA256: `d54b7524ced420f664da9d370985585d649ce80584b64bdf87342f89dbfde89f` ## 初始状态 在 GitHub Actions ML-DSA 工作流运行之前: - `decision: mldsa_execution_pending` - `mldsa_signature_verified: false` - `dual_signature_target_matches: false` - `pqc_downgrade_prevented: false` ## 成功状态 在完成 ML-DSA 签名和验证之后: - `decision: quantum_safe_dual_signature_verified` - `sigstore_signature_verified: true` - `rekor_inclusion_verified: true` - `mldsa_signature_verified: true` - `dual_signature_target_matches: true` - `pqc_downgrade_prevented: true` ## 降级防护 Stage375 使用: - `pqc_required: true` - `downgrade_policy: fail_closed` 在 ML-DSA 执行开始后,缺失、无效、已移除或不匹配的 ML-DSA 签名将导致 `block`(拦截)。 当 PQC 策略处于活动状态时,仅有有效的 Sigstore 签名是不够的。 ## 密钥保护 ML-DSA 私钥: - 在本地创建 - 保留在 `private/stage375-mldsa/` 目录下 - 被 `.gitignore` 排除 - 被排除在 Git 之外,并可能保留在本地私有目录中;生产工作流通过加密的 GitHub Actions secret 接收副本 - 在 GitHub Actions runner 内临时重构 - 其临时的 runner 副本会在上传 artifact 之前被删除 - 绝不会在 GitHub Pages 或代码库中发布 公钥和 ML-DSA 签名可以公开。 ## OpenSSL Stage375 在 GitHub Actions 中使用 OpenSSL 3.5.7 LTS。 OpenSSL 3.5 引入了原生的 ML-DSA-44、ML-DSA-65 和 ML-DSA-87 支持。 此阶段声明使用了 FIPS 204 ML-DSA 算法。 它并未声明自定义构建的 OpenSSL 二进制文件是经过 FIPS 140 验证的加密模块。 ## 公开证据 - `docs/mldsa-production/stage375_mldsa65_input.json` - `docs/mldsa-production/stage375_mldsa65_public_key.pem` - `docs/mldsa-production/stage375_mldsa65_signature.bin` - `docs/mldsa-production/stage375_mldsa65_execution_receipt.json` - `docs/mldsa-production/stage375_dual_signature_verification_result.json` - `docs/mldsa-production/stage375_dual_signature_verification_summary.txt` ## 安全边界 Stage375 不发布: - ML-DSA 私钥 - ML-DSA seeds - OIDC token - GitHub token - 原始 QKD 密钥材料 - 原始时间戳二进制文件 - 自由格式的 shell 命令 ## 许可证 MIT 许可证。 ## 当前验证状态 Stage375 完成了真实的 ML-DSA-65 签名和验证。 当前结果: - `decision: quantum_safe_dual_signature_verified` - `sigstore_signature_verified: true` - `rekor_inclusion_verified: true` - `mldsa_signature_verified: true` - `dual_signature_target_matches: true` - `pqc_downgrade_prevented: true` - GitHub Actions 运行:`29327350883` - OpenSSL 版本:`3.5.7` - ML-DSA 签名大小:`3309 bytes` Stage374 的 Sigstore/Rekor 签名和 Stage375 的 ML-DSA-65 签名针对的是同一个 Stage373 证明 blob。 ML-DSA 私钥未被发布。本地开发副本可能保留在被 Git 忽略的 `private/stage375-mldsa/` 目录中,而生产工作流使用加密的 GitHub Actions secret。
标签:CVE, OpenSSL, Sigstore, 可信时间戳, 后量子密码学, 安全测试工具, 密码学, 手动系统调用, 数字签名