一种SM4密码电路抵抗侧信道分析的方法与流程

文档序号:11841867阅读:593来源:国知局
一种SM4密码电路抵抗侧信道分析的方法与流程

本发明涉及信息安全领域,特别是涉及一种SM4密码电路抵抗侧信道分析的方法。



背景技术:

随着信息技术的发展,数据的机密性和完整性受到越来越多的关注,在早期人们还主要关注协议和算法的安全性,但自从侧信道分析被提出以后,人们越来越多的开始关注芯片的实现,以及针对芯片所面临的攻击所采取的抗攻击措施。

侧信道分析主要是基于物理特征的分析技术,包括功耗分析,电磁分析,错误分析,时间分析等等。功耗分析是指通过分析密码运算过程中呈现的电流/电压变化得出功耗的变化,进而将功耗与密钥信息联系起来,最终获取密钥信息。功耗分析技术又分为简单功耗分析(SPA)和差分功耗分析(DPA)。SPA是指根据功耗曲线上所呈现的特殊特征来推测密钥信息,DPA利用的是操作数的变化所引起的微小的功耗变化,需要通过对大量功耗曲线进行统计分析最终得出密钥信息。电磁分析与功耗分析类似,只是获取曲线的方式有别。错误分析是利用错误结果进行分析得出密钥信息的分析技术。时间分析是指有的算法运行时间会因密钥的不同而不同,因而可以通过运行时间来推测密钥。

在硬件防御功耗分析措施方面,通常包括引入噪声的方式降低测量精 度和在算法级提供保护。引入噪声的方式实现起来比较简单,但是效果并不理想,可以通过增加样本数来克服。一个典型的算法级技术是盲化方法(masking),预掩码方案存在潜在的安全隐患,实现面积、功耗和速度都适用于工程应用的随机掩码方案十分重要。另外一个技术是电路一级的双轨逻辑,其面积和时延方面的开销都很大,并且其实现的技术难度比较大。



技术实现要素:

本发明所要解决的技术问题是提供一种SM4密码电路抵抗侧信道分析的方法,能够有效掩盖运算的中间数据,从而掩盖数据和功耗之间关系,有效抵抗侧信道分析。

为了解决上述技术问题,本发明的SM4密码电路抵抗侧信道分析的方法,是采用如下技术方案实现的:

SM4密码电路的线性变换和非线性变换(SBOX)都采用随机掩码掩盖运算过程中的真实数据;

SM4密码电路的非线性变换在运算过程中采用实时计算的方式生成;

SM4密码电路的密钥扩展和数据加解密变换都采用随机掩码方案。

本发明针对现有技术的现状,提出了一种安全而又易于实现的,面积、功耗和速度都适用于工程应用的,无统计分析规律,并且最终能够准确实现SM4加解密的安全技术。

随机掩码被公认为是抵御DPA攻击的有效方案,与双轨逻辑相比,它开发成本低,流程简单,与一些预掩码和增加噪声的方案相比,它更加安全。

本发明实现的SM4密码电路在运算过程中的所有数据和密钥都全程带有随机掩码,且每一轮都取不同的随机数作为新的掩码,在整个运算过程中没有攻击者想要的真实数据参与运算,这样攻击者通过猜测密钥计算中间值,再通过真实的中间值与实际功耗之间的关系来实施的攻击就无法实现,也就能够达到有效抵抗侧信道分析的目的。

采用本发明的方法实现的SM4密码电路运算速度快,所占用的芯片面积小,功耗低,并且不需要开发新的逻辑门,对设计实现没有特别要求,能够有效防御DPA攻击,安全性得到大幅提升。

附图说明

下面结合附图与具体实施方式对本发明作进一步详细的说明:

图1是本发明实现的硬件SM4的加密轮变换的时序图;

图2是本发明实现的硬件SM4的加密轮变换图;

图3是本发明实现的硬件SM4的密钥扩展轮变换图。

具体实现方式

所述SM4密码电路抵抗侧信道分析的方法具体实现的方法是:SM4密码电路的线性变换和非线性变换都采用随机掩码掩盖运算过程中的真实数据;SM4密码电路的非线性变换在运算过程中采用实时计算的方式生成;SM4密码电路的密钥扩展和数据加解密变换都采用随机掩码方案。

四个8进8出的SBOX的输入掩码和输出掩码取自不同的随机数,每个SBOX的掩码独立于其他三个SBOX的掩码,数据加解密和密钥扩展运算分时复用这四个带随机掩码的SBOX,数据加解密和密钥扩展每运算一轮更新其 中的一个SBOX。

数据寄存器由四个32bits(比特)的寄存器(D0,D1,D2,D3)组成,每运算一轮更新四个数据寄存器中的一个32bits寄存器,并按D0→D1→D2→D3的顺序逐次更新,参与轮运算的数据和轮密钥都全程带掩码。

所述四个数据寄存器的掩码各不相同,更新前后的掩码无关联性,且独立于密钥寄存器掩码的选择,参与运算的轮密钥所带掩码由所述数据寄存器的掩码和SBOX的掩码组成。

密钥寄存器由四个32bits的寄存器(K0,K1,K2,K3)组成,每扩展一轮更新四个密钥寄存器中的一个32bits寄存器,并按K0→K1→K2→K3的顺序逐次更新,参与密钥扩展的密钥和固定参数都全程带掩码。

所述四个密钥寄存器的掩码各不相同,更新前后的掩码无关联性,且独立于数据寄存器掩码的选择,参与运算的固定参数所带掩码由密钥寄存器的掩码和SBOX的掩码组成。

数据寄存器和密钥寄存器更新时,是在寄存器变化前加入新的掩码,在寄存器变化后再去掉旧的掩码。

数据寄存器和密钥寄存器的掩码选择保证在运算中相同的掩码字节不会相遇。

数据加解密过程中轮密钥所带的掩码在轮密钥寄存器存储轮密钥之前加入。

密钥扩展过程中固定参数所带的掩码在固定参数寄存器存储固定参数之前加入。

下面以SM4的加密过程为例来进一步介绍本发明。

如图1所示,SM4的加密运算过程分为三个阶段:加掩码阶段,密钥扩展和数据加密阶段,去掩码阶段;

四个8进8出的SBOX分别表示为S0、S1、S2和S3,四个32bits的密钥寄存器分别表示为K0、K1、K2和K3,四个32bits的数据寄存器分别表示为D0、D1、D2和D3;

加掩码阶段需要4个时钟周期:第一个时钟周期用新的随机数通过异或运算计算带掩码的S0、K0和D0,第二个时钟周期用新的随机数通过异或运算计算带掩码的S1、K1和D1,第三个时钟周期用新的随机数通过异或运算计算带掩码的S2、K2和D2,第四个时钟周期用新的随机数通过异或运算计算带掩码的S3、K3和D3。

密钥扩展运算的过程如图3所示,K_SHIFT表示SM4密码算法定义的密钥扩展过程中的移位运算,CKi表示SM4密码算法为每一轮密钥扩展定义的固定参数,mask表示当前数据线上带有的掩码值,Ki+4表示新的“Ki”,last_kmi、last_kmi+1、last_kmi+2和last_kmi+3分别表示密钥寄存器Ki、Ki+1、Ki+2和Ki+3所带有的旧掩码,kmini+4表示加到密钥Ki+4上的新掩码,last_kmi+4表示运算过程使得密钥Ki+4上带有的旧掩码。

数据加密运算的过程如图2所示,图中D_SHIFT表示SM4密码算法定义的数据加密过程中的移位运算,rki表示SM4密码算法定义的轮密钥,mask表示当前数据线上带有的掩码值,Di+4表示新的“Di”,last_dmi、last_dmi+1、last_dmi+2和last_dmi+3分别表示数据寄存器Di、Di+1、Di+2和Di+3所带有的旧 掩码,edkey_mask表示轮密钥寄存器rki带有的旧掩码,dmini+4表示加到数据Di+4上的新掩码,last_dmi+4表示运算过程使得数据Di+4上带有的旧掩码。

密钥扩展和数据加密阶段需要64个时钟周期,以8个时钟周期为一个重复单元,重复8次。8个时钟周期的重复单元具体情况:第一个时钟周期通过密钥扩展运算计算K0,第二个时钟周期通过数据加密运算计算D0和用异或运算计算S0,第三个时钟周期通过密钥扩展运算计算K1,第四个时钟周期通过数据加密运算计算D1和用异或运算计算S1,第五个时钟周期通过密钥扩展运算计算K2,第六个时钟周期通过数据加密运算计算D2和用异或运算计算S2,第七个时钟周期通过密钥扩展运算计算K3,第八个时钟周期通过数据加密运算计算D3和用异或运算计算S3。

去掩码阶段需要一个时钟周期:通过异或运算将数据寄存器D0,D1,D2和D3上的掩码去掉,恢复出不带掩码的密文。

以上通过具体实施方式对本发明进行了详细的说明,但这些并非构成对本发明的限制。在不脱离本发明原理的情况下,本领域的技术人员还可做出许多变形和改进,这些也应视为本发明的保护范围。

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