对于 DES 的功耗攻击,有效的方法有差分功耗攻击(DPA)与相关功耗攻击(CPA)。根本原理是利用 DES 硬件电路处理的中间数据与瞬态功耗的相关性。区别在于采集到的功耗曲线的统计学分析方法:差分功耗攻击(DPA)利用猜测的密钥将曲线分组,每组平均后求差分;相关功耗攻击(CPA)的分析方法求猜测的中间结果与采集到的功耗的相关系数。
DES的电路实现
在用电路实现 DES 时,通常将左半部分 L i L_i Li与右半部分 R i R_i Ri分别用两组 32 32 32 位的寄存器来实现。其余部分,如 f f f 函数,则利用组合逻辑实现(见图3)。由于 DES 的 16 16 16 轮操作完全相同,因此通常设计成如图 2 的形式,利用一组硬件重复计算 16 16 16 个时钟周期,来完成一次 DES 操作。针对某些对吞吐率要求很高的应用,可采用全流水结构,即直接按照图 1 的结构实现,由 16 16 16 组硬件分别完成 16 16 16 轮操作;此方法可实现每个时钟周期完成一组明文(或密文)数据的处理。
图1. DES实现的全流水结构
图2. DES实现的折叠结构
图3 f f f函数的实现框图
对DES相关功耗攻击方法
以相关功耗攻击(CPA)为手段,具体介绍对于一个未加抗攻击措施,并且按照图 2 的结构来实现的 DES 电路的功耗攻击过程。
第 1 步:随机选择 N N N 组明文数据,控制 DES 电路对 N N N 组明文依次进行加密操作。每次加密之前,对电路进行复位,以使存储 L i L_i Li 和 R i R_i Ri