跳过内容

MASTG-TEST-0210: 损坏的对称加密算法

概述

要测试 iOS 应用中是否存在有缺陷的加密算法,我们需要关注密码学框架和库中用于执行加密和解密操作的方法。

  • CommonCryptoCCCrypt 函数用于对称算法,并在其第二个参数 alg 中指定算法。 这包括

    • kCCAlgorithmAES128
    • kCCAlgorithmDES
    • kCCAlgorithm3DES
    • kCCAlgorithmCAST
    • kCCAlgorithmRC4
    • kCCAlgorithmRC2
  • CryptoKit:此库不支持有缺陷的加密算法。 它支持以下对称算法

    • AES.GCM
    • ChaChaPoly

注意:Security 框架仅支持非对称算法,因此不在此测试范围内(参见关于对称密钥的说明)。

步骤

  1. 在应用二进制文件上运行静态分析工具,例如 radare2 for iOS,或使用动态分析工具,例如 Frida for iOS,并查找使用执行加密和解密操作的密码学函数的情况。

观察

输出应包含使用相关密码学函数的函数的反汇编代码。

评估

如果在源代码中发现使用了有缺陷的加密算法,则测试用例失败。 例如

  • DES
  • 3DES
  • RC2
  • RC4

及时更新:这是一个不完整的有缺陷算法列表。 请务必查看国家标准与技术研究院 (NIST)、德国联邦信息安全办公室 (BSI) 或您所在地区的任何其他相关机构的最新标准和建议。

某些算法可能不会被视为整体存在缺陷,但可能存在有风险的配置,应避免使用。 例如,使用非密码安全伪随机数生成器 (CSPRNG) 生成的种子或 IV,或者不被认为是量子安全的。 例如,在面对量子计算攻击时,AES 128 位密钥大小是不够的。 在构建使用将长期存储的数据的应用程序时,这一点非常重要。 确保您遵循 NIST 在NIST IR 8547 “Transition to Post-Quantum Cryptography Standards”, 2024中的建议。

上下文考虑:

为了减少误报,在将相关代码报告为不安全之前,请确保您了解算法使用的上下文。 确保它在与安全相关的上下文中用于保护敏感数据。

演示

MASTG-DEMO-0018:使用 r2 在 CommonCrypto 中使用有缺陷的加密算法