关于 performing-post-quantum-cryptography-migration
面向规划后量子密码迁移的安全技能,帮助组织盘点密码算法、评估准备情况并制定路线图,涵盖 NIST 标准与混合 TLS。
主要功能
- 01扫描 TLS 密码算法清单
- 02评估密码敏捷性准备情况
- 03测试混合 TLS 准备度
- 04验证 ML-KEM 和 ML-DSA
- 05生成优先级迁移路线图
适用场景
- 01盘点 TLS 端点中的量子脆弱算法
- 02测试服务器对 X25519MLKEM768 的支持
- 03按 NIST 时间线评估迁移准备度
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-post-quantum-cryptography-migration安装后在 Claude Code 中输入/performing-post-quantum-cryptography-migration确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
执行后量子密码学迁移
何时使用
- 在评估组织对 NIST 后量子密码学过渡的准备情况时
- 在构建密码学清单以识别基础设施中易受量子攻击的算法时
- 在评估使用 X25519MLKEM768 密钥交换的混合 TLS 1.3 配置时
- 在测试 CRYSTALS-Kyber (ML-KEM) 和 CRYSTALS-Dilithium (ML-DSA) 算法支持时
- 在实现密码敏捷性以同时支持经典和后量子算法时
- 在准备与 NIST IR 8547 弃用时间表一致的迁移路线图时
- 在配置 oqs-provider 与 OpenSSL 3.x 以支持后量子算法时
先决条件
- Python 3.8+ 及
cryptography、requests、pyOpenSSL库 - OpenSSL 3.0+(推荐 3.5+ 以获得原生 ML-KEM/ML-DSA 支持)
- 用于 OpenSSL 的 oqs-provider(用于较旧 OpenSSL 的混合 TLS 测试)
- 访问目标服务器的网络连接以进行 TLS 评估
- 用于基础设施扫描的管理权限
- 熟悉 PKI、TLS 和密码学协议
核心概念
NIST 后量子密码学标准
NIST 于 2024 年 8 月 13 日发布了三项最终确定的 PQC 标准:
| 标准 | 算法 | 重命名为 | 用途 | 基于 |
|---|---|---|---|---|
| FIPS 203 | CRYSTALS-Kyber | ML-KEM | 密钥封装机制 | 模块格 |
| FIPS 204 | CRYSTALS-Dilithium | ML-DSA | 数字签名 | 模块格 |
| FIPS 205 | SPHINCS+ | SLH-DSA | 数字签名(备份) | 无状态哈希 |
ML-KEM (FIPS 203) -- 密钥交换和加密的主要标准。取代 RSA 和 ECDH 用于密钥建立。三个安全级别:ML-KEM-512、ML-KEM-768、 ML-KEM-1024。
ML-DSA (FIPS 204) -- 数字签名的主要标准。取代 RSA 和 ECDSA 用于签名。三个安全级别:ML-DSA-44、ML-DSA-65、ML-DSA-87。
SLH-DSA (FIPS 205) -- 使用基于哈希方法的备份签名标准。旨在 作为基于格的 ML-DSA 被发现存在漏洞时的后备方案。签名更大但 安全假设更保守。
易受量子攻击的算法
这些经典算法易受通过 Shor 算法进行的量子攻击:
| 算法 | 用途 | 量子威胁 | 迁移优先级 |
|---|---|---|---|
| RSA-2048/4096 | 密钥交换、签名、加密 | Shor 算法破解因式分解 | 关键 |
| ECDH (P-256, P-384) | TLS 密钥交换 | Shor 算法破解 ECDLP | 关键 |
| ECDSA | 代码签名、TLS 证书 | Shor 算法破解 ECDLP | 关键 |
| DSA | 遗留签名 | Shor 算法破解 DLP | 关键 |
| DH (Diffie-Hellman) | 密钥交换 | Shor 算法破解 DLP | 关键 |
| AES-128 | 对称加密 | Grover 算法将密钥强度减半 | 中等(升级到 AES-256) |
| SHA-256 | 哈希 | Grover 算法降低至 128 位 | 低(仍然足够) |
NIST 迁移时间表 (IR 8547)
- 2024:标准发布,迁移规划应开始
- 2030:大多数联邦系统弃用易受量子攻击的算法
- 2035:从 NIST 标准中完全移除易受量子攻击的算法
- 现在:"先收集,后解密"攻击使得对长期机密和需要长期 保密的数据进行早期迁移至关重要
混合 TLS 密钥交换
在过渡期间,混合密钥交换将经典算法与 后量子算法结合。如果任一算法安全,连接仍受保护。
Hybrid Key Exchange: X25519MLKEM768
= X25519 (classical ECDH) + ML-KEM-768 (post-quantum)
Client Hello:
supported_groups: X25519MLKEM768, X25519, secp256r1
key_share: X25519MLKEM768
Server Hello:
selected_group: X25519MLKEM768
key_share: X25519MLKEM768
Shared Secret = KDF(X25519_shared || MLKEM768_shared)
说明
阶段 1:密码资产扫描
PQC 迁移的第一步是发现整个企业中所有密码算法的使用情况。这包括 TLS 配置、证书、代码库、密钥存储和协议配置。
# Scan TLS endpoints for quantum-vulnerable algorithms
python scripts/agent.py --action scan_tls \
--targets targets.txt \
--output tls_inventory.json
扫描器可识别:
- 正在使用的 TLS 协议版本
- 密钥交换算法(RSA、ECDH、DH——均易受量子攻击)
- 证书签名算法(RSA、ECDSA)
- 密码套件配置
- 证书密钥长度和到期日期
阶段 2:密码敏捷性评估
评估组织在不进行重大基础设施变更的情况下更换密码算法的能力:
# Assess crypto-agility readiness
python scripts/agent.py --action assess_agility \
--scan-results tls_inventory.json \
--output agility_report.json
关键评估领域:
- 协议灵活性:能否在不中断服务的情况下更新 TLS 配置?
- 库版本:已部署的密码库是否支持 PQC 算法?
- 证书基础设施:CA 能否签发 PQC 证书?
- 密钥管理:KMS 能否处理更大的 PQC 密钥长度?
- 硬件限制:HSM 能否支持 PQC 操作?
阶段 3:混合 TLS 就绪性测试
测试基础设施是否支持使用 X25519MLKEM768 的混合密钥交换:
# Test hybrid TLS support on target servers
python scripts/agent.py --action test_hybrid_tls \
--target server.example.com:443 \
--output hybrid_tls_report.json
OpenSSL 3.5+(原生 ML-KEM 支持):
# Test with native PQC support
openssl s_client -connect server.example.com:443 \
-groups X25519MLKEM768
OpenSSL 3.0-3.4 配合 oqs-provider:
# Configure oqs-provider
# /etc/ssl/openssl-oqs.cnf
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
oqsprovider = oqsprovider_sect
[default_sect]
activate = 1
[oqsprovider_sect]
activate = 1
module = /usr/lib/oqs-provider/oqsprovider.so
# Test hybrid TLS
OPENSSL_CONF=/etc/ssl/openssl-oqs.cnf \
openssl s_client -connect server.example.com:443 \
-groups x25519_mlkem768
混合 TLS 的 Web 服务器配置:
Apache httpd:
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
SSLOpenSSLConfCmd Curves X25519MLKEM768:X25519:prime256v1
SSLProtocol -all +TLSv1.2 +TLSv1.3
NGINX:
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
阶段 4:ML-KEM 密钥封装验证
验证 ML-KEM(CRYSTALS-Kyber)密钥封装在您的环境中是否能正常工作:
# Test ML-KEM key encapsulation at all security levels
python scripts/agent.py --action test_mlkem \
--output mlkem_validation.json
ML-KEM 参数对比:
| 参数 | ML-KEM-512 | ML-KEM-768 | ML-KEM-1024 |
|---|---|---|---|
| 安全级别 | NIST Level 1 | NIST Level 3 | NIST Level 5 |
| 公钥大小 | 800 bytes | 1,184 bytes | 1,568 bytes |
| 密文大小 | 768 bytes | 1,088 bytes | 1,568 bytes |
| 共享密钥 | 32 bytes | 32 bytes | 32 bytes |
| 相当于 | AES-128 | AES-192 | AES-256 |
阶段 5:ML-DSA 数字签名验证
验证 ML-DSA(CRYSTALS-Dilithium)签名操作:
# Test ML-DSA digital signatures
python scripts/agent.py --action test_mldsa \
--output mldsa_validation.json
ML-DSA 参数对比:
| 参数 | ML-DSA-44 | ML-DSA-65 | ML-DSA-87 |
|---|---|---|---|
| 安全级别 | NIST Level 2 | NIST Level 3 | NIST Level 5 |
| 公钥大小 | 1,312 bytes | 1,952 bytes | 2,592 bytes |
| 签名大小 | 2,420 bytes | 3,293 bytes | 4,595 bytes |
| 私钥大小 | 2,560 bytes | 4,032 bytes | 4,896 bytes |
阶段 6:迁移路线图生成
根据资产清单和评估结果生成按优先级排序的迁移路线图:
# Generate complete migration roadmap
python scripts/agent.py --action roadmap \
--scan-results tls_inventory.json \
--agility-results agility_report.json \
--output migration_roadmap.json
路线图按以下标准对系统进行优先级排序:
- 数据敏感性:处理长期密钥的系统优先迁移
- 暴露程度:面向互联网的服务优先于内部服务
- 密码敏捷性:能轻松更换算法的系统优先
- 合规要求:联邦/受监管系统按照 NIST IR 8547 时间表
- 依赖链:库和框架优先于应用
示例
完整评估流水线
# Step 1: Scan all TLS endpoints
python scripts/agent.py --action scan_tls --targets hosts.txt --output scan.json
# Step 2: Assess crypto-agility
python scripts/agent.py --action assess_agility --scan-results scan.json --output agility.json
# Step 3: Test hybrid TLS on critical servers
python scripts/agent.py --action test_hybrid_tls --target critical.example.com:443
# Step 4: Validate ML-KEM support
python scripts/agent.py --action test_mlkem --output mlkem.json
# Step 5: Validate ML-DSA support
python scripts/agent.py --action test_mldsa --output mldsa.json
# Step 6: Generate migration roadmap
python scripts/agent.py --action roadmap --scan-results scan.json --agility-results agility.json --output roadmap.json
快速服务器评估
# Single server PQC readiness check
python scripts/agent.py --action scan_tls --target server.example.com:443
验证清单
- 密码学资产清单涵盖所有 TLS 端点、证书和密钥存储
- 已识别所有量子脆弱算法(RSA、ECDH、ECDSA、DH、DSA)
- 密码敏捷性评估记录了库版本和升级路径
- 混合 TLS(X25519MLKEM768)已在代表性服务器配置上测试
- ML-KEM 密钥封装已在目标安全级别(推荐 768)验证
- ML-DSA 签名验证已针对证书链用途验证
- SLH-DSA(FIPS 205)已作为备用签名算法评估
- 迁移路线图按数据敏感性和合规时间线确定优先级
- 已确认 OpenSSL 版本和 oqs-provider 兼容性
- 网络和存储容量规划已考虑密钥大小增加
- HSM/KMS 与 PQC 算法的兼容性已验证
- PQC 算法在生产负载下的性能影响已基准测试
- 已评估敏感数据通道的“先收集,后解密”风险
- 已确认证书颁发机构的 PQC 就绪状态以支持证书颁发
参考资料
- NIST PQC 标准:https://csrc.nist.gov/projects/post-quantum-cryptography
- FIPS 203(ML-KEM):https://csrc.nist.gov/pubs/fips/203/final
- FIPS 204(ML-DSA):https://csrc.nist.gov/pubs/fips/204/final
- FIPS 205(SLH-DSA):https://csrc.nist.gov/pubs/fips/205/final
- NIST SP 1800-38 迁移指南:https://www.nccoe.nist.gov/crypto-agility-considerations-migrating-post-quantum-cryptographic-algorithms
- NIST IR 8547 过渡时间线:https://csrc.nist.gov/pubs/ir/8547/ipd
- Open Quantum Safe 项目:https://openquantumsafe.org/
- 用于 OpenSSL 的 oqs-provider:https://github.com/open-quantum-safe/oqs-provider
- OQS TLS 集成:https://openquantumsafe.org/applications/tls.html
- CISA PQC 迁移策略:https://www.cisa.gov/sites/default/files/2024-09/Strategy-for-Migrating-to-Automated-PQC-Discovery-and-Inventory-Tools.pdf
- IETF 混合密钥交换草案:https://datatracker.ietf.org/doc/draft-ietf-tls-hybrid-design/
- CycloneDX 加密 BOM:https://cyclonedx.org/use-cases/cryptographic-key/