跳过内容

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 监控器 监控文件系统。