文档生成日期: 2025-02-24
覆盖范围: 2025-02-16 至 2026-02-23 期间的全部 AI 代码审计与审查报告
一、审计报告索引#
| 序号 | 报告名称 | 日期 | 审计范围 | 审阅 AI |
|---|
| 1 | [COMMAND_IMPLEMENTATION_REVIEW_20250216] | 2025-02-16 | 对称/非对称加解密、签名验签 | - |
| 2 | [SECURITY_REVIEW_REPORT] | 2025-02-17 | 密码学实现、CLI 设计、异常处理 | - |
| 3 | [ECC_ECDH_REVIEW_20250221] | 2025-02-21 | ECC ECDH 密钥协商、CipherHUB 对齐 | - |
| 4 | [EET_AES_SM4_HMAC_HASH_AUDIT_REPORT] | 2025-02-23 | AES/SM4/HMAC/Hash 流式处理、安全 | - |
| 5 | [EET_REGRESSION_AUDIT_20250224] | 2025-02-24 | 修复验证、回归审计 | - |
| 6 | [EET_FRACTURE_POINT_AUDIT_20250224] | 2025-02-24 | 断裂点审计、极端输入 | - |
| 7 | [EET_AES_SM4_HMAC_HASH_FRACTURE_AUDIT_20250224] | 2025-02-24 | 10 维度安全审计 | Claude Sonnet 4.5 |
| 8 | [AES_SM4_ZUC_COMPARISON_REVIEW] | 2025-02-24 | AES/SM4/ZUC 对比、ZUC 专项 | - |
| 9 | [CODE_REVIEW_20260217] | 2026-02-17 | 潜在 Bug、参数风格一致性 | - |
| 10 | [ENGINEERING_SECURITY_REVIEW_20260217] | 2026-02-17 | 工程级安全、实现逻辑 | - |
| 11 | [ENVELOPE_SECURITY_AUDIT_REPORT] | 2026-02-23 | Envelope 子命令安全 | - |
| 12 | [ENVELOPE_V2_STREAMING_AUDIT_REPORT] | 2026-02-23 | Envelope V2 分块流式加密 | - |
二、按严重级别汇总的缺陷#
2.1 Critical 级别(必须修复)#
| ID | 描述 | 来源报告 | 状态 |
|---|
| C-01 | 默认密钥使用时未强制用户确认,生产环境可预测 | Fracture Audit 20250224 | 待修复 |
| C-02 | GCM 模式下允许手动指定 IV/Nonce,存在 Nonce 重用风险 | Fracture Audit 20250224 | 待修复 |
| C-03 | SM4 GCM 解密流式处理时错误处理可能丢失原始异常 | Fracture Audit 20250224 | 待修复 |
| C-04 | CBC 解密时文件大小校验不合理,有效密文被拒绝 | Fracture Audit 20250224 | 待修复 |
| C1 | HMAC/HASH 无输入长度限制,-e 模式可导致 OOM | Fracture Point 20250224 | 待修复 |
| C2 | AES 文件加密 metadata 中 input_size 错误 | Fracture Point 20250224 | 待修复 |
| C3 | SM4 CBC 文件解密异常时未调用 abort() | Fracture Point 20250224 | 待修复 |
| - | 密钥/IV/密码明文打印到控制台 | Security Review 20250217 | 已修复 |
| - | 使用 random 模块生成密码学随机数 | Security Review 20250217 | 已修复 |
| - | RSA 解密失败泄露异常详情(Padding Oracle 风险) | Engineering Security 20260217 | 待修复 |
| - | cert_parse load_cert_data 文件过大时未关闭句柄 | Engineering Security 20260217 | 待修复 |
| - | 证书验签对非 RSA/EC 类型静默跳过(验签绕过) | Engineering Security 20260217 | 待修复 |
| - | Envelope 加密侧密文全量累积 O(n) 内存 | Envelope V2 Streaming 20260223 | 待修复 |
| - | Envelope 解密无 writer 时明文全量累积 O(n) | Envelope V2 Streaming 20260223 | 待修复 |
| - | Envelope 解密解析 64MB 上限,大文件无法解析 | Envelope V2 Streaming 20260223 | 待修复 |
2.2 Major 级别(重大)#
| ID | 描述 | 来源报告 |
|---|
| M-01 | 短密钥自动填充使用随机字符串,语义不匹配 | Fracture Audit |
| M-02 | HMAC key-b64 与 -k 互斥检查不完整 | Fracture Audit |
| M-03 | AES GCM 流式解密未处理空文件 | Fracture Audit |
| M-04 | SM4 GCM 流式解密空文件逻辑混淆 | Fracture Audit |
| M-05 | 文件加密 read_size 计算过大 | Fracture Audit |
| M-06 | write_to_file abort() 可能被遗漏 | Fracture Audit |
| M-07 | validators 校验时机晚于文件打开 | Fracture Audit |
| M1 | SM4 长密钥静默截断无告警 | Fracture Point |
| M2 | SM4 GCM Tag 校验失败无专用错误提示 | Fracture Point |
| - | Envelope 大文件整文件读入内存 | Envelope Security |
| - | KMS 调用无显式超时配置 | Envelope Security |
| - | –no-force 错误提示不明确 | Envelope Security |
2.3 Minor 级别(次要)#
- 多处边界情况处理、错误信息优化、CLI UX 改进建议
- 详见各报告
三、已确认修复项(回归审计通过)#
| 修复项 | 验证报告 |
|---|
| GCM 解密流式化(seek 读 Tag + 流式读密文) | Regression Audit 20250224 |
| 解密失败时 abort() 清理临时文件 | Regression Audit 20250224 |
| 默认 Key/IV 告警 | Regression Audit 20250224 |
| 短 Key 填充告警 | Regression Audit 20250224 |
| AES ValueError 分支 abort | Regression Audit 20250224 |
| SM4 空密文 (cipher_size==0) 处理 | Regression Audit 20250224 |
| SM4 GCM 非文件解密 remove_padding | Command Implementation 20250216 |
四、按模块分类的审计结论#
4.1 对称加密(AES / SM4)#
| 维度 | 结论 |
|---|
| 加解密逻辑 | 基本正确,GCM cipher||tag 格式符合 NIST SP 800-38D |
| 流式处理 | GCM 文件解密已实现流式,内存 O(chunk_size) |
| 原子写入 | write_to_file + abort() 已实现 |
| 安全告警 | 默认密钥有警告,但未阻止生产使用;长密钥截断无告警 |
| 主要问题 | 默认密钥防护不足、GCM Nonce 重用风险、CBC 文件大小校验过严 |
4.2 HMAC / Hash#
| 维度 | 结论 |
|---|
| 实现正确性 | 正确,流式文件处理已实现 |
| 主要问题 | -e 模式无 input_limit,超大 Base64 可 OOM;HMAC key-b64 互斥逻辑不完善 |
4.3 ZUC#
| 维度 | 结论 |
|---|
| 与 AES/SM4 对齐 | 需修复:Base64 校验、abort()、chunk 大小、空输入拒绝 |
| 修复项 | P1–P6 已明确,Q1/Q2 待确认 |
4.4 非对称加密(RSA / ECC / SM2)#
| 维度 | 结论 |
|---|
| 实现正确性 | RSA OAEP/PSS、ECC ECDSA、SM2 均正确 |
| 主要问题 | RSA 解密失败泄露异常(Padding Oracle);cert_parse 验签绕过 |
| ECC ECDH | 已实现同一密钥对检测、曲线匹配、CipherHUB 对齐 |
4.5 Envelope 信封加密#
| 维度 | 结论 |
|---|
| 业务逻辑 | DEK/Nonce 生成、AAD、格式解析正确 |
| V2 流式 | 存在伪流式:加密/解密侧均 O(n) 内存累积;解析 64MB 上限 |
| 主要问题 | 需实现真流式加密(边加密边写临时文件);解密侧流式解析 |
五、CLI 与参数一致性#
5.1 已统一的参数#
-i / --input-data、-e / --is-base64-encoded、-f / --is-a-file-o / --output-file、--no-force、-a / --hash-alg
5.2 不一致之处(建议统一)#
| 问题 | 建议 |
|---|
-f 含义冲突(aes/sm4 为输入文件,rsa 为公钥/私钥) | 文档明确说明或逐步统一 |
cert-parse 的 -e 表示 encoding,与其他 base64 冲突 | 改为 -E/--encoding |
ecc key_exchange 用 -H 表示 hash-alg | 文档说明或统一为 -a |
zuc 的 --iv vs aes/sm4 的 --iv-nonce | 统一或文档说明 |
六、修复优先级建议#
第一优先级(安全关键)#
- 默认密钥防护:增加
--insecure 标志,默认禁止生产使用 - GCM Nonce 重用:添加 Nonce 弱值检测与警告
- RSA Padding Oracle:统一输出泛化错误信息,不暴露异常详情
- 证书验签绕过:对不支持的 CA 密钥类型显式抛出异常
- HMAC/Hash OOM:增加
-l/--input-limit 限制
第二优先级(逻辑正确性)#
- CBC 文件大小校验:移除不合理校验,PKCS#7 可处理任意大小
- AES metadata input_size:使用 init_file_size 而非递减后的 file_size
- SM4 CBC abort:解密异常时调用 output_to_file.abort()
- cert_parse 文件句柄:使用 with 管理,文件过大时正确关闭
第三优先级(流式与内存)#
- Envelope 真流式:加密侧边加密边写临时文件,解密侧流式解析
- ZUC 对齐:P1–P6 修复项
第四优先级(UX 与一致性)#
- 长密钥截断告警:process_key_iv 返回 key_truncated
- SM4 GCM Tag 失败专用提示:统一错误文案
- 参数风格统一:cert-parse
-e、-f 文档化
七、审计时间线#
1
2
3
4
5
6
7
| 2025-02-16 命令实现逻辑审查(对称/非对称)
2025-02-17 深度工程级安全审查(密钥泄露、random 模块等)
2025-02-21 ECC ECDH 实现 Review
2025-02-23 AES/SM4/HMAC/Hash 流式处理审计
2025-02-24 断裂点审计、10 维度 Fracture Audit、回归审计、AES/SM4/ZUC 对比
2026-02-17 代码审查、工程级安全审查(RSA Padding Oracle、cert 等)
2026-02-23 Envelope 安全审计、V2 流式审计
|
八、总结#
EET 工具在核心密码学实现(AES/SM4 GCM、RSA OAEP、ECC ECDSA 等)上正确且符合规范,GCM 流式解密、原子写入、默认密钥告警等关键安全特性已实现。主要改进空间集中在:
- 安全加固:默认密钥强制防护、GCM Nonce 检查、RSA 错误脱敏、证书验签完整性
- 内存与流式:Envelope 真流式改造、HMAC/Hash 输入限制
- 异常与资源:abort() 覆盖完整性、文件句柄管理、cert_parse 逻辑
- CLI 一致性:参数命名、错误提示、文档说明
建议按上述优先级分批修复,每批修复后进行回归审计验证。
本文档由 AI 根据 docs/ 目录下多份审计报告自动汇总生成。