跳过内容

MASTG-TEST-0013:测试对称加密

已弃用测试

此测试已**弃用**,不应再使用。 **原因**

请查看以下涵盖此 v1 测试的 MASTG v2 测试

概述

静态分析

识别代码中所有对称密钥加密的实例,并查找任何加载或提供对称密钥的机制。 您可以查找

  • 对称算法(例如 DESAES 等)
  • 密钥生成器的规范(例如 KeyGenParameterSpecKeyPairGeneratorSpecKeyPairGeneratorKeyGeneratorKeyProperties 等)
  • 导入 java.security.*javax.crypto.*android.security.*android.security.keystore.* 的类

另请查看常见加密配置问题列表

对于每个已识别的实例,验证使用的对称密钥是否

  • 不是应用程序资源的一部分
  • 无法从已知值推导出来
  • 未在代码中硬编码

对于每个硬编码的对称密钥,验证它是否没有在安全敏感的上下文中用作唯一的加密方法。

作为一个例子,我们说明如何定位硬编码加密密钥的使用。首先反汇编和反编译( 反编译 Java 代码) 该应用程序以获取 Java 代码,例如,通过使用 jadx

现在在文件中搜索 SecretKeySpec 类的使用情况,例如,通过简单地递归地在它们上进行 grepping 或使用 jadx 搜索功能

grep -r "SecretKeySpec"

这将返回所有使用 SecretKeySpec 类的类。 现在检查这些文件并追踪哪些变量用于传递密钥材料。 下图显示了对生产就绪应用程序执行此评估的结果。 我们可以清楚地定位到静态加密密钥的使用,该密钥被硬编码并在静态字节数组 Encrypt.keyBytes 中初始化。

动态分析

您可以使用 方法追踪 密码学方法以确定输入/输出值,例如正在使用的密钥。 在执行加密操作时监视文件系统访问,以评估密钥材料写入或读取的位置。 例如,通过使用 RMS Runtime Mobile SecurityAPI monitor 监控文件系统。