ILIASTEKEOGLOU/QSTriage
GitHub: ILIASTEKEOGLOU/QSTriage
QSTriage 是一个本地运行的 PQC 迁移决策引擎,通过分析密码学清单与 CBOM 证据生成确定性的迁移优先级决策记录,帮助团队从「发现问题」过渡到「论证并记录行动」。
Stars: 0 | Forks: 0
# QSTriage
[](https://github.com/ILIASTEKEOGLOU/QSTriage/actions/workflows/ci.yml)
[](https://github.com/ILIASTEKEOGLOU/QSTriage/actions/workflows/security.yml)
**QSTriage — 密码学策略与论证引擎**
密码学迁移不是一个扫描器问题。
扫描器可以告诉你 RSA 在哪里。它无法告诉你接下来该做出什么决定,哪些不确定性会阻碍行动,或者日后如何为该决定进行辩护。
QSTriage 评估密码学清单和支持的 CycloneDX CBOM 证据,并生成确定性的 PQC 决策记录 (PDR 0.2)。每条记录都会保留证据、策略上下文、置信度限制以及由此产生的行动。
QSTriage 在本地运行,不会修改生产系统。
## QSTriage 的功能
QSTriage:
- 验证原生 YAML 清单和支持的 CycloneDX CBOM JSON,
- 根据有界的标准注册表对密码学算法进行分类,
- 将风险关注点与证据、置信度和验证需求区分开来,
- 将这些信号整合为每个资产的一项规范决策,
- 生成具有确定性完整性哈希的 PDR 0.2 决策记录,
- 对资产进行评分并建模图放大的爆炸半径,
- 评估基础混合 PQC 迁移压力,
- 生成 Markdown 报告和 JSON/CSV 导出。
## 范围
QSTriage 评分是确定性的优先级排序指标。它们对资产进行审查排序;它们不估计妥协概率、密码学相关量子计算机的到达日期或预期的财务损失。请参阅[评分依据](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/scoring-rationale.md)。
QSTriage 停留在决策边界。它可以建议、把关并解释一项行动,但它不能执行该行动。它不修改生产系统、轮换证书、部署密码学更改或执行修复。
## 快速开始
QSTriage 需要 Python 3.11 或更高版本。当前的 CI 和发布基线是 Python 3.11。如果安装的可执行文件名称是 `python3`,请使用 `python3` 而不是 `python`。
在虚拟环境中安装已发布的 CLI:
```
python -m pip install qstriage
qstriage version
```
如需获取内置示例并进行可编辑的开发安装,请按照以下步骤从全新的克隆开始。
从全新的克隆中,创建一个虚拟环境:
```
python -m venv .venv
```
使用适合您 shell 的命令激活它。
Windows Git Bash:
```
source .venv/Scripts/activate
```
Windows PowerShell:
```
.\.venv\Scripts\Activate.ps1
```
Linux 或 macOS:
```
source .venv/bin/activate
```
安装 QSTriage 并从示例清单生成 PDR:
```
python -m pip install --upgrade pip
python -m pip install -e .
python -m qstriage.cli version
python -m qstriage.cli policy list
python -m qstriage.cli pdr generate examples/sample_inventory.yaml --output reports/pdr.json
```
最后一条命令会写入 `reports/pdr.json`。如果该文件已存在,除非提供 `--overwrite` 参数,否则 QSTriage 将拒绝替换它。
可编辑安装还会暴露 `qstriage` 命令。上面的模块形式避免了特定于 shell 的入口点解析。
## 核心工作流
```
inventory/CBOM
-> classification
-> context and evidence review
-> risk scoring and policy evaluation
-> canonical decision
-> PDR, impact simulation, report, and export
```
常用命令:
```
qstriage validate examples/sample_inventory.yaml
qstriage score examples/sample_inventory.yaml
qstriage review evidence examples/sample_inventory.yaml
qstriage report examples/sample_inventory.yaml --output reports/qstriage_report.md
```
请参阅[使用指南](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/usage.md)了解完整的 CLI 工作流。
## OpenAI Build Week 2026 - 证据闭环
证据闭环是在 QSTriage `v1.2.0` 之后开发的未发布工作。它不是 `v1.2.0` 标签或其发布工件的一部分。
在 Build Week 之前,QSTriage 已经提供了 CBOM 导入、密码学分类、证据审查、确定性评分和策略决策、PDR 生成、图分析、模拟、报告和导出。Build Week 增加了结构化证据缺口、来源感知的源绑定丰富化、确定性的验证/应用/比较命令、只读 MCP 工具,以及 `qstriage-evidence-closure` Codex 技能。
一键判定演示为:
```
python scripts/build_week_demo.py
```
从全新的克隆开始进行五分钟设置:
```
python -m venv .venv
```
Windows Git Bash:
```
source .venv/Scripts/activate
```
Linux/macOS:
```
source .venv/bin/activate
```
安装并运行:
```
python -m pip install --upgrade pip
python -m pip install -e ".[mcp]"
python scripts/build_week_demo.py
```
手动工作流:
```
python -m qstriage.cli import cbom examples/build-week/sample_cbom.json --output imported.yaml
python -m qstriage.cli closure inspect imported.yaml --format json --output gaps.json
python -m qstriage.cli closure validate imported.yaml examples/build-week/approved_enrichment.patch.yaml
python -m qstriage.cli closure apply imported.yaml examples/build-week/approved_enrichment.patch.yaml --output enriched.yaml
python -m qstriage.cli review evidence imported.yaml
python -m qstriage.cli review evidence enriched.yaml
python -m qstriage.cli closure compare imported.yaml enriched.yaml --format json --output comparison.json
```
可选的 MCP 集成通过 `python -m pip install -e ".[mcp]"` 安装。模型可能会提出问题并起草补丁,但它无法确立事实、批准证据、应用更改、更改分数或授权迁移。由人来应用已批准的补丁,而 QSTriage 仍然是确定性的决策权威。在演示中,证据达到决策级,而迁移操作仍然受限;这不是生产授权。
请参阅[证据闭环](docs/evidence-closure.md)、[演示脚本](docs/build-week-demo-script.md)、[提交草案](docs/build-week-submission.md)和 [Build Week 可追溯性账本](BUILD_WEEK.md)。
## 强制的工作负载限制
QSTriage 拒绝超出其支持限制的输入。它不会截断输入,也不会继续给出部分的决策结果。
| 输入或工作负载 | 强制限制 |
|---|---:|
| 清单 YAML | 10 MiB |
| CycloneDX CBOM JSON | 32 MiB |
| CBOM 组件 | 10,000 |
| 配置 YAML | 1 MiB |
| 每个清单的资产数 | 1 到 1,000 |
| 每个清单的依赖项 | 10,000 |
| 迁移场景 | 100 |
| 资产/场景模拟结果 | 20,000 |
其他限制涵盖字段长度、YAML 结构、图遍历、渲染输出和关键路径枚举。请参阅[输入契约](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/input-contracts.md)了解完整的强制契约。
## 文档
参考文档:
- [使用指南](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/usage.md) — 命令、工作流、示例和配置
- [输入契约](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/input-contracts.md) — 支持的输入、限制和解析边界
- [标准与分类](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/standards-and-classification.md) — 注册表和规范化行为
- [评分依据](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/scoring-rationale.md) — 优先级排序指标和解释限制
- [模拟依据](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/simulation-rationale.md) — 模型、警告、假设和非主张
- [证据与上下文](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/evidence-and-context.md) — 规范化、完整性、证据和置信度
- [规范决策模型](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/decision-model.md) — 行动把关、验证和原因代码
- [PDR 0.2 契约](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/pdr-contract.md) — 结构、出处、确定性和版本控制
- [CBOM 兼容性](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/docs/cbom-compatibility.md) — 测试的工件形态和扫描器边界
- [安全策略](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/SECURITY.md) — 报告和强制的信任边界
- [证据闭环](docs/evidence-closure.md) - 来源感知的丰富化与判定工作流
- [Build Week 演示脚本](docs/build-week-demo-script.md) - 计时的视频操作和旁白
- [Build Week 提交草案](docs/build-week-submission.md) - Devpost 就绪的项目字段
代码和测试仍是可执行行为的权威。
## 信任模型
生成的文件默认不覆盖,并且终端/Markdown 输出会中和不受信任的呈现字符。基于文件的 PDR 生成会解析并对捕获的相同字节进行哈希处理。
CI 和安全工作流使用只读的仓库权限、不可变的 action 引用、哈希化的依赖锁、漏洞和静态分析检查,以及完整历史的密钥扫描。
发布工件工作流从干净的源代码快照构建两次,并要求逐字节的复现性。它会生成 SHA-256 校验和和可复现的 CycloneDX SBOM。GitHub 托管的证明仅为符合条件的公共仓库运行创建;私有仓库运行保留本地完整性证据。
使用以下命令在其目录中验证下载的发布包:
```
sha256sum --check SHA256SUMS
```
对于具有 GitHub 证明的符合条件的公开运行:
```
gh attestation verify qstriage-*.whl --repo ILIASTEKEOGLOU/QSTriage
gh attestation verify qstriage-*.tar.gz --repo ILIASTEKEOGLOU/QSTriage
```
发布标签必须与包版本完全匹配,例如包版本 `1.2.1` 对应 `v1.2.1`。PyPI 发布使用现有的确切标签、受保护的 GitHub 环境和 OIDC 可信发布 (Trusted Publishing),而不是存储的 PyPI API token。
手动发布工件运行需要现有的确切发布标签。从 `main` 运行工作流定义并提供标签以重新构建:
```
gh workflow run release.yml --ref main -f release_tag=v1.2.0
```
工作流将该标签解析为不可变的 commit SHA,验证标签是否与包版本匹配,并仅构建该已解析的源代码。它会拒绝分支名称和不匹配的发布身份。
## 开发
对于旨在与 CI 匹配的开发工作,请使用 Python 3.11。按照快速开始中的说明创建并激活虚拟环境,然后安装开发依赖项:
```
python -m pip install -e ".[dev]"
python -m pytest
```
开发附加组件包括测试依赖项。CI 会安装在 `requirements/py311.lock` 中记录的确切哈希依赖解析。
## 项目状态
QSTriage 是一个早期公开发布的版本,用于本地密码学分析、PQC 迁移规划和 PDR 生成。它不是生产环境迁移协调器或通用的密码学发现扫描器。提供它时不附带任何 SLA 或保证的响应时间。
## 许可证
版权所有 2026 Ilias Tekeoglou。
QSTriage 根据 Apache License, Version 2.0 获得许可。请参阅
[LICENSE](https://github.com/ILIASTEKEOGLOU/QSTriage/blob/v1.2.1/LICENSE)。
标签:决策支持, 占用监测, 后量子加密, 安全合规, 密码学, 手动系统调用, 文档结构分析, 网络代理, 资产管理, 逆向工具, 风险量化