在量子计算机到来前,扫描你的代码库以发现易受量子攻击的加密算法。
快速开始 • 为何要准备量子安全? • 用法 • 风险等级 • CI/CD • 关于
Crypto Scanner 是一款 CLI 工具,可扫描你的代码库中的加密算法,并生成量子脆弱性风险评估报告。它能分析源代码、配置文件和 X.509 证书,识别出将被量子计算机攻破的加密方式。
由 Quantum Shield Labs 开发——帮助组织为后量子时代做好准备。
能够破解 RSA 和 ECC 的密码学相关量子计算机(CRQC)预计将在 2033 年 之前出现。这不是科幻小说——而是各国政府和企业正在积极准备的现实。
攻击者已经在收集加密数据,期望在量子计算机可用时解密它们。如果你的数据具有长期价值(医疗记录、财务数据、商业机密、政府通信),那么它已经处于风险之中。
| 挑战 | 现实 |
|---|---|
| 迁移复杂度 | 大型代码库需要 3-5 年以上的过渡期 |
| 供应链深度 | 你的依赖中包含你看不到的易受攻击的加密算法 |
| 合规要求 | NIST PQC 标准(ML-KEM、ML-DSA)现已最终确定 |
Shor 算法在足够强大的量子计算机上运行,可以有效分解大整数并计算离散对数。这将破解:
你无法迁移那些你不知道自己拥有的东西。Crypto Scanner 提供加密算法清单,这是任何量子就绪计划中必不可少的第一步。
📘 了解更多:阅读 Quantum Shield Labs Playbook 获取全面的迁移指南。
在 60 秒内获得你的第一个量子漏洞扫描结果:
# 从 PyPI 安装
pip install crypto-scanner
# 扫描你的项目
crypto-scanner scan .
# 生成管理层 HTML 报告
crypto-scanner scan . --html --output quantum-risk-report.html
就是这样。你现在拥有了一份代码库的完整加密算法清单。
pip install crypto-scanner
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e .
# 扫描目录(JSON 输出至 stdout)
crypto-scanner scan <directory>
# 显示支持的文件类型和风险分类
crypto-scanner info
# 显示版本
crypto-scanner --version
# 扫描并显示详细信息
crypto-scanner scan ./src --verbose
# 将 JSON 报告保存到文件
crypto-scanner scan . --output crypto-audit.json
# 为利益相关者生成品牌化的 HTML 报告
crypto-scanner scan . --html --output quantum-assessment.html
# 排除特定目录
crypto-scanner scan . --exclude vendor --exclude legacy
# 排除文件模式
crypto-scanner scan . --exclude "*.test.js" --exclude "*.spec.ts"
# 组合选项
crypto-scanner scan ./backend -v --exclude node_modules -o report.json
以下内容默认排除,以避免扫描依赖:
.git, .svn, .hg # 版本控制
node_modules, vendor # 包依赖
__pycache__, .pytest_cache, .mypy_cache
.venv, venv, env # 虚拟环境
dist, build, out # 构建输出
.idea, .vscode # IDE 目录
site-packages, third_party
将被 Shor 算法完全破解的算法:
已知存在经典漏洞的算法:
当前安全但应继续监视的算法:
提供足够保护的算法:
| 扩展名 | 格式 |
|---|---|
.pem | PEM 编码 |
.crt, .cer, .cert | 证书 |
.der | DER 编码 |
默认输出格式,适用于自动化和 CI/CD 管道:
{
"scan_directory": "/path/to/project",
"scan_timestamp": "2026-02-06T10:30:00",
"scanner_version": "0.1.0",
"summary": {
"total_files_scanned": 150,
"total_findings": 23,
"critical_count": 5,
"high_count": 8,
"medium_count": 7,
"low_count": 3
},
"excluded_patterns": [".git", "node_modules", "..."],
"findings": [
{
"file_path": "/path/to/auth.py",
"line_number": 42,
"algorithm": "RSA",
"key_size": 2048,
"risk_level": "critical",
"description": "RSA key generation detected",
"recommendation": "Plan migration to post-quantum algorithms (ML-KEM, ML-DSA)",
"context": "key = rsa.generate_private_key(public_exponent=65537, key_size=2048)"
}
]
}
专业、自包含的报告,带有 Quantum Shield Labs 品牌标识:
生成方式:
crypto-scanner scan . --html --output report.html
name: Crypto Vulnerability Scan
on: [push, pull_request]
jobs:
crypto-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install Crypto Scanner
run: pip install crypto-scanner
- name: Run Crypto Scan
run: crypto-scanner scan ./src --output crypto-report.json
- name: Check for Critical Findings
run: |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "::error::Found $CRITICAL critical quantum-vulnerable algorithms!"
jq '.findings[] | select(.risk_level == "critical")' crypto-report.json
exit 1
fi
- name: Upload Report
uses: actions/upload-artifact@v4
if: always()
with:
name: crypto-vulnerability-report
path: crypto-report.json
crypto-scan:
stage: security
image: python:3.12
script:
- pip install crypto-scanner
- crypto-scanner scan . --output crypto-report.json
- |
CRITICAL=$(jq '.summary.critical_count' crypto-report.json)
if [ "$CRITICAL" -gt 0 ]; then
echo "Critical quantum-vulnerable cryptography detected!"
exit 1
fi
artifacts:
reports:
dotenv: crypto-report.json
paths:
- crypto-report.json
when: always
添加到 .pre-commit-config.yaml:
repos:
- repo: local
hooks:
- id: crypto-scanner
name: Crypto Scanner
entry: bash -c 'crypto-scanner scan . --output /tmp/crypto-scan.json && CRITICAL=$(jq ".summary.critical_count" /tmp/crypto-scan.json) && [ "$CRITICAL" -eq 0 ]'
language: system
pass_filenames: false
always_run: true
#!/bin/bash
# crypto-check.sh - 如果发现严重漏洞则失败
set -e
crypto-scanner scan . --output /tmp/crypto-report.json
CRITICAL=$(jq '.summary.critical_count' /tmp/crypto-report.json)
HIGH=$(jq '.summary.high_count' /tmp/crypto-report.json)
echo "扫描完成:$CRITICAL 个严重,$HIGH 个高风险发现"
if [ "$CRITICAL" -gt 0 ]; then
echo "失败:检测到严重的易受量子攻击的加密算法!"
exit 1
fi
crypto-scanner/
├── src/crypto_scanner/
│ ├── cli.py # Typer CLI 接口
│ ├── scanner.py # 核心编排逻辑
│ ├── models.py # Pydantic 数据模型
│ ├── patterns.py # 50 多个正则检测模式
│ ├── analyzers/ # 文件类型分析器
│ │ ├── base.py # 抽象基类
│ │ ├── source.py # 源代码分析器(14 种语言)
│ │ ├── config.py # 配置文件分析器
│ │ └── certificate.py # X.509 证书分析器
│ └── reporters/ # 输出生成器
│ ├── json_reporter.py
│ └── html_reporter.py
└── tests/ # 综合测试套件
SourceCodeAnalyzer — 跨 14 种编程语言的模式匹配ConfigAnalyzer — YAML/JSON 解析 + 配置文件的模式匹配CertificateAnalyzer — X.509 解析以提取密钥算法和长度欢迎贡献!以下是如何开始:
git clone https://github.com/mbennett-labs/crypto-scanner.git
cd crypto-scanner
pip install -e ".[dev]"
# 运行所有测试
pytest tests/ -v
# 运行测试并生成覆盖率报告
pytest tests/ -v --cov=crypto_scanner --cov-report=html
加密模式定义在 src/crypto_scanner/patterns.py 中。每个模式包括:
git checkout -b feature/new-pattern)pytest tests/ -v)MIT 许可证 — 详情见 LICENSE。
Quantum Shield Labs 帮助组织为后量子时代做好准备,提供:
由 Quantum Shield Labs 精心打造
| CNSA 2.0 截止日期 | NSA 要求到 2033 年采用抗量子算法 |
| 选项 | 简写 | 描述 |
|---|
--html | 生成 HTML 报告而不是 JSON | |
--output | -o | 将报告保存到文件(而不是 stdout) |
--verbose | -v | 显示详细的扫描进度 |
--exclude | -e | 额外的排除模式(可重复使用) |
--version | -V | 显示版本并退出 |
| 算法 | 密钥长度 | 量子影响 | 建议操作 |
|---|
| RSA | 全部(1024-4096+) | 完全被破解 | 迁移到 ML-KEM + ML-DSA |
| ECDSA/ECC | 所有曲线 | 完全被破解 | 迁移到 ML-DSA |
| DH/ECDH | 全部 | 密钥交换被破解 | 迁移到 ML-KEM |
| DSA | 全部 | 完全被破解 | 迁移到 ML-DSA |
| 算法 | 问题 | 建议操作 |
|---|
| MD5 | 碰撞攻击,完全被破解 | 替换为 SHA-3 或 SHA-256 |
| SHA-1 | 碰撞攻击已被证实 | 替换为 SHA-256+ |
| DES | 56 位密钥,可轻易被破解 | 替换为 AES-256 |
| 3DES | 中间相遇攻击 | 替换为 AES-256 |
| AES-128 | Grover 算法削弱安全性 | 升级到 AES-256 |
| 算法 | 状态 | 建议操作 |
|---|
| SHA-256 | 安全,Grover 降至 128 位 | 规划迁移到 SHA-3 |
| SHA-384 | 安全 | 监视发展 |
| SHA-512 | 量子抗性良好 | 监视发展 |
| TLS 1.2 | 安全但已老 | 优先使用 TLS 1.3 |
| 算法 | 状态 | 备注 |
|---|
| AES-256 | 抗量子 | 128 位后量子安全性 |
| ChaCha20 | 现代、安全 | AES 的良好替代品 |
| SHA-3 | 最新 NIST 标准 | 新项目推荐 |
| ML-KEM | 后量子(Kyber) | NIST 于 2024 年标准化 |
| ML-DSA | 后量子(Dilithium) | NIST 于 2024 年标准化 |
| 扩展名 | 语言 |
|---|
.py, .pyw | Python |
.js, .mjs, .cjs | JavaScript |
.ts, .tsx | TypeScript |
.java | Java |
.go | Go |
.rs | Rust |
.c, .h, .cpp, .hpp | C/C++ |
.cs | C# |
.rb | Ruby |
.php | PHP |
.swift | Swift |
.kt, .kts | Kotlin |
.scala | Scala |
| 扩展名 | 格式 |
|---|
.yaml, .yml | YAML |
.json | JSON |
.toml | TOML |
.ini, .cfg, .conf, .config | INI/Config |
.env | 环境变量 |