法律状态公告日
法律状态信息
法律状态
2020-08-21
授权
授权
2018-01-09
实质审查的生效 IPC(主分类):H04L9/06 申请日:20170921
实质审查的生效
2017-12-15
公开
公开
技术领域
本发明涉及集成电路硬件实现和信息安全技术领域,尤其是一种基于乱序执行的面向AES算法的抗功耗攻击方法。
背景技术
随着互联网技术与信息科技的快速发展,信息加密技术在很多领域都有非常重要的应用。密码产品可以采用软件或硬件实现,但由于硬件实现比软件实现具有速度更快,功耗更低的优势,基于硬件实现的密码设备已成为研究热点。各种基于DES(Data EncryptionStandard,数据加密标准)、AES(Advanced Encryption Standard,高级加密标准)等算法的密码芯片得到了广泛的研究和开发。
密码芯片也面临着各种各样的安全风险,近年来以差分功耗攻为代表的旁路攻击,对密码设备的安全性提出了严峻的挑战。功耗攻击是一种非入侵式攻击,攻击者首先大量获取密码设备在加解密操作时泄露的功耗信息,然后根据明文或者密文建立功耗的数学模型,得到大量中间值,将中间值和实际功耗进行对比分析,采用统计处理方法计算出相关系数,从而分析出关键的密钥信息。如何抵抗功耗分析攻击,进而保护算法安全是学术界一个重要的研究点。
在采集到大量实际功耗后,功耗攻击得以成功的关键在于建立准确的功耗数学模型。汉明距离模型一般用于对寄存器的功耗进行描述。汉明距离模型的基本思想是计算数字电路在某个特定时段内电路中0→1转换和1→0转换的总数,然后利用转换的总数来刻画电路在该时间段内的功耗。
对于数字电路,功耗主要来自于电路的状态转换,而并不依赖于数据本身,并且翻转的器件越多,其功耗越大。因此使用汉明距离模型能够较好的刻画数字电路的能量消耗。在某一时刻,如果能够计算得到电路翻转前的数据D0和翻转后的数据D1,得到数据翻转的比特个数,从而算出数据的汉明距离,就可以和真实的功耗值建立联系。建立汉明距离模型时,需要知道寄存器中数据变化前后的数值。
攻击者一般选取中间数据存储的寄存器为攻击点。攻击者首先猜测密钥,进一步猜测相邻两轮的中间值,计算汉明距离作为寄存器变化所产生的功耗模型;然后采集实际功耗,将功耗模型与实际功耗进行相关性分析得到正确的密钥。
而目前AES密码算法电路,在基于相关性系数的差分功耗攻击中,会有某些中间值泄漏功耗信息,从而使得密码算法的电路易攻破。
发明内容
发明目的:为解决上述技术问题,本发明提出了一种基于乱序执行的面向AES算法的抗功耗攻击方法,可以通过防止攻击者建立明文密文和其功耗曲线的对应关系,有效抵御功耗攻击。
技术方案:为实现上述技术效果,本发明提出以下技术方案:
一种基于乱序执行的面向AES算法的抗功耗攻击方法,包括步骤:
(1)将待加密的明文数据输入部分随机输入先进先出队列,部分随机输入先进先出队列对明文数据的处理包括步骤(1-1)至(1-3):
(1-1)将明文数据以组为单位进行存储,每组数据中包含N个M比特的子明文数据;
(1-2)对每一组数据中的N个子明文数据进行动态地址加扰,为每一组中的N个子明文数据分别分配一个唯一的序列号;
(1-3)按照先进先出的规则,以组为单位输出明文数据;输出任意一组数据时,该组数据中的N个子明文数据按照分配到的序列号以升序或降序的顺序输出;
(2)对随机输入先进先出队列输出的明文数据进行AES加密,得到密文数据;每个子明文数据对应的子密文数据中包含该子明文数据在其原始分组中的序列号;
(3)将密文数据输入部分随机输出先进先出队列,部分随机输入先进先出队列对密文数据的处理包括步骤(3-1)至(3-2):
(3-1)将密文数据以组为单位进行存储,每组数据中包含N个M比特的子密文数据;在存储任意一组密文数据时,对该组密文数据中的N个子密文数据进行动态地址恢复,使该组密文数据中的N个子密文数据的排列顺序与该组密文数据所对应的明文数据中的N个子明文数据在部分随机输入先进先出队列中的存储顺序一致;
(3-2)按照先进先出的规则,以组为单位输出密文数据。
进一步的,所述对任意一组明文数据中的N个子明文数据进行动态地址加扰的方法为:
通过随机数发生器为各个子明文数据分别生成一个随机的正整数,共计N个正整数,且这N个正整数各不相同;这N个正整数即为所述一组明文数据中N个子明文数据的序列号。
有益效果:与现有技术相比,本发明具有以下优势:
本方法通过对输入FIFO输出到加密模块的数据分组,对1组数据内部的输出顺序进行随机化,从而使得攻击者不知道加密功耗轨迹对应哪一组明文密文的,阻碍了明文密文和功耗轨迹之间的对应关系,可以有效抵御抗功耗轨迹。
附图说明
图1为本发明所述基于乱序执行的面向AES算法的抗功耗攻击方法的系统框图。
具体实施方式
下面结合附图对本发明作更进一步的说明。
目前AES密码算法电路,在基于相关性系数的差分功耗攻击中,会有某些中间值泄漏功耗信息,从而使得密码算法的电路易攻破。针对此问题,本发明提出了一种基于乱序执行的面向AES算法的抗功耗攻击方法,可以通过防止攻击者建立明文密文和其功耗曲线的对应关系,有效抵御功耗攻击。
本发明的系统架构图如图1所示,包括:密码运算模块、随机数发生器、动态地址加扰模块、动态地址恢复模块、基于部分乱序存取的部分随机输入先进先出队列和部分随机输出先进先出队列。
密码运算模块内部保存有相关编程程序,用于实现AES加密运算;随机数发生器用于生成随机数;部分随机输入先进先出队列和部分随机输出先进先出队列在硬件上分别由一个数据存储器实现。
上述系统在执行过程中,首先将明文分组输入到基于部分乱序存取的部分随机输入先进先出队列,每组数据中包含N个M比特的子明文数据;部分随机输入先进先出队列在输出一组数据之前,要进行动态地址加扰,使该组数据中的N个子明文数据在输出时呈部分随机化。动态地址加扰的具体步骤为:
通过随机数发生器为各个子明文数据分别生成一个随机的正整数,共计N个正整数,且这N个正整数各不相同;动态地址加扰模块以随机数发生器产生的随机数为输入,依次随机不重复的输出大于0小于N的正整数,并分配给该组数据中的N个子明文数据,作为该组明文数据中各个子明文数据的序列号。
通过动态地址加扰,为输入先进先出队列中的每组数据的输出顺序提供随机化。
完成动态地址加扰后,部分随机输入先进先出队列按照先进先出的规则,以组为单位输出明文数据;输出任意一组数据时,该组数据中的N个子明文数据按照分配到的序列号以升序或降序的顺序输出,使同一组中的数据输出顺序随机化。
密码运算模块从部分随机输入先进先出队列中读取输出的数据,进行AES加密运算,运算完成后将加密后的数据输出到基于部分乱序存取的部分随机输出先进先出队列中。
部分随机输出先进先出队列同样对输入的数据以组为单位进行先进先出。每组数据包含N个M比特的数据。每组数据按照地址增序或者降序存放。特别的,其中每组数据内部N个M比特的数据的地址序列号通过动态地址恢复模块进行加扰,动态地址恢复模块以动态地址加扰模块的输出值为输入,将数据依次缓存。当AES加密模块输出密文时,动态地址恢复模块依次将之前缓存的数据输出到AES加密模块的写存储器模块,保证N个M比特的数据在存入队列后的顺序与该数据对应的输入数据在输入先进先出队列中的存放顺序一致。
在针对加密算法的攻击中,攻击者首先需要确定攻击点,然后建立输入明文、输出密文和加密功耗轨迹之间的对应关系。从而通过大量的数据相关性分析,选出相关性系数最高的秘钥假设。本发明通过对输入FIFO输出到加密模块的数据分组,对1组数据内部的输出顺序进行随机化,从而使得攻击者不知道加密功耗轨迹对应哪一组明文密文的,阻碍了明文密文和功耗轨迹之间的对应关系,可以有效抵御抗功耗轨迹,解决目前AES密码算法电路,在基于相关性系数的差分功耗攻击中,会有某些中间值泄漏功耗信息,从而使得密码算法的电路易攻破的技术问题。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
机译: 基于一站式网络的随机故障抗攻击方法
机译: 基于模块化指数密码学的电子组件抗物理攻击方法
机译: 一种基于INS网络的随机感染反故障攻击方法