在前面的文章中我们介绍了基于EN 303 645标准对物联网产品进行测试的测试方法,本系列文章我们详细介绍依据EN 303 645标准进行测评时,根据不同测试指标的测试用例和测试方法,本文介绍的是没有通用的默认密码部分。
5.1-1 在使用密码且处于出厂默认值以外的任何状态时,所有消费者物联网设备密码对于每台设备都应是唯一的或是由用户定义的。
测试用例1:(概念)
测试目的:
评估基于密码的身份验证机制(概念层面)。
测试方法:
测试实验室基于 IXIT 1-AuthMech表(实施配套声明身份验证机制,附在文章最后),评估所有同时满足以下条件的基于密码的用户身份验证机制:
密码非由用户定义(即"身份验证因素"中未涵盖);
在出厂默认设置之外的任何状态下使用;
评估其"密码生成机制"是否能确保每个设备生成的密码都是唯一的。
判定准则:
判定通过(PASS): 对于在出厂默认设置之外任何状态下使用、且非用户定义的基于密码身份验证机制,其生成的每个密码在每个设备上都是唯一的。
判定失败(FAIL): 不符合上述条件。
测试用例2:(功能性)
本测试用例旨在对基于密码的身份验证机制进行功能评估,评估范围涵盖:
a) IXIT 文档中记录的机制;
b) 用户定义的密码;
c) 密码生成机制的完整性。
测试方法:
网络接口暴露性检查: 测试实验室应使用网络扫描工具,功能性地评估 IXIT 1-AuthMech 未记录的基于密码的身份验证机制,是否可通过被测设备的网络接口访问或在用户手册中描述。
用户定义密码强制性检查: 对于 IXIT 1-AuthMech 中记录的每个基于密码的用户身份验证机制,应功能性地检查:用户是否必须在使用前,根据"身份验证因素"定义所有用户定义的密码。
非用户定义密码生成机制符合性检查: 应功能性地评估:在出厂默认设置之外的任何状态下使用的、且非用户定义的密码(即用户未根据 IXIT 1-AuthMech 中"身份验证因素"定义的密码),其生成机制是否与 IXIT 中描述的"密码生成机制"相符。
判定准则:
判定通过 (PASS): 需同时满足以下所有条件:
(a) 测试中发现的所有基于密码的身份验证机制均记录在 IXIT 1-AuthMech 中;
(b) 对于 IXIT 1-AuthMech 中记录的用户定义密码,用户在使用前必须完成定义;
(c) 无证据表明在出厂默认设置之外任何状态下使用的、非用户定义密码的生成机制,与 IXIT 中描述的生成机制存在差异。
判定失败 (FAIL): 未能满足上述任一条件。
5.1-2 如果使用预先设置的每个设备的唯一密码,则应使用一种随机生成机制来生成这些密码,以降低针对某类或某类型设备的自动攻击风险。
测试用例1(概念性):
测试目的: 本测试用例旨在对设备预装密码的生成机制进行概念层面的安全性评估。
测试方法:
1)规律性评估: 测试实验室应评估 IXIT 1-AuthMech 中使用预装密码的每个身份验证机制:其"密码生成机制"是否在生成的密码中引入了明显规律性(例如:基于增量计数器的密码,如 "password1"、"password2" 等)。
2)常见模式评估:测试实验室应评估该生成机制是否在生成的密码中引入了常见字符串或其他常见模式(例如:已知密码字典中包含的字符串,可参考类似 https://www.ncsc.gov.uk/static-assets/documents/PwnedPasswordsTop100k.txt 的公开列表)。
3)关联性评估: 测试实验室应评估该生成机制产生的密码是否与设备的公共信息存在明显关联(例如:MAC 地址、Wi-Fi® SSID、设备名称、型号或描述)。
4)复杂性评估: 测试实验室应评估该生成机制产生的密码在密码复杂性方面是否被视为合适。
注:此处"复杂性"指攻击者利用其掌握的信息猜测密码的难度。密码长度是衡量复杂性的重要因素。
判定准则:
判定通过 (PASS): 需同时满足以下所有条件:
(a) 预装密码中不存在明显规律性;
(b) 预装密码中未发现常见字符串或其他常见模式;
(c) 预装密码的生成机制未产生与设备公共信息存在明显关联的密码;
(d) 预装密码的生成机制在密码复杂性方面被视为合适。
判定失败 (FAIL): 未能满足上述任一条件。
测试用例 2 (功能性):
测试目的:
本测试用例旨在对预装密码的生成机制进行功能性评估。
测试方法:
对于 IXIT 1-AuthMech 表中"身份验证因素"指定使用预装密码的每个身份验证机制,测试实验室应进行功能性评估,验证其密码生成机制是否按照"密码生成机制"中的描述正确实施。
* 示例: 若"密码生成机制"描述要求密码为8位长度,且必须包含至少一个大写字母、一个小写字母和一个数字,则需验证 DUT 生成的对应密码是否:
* 长度确为8位;
* 包含至少一个大写字母、一个小写字母和一个数字;
* 不包含特殊字符。
判定准则:
判定通过 (PASS): 对于每个受测的预装密码,未发现其生成机制的实施偏离 IXIT 中描述的"密码生成机制"。
判定失败 (FAIL): 未能满足上述条件。
5.1-3 用于验证设备用户身份的验证机制应使用适合技术特性、风险和用途的最佳实践加密术。
测试用例1:(概念性)
测试目的:
本测试用例旨在从概念层面评估身份验证机制所采用的密码学,重点关注:
a) 密码学最佳实践的应用;
b) 密码学机制对可行攻击的脆弱性。
测试方法:
安全保证适用性评估: 对于 IXIT 1-AuthMech 中记录的、用于 DUT 对用户进行身份验证的每个机制,测试实验室 (TL) 应评估其声明的"安全保证"是否适用于用户身份验证场景,并至少需满足完整性 (Integrity) 和真实性 (Authenticity) 要求。
机制适合性评估: 对于 IXIT 1-AuthMech 中记录的、用于 DUT 验证用户的每个机制,应评估其"描述"的机制是否适合实现所声明的"安全保证"。
注1:评估机制安全性需采用整体方法。
密码学最佳实践符合性评估: 对于 IXIT 1-AuthMech 中记录的、用于 DUT 对用户进行身份验证的每个机制,应评估其"密码详细信息"是否符合用户身份验证用例的密码学最佳实践。
评估依据: 参考公认的密码学目录(例如:ETSI TR 103 621 [i.7] 提供了基于用例的最佳实践示例;SOGIS 认可的加密机制 (https://www.sogis.eu) 提供通用参考目录)。
例外处理: 若"密码详细信息"不在相关参考目录中(例如:采用新颖密码学),则 S0 需提供证据(如风险分析)证明其适合作为该用例的最佳实践。应评估此证据对该用例是否适当且可靠。
注3:以下情形不能视为最佳实践:
密码算法/原语无法满足其声明的安全属性(例如:使用 SHA1 抗碰撞);
密码算法/原语依赖不合适的密码参数(例如:密钥长度不足);
(需结合 DUT (被测设备)预期生命周期和密码敏捷性进行评估)。
可行攻击脆弱性评估: 对于 IXIT 1-AuthMech 中记录的、用于 DUT(被测设备) 对用户进行身份验证的每个机制,应根据其"安全保证"要求,评估"密码详细信息"是否已知易受针对所需安全属性的可行攻击。
评估依据: 参考权威密码分析报告(通常发表于科学文献)或 S0 提供的合格分析报告。
判定准则:
判定通过 (PASS): 需同时满足以下所有条件(针对所有受评估的用户身份验证机制):
(a) 声明的"安全保证"适用于用户身份验证用例;
(b) 描述的机制适合实现其声明的"安全保证";
(c) 所有使用的"密码详细信息"均符合密码学最佳实践;
(d) 未识别到使用的"密码详细信息"存在针对所需安全属性的已知可行攻击。
判定失败 (FAIL): 未能满足上述任一条件。
测试用例2 (功能性)
测试目的:
本测试用例旨在对设备身份验证机制中实际使用的密码学配置进行功能性符合性评估。
测试方法:
对于 IXIT 1-AuthMech 中记录的、用于 DUT 对用户进行身份验证的每个身份验证机制,测试实验室 (TL) 应进行功能性评估,验证 DUT 实际实施的密码学配置是否与"密码详细信息"中的描述一致。
评估方法示例:
网络协议分析: 对于基于网络的机制,可使用协议分析器或数据包嗅探器工具进行验证。
证书属性检查: 若采用基于 PKI 证书的身份验证,应探查实际使用的证书并比对其属性(如算法、密钥长度、有效期等)是否与 IXIT 中描述的"密码详细信息"相符。
安全模式降级测试 (谨慎使用): 若底层通信协议支持不同安全模式,可尝试进行安全模式降级测试(注:此方法需谨慎,可能超出纯功能符合性验证范畴,更偏向安全测试),观察行为是否符合预期配置描述。
判定准则:
判定通过 (PASS): 对于所有受评估的身份验证机制,未发现其实际使用的密码学配置与 IXIT 1-AuthMech 文档中描述的"密码详细信息"存在偏离。
判定失败 (FAIL): 发现至少一个机制的实际密码学配置与 IXIT 描述不一致。
5.1-4 当用户可以对设备进行认证时,设备应向用户或管理员提供更改所使用认证值的简单机制。
测试用例1 (概念)
测试目的:
此测试用例旨在初步验证身份验证值更改机制的设计概念。
测试方法:
测试实验室(TL)须验证:对于 IXIT 1-AuthMech 中声明用于用户身份验证的每个机制,其对应的"更改机制说明文档"( IXIT 2-UserInfo中)是否涵盖了该身份验证机制;
以易于非技术用户理解的方式,描述了如何更改该机制的身份验证值。
判定准则:
满足以下条件时,判定为通过(PASS):
所有用户相关身份验证机制均配有说明文档,且文档使用简单易懂的方法描述了身份验证值的更改过程。
否则,判定为失败(FAIL)。
测试用例 2 (功能性)
测试目的:
此测试用例旨在对身份验证值更改机制的实际功能进行验证。
测试方法:
A)测试实验室(TL)应依据 IXIT 2-UserInfo a) 项"更改机制文档"资源中记录的规程,对 IXIT 1-AuthMech 中所列的所有用户身份验证机制执行身份验证值更改操作。
b) TL 应对所有用户身份验证值的更改结果进行功能性评估,确认其是否成功。
示例说明:
成功标准示例:更改完成后,旧身份验证值应失效,新身份验证值应生效。
判定准则:
满足以下条件时,判定为通过(PASS):
所有用户身份验证机制的身份验证值更改功能均能按既定规程成功执行。
否则,判定为失败(FAIL)。
5.1-5 当设备不是受限设备时。它应该具有一种机制,防止通过网络接口对认证机制进行暴力攻击。
测试用例1 (概念):
测试目的:
此测试用例旨在初步评估系统设计的暴力攻击防御机制是否具备理论可行性。
测试方法:
a) 测试实验室(TL)应评估:对于 IXIT 1-AuthMech 中描述为可通过网络接口直接访问的每个身份验证机制,其声明的"暴力预防"机制是否足以使通过网络接口实施的暴力攻击不可行。
注释 1:常见的暴力攻击缓解措施包括(但不限于):
连续失败身份验证尝试之间引入时间延迟;
限制尝试次数,达到上限后进入暂停期(禁止登录);
限制尝试次数,达到上限后锁定认证机制;
确保身份验证值(如密码)具有基于密码学最佳实践的足够熵;
启用双因素认证。
注释 2:业界提供了防范暴力攻击的最佳实践指南(例如,OWASP《阻断暴力攻击》指南)。
判定准则:
满足以下条件时,判定为通过(PASS):
被评估系统所声明的防护机制,能够有效抵御通过网络接口发起的暴力攻击。
否则,判定为失败(FAIL)。
测试用例2 (功能性):
测试目的:
此测试用例旨在对防范网络暴力攻击的机制进行实际功能验证,重点评估 IXIT 文档记录(a)与对应机制实现(b)之间的一致性与完整性。
测试方法:
a) 测试实验室(TL)应执行功能性测试,确认是否存在 IXIT 1-AuthMech (a) 项中未记录的、额外的网络身份验证机制。
* 常用检查方法: 使用网络扫描器(如 Nmap)或无线嗅探器(如 BLE 适配器)。
b) TL 应对 IXIT 1-AuthMech 中描述的每个基于网络的身份验证机制,尝试执行暴力破解攻击(h)。
判定准则:
满足以下所有条件时,判定为通过(PASS):
IXIT 记录已涵盖所有实际发现的网络身份验证机制;
对于所有可通过网络接口访问的身份验证机制,其暴力防护措施的实际实现均与其 IXIT 文档的描述相符。
否则,判定为失败(FAIL)。


以上就是针对EN 303 645标准中第五部分"没有通用的默认密码部分"的测试用例和测试方法,如需物联网产品信息安全测试工具,可私信我。