openHiTLS 安全策略
权威版本:https://gitcode.com/openHiTLS/openhitls/blob/main/SECURITY.md
说明: 本文件是英文版
SECURITY.md的中文翻译,仅供阅读参考。 若两版有任何分歧,以英文版为准。
本文档定义 openHiTLS 的安全范围(§1)与侧信道承诺(§2)。 漏洞报告、严重性评估、协调披露等相关流程不在本文档范围内, 详情请参见项目官方的漏洞管理页面。
1. 责任范围
1.1 范围内的组件
本政策覆盖本仓库发布的全部生产代码,包括密码引擎(crypto/)、
协议实现(tls/)、PKI 处理(pki/)、基础支持库(bsl/)、
认证协议(auth/)、公共头文件(include/)、openhitls 命令行工具
(apps/,受 §1.3 约束)等。后续新增的模块自动纳入范围。
1.2 范围内的漏洞类型
下列问题将被作为候选漏洞处理:
- 内存安全:任何可由攻击者可控输入触达的代码路径上的缓冲区溢出、下溢、越界读 / 写、 UAF、double-free、空指针解引用、未初始化读、类型混淆。
- 密码学正确性缺陷:签名验证失效、MAC 伪造、弱密钥生成、nonce 复用、 KEM 解封装失败处理错误。
- 协议层缺陷 (TLS 1.2 / 1.3 / TLCP / DTLCP):状态机混淆、跨协议攻击、降级攻击、 证书验证绕过、握手中途异常完成、扩展误用。
- PKI 处理缺陷:X.509 / CSR / CRL / PKCS#12 / CMS 解析器崩溃、死循环、内存泄漏, 或接受了本应拒绝的畸形结构。
- 侧信道:处理密钥派生数据的代码上的侧信道,详见 §2。
- 输入校验缺陷:使攻击者可控数据破坏内部状态的输入校验缺失。
1.3 范围外的影响
下列影响类型不属于我们的威胁模型,不会获得 CVE; 但我们仍可能把它们当作普通 bug 修复:
- 只影响
openhitlsCLI 工具自身的拒绝服务 —— 例如:使任意 CLI 子命令因未处理信号而崩溃、在 CLI 前端耗尽内存、 在畸形输入文件上挂起、或在 stdout 打印错误输出(无密码学后果)。 CLI 设计用于互操作性测试、密钥生成与运维操作,不是生产服务端、也不是常驻服务。 若一个漏洞同时影响 CLI 与库,库那部分的影响仍属于范围内; 只有"仅影响 CLI 自身"的那部分才被排除。 - API 误用:应用以 API 契约明确禁止的方式调用函数,或调用本就未设计用于接收攻击者可控输入的 API。 头文件与 docstring 中明示的前置条件属于契约的一部分。
- 同系统时序侧信道:攻击者必须已经在同一物理主机上执行代码才能利用的时序侧信道 (我们覆盖的粒度见 §2)。
- 物理攻击 —— 功耗分析、电磁辐射、故障注入、glitch 等 —— 需要平台层面的缓解。
- CPU / 微架构 / 硬件缺陷(例如 Spectre 类、Rowhammer、不可靠 DRAM、损坏的 RNG 源)。 我们会把此类报告按"加固请求"处理,而不会作为 openHiTLS 的 CVE 处理。
- 需要主机上已有代码执行能力的攻击 —— 内核级被攻破、任意内存写、或信任锚被破坏 (撒谎的 CA、行为异常的 HSM、恶意的第三方密码模块)。 由损坏的信任锚导致的错误信任决策,是信任锚损坏的预期后果,而不是 openHiTLS 的漏洞。
- 直接杀死进程就能实现的拒绝服务(例如
kill -9、OOM killer、不引起内存损坏的文件描述符耗尽), 以及其他影响不超过运维者本来就能对自己造成的攻击。 - 规范合规输入引发的资源耗尽:上游规范未对相关参数(如 KDF 迭代次数、 递归深度等)规定上限时,由合法字段值过大导致的 CPU/内存/时间过度消耗。 影响与部署平台相关;接受不可信输入的部署方需自行设置上限。
- 由下游补丁引入的漏洞 —— 不在本仓库中的(如发行版特有的补丁)。 此类问题请报告给相应的下游厂商。
影响仅属于 §1.3 的报告,我们仍会确认收悉、归类为范围外或普通 bug, 并可能公开修复 —— 只是不走 CVE / embargo 流程。
2. 侧信道承诺
openHiTLS 处理由密钥派生而来的数据(私钥、明文、MAC 标签、会话密钥、KEM 解封装结果、 PAKE 记录),并承诺对这些代码路径实施常数时间编程。
2.1 我们承诺的内容
- 密码学原语中不含密钥依赖的控制流:循环边界与分支条件不依赖密钥数据。
- 不含密钥依赖的内存访问:数组下标与表查找不以可能泄漏的方式依赖密钥数据。
- 常数时间比较:任何密钥派生 buffer 的比较一律使用常数时间实现, 不在第一个不匹配字节处提前退出。
- 网络可观察的时序:对在常见编译器、常见优化级别(
-O2、-Os)下、 远程攻击者可观察的可利用时序差异,我们按漏洞处理。 平台无法合理缓解的物理时序观测同理。
2.2 我们不承诺的内容
- 同进程微架构侧信道 (L1 / L2 / L3 cache、BTB、TLB、内存总线争用、port 争用), 且只有当攻击者在同一物理核 / 同一 socket 上跑代码时才可利用 —— 需 OS / hypervisor / 硬件缓解。
- 功耗、电磁、声学、热辐射等经物理传感器观测的侧信道。 如果您的威胁模型包含这些,请使用 TEE、HSM 或屏蔽环境。
- 故障注入 —— 时钟、电压、激光等 glitch。 我们会逐渐加入加固,但加固缺失不算漏洞。
- 仅在罕见编译器 / 编译选项组合下才出现的时序差异
(
-O3、-Oz、LTO、罕见 flag 下的自动向量化、私有编译器)。 对安全敏感的构建,我们建议使用-O2或-Os。 - 第三方模块中的侧信道:由部署方在运行时加载的第三方模块引入。
2.3 后量子算法的特别声明
后量子算法是相对较新的 NIST 标准 / 候选的实现。它们的侧信道分析文献仍在成熟中。 我们对这些代码套用前述常数时间规则,但无法保证未来目前未公开的攻击技术不会适用。 我们将把任何已公开发表的针对这些算法的侧信道技术按漏洞处理,并据此响应。
3. 政策版本管理
本政策可能被更新。范围或侧信道承诺的重大变更将通过项目官方渠道公告。
最新版本始终是本仓库 main 分支上的版本。