serewicz/HarvestGuard
GitHub: serewicz/HarvestGuard
一款用于技术尽职调查和后量子迁移规划的开源密码学资产盘点与证据收集工具。
Stars: 0 | Forks: 0
# HarvestGuard
[](LICENSE)
[](https://www.python.org/)
[](https://streamlit.io/)
**用于技术尽职调查和后量子迁移规划的开源密码学证据扫描工具。**
由 [Timothy Serewicz](https://www.linkedin.com/in/serewicz/) 构建。执行技术顾问及 fractional CTO。
## 为什么选择 HarvestGuard?
HarvestGuard 可对当前的密码学资产进行盘点,为组织提供在密码学标准演进时评估未来迁移规划所需的证据。
在并购尽职调查、PE/VC 投资组合审查、收购规划以及企业技术决策中,团队在评估现代化或迁移工作之前,需要关于加密态势、敏感数据存放位置以及密码学资产的可靠证据。
HarvestGuard 为团队提供了针对受支持的存储、云、源代码和文件系统目标中已实施的密码学态势的**本地化、聚焦证据的可见性**。其输出可作为**技术尽职调查证据包**的一部分,用于技术尽职调查、高管评估、收购审查、整合规划以及密码现代化规划。
HarvestGuard 是对组织可能已在安全运营、云安全、资产管理、漏洞管理和治理方面使用的工具的补充。它不能替代广泛的漏洞管理、CSPM、GRC、SIEM 或安全运营平台。
## HarvestGuard 的功能
HarvestGuard 收集可验证的密码学证据,传达
置信度和未知信息,展示所有权信号,并界定组织
必须回答的问题。它不提供指定的答案。
在实际应用中,HarvestGuard 可帮助审查人员:
- 从受支持的目标收集可观察的密码学证据;
- 保持证据、推断、不确定性和覆盖范围的透明度;
- 呈现归因于来源的所有权信号,而不指派业务
责任;
- 将生成的证据用于尽职调查、高管评估和
后量子迁移规划。
## HarvestGuard 不做的事情
HarvestGuard 不会:
- 判断组织是否已为量子计算做好准备;
- 指派业务所有权或责任;
- 推荐产品、供应商、架构或修复计划;
- 估算迁移或修复成本;
- 认证合规性;
- 取代安全评估、法律审查、架构审查、尽职调查
专业人员或高管判断。
有关证据、置信度、所有权信号和建议范围的
权威定义,请参阅 [docs/PRODUCT_PRINCIPLES.md](docs/PRODUCT_PRINCIPLES.md)。
## 目标用户与使用场景
- **并购、知识产权律师、PE/VC 公司**
快速扫描目标公司的存储/云的加密状态、未加密的敏感数据(知识产权、客户 PII)以及 HNDL 风险暴露。许多目标公司的资产盘点并不完善——该工具能及早发现相关证据。
- **交易速度与规划证据**
在 LOI 之前或尽职调查期间,收集密码学证据,为整合规划、现代化讨论和后续咨询审查提供信息。
- **高管评估**
为领导者提供更清晰的证据基础,以解答关于加密态势、长期数据暴露和未来迁移规划的问题,而无需声称已完成全面的量子就绪评估。
- **易用性**
免费/开源、自托管或简单的基于 Web 的评估 → 门槛极低。
- **证据包** *(计划中 — 参阅 [docs/ROADMAP.md](docs/ROADMAP.md))*
当前的 JSON 和 Markdown 报告即是证据输出;未来的工作可能会将其打包成更广泛的技术尽职调查证据包,供法律、咨询和高管审查使用。
面向高管的报告愿景记录在
[docs/EXECUTIVE_DELIVERABLES.md](docs/EXECUTIVE_DELIVERABLES.md) 中。HarvestGuard
首先生成技术证据;高管交付物是从该
证据中推导出来的,并且必须保持与其的可追溯性。
## 功能 (MVP)
- **本地文件系统** — 真实加密检测:对
常见加密格式(OpenSSL、PGP/GPG、age、LUKS 容器、加密的
ZIP)进行文件签名检查,当文件本身不属于
已识别的加密格式时,回退到卷级别状态(FileVault / LUKS / BitLocker)。
- **AWS S3、Google Cloud Storage、Azure Blob Storage** — 通过各个云厂商的 API 获取每个对象/blob的加密状态(S3 `ServerSideEncryption`、GCS CMEK vs. Google-managed、Azure customer-managed encryption scope vs. Microsoft-managed)。
- **敏感数据分类器** — 标记包含电子邮件地址、SSN、电话号码、经 Luhn 校验的支付卡号以及凭据/机密(AWS 密钥、私钥、GitHub/Slack token)的文件。仅报告类别和计数,绝不报告匹配到的具体值,从而确保扫描结果本身不会泄露其发现的敏感数据。
- **密码代码分析** — 通过小型的内置 Semgrep 规则集(而非 Semgrep 的托管注册表)标记源代码中对弱/陈旧密码库的使用(MD5/SHA1、DES/3DES/RC4、ECB 模式、小于 2048 位的 RSA 密钥)——确保本地扫描保持无网络状态。
- **密码学资产清单** — 发现本地证书和密钥材料(PEM/DER X.509 证书、PEM 和 OpenSSH 密钥、PKCS#12 容器以及 JKS 头证据),包含算法、密钥大小、签发者、使用者、过期时间、指纹、置信度和解析错误。请参阅 [docs/CRYPTO_INVENTORY.md](docs/CRYPTO_INVENTORY.md)。
- **统一 CLI** — 通过规范化的发现模型运行本地扫描器,并输出摘要、JSON 和专业的 Markdown 报告。请参阅 [docs/CLI.md](docs/CLI.md)。
- **量子风险评分** — 基于加密状态叠加的启发式 HNDL(现在收集,以后解密,即 Harvest-Now-Decrypt-Later)风险暴露评分(高/中/低)。
- **Streamlit 仪表板** — 每次扫描的饼图/条形图和结果表格。
尚未构建:CBOM/PDF 导出和网络级别的密码扫描(TLS/密码套件检测)。有关接下来的计划和原因(按大致优先级顺序排列),请参阅 [docs/ROADMAP.md](docs/ROADMAP.md)。
## 快速开始 (macOS / Linux / Windows)
### 前置条件
- Python 3.10+ (`python3 --version`)
- 用于深度本地扫描的提升权限(`sudo`)(如果是云扫描则需要 IAM)
### 安装说明
```
# Clone the repo
git clone https://github.com/serewicz/HarvestGuard.git
cd HarvestGuard
# 创建并激活 virtual environment(推荐)
python3 -m venv venv
source venv/bin/activate # On macOS/Linux
# venv\Scripts\activate # On Windows
# Install dependencies
pip install -r requirements.txt # or pip3 if needed
# 可选:install the unified CLI command
pip install -e .
# Run the dashboard
streamlit run main.py
# 或者 run a local CLI scan
harvestguard scan ./tests/fixtures/crypto_inventory
# 撰写 Markdown evidence report
harvestguard scan ./tests/fixtures/crypto_inventory --markdown report.md
# Run a single scan type,或者 cloud scan(uses provider SDK default creds)
harvestguard scan ./tests/fixtures/crypto_inventory --type crypto --json findings.json
harvestguard scan my-bucket --type s3 --json --quiet
```
有关所有扫描类型、选项和退出代码,请参阅 [docs/CLI.md](docs/CLI.md)。
### 在容器中运行
对于不希望直接在裸 Python 环境中处理的交易数据:我们提供了一个非 root、distroless 且兼容只读文件系统的镜像。
```
docker build -t harvestguard .
docker run --rm -p 8501:8501 --read-only --tmpfs /tmp harvestguard
```
本地文件系统和 PII/机密扫描完全不需要网络访问——
这一点已在 [SECURITY.md](SECURITY.md#container-network-posture) 中验证。云
扫描仅需要对该云厂商的 API 的出站访问权限;请参阅
[deploy/iam/](deploy/iam/) 获取最小权限、只读的 IAM 策略
模板,这些模板的范围严格限定为每个扫描器调用的内容。
## 贡献
欢迎贡献 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解开发环境设置、
测试/lint 命令、适合首次贡献的方向以及贡献
工作流程。非平凡的更改应从 GitHub Issue 开始;路线图 ID 是
规划参考,不能替代 issue 的范围界定。产品方向位于
[docs/ROADMAP.md](docs/ROADMAP.md)、
[docs/PRODUCT_PRINCIPLES.md](docs/PRODUCT_PRINCIPLES.md) 和
[docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 中。
## 安全性
发现漏洞?请不要公开 issue —— 请参阅
[SECURITY.md](SECURITY.md) 了解如何私下报告。
标签:Kubernetes, Python, Streamlit, 加密态势, 后量子密码学, 密码资产管理, 技术尽调, 无后门, 访问控制, 请求拦截, 逆向工具