面向aes算法的抗功耗攻击方法及电路实现的利记博彩app
【专利摘要】本发明提出了一种面向AES算法的抗功耗攻击方法及其电路实现,其基本原理在于在AES算法电路中添加控制模块和冗余寄存器。AES算法根据控制模块产生的标志位,选择每一轮中间计算数据存储的寄存器位置,使得每一轮加密操作的中间数据交替存储在不同的寄存器中,有效的隐藏了AES算法中间数据的汉明距离,使得AES算法抵抗基于汉明距离模型的功耗分析攻击。本方法具有灵活性高,面积代价小,抗功耗攻击能力强等特点,为设计安全芯片提供了很好的解决方案。
【专利说明】面向AES算法的抗功耗攻击方法及电路实现
【技术领域】
[0001]本发明涉及集成电路硬件实现和信息安全【技术领域】,尤其是一种面向高级加密算法(Advanced Encryption Standard, AES)硬件电路的抗功耗攻击方法。
【背景技术】
[0002]随着互联网技术与信息科技的快速发展,信息加密技术在很多领域都有非常重要的应用。以密码设备为代表的信息安全产品已经渗入到国家安全和人民生活的方方面面。各种基于AES、RSA等算法的密码芯片得到了广泛地研究和开发。
[0003]随着信息技术的发展,密码芯片也面临着越来越多的安全风险,近几年旁路攻击(Side-Channel Attack, SCA,又叫做“侧信道攻击”)作为一种新的密码攻击方法,对密码算法电路提出了严峻挑战。其中功耗分析攻击(Power Analysis Attack)是较为常见和非常有效的旁路攻击手段。功耗分析攻击的实施者首先大量获取加密算法电路在加密过程中泄露的电流或者电压等功耗信息,然后根据明文(或者密文)以及建立的数学模型(数学模型会对密钥进行假设猜测),得到大量中间数据,攻击者通过对比分析中间数据和功耗信息,采用统计处理分析方法,即可破解得到正确密钥信息。功耗分析攻击不需要影响或者破坏加密设备,是一种非入侵式的攻击手段。同时功耗分析攻击实施较为简单,攻击效率非常高,是密码算法电路安全性的一个重要威胁。
[0004]在采集到大量实际功耗后,功耗攻击得以成功的关键在于建立准确的功耗数学模型。汉明距离模型的基本思想是计算数字电路在某个特定时段内电路中O — I转换和I — O转换的总数,然后利用转换的总数来刻画电路在该时间段内的功耗。
[0005]在信息论中,汉明距离指的是两个位宽等长的数据之间对应位置上数值不同的位的个数。比如两个4比特数据A(IOlO)和B(IOOl),对应第3位和第4位数据不同,那么这两个数据的汉明距离为2,可以表示成:
[0006]HD (A, B) = HD (1010,1001) = 2 ;
[0007]在CMOS数字电路中,汉明距离模型是指计算数字电路在某一个时刻,所有电路发生“1”-> “O”或者“0”-> “I”的总数,根据转换的总数刻画此时电路的能量消耗。在汉明距离模型中,通常认为电路发生“I”_> “O”变化与发生“0”-> “I”变化引起的功耗相等,“0”-> “O”变化与“1”-> “I”变化所引起的功耗相同而且可以忽略。对于数字电路,功耗主要来自于电路的状态转换,而并不依赖于数据本身,并且翻转的器件越多,其功耗越大。因此使用汉明距离模型能够较好的刻画数字电路的能量消耗。在某一时刻,如果能够计算得到电路翻转前的数据Dtl和翻转后的数据D1,得到数据翻转的个数,从而算出数据的汉明距离,就可以和真实的功耗值建立联系。建立汉明距离模型时,需要知道数据变化前后的数值。汉明距离模型一般用于对寄存器的功耗进行描述。
[0008]AES分组密码算法输入明文为128bit,算法包括初始异或操作,中间9轮操作,第10轮的轮末操作;算法每一轮都需要一个128bit子密钥,算法每一轮的中间数据结果保存在128bit的寄存器中。AES密码算法电路在基于相关系数的差分功耗攻击中,中间数据会泄露汉明距离,从而被用来当作假设功耗值用在攻击分析中。
[0009]攻击者一般选取中间数据存储的寄存器为攻击点,攻击者首先猜测密钥,进一步猜测相邻两轮的中间值,计算汉明距离,作为寄存器变化所产生的功耗模型,然后采集实际功耗,将功耗模型与实际功耗(或仿真功耗)进行统计分析,得到正确的密钥。
【发明内容】
[0010]发明目的:目前AES密码算法电路在基于相关系数的差分功耗攻击中,中间数据寄存器会泄露汉明距离,从而被用来当作假设功耗值用在攻击分析中。
[0011]原始AES分组加密算法,一共由3部分构成,包括初始的与密钥异或,中间9次循环的轮操作,第10轮末变换。AES的初始密钥为128比特,每一轮需要一个128比特子密钥ki(i = O,…,10),一共十一个子密钥,子密钥由初始密钥经过扩展得到。
[0012]AES算法9次循环的轮操作包括I) S盒替换,2)行移位,3)列混合,4)密钥异或四个操作,第十轮的操作为I) S盒替换,2)行移位,3)密钥异或,没有列混合操作。其中S盒替换为16个并行S盒操作,每一个S盒的输入输出为8比特。AES每一轮加密结束都有有128比特的中间数据, 记做Dn(η = O, -,10),存储在寄存器中,第十轮的结果即为密文输出。
[0013]实施功耗攻击时,攻击者通常攻击AES密码算法的最后一轮。AES算法每一轮的子密钥为128比特,猜测第一个8比特密钥,一共有28 = 256种可能。根据Sbit猜测密钥和密文的值,以及AES算法第9,10轮的数学结构,可以推测D9中8比特数据,步骤如下。
[0014](I)根据Dltl的数据和猜测密钥Kltl的8比特数据,可以推导出异或之前的数据,即行移位之后的8比特数据。
[0015](2)根据行移位之后的8比特数据以及行移位的规则,进而可以推导出行移位之前的8比特数据,即第一个S盒输出的8比特数据。
[0016](3)根据S盒的输出的8比特数据以及AES的S盒结构,可以进一步倒退得到S盒的8比特数据输入,即D9中的8比特数据。
[0017]由Dltl的值和假设密钥可以推测出D9中前8比特的值,根据中间数据D9和Dltl的8比特值,可以建立一个8比特的汉明距离模型。
[0018]攻击时刻1,第十轮加密结束,针对中间数据寄存器Regtl,汉明距离:
{ND = I!W(D‘例)it)? D1"(8/)"));
[0019]<,,、、
[DK)(Sbit) -1nvSbox(InvShift(Dl() ? Kw(Sbit)))',
[0020]其中InvSbox为逆S盒置换,InvShift为逆移位操作。
[0021]进行汉明距离模型攻击时,猜测8比特密钥,即可猜测得到D9中Sbit的数值,攻击者从而可成功建立汉明距离模型。
[0022]本发明针对上述缺陷,通过改变中间数据存储的寄存器位置,从而使得任一寄存器不再泄露相邻两轮的中间数据的汉明距离,以此提供一种有效的AES算法硬件实现的抗功耗攻击方法。
[0023]技术方案:一种面向AES算法的抗功耗攻击方法,其特征在于,在AES加密算法模块中添加控制模块和冗余寄存器,AES分组密码算法根据所述控制模块产生的标志位,选择每一轮中间计算数据存储的寄存器位置,具体包括如下步骤:[0024]步骤一,AES加密硬件实现经过10轮迭代,其中每一轮的中间数据Dn(n =
O,I,..10)保存在128比特原始寄存器Regtl中,在AES加密模块中增加控制模块及一个128比特冗余寄存器Regl,所述控制模块产生I比特标志位flag,AES加密的每一轮中间结果数据根据flag的值,选择将中间结果存储在原始寄存器Regtl还是所述冗余寄存器Regl中;
[0025]步骤二,初始时,标志位flag的值为0,然后flag根据轮数交替变化,AES算法进行奇数轮加密时flag为1,即第1,3,5,7,9轮加密时flag为I ;AES算法进行偶数轮加密时flag为O,即第2,4,6,8,10轮加密时flag为O ;
[0026]步骤三,AES算法运算时,输入128比特明文,然后通过与初始密钥异或,得到D。,保存在原始寄存器Regtl中;
[0027]步骤四,接着AES进行9轮迭代操作,通过迭代运算,AES将子密钥和数据结合起来,子密钥由初始密钥生成,9次迭代运算具有相同的结构,包括4个操作:S盒替换、行移位、列混合、密钥异或;上一轮128比特中间数据Dlri,经过这4个操作得到这一轮的128比特中间数据Dn,接着中间数据Dn根据flag标志位的值保存到寄存器中,如果flag为0,中间数据Dn保存在上述原始寄存器Regtl中;如果flag为1,中间数据Dn保存在上述冗余寄存器Regl中。
[0028]步骤五,第9次轮迭代的结果D9进行第10轮变换,经过S盒变换、行移位、密钥异或得到数据Dltl保存在 冗余寄存器Regl中。
[0029]一种采用上述抗功耗攻击方法实现的具有抗功耗攻击电路,其特征在于,所述电路在AES加密算法模块中添加控制模块以及冗余寄存器,AES分组密码算法根据所述控制模块产生的标志位,选择每一轮中间计算数据存储的寄存器位置,所述电路具体包括:
[0030]初始异或模块及轮操作模块;轮操作模块具体包括S盒替换模块、行移位模块、列混合模块、异或模块、控制标志模块、寄存器模块;初始异或模块完成AES算法的初始异或操作,轮操作模块完成轮运算,该轮操作模块中S盒替换模块完成轮运算中S盒替换操作,行移位模块完成S盒替换后数据的移位操作,列混合模块模块对行移位模块输出的数据完成列混合操作,得到中间数据;中间数据将根据flag标志位的值保存到寄存器Regtl或Regl中。
[0031]本发明的抗功耗攻击原理说明如下:通过添加冗余中间寄存器和标志位方法,AES相邻两轮的中间数据不再保存在同一寄存器中,攻击者无法成功建立汉明距离模型,避免了相邻两轮数据的汉明距离的泄露。以攻击者选取和Regl作为攻击寄存器为例,在
和Regl最后一次发生数据变化时,建立两个汉明距离模型。
[0032]针对Regtl, Reg0最后一次数据变化,建立汉明距离:
[0033]HD = /IW(Dii^bit) Θ3 DH!(8/)/,));( 1)
[0034]针对Regl,Regl最后一次数据变化,建立汉明距离:
[0035]HD = IIW{Dn (8Λ/Υ)十 D”(Sbit))-(2 )
[0036]式(I)需要知道队的值,式⑵中,需要知道的叫值,才能建立汉明距离。AES算法轮操作中存在列混合操作,数据会被重新扩散打散,猜测D7和D8的数据会涉及到128比特的密钥猜测,因此攻击者无法直接猜测得到D7和D8中某Sbit数据。因此攻击者无法建立可行的汉明距离模型,从而改进的AES算法可以有效的抵抗基于汉明距离模型的功耗攻击。
[0037]进行汉明距离模型攻击时,已知密文,猜测8比特密钥,可以猜测得到DjPDici的数值,但如果不知道最后一轮加密的子密钥,无法猜测得到D7和D8,因为第8轮和第7轮的数据经过:I) S盒替换,2)行移位,3)列混合,4)与密钥异或数据已经完全打散,需要猜测128比特密钥,有2128种可能(2128是很大的数值),因此数据无法预测。可见采用动态改变加密算法中间数据存储位置的方法后,对于Regtl和Regl,攻击者无法成功建立汉明距离模型,从而可以有效的抵抗功耗攻击。
[0038]有益效果:本发明提出的抗攻耗攻击方法只需要添加少量冗余寄存器和标志位,使AES算法运算中相邻两轮的中间数据不再保存在同一寄存器中,避免了相邻两轮数据的汉明距离的泄露,即可切断实际功耗和数据之间的相关性,从而大大提高了 AES密码电路的抗功耗攻击能力。此外,该方法的电路实现简便易行,面积代价也很小,很适合密码算法的集成电路实现。最后,此方法具有很强的扩展性,可以用于抵抗算法中其他潜在的攻击点,也可以很方便的移植到其他密码算法中。
【专利附图】
【附图说明】
[0039]图1为原始的AES算法结构图;
[0040]图2为AES算法基于汉明距离模型的功耗攻击原理;
[0041]图3 —种面向AES算法的抗功耗攻击方法原理图; [0042]图4 一种面向AES算法的抗功耗攻击方法及其电路实现图;
[0043]图5为原始AES算法功耗攻击结果图;
[0044]图6本发明改进AES算法的功耗攻击结果图。
【具体实施方式】
[0045]下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0046]如图1所示,原始AES分组加密算法,一共由3部分构成,包括初始的与密钥异或,中间9次循环的轮操作,第10轮末变换。AES的初始密钥为128比特,每一轮需要一个128比特子密钥ki(i = O,…,10),一共十一个子密钥,子密钥由初始密钥经过扩展得到。
[0047]AES算法中间9次循环的轮操作包括I) S盒替换,2)行移位,3)列混合,4)密钥异或四个操作,第十轮的操作为I) S盒替换,2)行移位,3)密钥异或,没有列混合操作。AES每一轮加密结束都有有128比特的中间数据,记做Dn(η = O,…,10),存储在寄存器中RegtlJ十轮的结果Dltl即为密文输出。
[0048]如图2所示,攻击者通过猜测最后一轮6比特密钥可以得到中间数据的某8比特的值,从而建立汉明距离模型。以攻击者选取最后一轮中间数据作为攻击点为例,攻击者可以建立汉明距离模型。AES算法每一轮的子密钥为128比特,猜测第一个8比特密钥,一共有28 = 256种可能。根据Sbit猜测密钥和密文的值,以及AES算法第9,10轮的数学结构,可以推测D9中8比特数据,步骤如下。
[0049](I)根据Dltl的数据和猜测密钥Kltl的8比特数据,可以推导出异或之前的数据,即行移位之后的8比特数据。
[0050](2)根据行移位之后的8比特数据以及行移位的规则,进而可以推导出行移位之前的8比特数据,即第一个S盒输出的8比特数据。
[0051](3)根据S盒的输出的8比特数据以及AES的S盒结构,可以进一步倒退得到S盒的8比特数据输入,即D9中的8比特数据。
[0052]由Dltl的值和假设密钥可以推测出D9中前8比特的值,根据中间数据D9和Dltl的8比特值,可以建立一个8比特的汉明距离模型。
[0053]攻击时刻1,第十轮加密结束,针对中间数据寄存器Regtl,汉明距离:
【权利要求】
1.一种面向AES算法的抗功耗攻击方法,其特征在于,在AES加密算法模块中添加控制模块和冗余寄存器,AES分组密码算法根据所述控制模块产生的标志位,选择每一轮中间计算数据存储的寄存器位置,具体包括如下步骤: 步骤一,AES加密硬件实现经过10轮迭代,其中每一轮的中间数据Dn(n=0,I,..10)保存在128比特原始寄存器(Regtl)中,在AES加密模块中增加控制模块及一个128比特冗余寄存器(Regl),所述控制模块产生I比特标志位flag,AES加密的每一轮中间结果数据根据flag的值,选择将中间结果存储在原始寄存器(Regtl)还是所述冗余寄存器(Regl)中; 步骤二,初始时,标志位flag的值为0,然后flag根据轮数交替变化,AES算法进行奇数轮加密时flag为I,即第1,3,5,7,9轮加密时flag为I ;AES算法进行偶数轮加密时flag为O,即第2,4,6,8,10轮加密时flag为O ; 步骤三,AES算法运算时,输入128比特明文,然后通过与初始密钥异或,得到Dtl,保存在原始寄存器(Regtl)中; 步骤四,接着AES进行9轮迭代操作,通过迭代运算,AES将子密钥和数据结合起来,子密钥由初始密钥生成,9次迭代运算具有相同的结构,包括4个操作:S盒替换、行移位、列混合、密钥异或;上一轮128比特中间数据Dlri,经过这4个操作得到这一轮的128比特中间数据Dn,接着中间数据Dn根据flag标志位的值保存到寄存器中,如果flag为0,中间数据Dn保存在上述原始寄存器(Regtl)中;如果flag为1,中间数据Dn保存在上述冗余寄存器(Regl)中; 步骤五,第9次轮迭代的结果D9进行第10轮变换,经过S盒变换、行移位、密钥异或得到数据Dltl保存在冗余寄存器(Regl)中。
2.一种采用权利要求1所述抗功耗攻击方法实现的具有抗功耗攻击电路,其特征在于,所述电路在AES加密算法模块中添加控制模块以及冗余寄存器,AES分组密码算法根据所述控制模块产生的标志位,选择每一轮中间计算数据存储的寄存器位置,所述电路具体包括: 初始异或模块及轮操作模块;轮操作模块具体包括S盒替换模块、行移位模块、列混合模块、异或模块、控制标志模块、寄存器模块;初始异或模块完成AES算法的初始异或操作,轮操作模块完成轮运算,该轮操作模块中S盒替换模块完成轮运算中S盒替换操作,行移位模块完成S盒替换后数据的移位操作,列混合模块模块对行移位模块输出的数据完成列混合操作,得到中间数据;中间数据将根据flag标志位的值保存到寄存器中(Regtl或Regl中)中。
【文档编号】H04L9/06GK103916236SQ201410172447
【公开日】2014年7月9日 申请日期:2014年4月25日 优先权日:2014年4月25日
【发明者】单伟伟, 孙华芳, 伏星源 申请人:东南大学