一种基于寄存器掩码的面向des算法的抗功耗攻击方法
【专利摘要】本发明公开了一种基于寄存器掩码的面向DES算法的抗功耗攻击方法,在DES算法中添加随机数发生器、左寄存器保护模块和右寄存器保护模块,左寄存器保护模块包括第一左异或单元、第二左异或单元和左寄存器,右寄存器保护模块包括第一右异或单元、第二右异或单元和右寄存器。更新寄存器中的中间结果时,将需要保存的中间结果与随机数异或之后保存到寄存器中,同时保存该随机数;读取寄存器中的中间结果时,在将寄存器中的值读取并与保存的随机数进行异或。该方法保证寄存器中的存储值具有随机性,有效的隐藏了DES密码算法中的汉明距离泄露,可以有效的抵抗基于汉明距离模型的功耗攻击。
【专利说明】
一种基于寄存器掩码的面向DES算法的抗功耗攻击方法
技术领域
[0001] 本发明涉及集成电路硬件实现和信息安全技术领域,特别是涉及一种基于寄存器 掩码的面向DES算法的抗功耗攻击方法。
【背景技术】
[0002] 随着互联网技术与信息科技的快速发展,信息加密技术在很多领域都有非常重要 的应用。密码产品可以采用软件或硬件实现,但由于硬件实现比软件实现具有速度更快,功 耗更低的优势,基于硬件实现的密码设备已成为研究热点。各种基于DES(Data Encryption Standard,数据加密标准)算法的密码芯片得到了广泛的研究和开发。
[0003] 密码芯片也面临着各种各样的安全风险,近年来以差分功耗攻为代表的旁路攻 击,对密码设备的安全性提出了严峻的挑战。功耗攻击是一种非入侵式攻击,攻击者首先大 量获取密码设备在加解密操作时泄露的功耗信息,然后根据明文或者密文建立功耗的数学 模型,得到大量中间值,将中间值和实际功耗进行对比分析,采用统计处理方法计算出相关 系数,从而分析出关键的密钥信息。如何抵抗功耗分析攻击保护算法安全是学术界一个重 要的研究点。
[0004] 在采集到大量实际功耗后,功耗攻击得以成功的关键在于建立准确的功耗数学模 型。汉明距离模型的基本思想是计算数字电路在某个特定时段内电路中0-1转换和1-0转 换的总数,然后利用转换的总数来刻画电路在该时间段内的功耗。
[0005] 对于数字电路,功耗主要来自于电路的状态转换,而并不依赖于数据本身,并且翻 转的器件越多,其功耗越大。因此使用汉明距离模型能够较好的刻画数字电路的能量消耗。 在某一时刻,如果能够计算得到电路翻转前的数据D0和翻转后的数据D1,得到数据翻转的 比特个数,从而算出数据的汉明距离,就可以和真实的功耗值建立联系。建立汉明距离模型 时,需要知道寄存器中数据变化前后的数值。汉明距离模型一般用于对寄存器的功耗进行 描述。
[0006] 攻击者一般选取中间数据存储的寄存器为攻击点。攻击者首先猜测密钥,进一步 猜测相邻两轮的中间值,计算汉明距离作为寄存器变化所产生的功耗模型;然后采集实际 功耗,将功耗模型与实际功耗进行相关性分析得到正确的密钥。
[0007] 对于现有的抗功耗攻击的方法,从实现代价方面看,大多存在硬件资源开销大、性 能开销大、可扩展性弱等缺点,从实现效果方面看,有些仅仅削弱中间结果数据汉明距离与 功耗之间的相关性,而未能完全消除二者直接的相关性,因此无法完全抵御基于汉明距离 的功耗攻击。
【发明内容】
[0008] 发明目的:本发明的目的是提供一种能够解决现有技术存在的不足的基于寄存器 掩码的面向DES算法的抗功耗攻击方法。
[0009] 技术方案:为达到此目的,本发明采用以下技术方案:
[0010]本发明所述的基于寄存器掩码的面向DES算法的抗功耗攻击方法,在DES算法中添 加随机数发生器、左寄存器保护模块和右寄存器保护模块,左寄存器保护模块包括第一左 异或单元、第二左异或单元和左寄存器,右寄存器保护模块包括第一右异或单元、第二右异 或单元和右寄存器;DES算法的初始阶段中,明文经过初始置换操作,初始置换操作输出的Μ 位中间数据的左半部分和右半部分分别作为独立的左半部分f位数据Lo和右半部分f位数 据Ro,左半部分f位数据Lo和右半部分f位数据Ro分别送入第一左异或单元和第一右异或单 元,随机数发生器产生初始阶段随机数,初始阶段随机数分别送入第一左异或单元、第二左 异或单元、第一右异或单元和第二右异或单元,左半部分位数据Lo和初始阶段随机数通过 第一左异或单元进行异或操作,第一左异或单元将左异或操作结果送入左寄存器中,右半 部分¥位数据Ro和初始阶段随机数通过第一右异或单元进行异或操作,第一右异或单元将 右异或操作结果送入右寄存器中,第1轮轮操作开始时,左寄存器将左异或操作结果送入第 二左异或单元,左异或操作结果和初始阶段随机数通过第二左异或单元进行异或操作,得 到被还原的左半部分^位数据L〇,作为第1轮轮操作的第一输入数据,右寄存器将右异或操 作结果送入第二右异或单元,右异或操作结果和初始阶段随机数通过第二右异或单元进行 异或操作,得到被还原的右半部分f位数据Ro,作为第1轮轮操作的第二输入数据;第i轮轮 操作中,i <N,N为DES算法轮操作的总次数,轮操作模块计算得到第i轮的左中间值Li和 右中间值&,轮操作模块将第i轮左中间值U送入第一左异或单元,轮操作模块将第i轮右中 间值h送入第一右异或单元,随机数发生器产生第i+Ι轮随机数,第i+Ι轮随机数分别送入 第一左异或单元、第二左异或单元、第一右异或单元和第二右异或单元,第i轮左中间值U 和第i轮随机数通过第一左异或单元进行异或操作,第一左异或单元将左异或操作结果送 入左寄存器中,第i轮右中间值h和第i轮随机数通过第一右异或单元进行异或操作,第一 右异或单元将右异或操作结果送入右寄存器中,第i+Ι轮轮操作开始时,左寄存器将左异或 操作结果送入第二左异或单元中,左异或操作结果和第i+Ι轮随机数通过第二左异或单元 进行异或操作,得到被还原的第i轮左中间值Li,作为第i+Ι轮轮操作的第一输入数据,右寄 存器将右异或操作结果送入第二右异或单元中,右异或操作结果和第i+Ι轮随机数通过第 二右异或单元进行异或操作,得到被还原的第i轮右中间值h,作为第i+Ι轮轮操作的第二 输入数据;第N轮轮操作得到的第N轮左中间值Ln和第N轮右中间值R N合成Μ位数据并进行逆 初始置换后得到密文。
[0011 ]进一步,所述DES算法的第j轮轮操作中,1 < j <Ν,轮操作模块对第j-1轮中间值 Rh依次进行扩展、异或操作、字节替换和置换操作,然后将置换操作结果与Lh进行异或操 作,得到第j轮右中间值心,并将Rh作为第j轮左中间值Lj。
[0012] 有益效果:与现有技术相比,本发明具有以下有益效果:
[0013] 1)本发明硬件资源开销低;只需要增加少量异或单元和随机数发生器,相比整个 DES密码电路仅占很小比例;
[0014] 2)本发明性能开销低;对于电路关键路径仅增加少量异或单元的延迟,相比整个 DES电路中的扩展、异或操作、字节替换和置换操作等模块的延迟,仅占很小的比例,因此不 会导致工作主频有明显降低;
[0015] 3)本发明具有很强的扩展性和通用性,通过对寄存器进行保护,可以很方便的移 植到其他DES密码算法实现电路中;
[0016] 4)本发明保证寄存器中的存储值具有随机性,有效的隐藏了 DES密码算法中的汉 明距离泄露,消除了中间结果数据汉明距离与功耗之间的相关性,能够有效抵抗基于汉明 距离模型功耗攻击。
【附图说明】
[0017] 图1为传统的DES算法的流程图;
[0018] 图2为采用了本发明方法的DES算法的流程图;
[0019] 图3为对传统DES算法进行功耗攻击第一个6比特所得到的相关性系数矩阵结果;
[0020] 图4为对使用本发明方法后的DES算法进行功耗攻击第一个6比特所得到的相关性 系数矩阵结果。
【具体实施方式】
[0021] 下面结合【具体实施方式】对本发明的技术方案作进一步的介绍。
[0022] 传统DES算法如图1所示,一共由3部分组成,分别是初始置换、16轮相同的轮操作 和逆初始置换变换。每一轮均需要一个轮密钥来完成密钥加操作,一共十六个子密钥,记为 Κη(η = 0,···,16)。子密钥由初始密钥经过初始置换、循环左移和置换选择后得到。DES算法 中间16次循环的轮操作包括扩展、异或操作、字节替换、置换和异或操作五个操作。DES每轮 结束都会产生两个32位中间值数据,可以记为Ln(n = 0,-_,16),Rn(n = 0,…,16)存储在寄 存器L和R中,其中L16和R16合并为一个64位数据,进行逆初始置换操作结果即为密文输出。
[0023] 以一级流水的DES算法硬件实现为例,在攻击者可以获得输入的明文以及硬件的 功耗轨迹的情况下,攻击者可以针对第一轮的输出值进行攻击。通过对密钥进行猜测,攻击 者可以从明文推导出第一轮的输出值,由于寄存器在某一时刻其值从明文的逆初始置换的 输出变为第一轮的输出,因此可以建立汉明距离模型。由于第一轮密钥长度为8个6比特,因 此可以逐个6比特攻破,具体的步骤如下:
[0024] 1.根据Ro可以推导出第一轮扩展操作之后的48比特中间值的值。
[0025] 2.根据扩展操作之后中间值的第N个6比特的值和假设密钥K1的第N个6比特,可以 推导出密钥加之后的数据第N个字节的值。
[0026] 3.通过密钥加之后的第N个6比特的值经过字节变换可以推导出字节替换操作输 出的第N个6比特的值。
[0027] 4.通过第一轮字节替换的输出中第N个6比特的值可以推导出置换操作之后的第N 个4比特的值。
[0028] 5.通过置换操作之后的第N个4比特的值和L0的第N个4比特的值经过异或操作可 以推导出第一轮输出的第N个4比特的值。
[0029] 6.通过第一轮的输出中第N个4比特的值和Ro第N个4比特的值之间可以建立一个4 比特的汉明距离模型。
[0030]针对上述的基于汉明距离模型的攻击,本发明公开了一种基于寄存器掩码的面向 DES算法的抗功耗攻击方法,如图2所示,在DES算法中添加随机数发生器1、左寄存器保护模 块2和右寄存器保护模块3,左寄存器保护模块2包括第一左异或单元21、第二左异或单元23 和左寄存器22,右寄存器保护模块3包括第一右异或单元31、第二右异或单元33和右寄存器 32AES算法的初始阶段中,明文经过初始置换操作,初始置换操作输出的64位中间数据的 左半部分和右半部分分别作为独立的左半部分32位数据L〇和右半部分32位数据R〇,左半部 分32位数据L〇和右半部分32位数据R〇分别送入第一左异或单元21和第一右异或单元31,随 机数发生器1产生初始阶段随机数,初始阶段随机数分别送入第一左异或单元21、第二左异 或单元23、第一右异或单元31和第二右异或单元33,左半部分32位数据L〇和初始阶段随机 数通过第一左异或单元21进行异或操作,第一左异或单元21将左异或操作结果送入左寄存 器22中,右半部分32位数据R〇和初始阶段随机数通过第一右异或单元31进行异或操作,第 一右异或单元31将右异或操作结果送入右寄存器32中,第1轮轮操作开始时,左寄存器22将 左异或操作结果送入第二左异或单元23,左异或操作结果和初始阶段随机数通过第二左异 或单元23进行异或操作,得到被还原的左半部分32位数据L〇,作为第1轮轮操作的第一输入 数据,右寄存器32将右异或操作结果送入第二右异或单元(33),右异或操作结果和初始阶 段随机数通过第二右异或单元(33)进行异或操作,得到被还原的右半部分f位数据R〇,作为 第1轮轮操作的第二输入数据。第i轮轮操作中,l<i<16,轮操作模块计算得到第i轮的左 中间值U和右中间值心,轮操作模块将第i轮左中间值U送入第一左异或单元21,轮操作模 块将第i轮右中间值心送入第一右异或单元31,随机数发生器1产生第i+Ι轮随机数,第i+1 轮随机数分别送入第一左异或单元21、第二左异或单元23、第一右异或单元31和第二右异 或单元33,第i轮左中间值U和第i轮随机数通过第一左异或单元21进行异或操作,第一左 异或单元21将左异或操作结果送入左寄存器22中,第i轮右中间值心和第i轮随机数通过第 一右异或单元31进行异或操作,第一右异或单元31将右异或操作结果送入右寄存器32中, 第i+Ι轮轮操作开始时,左寄存器22将左异或操作结果送入第二左异或单元23中,左异或操 作结果和第i+Ι轮随机数通过第二左异或单元23进行异或操作,得到被还原的第i轮左中间 值1^,作为第i+Ι轮轮操作的第一输入数据,右寄存器32将右异或操作结果送入第二右异或 单元33中,右异或操作结果和第i+Ι轮随机数通过第二右异或单元33进行异或操作,得到被 还原的第i轮右中间值Ri,作为第i+Ι轮轮操作的第二输入数据;第16轮轮操作得到的第16 轮左中间值L 16和第16轮右中间值R16合成64位数据并进行逆初始置换后得到密文。
[0031]采用本发明方法后,整个DES密码算法电路所需的硬件资源增加了 14%,关键路径 延迟增长了 17%,和其他基于掩码的抗汉明距离功耗攻击方法相比,对面积开销和性能开 销影响有限。
[0032]本【具体实施方式】对基于FPGA平台实现的DES算法电路进行了基于汉明距离模型的 功耗攻击。设置初始密钥为' 0102030405060708',其中第一轮的64比特的子密钥为' 000004320a02'。本实验使用示波器采集了 FPGA进行DES加密运算时的功耗轨迹共5000条, 每条功耗轨迹的点数为N,同时获得5000组相对应的明文数据。5000条功耗轨迹可以合成一 个5000行N列的实际功耗轨迹矩阵。同时通过这5000组明文数据可以计算得到5000次基于 明文初始置换和第一轮输出的汉明距离,由于将密钥分为8个6比特逐个攻破,因此针对每 一个字节共有64种假设值,因此可以得到一个64列5000行的假设功耗矩阵。通过向假设功 耗矩阵的每一列和实际的功耗轨迹的每一列进行相关性计算,可以得到一个64行N列的相 关性矩阵,每一行对应一个密钥假设。将该相关性矩阵绘制成64条曲线,如图3所示,为针对 第一个6比特攻击所得到的相关性矩阵图,可以发现正确密钥假设所对应的曲线中出现了 明显的尖峰,即通过该相关性矩阵可以推测出正确的6比特密钥值。经过实验发现,5000条 功耗轨迹可以攻破密钥所有比特,并获得正确的初始密钥。
[0033]接着使用本发明提出的一种针对寄存器保护的方法改进了 DES算法。并将改进后 的DES算法用FPGA实现,并尝试进行功耗攻击。本实验中使用示波器采集FPGA运行改进后的 DES算法实现的功耗轨迹,并将功耗轨迹条数从5000条增加到10万条。然后使用10万条功耗 轨迹针对改进后的DES算法实现进行基于汉明距离的功耗攻击,得到相关性系数矩阵,如图 4所示。
[0034]从图4中可以看出正确密钥对应曲线淹没在了其他63条曲线之中,改进后的DES算 法实现,功耗轨迹条数从5000条增加到10万条后,正确密钥依然没有出现尖峰,并且相关系 数出现了明显的减小。可以发现改进后的DES算法有效的抵抗了基于汉明距离的功耗攻击, 证明了本发明方法的有效性。
【主权项】
1. 一种基于寄存器掩码的面向DES算法的抗功耗攻击方法,其特征在于:在DES算法中 添加随机数发生器(1)、左寄存器保护模块(2)和右寄存器保护模块(3),左寄存器保护模块 (2) 包括第一左异或单元(21)、第二左异或单元(23)和左寄存器(22),右寄存器保护模块 (3) 包括第一右异或单元(31)、第二右异或单元(33)和右寄存器(32) ;DES算法的初始阶段 中,明文经过初始置换操作,初始置换操作输出的M位中间数据的左半部分和右半部分分别 作为独立的左半部分f位数据U和右半部分f位数据R〇,左半部分f位数据Lo和右半部分$ 位数据Ro分别送入第一左异或单元(21)和第一右异或单元(31),随机数发生器(1)产生初 始阶段随机数,初始阶段随机数分别送入第一左异或单元(21)、第二左异或单元(23)、第一 右异或单元(31)和第二右异或单元(33),左半部分f位数据Lo和初始阶段随机数通过第一 左异或单元(21)进行异或操作,第一左异或单元(21)将左异或操作结果送入左寄存器(22) 中,右半部分f位数据Ro和初始阶段随机数通过第一右异或单元(31)进行异或操作,第一右 异或单元(31)将右异或操作结果送入右寄存器(32)中,第1轮轮操作开始时,左寄存器(22) 将左异或操作结果送入第二左异或单元(23),左异或操作结果和初始阶段随机数通过第二 左异或单元(23)进行异或操作,得到被还原的左半部分$位数据L〇,作为第1轮轮操作的第 一输入数据,右寄存器(32)将右异或操作结果送入第二右异或单元(33),右异或操作结果 和初始阶段随机数通过第二右异或单元(33)进行异或操作,得到被还原的右半部分f位数 据R〇,作为第1轮轮操作的第二输入数据;第i轮轮操作中,l<i<N,N为DES算法轮操作的总 次数,轮操作模块计算得到第i轮的左中间值L1和右中间值R1,轮操作模块将第i轮左中间值 L1送入第一左异或单元(21 ),轮操作模块将第i轮右中间值R1送入第一右异或单元(31 ),随 机数发生器(1)产生第i+Ι轮随机数,第i+Ι轮随机数分别送入第一左异或单元(21)、第二左 异或单元(23)、第一右异或单元(31)和第二右异或单元(33),第i轮左中间值Li和第i轮随 机数通过第一左异或单元(21)进行异或操作,第一左异或单元(21)将左异或操作结果送入 左寄存器(22)中,第i轮右中间值R 1和第i轮随机数通过第一右异或单元(31)进行异或操 作,第一右异或单元(31)将右异或操作结果送入右寄存器(32)中,第i + Ι轮轮操作开始时, 左寄存器(22)将左异或操作结果送入第二左异或单元(23)中,左异或操作结果和第i + Ι轮 随机数通过第二左异或单元(23)进行异或操作,得到被还原的第i轮左中间值U,作为第i+ 1轮轮操作的第一输入数据,右寄存器(32)将右异或操作结果送入第二右异或单元(33)中, 右异或操作结果和第i+Ι轮随机数通过第二右异或单元(33)进行异或操作,得到被还原的 第i轮右中间值Ri,作为第i+Ι轮轮操作的第二输入数据;第N轮轮操作得到的第N轮左中间 值Ln和第N轮右中间值Rn合成M位数据并进行逆初始置换后得到密文。2. 根据权利要求1所述的基于寄存器掩码的面向DES算法的抗功耗攻击方法,其特征在 于:所述DES算法的第j轮轮操作中,I < j SN,轮操作模块对第j-Ι轮中间值R^1依次进行扩 展、异或操作、字节替换和置换操作,然后将置换操作结果与Lh进行异或操作,得到第j轮 右中间值Rj,并将Rj-i作为第j轮左中间值L j。
【文档编号】H04L9/06GK105897399SQ201610412868
【公开日】2016年8月24日
【申请日】2016年6月14日
【发明人】曹鹏, 申艾麟, 陆启乐, 陈圣华, 刘波, 杨锦江
【申请人】东南大学