跳过内容

MASTG-TEST-0061:验证密码标准算法的配置

已弃用测试

此测试已**弃用**,不应再使用。**原因**:MASTG V2 中提供新版本

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

概述

静态分析

对于应用程序使用的每个库,需要验证所使用的算法和密码配置,以确保它们没有被弃用并被正确使用。

请注意如何定义待删除的密钥保存数据结构和纯文本数据结构。如果使用关键字let,则会创建一个不可变结构,该结构更难从内存中擦除。确保它是父结构的一部分,该父结构可以很容易地从内存中删除(例如,临时存在的struct)。

确保遵循“移动应用密码学”一章中概述的最佳实践。查看不安全和已弃用的算法以及常见的配置问题

CommonCryptor

如果应用程序使用 Apple 提供的标准加密实现,那么确定相关算法状态的最简单方法是检查对 CommonCryptor 中函数的调用,例如 CCCryptCCCryptorCreate源代码包含 CommonCryptor.h 的所有函数的签名。例如,CCCryptorCreate 具有以下签名

CCCryptorStatus CCCryptorCreate(
    CCOperation op,             /* kCCEncrypt, etc. */
    CCAlgorithm alg,            /* kCCAlgorithmDES, etc. */
    CCOptions options,          /* kCCOptionPKCS7Padding, etc. */
    const void *key,            /* raw key material */
    size_t keyLength,
    const void *iv,             /* optional initialization vector */
    CCCryptorRef *cryptorRef);  /* RETURNED */

然后,您可以比较所有 enum 类型,以确定使用哪种算法、填充和密钥材料。注意密钥材料:密钥应该安全地生成 - 要么使用密钥派生函数,要么使用随机数生成函数。请注意,在“移动应用密码学”章节中被标记为已弃用的函数,仍然在编程上得到支持。不应该使用它们。

第三方库

鉴于所有第三方库都在不断发展,这里不应该对每个库进行静态分析评估。仍然有一些需要注意的地方

  • 查找正在使用的库:可以使用以下方法完成
    • 如果使用 Carthage,请检查 cartfile
    • 如果使用 Cocoapods,请检查 podfile
    • 检查链接的库:打开 xcodeproj 文件并检查项目属性。转到 Build Phases 选项卡并检查 Link Binary With Libraries 中的条目,以查找任何库。有关如何使用 MobSF 获得类似信息,请参阅前面的章节。
    • 对于复制粘贴的源代码:搜索头文件(如果使用 Objective-C),否则搜索 Swift 文件,以查找已知库的已知方法名称。
  • 确定正在使用的版本:始终检查正在使用的库的版本,并检查是否有新版本可用,其中可能已修补漏洞或缺点。即使没有库的较新版本,也可能存在加密函数尚未经过审查的情况。因此,我们始终建议使用经过验证的库,或者确保您有能力、知识和经验进行验证。
  • 手工编写?:我们建议不要自己编写加密代码,也不要自己实现已知的加密函数。