55 lines
1.7 KiB
Markdown
55 lines
1.7 KiB
Markdown
|
|
# 安全策略
|
|||
|
|
|
|||
|
|
## 支持版本
|
|||
|
|
|
|||
|
|
| 版本 | 是否支持 |
|
|||
|
|
|------|----------|
|
|||
|
|
| 0.3.x | 是 |
|
|||
|
|
| < 0.3 | 否 |
|
|||
|
|
|
|||
|
|
## 报告漏洞
|
|||
|
|
|
|||
|
|
如果您发现 libsmx 存在安全漏洞,请负责任地报告:
|
|||
|
|
|
|||
|
|
**邮箱**: [kintai@foxmail.com](mailto:kintai@foxmail.com)
|
|||
|
|
|
|||
|
|
**请包含**:
|
|||
|
|
- 漏洞描述
|
|||
|
|
- 复现步骤
|
|||
|
|
- 受影响版本
|
|||
|
|
- 潜在影响评估
|
|||
|
|
|
|||
|
|
**响应时间**:
|
|||
|
|
|
|||
|
|
本项目由个人维护,不设固定响应时间。作者会尽快处理所有安全报告,但无法承诺具体的响应期限。
|
|||
|
|
|
|||
|
|
## 范围
|
|||
|
|
|
|||
|
|
以下领域属于安全报告的有效范围:
|
|||
|
|
|
|||
|
|
- **时序侧信道**:执行时间依赖于秘密数据(私钥、明文、随机数)的操作
|
|||
|
|
- **内存安全**:缓冲区溢出、释放后使用或未初始化内存读取(注:本库使用 `#![forbid(unsafe_code)]`)
|
|||
|
|
- **密钥材料泄露**:私钥或中间秘密值未正确清零
|
|||
|
|
- **密码学正确性**:偏离 GB/T 标准导致安全保证减弱
|
|||
|
|
- **认证绕过**:GCM/CCM 模式中 MAC/标签验证错误
|
|||
|
|
|
|||
|
|
## 不在范围内
|
|||
|
|
|
|||
|
|
- 不影响安全的性能问题
|
|||
|
|
- 依赖库漏洞(请向上游报告)
|
|||
|
|
- 需要物理访问设备的攻击
|
|||
|
|
|
|||
|
|
## 安全设计
|
|||
|
|
|
|||
|
|
libsmx 采用以下防护措施:
|
|||
|
|
|
|||
|
|
- **常量时间操作**:所有依赖秘密的代码使用 `subtle::ConstantTimeEq`、`ConditionallySelectable` 和固定迭代循环
|
|||
|
|
- **S-box 无表查找**:SM4 使用布尔电路 bitslice 实现,防止缓存时序攻击
|
|||
|
|
- **自动密钥清零**:所有私钥类型派生 `ZeroizeOnDrop`
|
|||
|
|
- **无 unsafe 代码**:库级别强制 `#![forbid(unsafe_code)]`
|
|||
|
|
- **完整 EC 公式**:SM2 点加法使用无分支完整加法公式(Renes-Costello-Batina 2016)
|
|||
|
|
|
|||
|
|
## 披露策略
|
|||
|
|
|
|||
|
|
我们遵循协调披露原则。请**不要**为安全漏洞创建公开的 GitHub issue。
|