安全保证边界
2025/11/16大约 4 分钟项目参考安全威胁边界发布阻断漏洞披露
安全保证边界
GMKit 尚未完成项目级独立第三方安全审计,也不提供密码产品认证结论。底层依赖的审计、固定向量、差分测试和单元测试不能替代对本仓库组合实现、部署环境及业务协议的评估。
库负责的边界
- 校验密钥、公钥、hex/base64、模式、IV/nonce 和 tag 长度。
- SM2 解密校验 C3,SM4-GCM/CCM 解密校验认证标签。
- SM2 userId ENTL 按 UTF-8 字节计算并拒绝 16-bit 上限溢出。
- 为任意明文提供 bytes 解密入口,避免强制 UTF-8 转换破坏数据。
- 随机源支持
warn、strict和自定义平台 CSPRNG。 constantTimeEqual避免显式早退,但不声称 JavaScript JIT 下严格常量时间。
调用方负责的边界
| 责任 | 最低要求 |
|---|---|
| 密钥生命周期 | 安全生成、隔离存储、访问控制、轮换和吊销 |
| nonce/IV | 在协议要求的作用域内保持唯一,不跨 key 复用状态 |
| 协议载荷 | 固定算法、版本、模式、编码、AAD、tag 和 userId |
| 防重放 | 使用序列号、时间窗或业务唯一标识,不能靠加密本身推断 |
| 错误处理 | 验签、C3 或 tag 失败后终止,不使用部分明文 |
| 日志 | 不记录私钥、会话密钥、完整敏感明文或可利用诊断数据 |
| 依赖治理 | 核对锁文件、漏洞可达性、来源和升级回归 |
应阻断发布的情况
- AEAD tag、SM2 C3、签名或 MAC 篡改未被拒绝。
- 新标准向量只由本项目实现生成,没有外部来源或独立复核。
- 安全敏感发布路径在缺少 CSPRNG 时静默继续,或测试 RNG 进入生产配置。
- 兼容默认值在小版本中变化,导致旧密文、签名或协议语义改变。
- npm/Maven 产物包含密钥、token、构建缓存、内部 endpoint 或非预期源码。
- SM9 平台产物未经对应 native runner 强制测试。
高风险部署
长期主密钥、高侧信道威胁、强监管或多租户隔离场景不应只依赖普通 JavaScript 进程。应评估经审查的 native/Java 服务、操作系统密钥库、HSM 或合规密码模块,并建立独立威胁模型。
漏洞披露
安全问题请使用仓库 GitHub Security Advisories 私下报告。报告应包含受影响版本、最小复现、影响范围和已知缓解措施;不要在公开 issue 中提交真实密钥、业务数据或可直接利用的细节。