breachsafe/qureddy
GitHub: breachsafe/qureddy
一款开源的命令行扫描器,用于评估 TLS 和 SSH 服务的后量子密码学就绪状态,帮助识别面向量子计算的密码学薄弱环节。
Stars: 2 | Forks: 2
# BreachSAFE QuReddy
[](https://github.com/breachsafe/qureddy/blob/main/CHANGELOG.md)
[](https://www.python.org/downloads/)
[](https://github.com/breachsafe/qureddy/blob/main/LICENSE)
[](https://docs.astral.sh/ruff/)
[](https://mypy-lang.org/)
[](https://securityscorecards.dev/viewer/?uri=github.com/breachsafe/qureddy)
QuReddy 是一款基于 Apache 2.0 许可证的命令行扫描器,用于评估
TLS 和 SSH endpoint 的后量子就绪状态。它会记录 endpoint 向客户端暴露的协议和密码学证据,随后报告观测到的就绪状况。
TLS 扫描使用本地的 OpenSSL 3.5 LTS 或更高版本的二进制文件。SSH 扫描会直接读取服务器的明文 KEXINIT 提议,且不需要 OpenSSL。
## 目录
- [安装](#install)
- [使用 Docker 运行](#run-with-docker)
- [运行首次 SSH 扫描](#run-the-first-ssh-scan)
- [为 TLS 准备 OpenSSL](#prepare-openssl-for-tls)
- [运行首次 TLS 扫描](#run-the-first-tls-scan)
- [写入 JSON 或 CBOM 输出](#write-json-or-cbom-output)
- [解读证据](#interpret-the-evidence)
- [退出代码](#exit-codes)
- [网络与隐私范围](#network-and-privacy-scope)
- [环境要求](#requirements)
- [文档与支持](#documentation-and-support)
- [贡献](#contributing)
- [许可证](#license)
## 安装
使用 `pipx` 安装 PyPI 发行版:
```
pipx install breachsafe-qureddy
qureddy --version
```
预期的版本输出行为:
```
BreachSAFE QuReddy 0.2.1 -- https://www.breachsafe.ai
```
`pipx` 会创建一个隔离的环境,并将 `qureddy` 添加到你的命令
路径中。请参阅[安装与故障排除指南](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/install.md)
获取 macOS、Linux、Windows、虚拟环境、升级和卸载相关的
说明。
## 使用 Docker 运行
发布镜像内置了经过验证的 OpenSSL runtime,并以非特权用户身份运行:
```
docker pull ghcr.io/breachsafe/qureddy:0.2.0
docker run --rm ghcr.io/breachsafe/qureddy:0.2.0 \
scan tls pq.cloudflareresearch.com --format cbom
docker run --rm ghcr.io/breachsafe/qureddy:0.2.0 \
scan ssh github.com --format cbom
```
请参阅 [Docker 与 GHCR 指南](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/docker.md)
了解摘要锁定、本地构建、输出重定向和发布策略。
## 运行首次 SSH 扫描
此命令需要通过 TCP 端口 22 访问 `github.com` 的网络权限。它不需要
OpenSSL:
```
qureddy scan ssh github.com
```
扫描器会观测服务器提供的密钥交换和主机密钥算法。即使报告的状态存在漏洞,成功的扫描也会以 `0` 退出。
## 为 TLS 准备 OpenSSL
TLS 扫描需要带有 `X25519MLKEM768` TLS group 的 OpenSSL 3.5 LTS 或更高版本。不支持 LibreSSL。
在带有 Homebrew 的 macOS 上:
```
brew install openssl@3.5
export QUREDDY_OPENSSL="$(brew --prefix openssl@3.5)/bin/openssl"
qureddy scan tls --help
```
Linux 和 Windows 的安装过程因发行版而异。在扫描前确认所选的
二进制文件:
```
openssl version
openssl list -tls1_3 -tls-groups
```
如果 `openssl` 不是目标二进制文件,请设置 `QUREDDY_OPENSSL` 或传递
`--openssl PATH`。[安装指南](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/install.md)记录了
受支持的解析顺序和故障诊断信息。
## 运行首次 TLS 扫描
此命令需要通过 TCP 端口 443 访问
`pq.cloudflareresearch.com` 的网络权限:
```
qureddy scan tls pq.cloudflareresearch.com
```
TLS 扫描会分别检查混合 TLS 1.3 密钥交换、经典的 TLS 1.3 对照、遗留的 TLS 协议提议,以及叶子证书签名
算法。该扫描不会验证证书信任、吊销状态或远程软件实现。
对于需要 Server Name Indication (SNI) 的 IP 目标:
```
qureddy scan tls 1.1.1.1:443 --sni one.one.one.one
```
## 写入 JSON 或 CBOM 输出
使用 JSON 查看 QuReddy 的完整扫描结果:
```
qureddy scan ssh github.com --format json > github-ssh.json
```
使用 CBOM 生成包含已确切观测到的密码学资产的 CycloneDX 1.7 Cryptography Bill of Materials:
```
qureddy scan ssh github.com --format cbom > github-ssh.cdx.json
```
机器模式会将一份可解析的文档写入标准输出。在没有显式指定 verbosity 标志的情况下,成功的扫描会保持标准错误流为空。
请参阅[生成和验证 CBOM](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/generate-a-cbom.md)、
[JSON 输出](https://github.com/breachsafe/qureddy/blob/main/docs/reference/json-schema.md)和
[CBOM 输出](https://github.com/breachsafe/qureddy/blob/main/docs/reference/cbom.md)
了解具体的契约规范。
## 解读证据
QuReddy 区分了四种类型的陈述:
- 观测记录了 endpoint 的返回内容。
- 本地能力记录描述了扫描器主机的信息,例如其 OpenSSL
版本。
- 发现基于指定的规则对一个或多个观测结果进行解读。
- `unknown` 或 `not_testable` 保留了缺失或失败的观测记录。
## 退出代码
| 代码 | 含义 | 扫描器 |
| --- | --- | --- |
| `0` | 扫描完成;检查报告的就绪状态 | TLS 和 SSH |
| `2` | 目标连接、握手或解析失败 | TLS 和 SSH |
| `3` | 本地 OpenSSL 丢失或不可用 | 仅限 TLS |
| `4` | 用法或配置错误 | TLS 和 SSH |
| `70` | QuReddy 内部错误 | 进程全局 |
脚本必须根据退出代码进行分支处理,而不能将就绪状态的发现视为进程失败。请参阅[退出代码参考](https://github.com/breachsafe/qureddy/blob/main/docs/reference/exit-codes.md)。
## 网络与隐私范围
QuReddy 仅连接命令行中指定的目标。TLS 扫描会执行受限的 TLS 握手。SSH 扫描会读取服务器标识和 KEXINIT
提议,而不会进行身份验证或开启 SSH 会话。
扫描器不会更改目标、发送遥测数据、存储扫描历史或联系 BreachSAFE 服务。重定向的 JSON 和 CBOM 文件将保留在操作者的系统上,除非操作者自行将其发送到其他地方。
## 环境要求
- Python `>=3.12`
- macOS、Linux 或 Windows
- 指定目标的网络可达性
- 仅 TLS 扫描需要 OpenSSL 3.5 LTS 或更高版本
干净的构建产物矩阵会在 Linux、macOS 和 Windows 上安装 wheel、源码发行版和 pipx
应用程序。平台支持并不暗示每个操作系统的软件包仓库都提供了合适的 OpenSSL 构建版本。
## 文档与支持
- [文档索引](https://github.com/breachsafe/qureddy/blob/main/docs/README.md)
- [CLI 参考](https://github.com/breachsafe/qureddy/blob/main/docs/reference/cli.md)
- [安装与故障排除](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/install.md)
- [扫描 SSH 或 SFTP](https://github.com/breachsafe/qureddy/blob/main/docs/how-to/scan-ssh.md)
- [安全策略与私下披露](https://github.com/breachsafe/qureddy/blob/main/SECURITY.md)
- [公开 issue 跟踪器](https://github.com/breachsafe/qureddy/issues)
请勿在公开的 issue 跟踪器中提交安全漏洞。请遵循
[`SECURITY.md`](https://github.com/breachsafe/qureddy/blob/main/SECURITY.md)
进行私下报告。
## 贡献
请参阅 [`CONTRIBUTING.md`](https://github.com/breachsafe/qureddy/blob/main/CONTRIBUTING.md)
以及
[贡献者文档](https://github.com/breachsafe/qureddy/tree/main/docs/contributors/)。
该仓库强制执行
代码格式化、lint、严格类型检查、测试、安全扫描、依赖
审计、许可证元数据、文件大小策略、CBOM 一致性和发布
构建产物检查。
## 许可证
Apache License 2.0。请参阅
[`LICENSE`](https://github.com/breachsafe/qureddy/blob/main/LICENSE)、
[`LICENSES/`](https://github.com/breachsafe/qureddy/tree/main/LICENSES/) 和
[`REUSE.toml`](https://github.com/breachsafe/qureddy/blob/main/REUSE.toml)。
标签:Blue Team, GraphQL安全矩阵, Python, SSH, TLS, 动态分析, 后量子密码学, 安全扫描器, 密码学, 手动系统调用, 无后门, 请求拦截, 逆向工具, 防御工具