MASTG-TEST-0013:测试对称加密
概述¶
静态分析¶
识别代码中所有对称密钥加密的实例,并查找任何加载或提供对称密钥的机制。 您可以查找
- 对称算法(例如
DES
、AES
等) - 密钥生成器的规范(例如
KeyGenParameterSpec
、KeyPairGeneratorSpec
、KeyPairGenerator
、KeyGenerator
、KeyProperties
等) - 导入
java.security.*
、javax.crypto.*
、android.security.*
、android.security.keystore.*
的类
另请查看常见加密配置问题列表。
对于每个已识别的实例,验证使用的对称密钥是否
- 不是应用程序资源的一部分
- 无法从已知值推导出来
- 未在代码中硬编码
对于每个硬编码的对称密钥,验证它是否没有在安全敏感的上下文中用作唯一的加密方法。
作为一个例子,我们说明如何定位硬编码加密密钥的使用。首先反汇编和反编译( 反编译 Java 代码) 该应用程序以获取 Java 代码,例如,通过使用 jadx。
现在在文件中搜索 SecretKeySpec
类的使用情况,例如,通过简单地递归地在它们上进行 grepping 或使用 jadx 搜索功能
grep -r "SecretKeySpec"
这将返回所有使用 SecretKeySpec
类的类。 现在检查这些文件并追踪哪些变量用于传递密钥材料。 下图显示了对生产就绪应用程序执行此评估的结果。 我们可以清楚地定位到静态加密密钥的使用,该密钥被硬编码并在静态字节数组 Encrypt.keyBytes
中初始化。
动态分析¶
您可以使用 方法追踪 密码学方法以确定输入/输出值,例如正在使用的密钥。 在执行加密操作时监视文件系统访问,以评估密钥材料写入或读取的位置。 例如,通过使用 RMS Runtime Mobile Security 的 API monitor 监控文件系统。