一种抗功耗攻击的SM4算法的硬件实现系统的制作方法

文档序号:11236570阅读:534来源:国知局
一种抗功耗攻击的SM4算法的硬件实现系统的制造方法与工艺

本发明涉及信息安全技术领域,尤其涉及一种抗功耗攻击的sm4算法的硬件实现系统。



背景技术:

sm4密码算法是国家商用密码管理办公室公布的分组密码算法,是目前应用最广泛的中国自主设计的分组密码算法,该算法目前在智能卡和usbkey中逐步得到应用,并且考虑到运算效率的问题,基本通过硬件实现。在智能卡、usbkey等应用中,加密算法不仅能保证协议和算法的安全性,更重要的是保证实际使用中加密电路运行的功耗或者电磁信息不会被旁路分析的方法利用,造成安全威胁。

数字电路是由若干个相同的逻辑门组成,每个逻辑门的功耗包括静态功耗和动态功耗两部分。逻辑门的静态功耗相对较小,动态功耗占逻辑门总功耗的主要部分。动态功耗主要由逻辑门信号的翻转产生,当信号由“0”变化到“1”,或者由“1”变化到“0”,即为翻转,逻辑门就会产生功耗。但维持“0”或者“1”不变,即没有翻转,不产生功耗。因此,电路运行时产生的功耗与内部运行数据存在相关性,功耗攻击就是利用了这个原理。

功耗攻击的基本原理是,密码设备的瞬态功耗与其运算的中间数据相关,而中间数据又与密钥相关。因此,通过分析密码设备的瞬态功耗,可以获得密钥信息,从而达到完全破解密钥的目的。这样,功耗攻击可以绕过破解密码算法的数学难题,不需要破坏智能卡,是一种经济有效的攻击方式。

所以,在sm4算法的硬件实现方式中,急需找到一种抗功耗攻击的硬件实现方式,防御对sm4实施功耗攻击。



技术实现要素:

本发明的目的在于提供一种抗功耗攻击的sm4算法的硬件实现系统,从而解决现有技术中存在的前述问题。

为了实现上述目的,本发明采用的技术方案如下:

一种抗功耗攻击的sm4算法的硬件实现系统,包括sm4算法子系统、伪轮运算对模块和随机数控制器,所述sm4算法子系统包括m轮运算,在第一轮运算之前、第m轮运算之后、以及任意相邻两轮运算之间均设置有控制位点,所述随机数控制器控制所述伪轮运算对模块随机插入所述控制位点,每个所述伪轮运算对模块包括n组伪轮运算对;所述伪轮运算对包括加密伪轮运算和解密伪轮运算,加密伪轮运算是一个加密过程,解密伪轮运算是对加密伪轮运算所加密数据进行解密的过程,所述伪轮运算对使用的密钥与所述sm4算法子系统的密钥和明文无关;m为自然数。

优选地,所述伪轮运算对使用的密钥通过所述随机数控制器随机输入。

优选地,所述伪轮运算对使用的密钥由设计者设计。

优选地,插入第一轮运算之前和/或第m轮运算之后的所述伪轮运算对模块包括n组伪轮运算对,n=1-8。

优选地,插入任意相邻两轮运算之间的所述伪轮运算对模块包括n组伪轮运算对,n=1-2。

本发明的有益效果是:本发明实施例提供的抗功耗攻击的sm4算法的硬件实现系统,通过在sm4算法硬件电路中加入伪轮运算对模块以及随机数控制器,实现在sm4加密过程中,随机地在每轮运算之间插入伪轮运算对,经过伪轮运算对的数据,数值不会发生变化,却扰乱了电路的功耗特征以及电路执行的时序特征,破坏了数据与功耗之间的关联,有效地防御了功耗攻击,可应用于智能卡和usbkey的安全芯片中,也可以适用于各种需要防御对sm4进行功耗攻击的安全芯片中。

附图说明

图1是sm4算法插入伪轮运算对系统的总体结构示意图;

图2伪轮运算对的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

现有技术中的sm4硬件电路设计,对防御功耗攻击的效果并不显著。

本发明根据功耗攻击的特点,如果功耗与数据之间的相关性被破坏,该功耗攻击的方法便不能起作用。本发明中,利用随机插入伪轮运算对的方法,在明文和密钥的sm4硬件电路中插入与数据运行无关的伪轮运算对,并通过随机数控制器来控制插入伪轮运算对的数量。从而实现了电路运行功耗与数据之间的相互独立。

如图1-2所示,本发明实施例提供了一种抗功耗攻击的sm4算法的硬件实现系统,包括sm4算法子系统、伪轮运算对模块和随机数控制器,所述sm4算法子系统包括m轮运算,在第一轮运算之前、第m轮运算之后、以及任意相邻两轮运算之间均设置有控制位点,所述随机数控制器控制所述伪轮运算对模块随机插入所述控制位点,每个所述伪轮运算对模块包括n组伪轮运算对;所述伪轮运算对包括加密伪轮运算和解密伪轮运算,加密伪轮运算是一个加密过程,解密伪轮运算是对加密伪轮运算所加密数据进行解密的过程,所述伪轮运算对使用的密钥与所述sm4算法子系统的密钥和明文无关;m为自然数。

在本发明的一个优选实施例中,所述伪轮运算对使用的密钥可以通过所述随机数控制器随机输入。

所述伪轮运算对使用的密钥也可以由设计者设计。

在本发明的一个实施例中,插入第一轮运算之前和/或第m轮运算之后的所述伪轮运算对模块包括n组伪轮运算对,n=1-8。

在本发明的另一个实施例中,插入任意相邻两轮运算之间的所述伪轮运算对模块包括n组伪轮运算对,n=1-2。

如图1所示,在sm4算法硬件电路中加入了伪轮运算对模块以及随机数控制器,实现在sm4加密过程中,随机地在每轮运算之间插入伪轮运算对。

如图2所示,伪轮运算对包括两部分:加密伪轮运算和解密伪轮运算。加密伪轮运算是一个加密的过程;解密伪轮运算是对加密伪轮运算所加密数据进行解密的过程。伪轮运算对内有固定的密钥,且加密轮运算和解密轮运算的轮密钥相同,轮顺序相反,该密钥可以由设计者定义,也可通过随机数控制器输入随机密钥,与sm4硬件电路的密钥和数据均无关。

这样经过伪轮运算对的数据,数值不会发生变化,执行过程与普通的sm4轮运算基本一致。因此可以产生类似的功耗特征,从而破坏了功耗与数据之间的关联,起到防御功耗攻击的效果。伪轮运算对可以多次执行,无论执行次数如何,均不会影响最终密文的输出。

为了确定插入伪轮运算对的数量,在电路中加入了随机数控制器。如图1所示,算法每轮运算之间为一个插入点,再加上输入输出端口位置,所以如果sm4算法子系统包括32轮运算,则共有33个插入点。在实际运行过程中,随机数控制器输出随机密钥和随机控制位,随机控制位控制在算法的第一轮之前和最后一轮之后插入1~8轮随机伪轮运算对,在算法的1~31轮间,每轮插入1~2轮随机伪轮运算对,使得攻击者无法对齐真正第一轮,同时也保证性能不会大幅度下降,随机密钥与输入的明文和密钥均无关,保证每个伪轮运算对运算的随机性。

所以,本发明利用上述随机插入伪轮运算对的方法,扰乱电路的功耗特征以及电路执行的时序特征,破坏数据与功耗之间的关联,可以有效地防御功耗攻击。可应用于智能卡和usbkey的安全芯片中,也可以适用于各种需要防御对sm4进行功耗攻击的安全芯片中。

因此,使用本发明所公开的方案,不管输入什么样的明文和密钥,功耗和数据都无规律可循,彻底破坏了电路运行功耗与内部数据的相关性。攻击者无法利用功耗信息来破译密钥,实现了sm4算法加密运算过程的安全。

通过采用本发明公开的上述技术方案,得到了如下有益的效果:本发明实施例提供的抗功耗攻击的sm4算法的硬件实现系统,通过在sm4算法硬件电路中加入伪轮运算对模块以及随机数控制器,实现在sm4加密过程中,随机地在每轮运算之间插入伪轮运算对,经过伪轮运算对的数据,数值不会发生变化,却扰乱了电路的功耗特征以及电路执行的时序特征,破坏了数据与功耗之间的关联,有效地防御了功耗攻击,可应用于智能卡和usbkey的安全芯片中,也可以适用于各种需要防御对sm4进行功耗攻击的安全芯片中。

本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。

本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。

上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:ram、rom、磁碟、磁带、光盘、闪存、u盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储等。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

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