PQC Posture Scanner
Scan any codebase for quantum-vulnerable cryptography. Get a grade. Know your risk.
______________________________________________________________________
静态分析工具,可在18个算法类别中找到RSA、ECDSA、Diffie-Hellman、弱哈希、损坏的TLS和131个其他量子脆弱模式。上下文感知:将测试代码与生产代码分离。输出GitHub代码扫描、CycloneDX CBOM和JSON的SARIF。零外部依赖。一 pip install。在CI工作。
快速演示
$ pqc-scan /path/to/django
======================================================================
PQC POSTURE REPORT
======================================================================
QUANTUM RISK GRADE: F (100/100)
[##################################################]
Files scanned: 2,982
Files with crypto: 16
Total findings: 24
Scan time: 1,204ms
QUANTUM EXPOSURE:
BROKEN (quantum defeats): 1
WEAKENED (quantum degrades): 23
SAFE (quantum-resistant): 0
PRODUCTION vs TEST:
Production findings: 24 (ACTION REQUIRED)
Test-only findings: 0
MIGRATION PRIORITY (top 3):
CRITICAL operation ECDSA django/utils/crypto.py ML-DSA 65 (CRYSTALS-Dili
HIGH reference MD5 django/contrib/auth/hash... SHA-256 or SHA-3-256 min
HIGH reference SHA-1 django/utils/crypto.py SHA-256 or SHA-3-256 min
======================================================================
VERDICT: CRITICAL quantum exposure. Migration urgently recommended.
======================================================================安装
pip install pqc-posture没有依赖关系。Python 3.8+。就这样
为什么这很重要
NIST于2024年8月最终确定了后量子标准(FIPS 203 ML-KEM,FIPS 204 ML-DSA)。每个RSA密钥、每个ECDSA签名、每个Diffie-Hellman交换现在都处于弃用时钟上。 现在收割,稍后解密 攻击意味着今天使用易受攻击的算法加密的数据已经处于危险之中——对手现在捕获流量,并在量子硬件成熟时解密。OMB M-23-02要求联邦机构提交年度加密清单。迁移的最后期限不是“量子计算机准备就绪的时候”,而是现在。
经验证的结果:扫描了7个主要项目
我们扫描了38.5万多个GitHub star的生产软件。86%的人需要移民。
| 项目 | 星级 | 风险评分 | 等级 | 项目发现 | 量子破裂 | 判决 |
|---|---|---|---|---|---|---|
| HashiCorp保险库 | 31K | 100/100 | F | 536 | 701 | 立即迁移 |
| 钥匙斗篷 | 25K | 100/100 | F | 536 | 1702 | 现在迁移 |
| 下一个云 | 28K | 100/100 | F | 210 | 24 | 现在迁移 |
| Django | 82K | 100/100 | F | 24 | 1 | 现在迁移 |
| 请求 | 53K | 60/100 | D+ | 6 | 0 | 立即迁移 |
| 烧瓶 | 84K | 30/100 | B | 3 | 0 | 平面图 |
| 快速API | 82K | 0/100 | A. | 0 | 0 | 清洁 |
FastAPI的零发现也验证了扫描仪的精度:1174个文件中零误报。
完整的方法和每个项目的细分: STATE_OF_QUANTUM_READINESS_2026.md
它检测到什么
在5个类别的18个算法组中有131个正则表达式模式。
| 类别 | 算法 | 风险 | 量子状态 |
|---|---|---|---|
| 密钥交换 | RSA(18种模式)、Diffie-Hellman(5种)、ECDH(4种)、SSH RSA/ECDSA密钥(10种) | 严重 | 已损坏 |
| 签名 | ECDSA(9)、RSA签名(5)、DSA(3)、Ed25519(4)、X.509证书(11) | 严重 | 已损坏 |
| 哈希 | MD5(10),SHA-1(10) | 高 | 减弱 |
| 对称的 | DES/3DES(7)、AES-128(3)、AES-256(3) | 高低 | 弱安全 |
| 协议 | TLS 1.0/1.1(8),弱TLS配置(7),JWT RS/ES(6) | 严重高 | 已损坏 |
| 依赖项 | 加密库导入(8) | 中等 | 弱 |
支持的语言:Python、JavaScript/TypeScript、Java、Go、Rust、Ruby、PHP、C/C++、Shell,以及YAML/TOML/HCL/Terraform配置。
用法
基本扫描
pqc-scan .
pqc-scan /path/to/projectJSON输出
pqc-scan . --json
pqc-scan . --format jsonSARIF用于GitHub代码扫描
pqc-scan . --format sarif > results.sarif
pqc-scan . --sarif results.sarifCBOM出口(CycloneDX 1.6)
pqc-scan . --cbom CBOM.jsonCI门——风险等级失败
# Fail if any CRITICAL findings exist
pqc-scan . --fail-on CRITICAL
# Fail if grade is C or worse
pqc-scan . --fail-on-grade CTLS端点扫描
pqc-scan --tls example.com
pqc-scan --tls example.com:8443
pqc-scan --tls example.com --json检查TLS版本、密码套件、证书算法、密钥大小、PQC密钥交换支持和证书过期。
上下文过滤
# Production code only (skip test files)
pqc-scan . --context prod
# Only HIGH and CRITICAL findings
pqc-scan . --min-risk HIGH
# Combined
pqc-scan . --context prod --min-risk HIGH --fail-on CRITICALGitHub行动
把这个放进去 .github/workflows/pqc-scan.yml:
name: PQC Posture Scan
on: [push, pull_request]
permissions:
contents: read
security-events: write
pull-requests: write
jobs:
pqc-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: Miles0sage/quantum-mcp@main
id: scan
with:
path: "."
fail-on: "CRITICAL"
format: "sarif"
- uses: github/codeql-action/upload-sarif@v3
if: always()
with:
sarif_file: pqc-results.sarif
category: pqc-posture
- uses: actions/upload-artifact@v4
if: always()
with:
name: crypto-bill-of-materials
path: CBOM.json行动输出: risk-score, risk-level, findings-count, production-findings --在后续步骤中使用它们。PR评论会自动与扫描结果一起发布。
MCP服务器(AI代理集成)
PQC姿态扫描器也作为MCP服务器运行,使AI代理(Claude、VS Code Copilot)可以直接访问加密扫描。
克劳德桌面 (~/.claude.json):
{
"mcpServers": {
"quantum": {
"url": "http://localhost:8200",
"tools": ["quantum_pqc_scan"]
}
}
}VS Code (.vscode/mcp.json):
{
"servers": {
"quantum": {
"url": "http://localhost:8200"
}
}
}启动服务器:
pip install fastapi uvicorn
python3 server.py
# MCP server running on http://localhost:8200其他MCP工具: quantum_random (真量子RNG), quantum_backends (IBM/Origin QPU状态), quantum_circuit (OpenQASM执行)。
运作原理
上下文感知扫描
并非所有加密货币的发现都是平等的。A. hashlib.md5 测试夹具中的内容与auth模块中的内容不同。扫描仪对每个发现进行分类:
| 上下文 | 描述 | 风险调整 |
|---|---|---|
operation | 主动加密操作(生成、签名、加密) | 完全风险 |
import | 库导入——依赖关系是真实的 | 完全风险 |
config | 配置文件(YAML、TOML、nginx.conf) | 完全风险 |
reference | 加密算法的代码引用 | 完全风险 |
test | 测试/夹具/模拟代码 | 降级(关键->中等) |
comment | 评论、TODO、提及加密货币的文档 | 降级为低 |
风险评分
Score = SUM(production findings * weight) + SUM(test findings * reduced weight)
Production weights: CRITICAL=25, HIGH=10, MEDIUM=3, LOW=1
Test weights: CRITICAL=3, HIGH=1, MEDIUM=0, LOW=0
Score capped at 100.分级标准
| 等级 | 分数 | 含义 |
|---|---|---|
| A+ | 0 | 量子安全。零发现。 |
| A | 1-5 | 最小曝光。 |
| B+ | 6-15 | 低暴露。 |
| B | 16-25 | 一些易受量子攻击的加密货币。 |
| C+ | 26-40 | 中度暴露。计划迁移。 |
| C | 41-50 | 严重暴露。 |
| D+ | 51-65 | 高曝光。建议迁移。 |
| D | 66-80 | 严重暴露。马上迁移。 |
| F+ | 81-90 | 临界暴露。 |
| F | 91-100 | 普遍存在的易受量子攻击的加密货币。立即迁移。 |
比较
| 特点 | PQC姿势 | 加密扫描器 | PostQuant | IBM QSE | SandboxAQ |
|---|---|---|---|---|---|
| 开源 | 是 | 是 | 否 | 否 | 不是 |
| 零依赖 | 是 | 否 | 否 | 无 | 否 |
| 上下文感知(测试与prod) | 是 | 否 | 否 | 部分 | |
| SARIF输出 | 是 | 否 | 否 | 是 | 无 |
| CycloneDX CBOM | 是 | 否 | 否 | 是 | 是 |
| GitHub操作 | 是 | 否 | 否 | 不 | 否 |
| MCP服务器(AI代理) | 是 | 否 | 否 | 不 | 否 |
| TLS端点扫描 | 是 | 否 | 否 | 是 | |
| CI门(--故障开启) | 是 | 否 | 否 | 是 | 不 |
| 字母分级 | 是 | 否 | 否 | 不 | 否 |
| 131+个模式 | 是 | ~20 | 未知 | ~40 | 未知 |
| 语言(8+) | 是 | 仅限Python | 仅限Java | Java/Python | 多语言 |
| 价格 | 免费 | 免费 | 付费 | 付费 | 已支付 |
路线图
| 版本 | 功能 | 状态 |
|---|---|---|
| v0.1 | 131种模式、SARIF、CBOM、GitHub Action、CLI、MCP服务器 | 已发货 |
| v0.2 | TLS扫描、字母分级、, --fail-on-grade | 已发货 |
| v0.3 | 基于AST的分析(不仅仅是正则表达式),调用图跟踪 | 已计划 |
| v0.4 | 自动修复引擎:生成迁移PR | 已计划 |
| v1.0 | 企业仪表板、团队跟踪、趋势分析 | 已计划 |
贡献
添加检测模式
- 将正则表达式模式添加到
CRYPTO_PATTERNS在pqc_posture.py - 将测试用例添加到
stress_test.py - 运行:
python3 stress_test.py && python3 stress_test_v2.py - 打开PR
运行测试
python3 stress_test.py # Core pattern tests
python3 stress_test_v2.py # Extended patterns (SSH, certs, TLS config)
python3 stress_test_v3.py # Edge cases and regression tests项目结构
pqc_posture.py # Core scanner engine (131 patterns, scoring, CBOM)
pqc_scan_cli.py # CLI entry point (pqc-scan command)
tls_scanner.py # TLS endpoint analysis (zero deps, stdlib only)
server.py # MCP server (FastAPI)
action.yml # GitHub Action definition
setup.py # Package config
pyproject.toml # Build config许可证
麻省理工学院——使用它,分叉它,运送它。如果你在一个重大项目中发现了量子脆弱的加密货币, 打开一个问题 我们将把它添加到量子就绪状态报告中。
