pe-version/pqc-readiness-scanner
GitHub: pe-version/pqc-readiness-scanner
轻量 CLI 工具,用于扫描代码、证书与 TLS 端点,识别后量子密码脆弱性并给出 NIST 推荐替换算法。
Stars: 0 | Forks: 0
# pqc-scan
NIST 在 2024 年完成了首批后量子密码标准(FIPS 203 / 204 / 205)。与此同时,**现在收集、以后解密**(harvest-now-decrypt-later)攻击意味着,今天由 RSA、ECDSA、ECDH 和 Diffie-Hellman 保护的流量和数据已经面临风险:一旦足够大的容错量子计算机(CRQC)存在,攻击者即可对当前记录的加密流量进行解密。CISA、NSA 和 NIST 正在推动组织**清点其加密算法**作为迁移的第一步([CNSA 2.0](https://media.defense.gov/2022/Sep/07/2003071834/-1/-1/0/CSA_CNSA_2.0_ALGORITHMS_.PDF)、[OMB M-23-02](https://www.whitehouse.gov/wp-content/uploads/2022/11/M-23-02-M-Memo-on-Migrating-to-Post-Quantum-Cryptography.pdf))。
`pqc-scan` 是一个轻量、依赖少的 CLI 工具,可对仓库或实时主机执行此类清点。它会标记以下类别中的量子脆弱算法:
- **源代码** — Python、JavaScript/TypeScript、Go、Rust、Java/Kotlin/Scala、C/C++、C#、Ruby、PHP、Shell、Terraform、配置文件及其他
- **X.509 证书** — `.pem`、`.crt`、`.cer`、`.der`
- **SSH 密钥、`authorized_keys`、`known_hosts`**
- **实时 TLS 端点** — 服务器证书公钥 + 签名哈希
对于每个发现,它会报告 **NIST 推荐的替换算法**(如 ML-KEM、ML-DSA、SLH-DSA、AES-256 等)。
## 安装
```
pip install -e .
```
## 用法
```
# 扫描目录
pqc-scan ./my-project
# 扫描目录和实时 TLS 端点,写入报告
pqc-scan ./my-project --endpoint api.example.com --md report.md --json report.json
# 探测多个端点
pqc-scan --endpoint github.com --endpoint imap.gmail.com:993
# 如果发现任何 HIGH 或更严重的问题,则使 CI 失败
pqc-scan . --fail-on high
```
运行 `pqc-scan --help` 查看完整选项列表。
## 示例输出
```
Findings: 2 critical 5 high 1 low
Sev Algorithm Location Recommended replacement
critical MD5 src/auth.py:42 SHA-256 / SHA-3-256 ...
critical DES src/legacy.py:17 AES-256-GCM
high RSA src/keys.py:8 ML-KEM (FIPS 203) ...
high ECDSA (server cert) api.example.com:443 ML-DSA (FIPS 204) ...
...
```
完整的示例报告(Markdown)位于 [`examples/sample_report.md`](examples/sample_report.md)。
## 标记内容
| 类别 | 算法 | 原因 |
| --- | --- | --- |
| 被 Shor 算法破解 | RSA、ECDSA、ECDH、DH、DSA、X25519、Ed25519 | 在 CRQC 上可实现多项式时间;受“现在收集、以后解密”攻击影响 |
| 被 Grover 算法削弱 | AES-128 | 有效密钥强度减半 |
| 已被经典算法破解 | MD5、SHA-1、DES、3DES、RC4 | 当前即不安全,与量子无关 |
## 限制
- **基于正则表达式的源码扫描**,非完整 AST 分析。注释和字符串字面量中可能出现误报;最小化文件和超大文件会被跳过。
- **不进行二进制扫描**。不会分析编译后的工件。
- **TLS 端点扫描仅作参考**——仅检查叶证书的公钥与签名哈希,不检查协商的密钥交换或 KEM。
- **分类法带有主观性**。“在 CRQC 出现前迁移”反映了当前 NIST/NSA/CISA 的指导建议,但时间线是动态的。
## 开发
```
pip install -e ".[dev]"
pytest
```
CI 工作流会在 [`.github/workflows/ci.yml`](.github/workflows/ci.yml) 中对 Python 3.10–3.12 运行 `pytest`,并对源码树进行自扫描以作为冒烟测试。
## 路线图
- TLS 端点的密钥套件 + KEM 分析(当前仅叶证书)
- 对编译二进制文件的内部检测(在 ELF / PE / Mach-O 中解析 OID)
- KMS / HSM 库存适配器(AWS KMS、GCP KMS、HashiCorp Vault)
- 自动生成的迁移补丁(计划作为独立的配套工具)
## 许可证
MIT — 参见 [LICENSE](LICENSE)。
标签:AES-256, authorized_keys, C, C++, CLI, CMMC, CMS安全, CNSA 2.0, CRQC, CRT, CVE, Diffie-Hellman, ECDH, ECDSA, ECS, Go, JavaScript, known_hosts, Kotlin, ML-DSA, ML-KEM, NIST FIPS 203, NIST FIPS 204, NIST FIPS 205, OMB M-23-02, OpenVAS, PEM, PHP, PQC, Python, RSA, Ruby, Ruby工具, Rust, Scala, Shell, SLH-DSA, SSH密钥, Terraform, TLS端点扫描, TypeScript, WiFi技术, X.509证书, 依赖轻量, 后量子密码学, 安全插件, 实时TLS扫描, 密钥交换, 开源, 恶意代码分析, 收获现在解密以后, 数字签名, 数据擦除, 文档结构分析, 无后门, 服务器证书, 源代码扫描, 漏洞评估, 知识库, 签名哈希, 网络流量审计, 证书扫描, 迁移到后量子密码, 逆向工具, 配置文件, 量子安全扫描, 量子脆弱密码