MASTG-TEST-0015: 测试密钥用途
此测试即将更新
此测试目前可使用,但将作为新的 OWASP MASTG v2 指南 的一部分进行全面修订。
提交 PR 帮助我们: MASTG v1->v2 MASTG-TEST-0015: 密钥用途测试 (安卓)
概述¶
静态分析¶
识别所有使用加密技术的地方。您可以查找:
- 类
Cipher
,Mac
,MessageDigest
,Signature
- 接口
Key
,PrivateKey
,PublicKey
,SecretKey
- 函数
getInstance
,generateKey
- 异常
KeyStoreException
,CertificateException
,NoSuchAlgorithmException
- 导入了以下内容的类
java.security.*
,javax.crypto.*
,android.security.*
,android.security.keystore.*
对于每个已识别的实例,确定其用途和类型。它可用于:
- 加密/解密 - 以确保数据保密性
- 签名/验证 - 以确保数据完整性(在某些情况下也确保可追溯性)
- 维护 - 在某些敏感操作(例如导入 KeyStore)期间保护密钥
此外,您应识别使用已识别加密实例的业务逻辑。
在验证期间,应执行以下检查:
- 所有密钥是否都按照创建时定义的用途使用?(这与 KeyStore 密钥相关,KeyStore 密钥可以定义 KeyProperties)
- 对于非对称密钥,私钥是否仅用于签名,公钥是否仅用于加密?
- 对称密钥是否用于多种目的?如果在不同上下文中使用,应生成一个新的对称密钥。
- 加密技术是否按照其业务目的使用?
动态分析¶
您可以使用 方法追踪 对加密方法进行,以确定输入/输出值,例如正在使用的密钥。监控加密操作期间的文件系统访问,以评估密钥材料的写入或读取位置。例如,通过使用 RMS 运行时移动安全 的 API 监控器 监控文件系统。