Page 423 - 《软件学报》2026年第2期
P. 423

902                                                        软件学报  2026  年第  37  卷第  2  期


                  2.3.1    私有公钥密码算法简单能量分析
                    对于公钥密码算法, 其能量波形往往存在两个明显特征. 第一, 算法执行时间长, 公钥密码算法实现复杂, 导致
                 其速度比对称密码算法慢几个数量级. 第二, 波形中呈现长时间规律性运算的部分, 往往与常见的密钥位宽相关,
                 如  RSA  算法的密钥位宽有     1 024、2 048  等, ECC  算法的密钥位宽有   256  等. 在密码芯片算法类型未知的情况下,
                 可以根据能量波形是否存在这些特征, 判断芯片使用的是否是公钥算法.
                    在假定待测算法为公钥算法的前提下, 可进一步通过长时间规律性运算来猜测其特定操作序列是否为公钥密
                 码算法中常见的标量乘、模幂等运算, 并采用视觉观察、交叉关联等典型方法对该运算进行信息泄露判定. 若推
                 测出该运算为标量乘、模幂等常见运算, 则判断波形是否存在不规则操作序列. 不规则操作序列, 指包含一系列操
                 作, 且操作不以固定形式循环出现的序列.
                    除了常见的     RSA、ECC  算法, 现实中还存在其他公钥密码算法, 如后量子算法. 若私有公钥密码算法的能量
                 波形特征显示该算法不是          RSA、ECC  这类算法, 则无法使用上述方法进行泄露分析. 另外, 虽然在经典                     RSA、
                 ECC  算法中, 标量乘、模幂以外的运算一般不存在简单能量分析泄露, 但这并不能说明私有公钥密码算法中除标
                 量乘、模幂这些常见运算以外的其余部分也不存在简单能量分析泄露. 对于私有公钥算法而言, 检测人员在对不
                 规则操作序列进行检测后, 可以将检测结果反馈给厂商, 由厂商对疑似存在泄露的位置进行实际泄露判定.
                  2.3.2    私有分组密码算法简单能量分析
                    对于存在条件分支语句的私有分组密码算法, 可以通过简单能量分析对分支语句的不同操作进行区分, 从而
                 获得不规则操作序列.
                    若不规则操作序列对应的中间值与密钥相关, 则存在信息泄露. 例如, AES                     算法首轮中间状态       state 进行列混
                 合运算时各个字节的第        1  比特存在简单能量分析泄露, 如图          8  所示, 检测人员可根据此处分支语句呈现的不同特
                 征区分出该密钥比特, 进而恢复密钥. 若不规则操作序列对应的中间值与密钥无关, 尽管区分出了不同操作, 也无
                 法恢复密钥, 不存在信息泄露. 例如, DES         算法的密钥扩展中, 分支语句仅与密钥轮数相关, 左循环移位                  LS i  操作根
                 据密钥轮数    i 选择循环左移一位或两位, 不涉及具体密钥值或中间值.


                              25  *10 mV                  Trace 0-1
                              20
                                                      列混合第一字节
                              15
                              10
                              5
                              0
                              −5
                             −10                                                         *μs
                               240   250   260   270   280  290   300   310   320   330

                        图 8 AES  算法首轮列混合运算第        1 字节的波形, 两条波形显示不同分支语句呈现的不同特征

                    实际中, 在算法过程未知的条件下, 检测人员仅能通过简单能量分析对私有分组密码算法进行检测, 找到波形
                 中可能存在不规则操作序列的位置, 而无法判定其是否与密钥直接相关. 因而, 该环节后续需要厂商的配合, 各个
                 不规则操作序列是否真正存在泄露, 需要由厂商结合算法过程进行判断分析.
                  2.4   私有密码算法的差分能量/电磁分析

                    若简单能量/电磁分析方法无法获取密码算法的密钥等关键信息, 或者分析结果显示无明显信息泄露, 需要继
                 续进行差分能量/电磁分析测试. 差分能量/电磁分析通过统计方法, 进一步对密码算法运行时产生的能耗/电磁辐
                 射信息进行分析. 为了便于描述, 下文讨论的均为能量分析, 电磁分析与之同理, 不做赘述.
                    对于差分能量/电磁分析测试, 本检测框架使用               TVLA  方法进行检测. 该方法基于        t-test 分析进行侧信息泄露
                 分析, 分为特定型     TVLA  和非特定型    TVLA. 特定型   TVLA  方法是针对算法特定位置的分析方法, 如选取特定中
   418   419   420   421   422   423   424   425   426   427   428