一种基于寄存器掩码的面向AES算法的抗功耗攻击方法与流程

文档序号:12278082阅读:532来源:国知局
一种基于寄存器掩码的面向AES算法的抗功耗攻击方法与流程

本发明涉及集成电路硬件实现和信息安全技术领域,特别是涉及一种基于寄存器掩码的面向AES算法的抗功耗攻击方法。



背景技术:

随着互联网技术与信息科技的快速发展,信息加密技术在很多领域都有非常重要的应用。密码产品可以采用软件或硬件实现,但由于硬件实现比软件实现具有速度更快,功耗更低的优势,基于硬件实现的密码设备已成为研究热点。各种基于AES(Advanced Encryption Standard,高级加密标准)算法的密码芯片得到了广泛的研究和开发。

密码芯片也面临着各种各样的安全风险,近年来以差分功耗攻为代表的旁路攻击,对密码设备的安全性提出了严峻的挑战。功耗攻击是一种非入侵式攻击,攻击者首先大量获取密码设备在加解密操作时泄露的功耗信息,然后根据明文或者密文建立功耗的数学模型,得到大量中间值,将中间值和实际功耗进行对比分析,采用统计处理方法计算出相关系数,从而分析出关键的密钥信息。如何抵抗功耗分析攻击保护算法安全是学术界一个重要的研究点。

在采集到大量实际功耗后,功耗攻击得以成功的关键在于建立准确的功耗数学模型。汉明距离模型的基本思想是计算数字电路在某个特定时段内电路中0→1转换和1→0转换的总数,然后利用转换的总数来刻画电路在该时间段内的功耗。对于数字电路,功耗主要来自于电路的状态转换,而并不依赖于数据本身,并且翻转的器件越多,其功耗越大。因此使用汉明距离模型能够较好的刻画数字电路的能量消耗。在某一时刻,如果能够计算得到电路翻转前的数据D0和翻转后的数据D1,得到数据翻转的比特个数,从而算出数据的汉明距离,就可以和真实的功耗值建立联系。建立汉明距离模型时,需要知道寄存器中数据变化前后的数值。汉明距离模型一般用于对寄存器的功耗进行描述。

攻击者一般选取中间数据存储的寄存器为攻击点。攻击者首先猜测密钥,进一步猜测相邻两轮的中间值,计算汉明距离作为寄存器变化所产生的功耗模型;然后采集实际功耗,将功耗模型与实际功耗进行相关性分析得到正确的密钥。

对于现有的抗功耗攻击的方法,从实现代价方面看,大多存在硬件资源开销大、性能开销大、可扩展性弱等缺点,从实现效果方面看,有些仅仅削弱中间结果数据汉明距离与功耗之间的相关性,而未能完全消除二者直接的相关性,因此无法完全抵御基于汉明距离的功耗攻击。



技术实现要素:

发明目的:本发明的目的是提供一种能够解决现有技术存在的不足的基于寄存器掩码的面向AES算法的抗功耗攻击方法。

技术方案:为达到此目的,本发明采用以下技术方案:

本发明所述的基于寄存器掩码的面向AES算法的抗功耗攻击方法,在AES算法中添加随机数发生器和寄存器保护模块,寄存器保护模块包括第一异或单元、第二异或单元和寄存器;AES算法初始阶段的密钥加操作中,明文和初始密钥进行密钥加操作,随机数发生器产生初始阶段随机数,初始阶段随机数和密钥加操作结果通过第一异或单元进行异或操作,得到第一阶段异或结果并存入寄存器,在第1轮轮操作开始时,再将初始阶段随机数和初始阶段异或结果通过第二异或单元进行异或操作,得到被还原的密钥加操作结果,作为第1轮轮操作的输入数据;AES算法的第i轮中,轮操作模块计算得到第i轮中间值,随机数发生器产生第i轮随机数,第i轮中间值和第i轮随机数通过第一异或单元进行异或操作,得到第i轮异或结果并存入寄存器;如果i≠N,则在第i+1轮开始时,第i轮异或结果和第i轮随机数通过第二异或单元进行异或操作,得到被还原的第i轮中间值,作为第i+1轮的输入数据;如果i=N,则第i轮异或结果和第i轮随机数通过第二异或单元进行异或操作,得到密文;其中,N为AES算法的轮操作的总次数。

进一步,所述AES算法的第i轮中,1<i<N,轮操作模块对第i-1轮中间值依次进行字节替换、行移位、列混合和密钥加这四种操作,得到第i轮中间值。

进一步,所述AES算法的第N轮中,轮操作模块对第N-1轮中间值依次进行字节替换、行移位和密钥加这三种操作,得到密文。

有益效果:与现有技术相比,本发明具有以下有益效果:

1)本发明硬件资源开销低。只需要增加少量异或运算单元和随机数发生器,相比整个AES密码电路仅占很小比例;

2)本发明性能开销低。对于电路关键路径仅增加少量异或运算单元的延迟,相比整个AES电路中的字节替换、行移位、列混合和密钥加等模块的延迟,仅占很小的比例,因此不会导致工作主频有明显降低;

3)本发明具有很强的扩展性和通用性,通过对寄存器进行保护,可以很方便的移植到其他AES密码算法实现电路中;

4)本发明保证寄存器中的存储值具有随机性,有效的隐藏了AES密码算法中的汉明距离泄露,消除了中间结果数据汉明距离与功耗之间的相关性,能够有效抵抗基于汉明距离模型功耗攻击。

附图说明

图1为传统的AES算法的流程图;

图2为采用了本发明方法的AES算法的流程图;

图3为对传统AES算法进行功耗攻击第一个字节所得到的相关性系数矩阵结果;

图4为对使用本发明方法后的AES算法进行功耗攻击第一个字节所得到的相关性系数矩阵结果。

具体实施方式

下面结合具体实施方式对本发明的技术方案作进一步的介绍。

传统的AES算法分组加密算法一共由3部分组成,分别是初始密钥加、9轮相同的轮操作和第10轮末变换。每一轮均需要一个轮密钥来完成密钥加操作,一共十一个子密钥,记为Kn(n=0,…,10)。子密钥由初始密钥经过扩展得到。AES算法中间9次循环的轮操作包括字节替换、行移位、列混合和密钥加四个操作。其中第十轮末变换包括字节替换、行移位和密钥加三个操作。AES每轮结束都会产生一个中间值数据,可以记为Dn(n=0,…,10),存储在寄存器中,其中D10即为密文输出。如图1所示,以一级流水的AES-128算法硬件实现为例,在攻击者可以获得输出的密文以及硬件的功耗轨迹的情况下,攻击者可以针对第九轮的输出值进行攻击。通过对密钥进行猜测,攻击者可以从密文推导出第九轮的输出值,由于寄存器在某一时刻其值从第九轮的输出变为第十轮的输出(即为密文),因此可以建立汉明距离模型。由于密钥长度为16字节,因此可以逐个字节攻破,具体的步骤如下:

1.根据D10中的第N个字节数据和假设的密钥K10的第N个字节数据可以推导出密钥加操作之前128比特中间值的第N个字节的值。

2.根据密钥加操作之前第N个字节的值,可以推导出行移位运算之前的数据第M个字节的值。N和M之前的映射关系可由行移位的运算规则得出。

3.通过行移位运算之前第M个字节的值经过逆字节变换可以推导出第九轮的输出第M个字节的值。

4.通过第九轮的输出中第M个字节的值和密文第M个字节的值之间可以建立一个8比特的汉明距离模型。

针对上述的基于汉明距离模型的攻击,本专利发明了一种基于寄存器掩码的面向AES算法的抗功耗攻击方法,如图2所示,在AES算法中添加随机数发生器1和寄存器保护模块2,寄存器保护模块2包括第一异或单元21、第二异或单元23和寄存器22。

AES算法包括三个阶段,第一阶段是初始密钥加操作,第二阶段包括9轮相同的轮操作,第三阶段是末变换。下面分别介绍本发明对这三个阶段的改进:

AES算法的第一阶段中,明文和初始密钥进行密钥加操作,随机数发生器1产生第一阶段随机数,第一阶段随机数和密钥加操作结果通过第一异或单元21进行异或操作,得到第一阶段异或结果并存入寄存器22,在第二阶段的第1轮轮操作开始时,再将第一阶段随机数和第一阶段异或结果通过第二异或单元23进行异或操作,得到被还原的密钥加操作结果,作为第二阶段的第1轮轮操作的输入数据。

AES算法的第i轮中,1≤i≤9,第二阶段的轮操作模块计算得到第i轮中间值,随机数发生器1产生第i轮随机数,第i轮中间值和第i轮随机数通过第一异或单元21进行异或操作,得到第i轮异或结果并存入寄存器22,在第i+1轮轮操作开始时,再将第i轮随机数和第i轮异或结果通过第二异或单元23进行异或操作,得到被还原的第i轮中间值,作为第i+1轮轮操作的输入数据。

第10轮轮操作即为末变换,末变换中,末变换的轮操作模块计算得到密文,随机数发生器1产生末变换阶段的随机数,密文和末变换阶段的随机数通过第一异或单元21进行异或操作,得到末变换阶段异或结果并存入寄存器22,再将末变换阶段的随机数和密文通过第二异或单元23进行异或操作,得到密文。

采用本发明方法后,整个AES密码算法电路所需的硬件资源增加了12%,关键路径延迟增长了15%,和其他基于掩码的抗汉明距离功耗攻击方法相比,对面积开销和性能开销影响有限。

本具体实施方式对基于FPGA平台实现的AES算法电路进行了基于汉明距离模型的功耗攻击。设置初始密钥为’0102030405060708090a0b0c0d0e0f’,其中最后一轮的128比特的子密钥为’13111d7fe3944a17f37a78b4d2b30c5’。本实验使用示波器采集了FPGA进行AES加密运算时的功耗轨迹共2000条,每条功耗轨迹的点数为N,同时获得2000组相对应的密文数据。2000条功耗轨迹可以合成一个2000行N列的实际功耗轨迹矩阵。同时通过这2000组密文数据可以计算得到2000次基于第九轮输出和第十轮输出的汉明距离,由于将密文分为16字节逐个攻破,因此针对每一个字节共有256种假设值,因此可以得到一个256列2000行的假设功耗矩阵。通过向假设功耗矩阵的每一列和实际的功耗轨迹的每一列进行相关性计算,可以得到一个256行N列的相关性矩阵,每一行对应一个密钥假设。将该相关性矩阵绘制成256条曲线,如图3所示,为针对第一个字节攻击所得到的相关性矩阵图,可以发现正确密钥假设所对应的曲线中出现了明显的尖峰,即通过该相关性矩阵可以推测出正确的密钥字节。经过实验发现,2000条功耗轨迹可以攻破所有字节,并获得正确的初始密钥。

接着使用本专利提出的一种针对寄存器保护的方法改进了AES算法。并将改进后的AES算法用FPGA实现,并尝试进行功耗攻击。本实验中使用示波器采集FPGA运行改进后的AES算法实现的功耗轨迹,并将功耗轨迹条数从2000条增加到10万条。然后使用10万条功耗轨迹针对改进后的AES算法实现进行基于汉明距离的功耗攻击,得到相关性系数矩阵,如图4所示。

从图4中可以看出正确密钥对应曲线淹没在了其他255条曲线之中,改进后的AES算法实现,功耗轨迹条数从2000条增加到10万条后,正确密钥依然没有出现尖峰。可以发现改进后的AES算法有效的抵抗了基于汉明距离的功耗攻击,证明了本专利提出方法的有效性。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1