Page 425 - 《软件学报》2026年第2期
P. 425
904 软件学报 2026 年第 37 卷第 2 期
能量波形;
(5) 对波形执行静态/动态对齐, 以便在分析计算时可以在同一点比较不同的波形;
(6) 使用对齐后的两组波形, 采用 TVLA-2 方法进行分析, 若分析结果显示无明显信息泄露, 则测试通过, 整个
测试流程完成, 否则, 测试失败.
接下来, 我们分别对分组密码算法和公钥密码算法这两种类型的私有算法进行探讨.
2.4.1 私有公钥密码算法的差分能量分析方法
标准 ISO/IEC 17825:2016、GM/T 0083-2020 中给出的面向公钥密码算法的非特定型 TVLA 差分能量分析方
法天然适用于私有公钥密码算法的场景, 本文同样采用非特定型 TVLA 方法对私有公钥密码算法进行差分能量
分析检测. TVLA-1 和 TVLA-2 两种方法对公钥密码算法执行差分能量分析, 能够对不同的泄露进行有效检测.
TVLA-1 能够有效检测明文及中间值带来的能量信息泄露. 根据算法使用固定明文和随机明文进行加密的能量信
息差异, 可以获取算法运算过程或者中间值相关信息. 例如 RSA 数字签名算法的 x mod N 过程, 如果 N 和明文 x
d
未加防护 (如掩码), 而私钥 d 加了防护, 且该算法未加其他防护, 则该算法可能无法通过 TVLA-1 检测, 而通过
TVLA-2 检测. TVLA-2 能够有效检测密钥带来的能量信息泄露. 我们可以根据算法使用固定密钥和随机密钥进行
加密的能量信息差异, 获取算法的密钥相关信息. 仍然以 RSA 数字签名算法的 x mod N 过程为例, 如果私钥 d 未
d
加防护, 而 N 和明文 x 加了防护, 且该算法未加其他防护, 则该算法可能无法通过 TVLA-2 检测, 而通过 TVLA-1
检测. TVLA-2 还能够有效检测简单能量分析检测不出来的指令执行模式差异. 例如 RSA 算法模幂运算的平方-乘
操作, 在加了防护的情况下, 平方运算的能量特征和乘操作的能量特征可能仅存在较小的差异, 我们无法通过视觉
观察、交叉关联等简单能量分析方法从单条能量波形中识别出来. 而 TVLA-2 方法借助 t-test 统计方法, 使用多条
能量波形进行 t 值计算, 能够有效识别不同操作的细微差异, 从而更有力地检测芯片算法的简单能量分析泄露.
TVLA-1 和 TVLA-2 能够从不同角度实现泄露检测, 因此私有公钥密码算法应使用这两种方法执行差分能量
分析, 无论使用这两种方法中的哪一种检测出了信息泄露, 都说明芯片可能存在安全性问题.
2.4.2 私有分组密码算法的差分能量分析方法
与公钥密码算法不同, ISO/IEC 17825:2016、GM/T 0083-2020 标准中使用特定型 TVLA 和非特定型 TVLA-1
这两种方法对分组密码算法进行差分能量分析. 然而, 该标准无法直接应用于私有分组密码算法. 首先, 特定型
TVLA 方法使用算法中间值进行分析, 这就要求检测人员了解算法实现过程, 而私有分组密码算法的过程未知. 其
次, 关于非特定型 TVLA 方法, 标准中仅使用 TVLA-1 方法对分组密码算法进行差分能量分析泄露检测, 未提及
TVLA-2 方法.
由于特定型 TVLA 方法是针对算法特定位置的分析, 该方法不适用于私有分组密码算法, 故在我们的检测方
法中不予考虑. 对于非特定型 TVLA, TVLA-1 方法能够有效检测分组密码算法中明文及中间值带来的能量信息
泄露, 例如, Schneider 等人 [8] 使用该方法对 AES 算法进行了有效泄露检测. 我们建议沿用 TVLA-1 方法对私有分
组密码算法执行差分能量分析检测. 除此之外, 我们认为私有分组密码算法还需要使用 TVLA-2 方法进行泄露检
测. 除明文及中间值带来的能量信息泄露之外, 分组密码算法中也可能存在密钥或子密钥带来的能量信息泄露, 例
如, 在 IDEA 算法的轮结构中, 存在中间值与子密钥的整数模 2 16 加操作和整数模 2 +1 乘操作, 这些操作可能泄
16
露密钥信息. 因而对于私有分组密码算法, 同样需要使用 TVLA-2 方法进行差分能量分析检测.
对于私有分组密码算法而言, 应使用 TVLA-1 和 TVLA-2 两种方法执行差分能量分析泄露检测, 不论使用这
两种方法中的哪一种检测出了信息泄露, 均表示芯片可能存在安全性问题.
3 私有算法密码芯片非入侵式攻击检测实例
由于传统的基于平均去噪的计时分析方法不涉及算法细节, 同样适用于私有算法密码芯片的计时分析检测,
因此本文略去对第 1 部分计时分析检测的描述, 仅对第 2、3 部分能量/电磁分析检测实例进行详细介绍.
我们共采购了 7 种密码芯片, 分别以 A、B、C、…、G 进行编号, 相关信息如表 2 所示.

