前端动态密钥与非对称加密场景下的测试
字数 1604 2025-08-10 09:43:36
前端动态密钥与非对称加密场景下的测试指南
1. 加密技术概述
在前端安全测试中,常见的加密技术主要分为两类:
1.1 对称加密(AES)
- AES-CBC:使用密钥和初始化向量(IV)进行加密
- AES-ECB:仅使用密钥进行加密,安全性较低
1.2 非对称加密(RSA)
- 通常与对称加密组合使用
- 用于安全传输对称加密的密钥
2. 常见加密场景分类
2.1 静态加密
- 特征:密钥固定不变,硬编码在JS代码中
- 识别方法:
- 全局搜索
encAES、encrpyData等关键词 - 查找
key、secret等变量
- 全局搜索
- 测试方法:
- 从JS代码中提取密钥
- 使用在线工具或Burp插件解密
- 修改明文后重新加密测试
2.2 动态IV加密
- 特征:每次加密结果不同,IV随机或规律变化
- 原理:IV与密钥混合确保相同明文产生不同密文
- 测试方法:
- 分析JS代码确定IV生成规则
- 通过断点调试获取实时IV值
- 结合密钥进行解密
2.3 组合加密(RSA+AES)
- 特征:密文一直变化,先请求服务器获取密钥
- 工作流程:
- 客户端请求服务器获取加密密钥
- 使用RSA加密AES密钥
- 使用AES加密实际数据
- 服务器解密AES密钥后再解密数据
- 测试方法:
- 分析密钥获取接口
- 跟踪密钥使用过程
- 模拟完整加密流程
3. 详细测试方法
3.1 静态加密测试步骤
-
密钥定位:
- 使用Chrome开发者工具搜索加密相关关键词
- 常见关键词:
encrypt、decrypt、AES、CryptoJS、key、iv
-
加密方式确认:
- 检查使用的是ECB还是CBC模式
- 确认是否有padding和具体模式(如PKCS7)
-
解密验证:
- 使用在线工具如:https://www.devglan.com/online-tools/aes-encryption-decryption
- 或使用Burp插件如
AutoDecoder
-
测试用例:
- 修改明文参数后重新加密提交
- 测试加密逻辑是否可绕过
3.2 动态加密测试步骤
-
请求分析:
- 对比多次请求,观察哪些参数变化
- 确认是IV变化还是密钥变化
-
代码调试:
- 在加密函数处设置断点
- 跟踪IV或密钥的生成过程
- 记录加密函数的输入输出
-
加密流程重现:
- 提取加密算法逻辑
- 编写脚本模拟加密过程
-
测试用例:
- 使用固定IV测试安全性
- 尝试预测或控制IV生成
3.3 组合加密测试步骤
-
接口分析:
- 查找密钥获取接口
- 分析密钥使用生命周期
-
RSA部分:
- 确认公钥获取方式
- 分析是否使用相同密钥对
-
AES部分:
- 跟踪从RSA解密得到的AES密钥
- 确认AES加密模式和参数
-
完整流程测试:
- 模拟客户端完整加密流程
- 测试密钥重用可能性
- 尝试中间人攻击替换密钥
4. 工具推荐
-
浏览器工具:
- Chrome开发者工具(Sources面板调试)
- Firefox开发者工具
-
加解密工具:
- Burp Suite的AutoDecoder插件
- CyberChef(在线加密工具)
- OpenSSL命令行工具
-
调试工具:
- Fiddler/Charles抓包工具
- Burp Suite的Logger++插件
-
脚本工具:
- Python的PyCryptodome库
- Node.js的crypto模块
5. 安全测试要点
-
密钥安全:
- 检查密钥是否可预测
- 测试密钥是否可重用
-
IV安全:
- 确认IV是否真正随机
- 测试IV重用风险
-
算法安全:
- 避免使用ECB模式
- 确认使用合适的padding
-
流程安全:
- 测试是否可以跳过加密步骤
- 检查加密是否可被绕过
6. 案例总结
-
简单案例:
- 静态密钥直接提取使用
- 快速验证加密有效性
-
中等案例:
- 动态IV需要调试分析
- 需要理解加密流程
-
复杂案例:
- 组合加密需完整跟踪
- 需要编写脚本辅助测试
通过掌握这些加密场景的测试方法,可以有效应对前端各种加密情况的安全测试工作。