量子加密扫描工具

PQC Posture Scanner是一款静态分析工具,用于检测代码库中存在的量子脆弱加密算法,提供风险评分和迁移建议。

  • by Miles0sage
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Miles0sage/quantum-mcp

使用说明

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/project

JSON输出

pqc-scan . --json
pqc-scan . --format json

SARIF用于GitHub代码扫描

pqc-scan . --format sarif > results.sarif
pqc-scan . --sarif results.sarif

CBOM出口(CycloneDX 1.6)

pqc-scan . --cbom CBOM.json

CI门——风险等级失败

# Fail if any CRITICAL findings exist
pqc-scan . --fail-on CRITICAL

# Fail if grade is C or worse
pqc-scan . --fail-on-grade C

TLS端点扫描

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 CRITICAL

GitHub行动

把这个放进去 .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 企业仪表板、团队跟踪、趋势分析 已计划

贡献

添加检测模式

  1. 将正则表达式模式添加到 CRYPTO_PATTERNS 在 pqc_posture.py
  2. 将测试用例添加到 stress_test.py
  3. 运行: python3 stress_test.py && python3 stress_test_v2.py
  4. 打开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

许可证

麻省理工学院——使用它,分叉它,运送它。如果你在一个重大项目中发现了量子脆弱的加密货币, 打开一个问题 我们将把它添加到量子就绪状态报告中。