mattmuldoon48/pqc-readiness-scanner

GitHub: mattmuldoon48/pqc-readiness-scanner

轻量级 Python CLI 工具,通过确定性规则扫描代码和配置中的量子脆弱加密指标,生成 PQC 迁移就绪报告以支持组织的加密资产普查和迁移规划。

Stars: 0 | Forks: 0

# PQC 就绪扫描器 一个轻量级的 Python CLI 工具,用于扫描代码或配置文件夹,查找易受量子攻击的加密技术的确定性证据,并生成后量子密码学就绪报告。 这是一个与量子相关的实用网络安全项目。它为迁移规划构建加密清单。它**不会**实现后量子算法,**不会**模拟量子计算,也**不是**生产级的加密审计。 ## 为什么这很重要 RSA、ECDSA、ECDH、Ed25519 及相关的公钥系统是重要的迁移清单目标,因为具有密码学意义的量子计算机将威胁到它们的安全假设。组织需要在这些算法出现的位置进行排查,然后才能规划 PQC 或混合迁移。清单是第一步:证书、TLS 配置、JWT 签名、SSH 密钥、依赖项以及应用程序加密代码都有不同的所有者和迁移路径。 ## 扫描内容 规则从 `src/pqc_scanner/rules/default_rules.yml` 加载,并与目标文件夹下的文本文件进行确定性匹配。默认规则包含以下指标: - RSA 私钥和公钥 PEM 标记 - TLS 和证书配置中的 RSA - ECDSA、ECDH、ECC 和命名的椭圆曲线 - Ed25519 和 EdDSA 引用 - OpenSSL 依赖项或配置使用 - JWT 算法,例如 `RS256`、`ES256` 和 `EdDSA` - SSH 密钥引用,例如 `ssh-rsa` 和 `ecdsa-sha2-*` - X.509 和证书引用 对于每个发现项,扫描器会记录规则 ID、文件路径、行号、匹配的片段、加密体系、使用类别、严重性、置信度、原因、建议、风险分数和风险等级。 ## 安装 ``` python -m venv .venv source .venv/bin/activate python -m pip install -e ".[dev]" ``` ## 运行 ``` python -m pqc_scanner scan examples/mock_enterprise_app --out reports/mock_enterprise_app ``` 使用抑制(suppressions)和基线对比(baseline comparison): ``` python -m pqc_scanner scan examples/mock_enterprise_app \ --out reports/mock_enterprise_app \ --suppressions examples/mock_enterprise_app/.pqc-scanner-ignore.yml \ --baseline reports/previous/crypto_inventory.json ``` 生成的文件: - `crypto_inventory.json` — 机器可读的清单和摘要 - `pqc_readiness_report.md` — 人类可读的就绪报告 - `risk_summary.csv` — 适合电子表格处理的发现列表 - `pqc_findings.sarif` — 用于安全工具和代码扫描工作流的 SARIF 输出 - `baseline_diff.json` — 当提供 `--baseline` 时,进行新的/已解决的/未更改的发现对比 使用 `crypto_inventory.json` 作为自动化的真实数据源,`pqc_readiness_report.md` 用于审查人员交接,`risk_summary.csv` 用于排序和所有者分类,SARIF 用于代码扫描集成。 ## 示例输出 ``` PQC Readiness Scan Complete Files scanned: 7 Findings: 39 Highest risk: 100 json: reports/mock_enterprise_app/crypto_inventory.json markdown: reports/mock_enterprise_app/pqc_readiness_report.md csv: reports/mock_enterprise_app/risk_summary.csv sarif: reports/mock_enterprise_app/pqc_findings.sarif ``` Markdown 发现行示例: | 风险 | 严重性 | 规则 | 位置 | 加密体系 | 类别 | 证据 | | ---: | --- | --- | --- | --- | --- | --- | | 100 | critical | rsa_private_key_marker | auth_service.py:10 | RSA | private_key | `-----BEGIN RSA PRIVATE KEY-----` | ## 风险评分 风险评分旨在简单且易于解释: - 较高风险:私钥、TLS/证书配置、身份验证/JWT/签名以及类似生产环境的路径。 - 中等风险:依赖项和配置引用。 - 较低风险:文档、示例和 README 风格的提及。 评分有助于对清单审查进行分类;它们并不能作为可利用性的密码学证明。 ## 抑制和基线 抑制文件是带有明确原因的 YAML 文档: ``` suppressions: - rule_id: x509_certificate_reference file_path: README.md reason: Documentation-only mention in mock app README. ``` 抑制应该具体且易于审查:基于 `rule_id`、`file_path` 或 `matched_text` 进行匹配,并确保所需的原因足够具体,以便后续审查人员能够决定该例外是否仍然适用。 基线模式将当前扫描与之前的 `crypto_inventory.json` 进行比较,并写入包含新增、已解决和未更改发现的 `baseline_diff.json`。 使用基线差异来审查工作流的变更:新的发现需要所有者进行分类,已解决的发现需要确认是删除了加密而不是重命名,未更改的发现应保留其现有的迁移所有者或抑制决定。 ## 局限性与客观说明 - 非生产级加密审计。 - 不实现 PQC 算法。 - 不证明发现是否在运行时代码中可达。 - 不解析所有编程语言或二进制格式。 - 可能会遗漏生成的、加密的、远程的或动态组装的配置。 - 可能会误报良性的文档或虚假示例。 - 仅使用确定性的本地规则;不调用付费 API,也不进行外部 AI 调用。 使用这些输出内容与服务所有者、PKI 团队、平台团队和应用程序安全审查人员展开交流。 ## 路线图 已完成: - 用于安全工具集成的 SARIF 输出。 - 对已接受的发现提供允许列表/抑制支持。 - 基线/差异模式,用于随时间比较扫描结果。 - GitHub Actions CI。 未来计划: - 添加可配置的严重性和风险评分权重。 - 添加文件类型感知的扫描器,用于 Terraform、Nginx、Python 和包清单。 - 为发现项添加所有者/团队元数据映射。 - 添加 Docker 镜像以实现可重复的 CLI 运行。 ## 开发 ``` pytest python -m pqc_scanner scan examples/mock_enterprise_app --out reports/mock_enterprise_app ```
标签:Python, SamuraiWTF, 合规报告, 后量子密码学, 密码学审查, 文档结构分析, 无后门, 无线安全, 逆向工具