前端动态密钥与非对称加密场景下的测试
字数 1604 2025-08-10 09:43:36

前端动态密钥与非对称加密场景下的测试指南

1. 加密技术概述

在前端安全测试中,常见的加密技术主要分为两类:

1.1 对称加密(AES)

  • AES-CBC:使用密钥和初始化向量(IV)进行加密
  • AES-ECB:仅使用密钥进行加密,安全性较低

1.2 非对称加密(RSA)

  • 通常与对称加密组合使用
  • 用于安全传输对称加密的密钥

2. 常见加密场景分类

2.1 静态加密

  • 特征:密钥固定不变,硬编码在JS代码中
  • 识别方法:
    • 全局搜索encAESencrpyData等关键词
    • 查找keysecret等变量
  • 测试方法:
    1. 从JS代码中提取密钥
    2. 使用在线工具或Burp插件解密
    3. 修改明文后重新加密测试

2.2 动态IV加密

  • 特征:每次加密结果不同,IV随机或规律变化
  • 原理:IV与密钥混合确保相同明文产生不同密文
  • 测试方法:
    1. 分析JS代码确定IV生成规则
    2. 通过断点调试获取实时IV值
    3. 结合密钥进行解密

2.3 组合加密(RSA+AES)

  • 特征:密文一直变化,先请求服务器获取密钥
  • 工作流程:
    1. 客户端请求服务器获取加密密钥
    2. 使用RSA加密AES密钥
    3. 使用AES加密实际数据
    4. 服务器解密AES密钥后再解密数据
  • 测试方法:
    1. 分析密钥获取接口
    2. 跟踪密钥使用过程
    3. 模拟完整加密流程

3. 详细测试方法

3.1 静态加密测试步骤

  1. 密钥定位

    • 使用Chrome开发者工具搜索加密相关关键词
    • 常见关键词:encryptdecryptAESCryptoJSkeyiv
  2. 加密方式确认

    • 检查使用的是ECB还是CBC模式
    • 确认是否有padding和具体模式(如PKCS7)
  3. 解密验证

    • 使用在线工具如:https://www.devglan.com/online-tools/aes-encryption-decryption
    • 或使用Burp插件如AutoDecoder
  4. 测试用例

    • 修改明文参数后重新加密提交
    • 测试加密逻辑是否可绕过

3.2 动态加密测试步骤

  1. 请求分析

    • 对比多次请求,观察哪些参数变化
    • 确认是IV变化还是密钥变化
  2. 代码调试

    • 在加密函数处设置断点
    • 跟踪IV或密钥的生成过程
    • 记录加密函数的输入输出
  3. 加密流程重现

    • 提取加密算法逻辑
    • 编写脚本模拟加密过程
  4. 测试用例

    • 使用固定IV测试安全性
    • 尝试预测或控制IV生成

3.3 组合加密测试步骤

  1. 接口分析

    • 查找密钥获取接口
    • 分析密钥使用生命周期
  2. RSA部分

    • 确认公钥获取方式
    • 分析是否使用相同密钥对
  3. AES部分

    • 跟踪从RSA解密得到的AES密钥
    • 确认AES加密模式和参数
  4. 完整流程测试

    • 模拟客户端完整加密流程
    • 测试密钥重用可能性
    • 尝试中间人攻击替换密钥

4. 工具推荐

  1. 浏览器工具

    • Chrome开发者工具(Sources面板调试)
    • Firefox开发者工具
  2. 加解密工具

    • Burp Suite的AutoDecoder插件
    • CyberChef(在线加密工具)
    • OpenSSL命令行工具
  3. 调试工具

    • Fiddler/Charles抓包工具
    • Burp Suite的Logger++插件
  4. 脚本工具

    • Python的PyCryptodome库
    • Node.js的crypto模块

5. 安全测试要点

  1. 密钥安全

    • 检查密钥是否可预测
    • 测试密钥是否可重用
  2. IV安全

    • 确认IV是否真正随机
    • 测试IV重用风险
  3. 算法安全

    • 避免使用ECB模式
    • 确认使用合适的padding
  4. 流程安全

    • 测试是否可以跳过加密步骤
    • 检查加密是否可被绕过

6. 案例总结

  1. 简单案例

    • 静态密钥直接提取使用
    • 快速验证加密有效性
  2. 中等案例

    • 动态IV需要调试分析
    • 需要理解加密流程
  3. 复杂案例

    • 组合加密需完整跟踪
    • 需要编写脚本辅助测试

通过掌握这些加密场景的测试方法,可以有效应对前端各种加密情况的安全测试工作。

前端动态密钥与非对称加密场景下的测试指南 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需要调试分析 需要理解加密流程 复杂案例 : 组合加密需完整跟踪 需要编写脚本辅助测试 通过掌握这些加密场景的测试方法,可以有效应对前端各种加密情况的安全测试工作。