密码模块的非入侵式攻击检测
从标准到案例:密码模块的非入侵式攻击检测
在前两期的文章中我们分享了密码模块的相关定义和密码模块的安全等级知识,从而认识到非入侵式攻击测试对密码产品的高安全等级认证是必要的,并且我们对非入侵式攻击测试的定义和具体测试方法展开了较为详细的介绍。本篇文章将介绍如何利用数缘科技自主研发的MathMagic Detector侧信道分析测评工具对商用密码产品展开非入侵式攻击检测,并生成测试报告。
Detector实际测评案例
❖ 计时分析泄露测试
我们以Detector标配的AES算法训练卡为例进行计时分析的泄露分析。整个过程分为两个阶段,第一个阶段统计分析测试加密时间和所使用密钥之间的相关性,若测试表明加密时间依赖于所使用的密钥,则测试不通过,测试结束;否则,进行第二个测试阶段:统计分析加密时间和所使用明文之间的相关性。若第二阶段也表明无相关性,则测试通过;否则,测试不通过。
- 加密时间与密钥之间的依赖性测试
- 首先,采集待测设备触发通道的波形:固定明文,随机生成五组密钥,使用这五组密钥对应地采集五组波形,每组波形包含1000条波。图1是使用Detector软件平台搭配相应的能量分析仪和示波器采集到的触发通道波形。
图1 触发通道波形(密钥随机,5000条)
在Detector软件中选中波形触发拉低部分波形段,如图2所示。
图2 选中计时分析的波形区域
点击菜单栏“密码”按钮,下拉菜单中选择“计时分析-标准”,进入如图3所示的参数配置界面。
图3 计时分析参数配置
在此测评实例中,测评工具将计算每条波触发拉低时的实际时间以及每组波所耗时间的均值。若存在每组耗时均值的差异大于一个时钟周期的情况,则测试不通过;否则,固定密钥,随机生成五组明文,使用这五组明文分别采集五组波形,同样计算每组波所耗时间的均值。若存在每组耗时均值的差异大于一个时钟周期的情况,则测试不通过,若小于一个时钟周期,则测试通过。其计时分析结果如图4所示,我们可以清晰地看到每组波加密耗时之间的明显差异。经过计算得知此差值超过了待测设备的一个时钟周期,因此存在与密钥相关的时间信息泄露,测试不通过。
图4 计时分析结果
- 加密时间与明文之间的依赖性测试
- 该依赖性测试的操作方法与加密时间与密钥之间依赖性测试基本相同。由前面的测试可知,测评工具标配的AES算法训练卡加密时间与密钥之间存在明显的依赖性,测试不通过,测试结束,不需要继续执行该测试。
- 在以上计时分析结束之后,点击软件中的“生成报告”按钮,进入图5所示的生成报告界面。
图5 TA泄露分析报告导出界面
界面中任务名称通过下拉菜单选择,也可点击“创建”按钮创建新的任务名称。“测试项”选择“计时分析”,“通过”选项根据测试结果自动锁定,检测人员不可直接更改。报告内标题与测试结果会自动生成,并支持手动修改。
点击“确定”按钮后,测试报告将由Detector软件自动生成,并保存在安装路径下“Report”文件夹中。报告内容如图6所示,包括:测试相关信息、分析波形图、分析结果图及测试结果文字说明等内容。
图6 TA泄露分析报告
❖ 简单能量/电磁泄露测试
我们以SM2算法为例进行简单能量泄露分析。针对于SM2的简单能量分析侧重于区分出签名或解密标量乘操作中的倍点(Double)运算和点加(Add)运算。图7是我们采集到的某型号芯片实现的SM2解密的波形。
图7 SM2示例波形(5条)
我们选中部分采样点,放大波形,观察其特征。根据图8所标示波形段中较粗尖峰的数量,我们将波形分为两类,分别对应Double和Add这两种运算。分析算法执行过程,可知Add不可能单独出现,从而我们可以将这两种操作直接区分出来。进一步地,根据Double和Add一起出现对应比特1而Double单独出现对应比特0这一规律,我们可以将其完整密钥恢复出来。
图8 SM2示例波形放大观察
GM/T 0083标准中建议通过“交叉关联”的方法来增强简单能量分析中两种操作的区分度,学界一般将其称为自相关分析。该方法通过计算得出自相关图来可视化一条波中的重复操作,这种分析有助于识别已知的程序结构。在上述例子中,我们可设定两个宽度均为2000的窗口,各自在横轴上以步长1进行左右滑动;每滑动到两个位置,均计算两个窗口中2000个点的相关系数;当两个窗口遍历所有情况时,相关系数构成一个矩阵。图8波形段的自相关分析结果如图9所示,其中用红色框标记的比较亮的竖条纹对应波形段即为Add运算,其余为Double运算。
图9 SM2自相关分析结果
在自相关分析结束之后,点击“生成报告”按钮,生成报告界面如图10所示。
图10 SPA泄露分析报告生成界面
界面中任务名称通过下拉菜单选择,也可点击“创建”按钮创建新的任务名称。“算法”选择“SM2”,“测试项”选择“SPA测试”,“通过”选择“否”。报告内标题与测试结果会自动生成,并支持手动修改。最后,点击“确定”按钮可生成如图11所示报告。
图11 SPA泄露分析报告
❖ 差分能量/电磁泄露测试
我们以Detector标配的HMAC-SM3算法训练卡为例进行实验,GM/T 0083标准中建议通过“Welch测试”来实现差分能量泄露测试,学界一般将其称为基于T-test的TVLA(Test Vector Leakage Assessment)。进行TVLA T-Test需在固定密钥的前提下采集两组波形,一组波形使用固定明文加密,一组波形使用随机明文加密。使用HMAC-SM3算法采集到的2000条示例波形如图12所示,其中,标题为“TVLA fixed 1”的波形明文固定,标题为“TVLA random -1”的波形明文随机。
图12 HMAC-SM3示例波形(2000条)
为了使测试更高效地运行,我们需要对波形进行低通滤波,以减少波形中的高频噪声,保留有用的低频信号。我们在上面的波形中按住鼠标左键选中需要低通滤波的区域,选中后效果如图13所示。
图13 选中低通滤波的区域
然后点击菜单栏“滤波”按钮,下拉菜单中选择“低通滤波”,该功能的参数设置界面如图14所示。其中,“起始点”和“长度”对应波形中选择的模板,软件已自动填写,“权重”即为滤波权重。
图14 低通滤波的参数设置
我们接下来要对波形进行静态对齐,以减少其横向偏移。在原始波形中选中一部分作为模板(如图15所示)。
图15 选中静态对齐的模板
点击菜单栏“工具”按钮,下拉菜单中选择“静态对齐”,静态对齐参数设置界面如图16所示。其中,“参考波形”中的“起始点”、“点长度”、“参考波形号”对应波形中选择的模板,软件已自动填写,“参数设置”中的“最大偏移量”限制偏移范围。用模板所选用波之外的每一条波与选中的模板在偏移范围内求相似度,若所求相似度的最大值达到了阈值则认为可以对齐,保留该波,否则丢弃该波。此样例HMAC-SM3能量波形滤波后经过静态对齐丢波0条。
图16 静态对齐设置界面
TVLA T-Test的目的是对一定数量的固定明文和随机明文进行加密之后,用获得的两组波形数据进行T-Test,根据两者统计特性的异同判断是否有信息泄露。该模块仅可以在通过TVLA数据生成器获取的特定波形集上运行。对静态对齐后的波形(如图17所示)进行TVLA分析,点击软件菜单栏“密码”按钮,下拉菜单中选择“TVLA T-Test”,TVLA T-Test的参数设置如图18所示。
图17 进行TVLA T-Test的区域
图18 TVLA T-Test的参数设置
将该HMAC-SM3卡TVLA T-Test分析结果的两条波形叠加,如图19所示,蓝色曲线为计算得到的T-test 值,黄色曲线为的阈值线。若计算所得的T-test值超过此阈值,则说明此处存在明显侧信息泄露,否则无明显侧信息泄露。结合HMAC-SM3算法实现分析,最前端的尖峰可能是在执行明文的搬运,中间及后半部分尖峰位置对应算法中两个压缩函数,此处函数结果与明文有关。由此可判断在第二个和第四个压缩函数的位置存在泄露。
图19 待分析波形及TVLA T-Test分析结果
在TVLA分析结束后,点击“生成报告”按钮,生成报告界面如图20所示。界面中任务名称通过下拉菜单选择,也可点击“创建”按钮创建新的任务名称。“算法”选择“SM3”,“测试项”选择“TVLA测试”,“通过”选项根据测试结果自动锁定,无法更改。报告内标题与测试结果会自动生成,并支持手动修改。
图20 DPA泄露分析报告生成界面
最后,点击“确定”按钮可生成如图21所示报告。
图21 DPA泄露分析报告
总结
本文主要介绍了如何在实际测评场景中利用数缘科技Detector测评工具展开符合《GM/T 0083-2020 密码模块非入侵式攻击缓解技术指南》标准的测试,并形成测试报告。通过“从标准到案例:密码模块的非入侵式攻击检测”系列文章,我们学习到了和密码模块相关的定义及安全等级知识,认识到非入侵式攻击测试在密码产品的高安全等级认证中是必需的,又掌握了非入侵式攻击测试的原理和方法;最后,我们面向典型密码芯片开展了非入侵式攻击检测的应用示范。从中我们体会到,无论是检测机构按照标准进行非入侵式攻击检测,还是厂商研发高安全等级的密码产品,有一个符合标准规范、简单易上手的检测工具,可以降低检测人员的门槛,成倍地提高效率,极大缩短检测和研发的时间,达到事半功倍的效果。数缘科技希望将Detector测评工具做成专业性强且操作简易的平台工具,助力检测机构和厂商提升自身检测水平,从而推动密码产品的安全性更上一层楼。
