密码模块的非入侵式攻击检测
从标准到案例:密码模块的非入侵式攻击检测
在上一期文章中我们学到了密码模块的相关定义以及密码模块的安全等级等知识,也了解到了非入侵式攻击测试在密码产品的高安全等级认证中的必要性,本篇文章将对非入侵式攻击测试的定义和具体测试方法展开详细的介绍。
非入侵式攻击测试原理
非入侵式攻击测试项
《GB/T 37092-2018 信息安全技术 密码模块安全要求》中规定的非入侵式攻击测试项包括:
- 能量分析:简单能量分析(Simple Power Analysis,SPA)和差分能量分析(Differential Power Analysis,DPA)。SPA需要直接(例如,通过视觉)分析密码模块在执行密码过程中各指令的能量消耗模式。通过监视密码模块能量消耗的变化,可以发现所执行密码算法的模式和实现方法,从而获取密钥值。一阶DPA具有相同的目的,但是为了分析密码模块能量消耗的变化,使用了统计方法(例如,均值差、相关系数)对能量消耗进行统计分析,从而获取密钥值。
- 计时分析:计时分析(Timing Analysis,TA)攻击依赖于密码模块执行时间的精确测量与密码算法或过程有关的特殊数学操作之间的关系。对收集的耗时信息进行分析可以确定模块的输入和密钥之间的关系。通过对此关系的分析,从而推导出密钥和关键安全参数。计时分析攻击假定攻击者具有有关密码模块的设计知识。
- 电磁分析:由于密码模块电活动会导致密码模块发出的电磁信号发生变化,通过监视密码模块发出的电磁信号变化,可以采用简单电磁分析(Simple Electro-Magnetic Analysis,SEMA)和差分电磁分析(Differential Electro-Magnetic Analysis,DEMA)。SEMA采用与SPA相同的方法对电磁信号变化进行分析,从而获取密钥值。DEMA采用与DPA相同的方法对电磁信号变化进行分析,从而获取密钥值。
非入侵式攻击测试目标与原理
非入侵式攻击测试的目标是评估使用了非入侵式攻击缓解技术的密码模块能否提供抵抗非入侵式攻击的能力。测试程序不能保证密码模块可以完全抵抗攻击,但是有效的测试程序可以表明密码模块中充分考虑了非入侵式攻击缓解技术的设计和实现。
非入侵式攻击测试的基本原理是首先以非入侵的方法从密码模块中或密码模块周围提取物理量,随后利用隐藏在物理量中的有偏性展开攻击。这种有偏性来源于或者依赖于攻击者作为目标的秘密信息,这种依赖于秘密信息的有偏量被称为泄露。如果实验表明泄露的信息超过了允许的泄露阈值,则表明设备不能通过非入侵式攻击测试;否则,攻击失败并且通过测试。这种测试泄露是否存在的测试被称为泄露分析。
非入侵式攻击测试方法
非入侵式攻击测试一般包含计时分析、简单能量/电磁分析和差分能量/电磁分析,而针对具体的计时分析、能量泄露、电磁泄露测试,《GB/T 37092-2018 信息安全技术 密码模块安全要求》也给出了通用的核心测试流程,下面将对具体的核心测试流程和泄露分析流程展开描述。
核心测试流程
核心测试是指对单个关键安全参数(Critical Security Parameter,CSP)类的单个安全功能进行测试,其中CSP类可以包括密钥、生物特征数据或PIN。如果某些安全功能处理多个CSP类,则需要对所有的CSP类执行适用的泄露分析。测试方法需要使用不同的CSP类重复核心测试,直到第一次测试失败或者所有的CSP类都通过为止。如果一个核心测试由于密码模块限制了可以重复操作的次数而无法继续(比如说密码模块保护机制被触发,关键安全参数自动更新或者密码模块强制停止工作),则测试结果为通过,将对下一个CSP类继续进行核心测试。
核心测试流程如图1所示,分为以下几步:
1) 首先,针对指定的CSP验证供应商文档。
2) 然后,确定测量物理特性的可行性,若经测试后未测到相关物理特征,则测试结果为通过;否则,继续执行下一步。
3) 将由测试实验室确定的一套CSP配置到密码模块中。
4) 执行一次安全功能的泄露分析过程,检查是否存在明显的信息泄露,若观察到明显信息泄露则不通过测试,否则,通过测试。
图1 核心测试流程
非入侵式攻击测试框架
测试实验室应当严格遵循图2所示测试框架的操作顺序,例如,只有通过了TA才能继续执行SPA。另外,此处所提出的非入侵式攻击测试方法并不需要提取出完整的密钥,只要在测试过程中出现了明显的敏感信息泄露则认为密码模块没有通过测试。整个测试流程按顺序分为如下几步:
1) 首先执行一次计时分析,看是否存在与关键安全参数相关的执行时间的差异,如果不存在,则转到第二步;否则测试失败。
2) 执行一次简单能量/电磁分析,看是否存在与关键安全参数相关的指令模式,如果不存在,则转到第三步;否则测试失败。
3) 执行一次差分能量/电磁分析,如果能检测到敏感信息泄露,则测试失败;否则,测试通过。
图2 非入侵式攻击测试框架
计时分析攻击泄露测试
计时分析攻击的泄露分析流程如图3所示,整个测试流程可以分为两个阶段:
1) 第一阶段,测试密码模块在固定文本输入和不同关键安全参数下的执行时间,对应于多次测量密码模块使用固定安全参数以及固定文本的执行时间。此后同样的过程在其他关键安全参数中被重复执行。如果通过统计分析表明测得的执行时间与CSP之间没有相关性,则进行第二阶段的测试;否则,测试失败。
2) 第二阶段,测试密码模块在不同文本输入和固定关键安全参数下的执行时间,如果通过统计分析表明测得的执行时间和所有明文之间没有相关性,则测试通过;否则,测试失败。
另外,如果被测密码模块的执行时间难以准确测量,则可以使用目标密码模块的一个时钟周期作为容错值ε,比较两个时间值T1和T2,当|T1-T2|<ε时测试通过,否则,测试失败。
图3 计时泄露分析流程
简单能量/电磁泄露测试
简单能量/电磁泄露分析的流程如图4所示,分两个阶段进行:
1) 第一个阶段,测试实验室根据期望达到的安全能力获取对应数量的侧信道测量信息。
2) 第二个阶段,测试实验室通过交叉关联的方法来检索密码算法指令序列,若使用此方法测量出的相关性过低以至于无法得出准确的结论时,测试实验室可以使用聚类的方法来协助评估。对于所有的侧信道测量,若交叉关联方法识别出与关键安全参数相关的指令操作序列,则测试失败。
图4 简单能量/电磁泄露分析流程
差分能量/电磁泄露测试
差分能量/电磁泄露分析的流程如图5所示,可以描述为以下:
1) 测试实验室根据期望达到的安全能力等级来获取对应数量的侧信道测量信息。
2) 使用校准函数静态或动态对齐操作(厂商应该与测试实验室合作,以便协助测试实验室在密码模块中实现“校准函数”),直至计算所得的信噪比SNR满足条件,则可以执行下一步操作。
3) 计算安全功能的中间值。
4) 对对齐的或预处理的曲线进行统计测试。测试实验室应当在多个预先指定的数据集上进行统计分析(即Welch测试),以此来检测侧信道中是否存在敏感信息泄露。
图5 差分能量/电磁泄露分析流程
非入侵式攻击测试指标
由上述描述,安全等级一和安全等级二不需要侧信道攻击测试,下面给出安全等级三和四在侧信道攻击测试中对数据收集时间、分析时间和数据量的标准。
总结
本文主要介绍了非入侵式攻击测试的目标、原理、具体测试流程和测试方法,以及测试通过/不通过的相关指标。非入侵式攻击测试利用了隐藏在密码模块中或周围的物理量的有偏性,这种依赖于秘密信息的有偏量被称为泄露,测试泄露是否存在的测试即为泄露分析。在此基础上,我们可以学习到非入侵式攻击核心测试的基本流程和测试框架,测试人员需要遵循测试框架中的操作顺序;然后我们可以根据测试框架中计时分析、简单能量/电磁分析、差分能量/电磁分析的顺序,依次了解到其泄露测试的具体流程;最后给出了安全等级三和四在侧信道攻击测试中对数据收集时间、分析时间和数据量的指标和标准。
今天我们了解到了非入侵式攻击测试的相关原理和基本流程,那么如何利用已有的测评工具在实际场景中根据这些标准展开具体可靠的测试,以及如何让测试结果更加明晰可靠,本公众号11月11日的文章将展开详细的介绍。
