# FIBEMATE 后量子密码学迁移计划

**版本**: v1.0
**日期**: 2026-08-02
**状态**: 执行中
**目标**: 2030年前完成从传统密码学到后量子密码学的全面迁移

---

## 1. 执行摘要

FIBEMATE 是一个后量子密码学（PQC）工程验证平台，而非生产级密码库。本迁移计划定义了从当前状态（混合验证）到完全后量子就绪的路线图，遵循 NIST CNSA 2.0 时间表和算法推荐。

### 关键里程碑

| 阶段 | 时间框架 | 目标 | 状态 |
|------|----------|------|------|
| Phase 1: 验证与原型 | 2026 Q3-Q4 | 完成 PQC 算法实现验证、TVLA 测试、跨库互操作 | ✅ 完成 |
| Phase 2: 混合部署 | 2027 Q1-Q2 | 生产环境采用混合 KEM（传统+PQC） | 🔄 规划中 |
| Phase 3: 完全迁移 | 2028-2030 | 移除传统算法依赖，全面转向 PQC | ⏳ 待启动 |

---

## 2. 迁移范围

### 2.1 密码学原语

#### 密钥封装机制（KEM）

| 当前算法 | 迁移目标 | 优先级 | 状态 |
|----------|----------|--------|------|
| RSA-2048 | ML-KEM-768 (FIPS 203) | P0 | ✅ 已实现 |
| ECDH P-256 | ML-KEM-768 + X25519 混合 | P0 | ✅ 已实现 |
| - | ML-KEM-1024 | P1 | ✅ TVLA 通过 |
| SM2 | ML-KEM-768 + SM2 混合 | P2 | 🔄 实验中 |

#### 数字签名

| 当前算法 | 迁移目标 | 优先级 | 状态 |
|----------|----------|--------|------|
| RSA-2048 | ML-DSA-65 (FIPS 204) | P0 | ✅ 已实现（fml-dsa） |
| ECDSA P-256 | SLH-DSA-128s (FIPS 205) | P1 | ✅ WASM 桥接 |
| SM2 | SLH-DSA-128s + SM2 混合 | P2 | 🔄 规划中 |

#### 对称密码

| 当前算法 | 迁移目标 | 优先级 | 状态 |
|----------|----------|--------|------|
| AES-256-GCM | 保持（量子安全） | - | ✅ 已实现 |
| SM4-GCM | 保持（量子安全） | - | ✅ 已实现 |
| ChaCha20-Poly1305 | 保持（量子安全） | - | ✅ 已实现 |

#### 哈希函数

| 当前算法 | 迁移目标 | 优先级 | 状态 |
|----------|----------|--------|------|
| SHA-256 | SHA-256 / SHA-3-256 | - | ✅ 已实现 |
| SM3 | 保持 | - | ✅ 已实现 |

### 2.2 协议层迁移

| 协议 | 当前状态 | 迁移目标 | 优先级 |
|------|----------|----------|--------|
| TLS 1.3 | 传统 ECDH | Hybrid X25519-MLKEM768 | P0 |
| 双棘轮协议 | 传统 X3DH | PQ X3DH (ML-KEM-768 + X25519) | P1 |
| 信号协议变体 | 传统 | PQ-Signal (ML-KEM-768 + X25519) | P2 |

---

## 3. 迁移策略

### 3.1 混合模式（推荐）

**原则**: 在过渡期内同时使用传统和后量子算法，确保兼容性和安全性。

**实施方式**:
1. **KEM**: `(X25519 || ML-KEM-768)` 混合密钥封装
2. **签名**: 同时使用 ECDSA 和 ML-DSA 双签名
3. **哈希**: SHA-256 和 SHA-3-256 双哈希验证

**优势**:
- 向后兼容现有系统
- 提供量子前和量子后双重安全保障
- 渐进式迁移，降低风险

### 3.2 完全迁移模式（长期目标）

**原则**: 移除所有传统密码学依赖，仅使用 PQC 算法。

**时间表**: 2030年前（遵循 CNSA 2.0）

**前提条件**:
- 所有依赖系统完成 PQC 支持
- 性能满足生产要求
- 通过第三方安全审计

---

## 4. 风险评估

### 4.1 技术风险

| 风险 | 影响 | 缓解措施 | 状态 |
|------|------|----------|------|
| PQC 性能开销 | 高 | Native addon 优化、FPGA 加速 | 🔄 持续优化 |
| 互操作性问题 | 中 | 跨库测试（Noble/liboqs/OpenSSL） | ✅ 已测试 |
| 侧信道攻击 | 高 | TVLA 测试、常数时间实现 | ⚠️ 部分通过 |

### 4.2 合规风险

| 风险 | 影响 | 缓解措施 | 状态 |
|------|------|----------|------|
| 标准演进 | 中 | 持续跟踪 NIST/FIPS 更新 | 🔄 进行中 |
| 国密兼容 | 中 | SM2/SM3/SM4 + PQC 混合方案 | ✅ 已实现 |
| 第三方审计 | 高 | Q4 2026 启动独立审计 | ⏳ 计划中 |

### 4.3 运营风险

| 风险 | 影响 | 缓解措施 | 状态 |
|------|------|----------|------|
| 维护者单点故障 | 高 | 继任计划、文档化 | ⚠️ Bus Factor=1 |
| 依赖库漏洞 | 中 | 定期扫描、锁定版本 | ✅ 已实施 |
| 数据迁移 | 中 | 密钥轮换策略、备份恢复 | ⏳ 待实施 |

---

## 5. 实施计划

### 5.1 Phase 1: 验证与原型（已完成）

**时间**: 2026 Q3-Q4
**目标**: 完成 PQC 算法实现和验证

**关键成果**:
- ✅ ML-KEM-768/1024 实现（FIPS 203）
- ✅ ML-DSA-65 实现（FIPS 204，fml-dsa）
- ✅ SLH-DSA-128s WASM 桥接（FIPS 205）
- ✅ 国密三件套（SM2/SM3/SM4）
- ✅ TVLA 时序测试（36/36 PASS）
- ✅ 跨库互操作验证（Noble/liboqs）
- ✅ 五层评估体系交付

### 5.2 Phase 2: 混合部署（2027 Q1-Q2）

**目标**: 生产环境采用混合密码学

**关键任务**:
- [ ] 性能优化（Native addon 加速）
- [ ] 协议层集成（TLS 1.3 混合 KEM）
- [ ] 侧信道加固（物理 TVLA 测试）
- [ ] 第三方审计启动
- [ ] 密钥管理流程文档化

**成功标准**:
- 混合 KEM 性能 < 10ms
- TVLA 物理 testing PASS
- 审计报告发布

### 5.3 Phase 3: 完全迁移（2028-2030）

**目标**: 移除传统算法依赖

**关键任务**:
- [ ] 全面性能优化
- [ ] 协议标准化（IETF draft）
- [ ] 硬件加速（FPGA/ASIC）
- [ ] 生态集成（浏览器/TLS 库）
- [ ] 监管合规认证

**成功标准**:
- ML-KEM-768 keygen < 200µs
- 完全符合 CNSA 2.0 要求
- 通过 FIPS 140-3 认证

---

## 6. 密钥管理

### 6.1 密钥生命周期

| 阶段 | 传统 | PQC | 混合 |
|------|------|-----|------|
| 生成 | RSA-2048 | ML-KEM-768 | X25519+ML-KEM-768 |
| 存储 | PKCS#11 | CBOM | CBOM + HSM |
| 轮换 | 2 年 | 1 年 | 1 年 |
| 撤销 | CRL | CRL | CRL |
| 销毁 | NIST 800-88 | NIST 800-88 | NIST 800-88 |

### 6.2 密钥轮换策略

**原则**: 渐进式轮换，优先轮换高风险密钥

**优先级矩阵**:

| 密钥类型 | 用途 | 轮换周期 | 下次轮换 |
|----------|------|----------|----------|
| 根 CA | 签发 | 10 年 | 2030 |
| 中间 CA | 签发 | 5 年 | 2028 |
| 终端实体 | 加密/签名 | 1 年 | 2027 Q1 |
| 会话密钥 | 临时 | 会话结束 | - |

---

## 7. 依赖管理

### 7.1 密码学依赖清单

**生产级**（推荐用于生产）:
- `@noble/curves` - NIST 曲线（P-256/X25519）
- `@noble/post-quantum` - ML-KEM/ML-DSA（验证通过）

**实验级**（仅用于验证和测试）:
- `fml-dsa` - 自研 ML-DSA 实现（教育用途）
- `ml-kem-768.js` - 自研 ML-KEM 实现（教育用途）
- `sm2-bigint-ec.js` - 自研 SM2 实现（教育用途）

**硬件加速**:
- Native addon - C 实现（AVX2 优化）
- FPGA bitstream - Verilog 实现（硬件加速）

### 7.2 依赖风险评估

| 依赖 | 风险等级 | 审计状态 | 替代方案 |
|------|----------|----------|----------|
| @noble/curves | 低 | ✅ 已审计 | OpenSSL |
| @noble/post-quantum | 低 | ✅ 已审计 | liboqs |
| fml-dsa | 高 | ⚠️ 自研 | @noble/post-quantum |
| ml-kem-768.js | 高 | ⚠️ 自研 | @noble/post-quantum |
| sm2-bigint-ec | 高 | ⚠️ 自研 | OpenSSL/铜锁 |

---

## 8. 测试与验证

### 8.1 测试策略

| 测试类型 | 覆盖率 | 状态 | 工具 |
|----------|--------|------|------|
| KAT 向量测试 | 100% | ✅ | FIPS 203/204/205 官方向量 |
| TVLA 时序测试 | 36/36 | ✅ | 自研 TVLA 框架 |
| 跨库互操作 | 100% | ✅ | Noble/liboqs/OpenSSL |
| 性能基准 | ✅ | ✅ | 自研 benchmark 套件 |
| 侧信道测试 | 物理 | ⏳ | ChipWhisperer（计划中） |

### 8.2 持续集成

**CI 流水线**:
- ✅ 单元测试（480/480 PASS）
- ✅ 集成测试（64/64 PASS）
- ✅ KAT 验证（100% PASS）
- ✅ Lint 检查（0 errors）
- ✅ Nightly 测试（Phase1/Phase2）

**质量门禁**:
- 代码覆盖率 > 90%
- 性能回归 < 20%
- KAT 100% 匹配
- TVLA |t| < 4.5

---

## 9. 合规与标准

### 9.1 标准遵循

| 标准 | 状态 | 备注 |
|------|------|------|
| FIPS 203 (ML-KEM) | ✅ 已实现 | KAT 向量验证通过 |
| FIPS 204 (ML-DSA) | ✅ 已实现 | fml-dsa + Noble interop |
| FIPS 205 (SLH-DSA) | ✅ WASM 桥接 | Noble 封装 |
| CNSA 2.0 | 🔄 进行中 | 迁移计划已制定 |
| NIST SP 800-53 | 🔄 进行中 | 86% 覆盖率 |
| 国密 GM/T | ✅ 已实现 | SM2/SM3/SM4 |

### 9.2 认证计划

| 认证 | 时间框架 | 优先级 | 状态 |
|------|----------|--------|------|
| FIPS 140-3 | 2028-2029 | P1 | ⏳ 计划中 |
| 第三方安全审计 | 2026 Q4 | P0 | ⏳ 计划中 |
| Common Criteria | 2029-2030 | P2 | ⏳ 待规划 |

---

## 10. 文档与培训

### 10.1 技术文档

| 文档 | 状态 | 路径 |
|------|------|------|
| 架构设计 | ✅ | docs/architecture.md |
| API 文档 | ✅ | docs/api.md |
| 安全局限 | ✅ | docs/security-limitations.md |
| 迁移计划 | ✅ | docs/PQC_MIGRATION_PLAN.md |
| 事件响应 | ✅ | docs/INCIDENT_RESPONSE_PLAN.md |
| 恢复计划 | ✅ | docs/RECOVERY_PLAN.md |

### 10.2 培训计划

**目标受众**: 开发者、安全团队、运维团队

**培训内容**:
- PQC 基础原理（ML-KEM/ML-DSA）
- 混合密码学部署
- 密钥管理最佳实践
- 迁移工具使用

---

## 11. 成功指标

### 11.1 技术指标

| 指标 | 当前值 | 目标值 | 时间框架 |
|------|--------|--------|----------|
| ML-KEM-768 keygen | 103µs (Native) | <200µs | ✅ 已达成 |
| ML-KEM-768 keygen (JS) | 1.19ms | <2ms | ✅ 已达成 |
| TVLA 通过率 | 36/36 | 100% | ✅ 已达成 |
| 跨库互操作 | 100% | 100% | ✅ 已达成 |
| 侧信道测试 | 软件仿真 | 物理测试 | 2027 Q1 |

### 11.2 合规指标

| 指标 | 当前值 | 目标值 | 时间框架 |
|------|--------|--------|----------|
| NIST CSF 覆盖率 | 86% | 95% | 2027 Q2 |
| 第三方审计 | 无 | 完成 | 2026 Q4 |
| FIPS 140-3 认证 | 无 | 完成 | 2028-2029 |

### 11.3 运营指标

| 指标 | 当前值 | 目标值 | 时间框架 |
|------|--------|--------|----------|
| Bus Factor | 1 | ≥2 | ⏳ 待改进 |
| CI 成功率 | 100% | 100% | ✅ 已达成 |
| TSR 存证 | 100 份 | 100+ | ✅ 已达成 |

---

## 12. 附录

### A. 参考标准

- [NIST FIPS 203](https://csrc.nist.gov/pubs/fips/203/final) - ML-KEM Standard
- [NIST FIPS 204](https://csrc.nist.gov/pubs/fips/204/final) - ML-DSA Standard
- [NIST FIPS 205](https://csrc.nist.gov/pubs/fips/205/final) - SLH-DSA Standard
- [NIST CNSA 2.0](https://www.nsa.gov/ia/programs/suiteb_cryptography/) - 迁移时间表
- [NIST SP 800-53](https://csrc.nist.gov/projects/risk-management/sp800-53-controls) - 安全控制

### B. 相关文档

- `README.md` - 项目概览
- `SECURITY.md` - 安全策略
- `docs/security-limitations.md` - 已知局限
- `docs/INCIDENT_RESPONSE_PLAN.md` - 事件响应
- `tools/cbom-cyclonedx.json` - CBOM 清单

### C. 变更历史

| 版本 | 日期 | 变更内容 |
|------|------|----------|
| v1.0 | 2026-08-02 | 初始版本 |

---

**维护者**: Tianhe Liu (Lennonhaha)
**最后更新**: 2026-08-02
**下次审查**: 2026-09-01
