李梦竹,臧丽,郑帅
摘要:文章从AES加密算法介绍入手,分别从功耗模型、自触发模式下的功耗攻击以及参数影响等方面,对AES加密算法差分功耗攻击进行研究。结果表明,以单片机作为载体时,在自触发模式下进行功耗攻击分析时,应当对相关的参数进行合理确定,以此来达到最佳的攻击效果。
关键词:AES加密算法;功耗;攻击效果
中图分类号:TP393 文献标识码:A
文章编号:1009-3044(2021)20-0050-02
在密码学中,AES是高级加密标准的简称,是对称密钥加密中较为先进的一种算法,在全球范围内得到广泛应用。差分功耗攻击是目前最为流行的攻击手段之一,它的特点是对噪声水平具有较高的容忍度。下面本文重点对AES加密算法差分功耗攻击展开研究。
1 AES加密算法
AES的分组长度为固定值,即128bit,而密钥长度有三个,分别为128bit、192bit和256bit。从本质的角度上讲,AES为密钥迭代分组密码,在进行加密时,要完成多次轮变换,轮数主要与密钥长度有关,当密钥长度为128bit时,轮数Nr为10,256bit时,Nr为14[1]。轮数会随着密钥长度的长度增加而增多,二者之间呈正比关系,不同的轮数对应不同的加密长度,采用的加密扩展算法有所差别,虽然如此,但每一轮的具体操作过程却完全相同。AES的加密长度尽管数值不同,但本质却并无差别,所以为使研究进一步简化,本文仅以128bit这个加密长度作为研究对象。AES每一轮的操作步骤相同,即AK(轮密钥加)、SB(字节替换)、SR(行移位变换)以及MC(列混淆变换)。
1.1 AK
AK代表的是轮密钥加,实质上就是密钥扩展,也被称之为密钥编排,主要作用是生成轮密钥。经扩展后,可以得到11个长度128bit的扩展密钥,这些密钥能够参与11次AK操作。需要着重阐明的一点是,原始密钥为首次参与AK操作的扩展密钥。
1.2 SB
SB代表字节替换,在AES算法的实际应用中,对明文进行分组加密时使用的是长度为128bit的密钥,且密钥与明文的字节相同,均为16字节。为更加清晰地描述AES算法,可用字节矩阵对数据与密钥进行表示,在这个矩阵内,比特流中所有的比特值及顺序均保持不变。AES算法的轮变换中,SB操作是唯一的非线性变换,简称S盒变换,它的构造遵循的是非线性和代数复杂性的原则,具体的作用是抵抗差分密码分析[2]。
1.3 SR
SR代表行移位变换,简称行变换,以字节为单位进行,整个过程为循环移位。举例说明下,第一行不移位,第二行向左移1个字节,并进行循环,而第三行则向左移2个字节,进行循环,第四行向左移3个字节,以此类推。通过SR能够使AES算法的扩散性得到大幅度提升。
1.4 MC
MC代表列混淆变换,它是对每一列中的元素进行混合,以列作为主要单位,可将列与矩阵执行乘法运算。字节是MC考虑的基本元素。MC可以为差分密码分析提供较高的抵抗能力。
2 针对AES加密算法的差分功耗攻击过程研究
2.1 功耗模型
2.1.1 选取单片机
在对AES加密算法的差分功耗攻击过程进行研究时,需要以单片机作为载体,当单片机对AES运行时,应当构建相应的功耗模型。本次研究中选取的单片机为STM32F系列,该单片机采用当前较为流行的低功耗设计,工作频率最高能够达到72MHz。在该单片机中,运行AES加密算法时,为便于试验,制作了一个PCB(印制电路板),它在单片机中的主要作用是對AES加密系统进行模拟。
2.1.2 功耗模型的选择
在进行DPA(差分功耗攻击)时,对功耗模型进行选择是一个非常重要的环节,由于该模型能够将数据映射为理论功耗,所以必须确保所选的模型具有较高的精度,并且应当使理论与实际功耗相匹配,这样能够使攻击达到最佳效果。在对加密进行执行的过程中,不同的硬件设备会产生出不同的数据与功耗,由此会导致二者之间存在一定的差别,故此应当按照硬件对功耗模型进行选择。目前较为常见的功耗模型有以下几种:HW(汉明重)、HD(汉明距离)以及ZERO(零)等[3]。其中HD在芯片中的应用效果较好,而HW在单片机中效果比较显著。为判断HW模型是否适用于差分功耗攻击研究,可以进行实际测量(限于篇幅,过程省略),结果表明,HW模型在功耗攻击中具有良好的适用性,可以作为本次研究的功耗模型使用。
2.2 自触发模式下的DPA
单片机在自触发模式下遭到攻击时,加密程序会随之启动运行,并给出相关信号,这样示波器便会对功耗进行实时采集。本次研究的攻击对象选取的是STM32F系列单片机,加密程序为AES,密钥长度为128bit,通用PC机,数据分析采用的是MATLAB软件。具体的功耗攻击流程如下:
(1)先在PC上对MATLAB进行运行,然后向STM32F发送明文,由示波器对功耗波形进行采集和存储。明文共计发送200条,每条的字节数全部相同,均为16字节;
(2)在STM32F对加密程序进行运行,STM32F对PC发出的明文进行接收,并以密钥完成对明文的加密,随后将密文返回,STM32F重复执行加密输出;
(3)对明文进行加密处理时,在进行SB操作前,STM32F会向示波器发送一个触发信号;
(4)将示波器设定为平均采样模式,并在STM32F上串联电阻,对电压信号进行实时采集,采样率设定为2.5Gs/s;
(5)当采集到数量足够的功耗数据之后,便可通过MATLAB软件对数据进行分析,进而得出密钥,整个试验到此结束[4]。
2.3 参数的影响