基于S盒共用的低熵掩码方案的制作方法

文档序号:14574510发布日期:2018-06-02 01:09阅读:136来源:国知局
基于S盒共用的低熵掩码方案的制作方法

本发明涉及一种基于S盒共用的低熵掩码方案。



背景技术:

高级加密标准(AES)因为具有较好的安全性、效率、灵活性等特点,所以被广泛的应用在实践中。侧信道攻击技术( SCA )的出现对加密芯片的安全性构成了很大的威胁,典型的有时间分析攻击、电磁辐射攻击、功耗分析攻击等。在现有的侧信道攻击手段中,差分功耗攻击( DPA ),特别是高阶差分功耗攻击(HODPA)对芯片的安全性构成的威胁最大。

为了抵抗侧信道攻击技术,掩码是一种通用而有效的的方式。现今主要存在三种掩码方案,分别是:基于查找表的掩码方案、基于加法链的掩码方案和基于复合域的掩码方案,其中基于查找表掩码相比于其它两种掩码方案具有查询速度快的优点,但是往往需要占用更大的存储空间,这对于资源受限的设备是很难实现的。掩码的阶数越高,安全性就越好,但是随着掩码阶数的增加,硬件开销将成指数增长。针对这一问题,2012年一个低熵掩码方案被提出,命名为RSM方案。对比于现有的查找表掩码方案,RSM方案有较低的掩码复杂度,它的性能和复杂度都非常接近于没有掩码的AES算法,而且,RSM方案能够安全的抵抗一阶和二阶SCA攻击,是一个安全性和性能的折中方案,可以较好的应用在实践中。但是对于一些面积受限的设备,例如智能卡、物联网(IOT)等,RSM方案因面积过大难以应用到实际中去。传统设计使用高面积复杂的查找表掩码方案,使用起来加密算法占用的面积大。



技术实现要素:

本发明的目的是提供一种基于S盒共用的低熵掩码方案。

上述的目的通过以下的技术方案实现:

基于S盒共用的低熵掩码方案,通过降低掩码方案中掩码S盒的数目,从而降低掩码方案占用的面积,依次分为S盒共用思想和AES算法实现两部分,所述的AES算法实现分为线性部分的掩码实现、AES字节替代模块的实现及AES的整体实现三个步骤完成。

所述的基于S盒共用的低熵掩码方案,所述的S盒共用是:对于S盒共用方案的掩码值可以有不同的选择,需要选择16个数作为掩码值,这16个数具有统一的特点,即满足正交向量特征,通过分析这组掩码值的特点,可以根据掩码值高低位的关系,将掩码值分为四组,即在每组中掩码值的高低位相同或者取反,分组如下,表示为Mt,其中t∈[1,4]。

M1,M2,M3,M4

在每组掩码分组中采用的掩码原理为:

Sm(xMtr)=S(x) Mt(r+1)mod4

其中x是没有掩码的8字节的数据,Mtr为第t个掩码分组中的第r个掩码值,S代表普通的S盒,Sm代表掩码后的S盒。

整个128位明文的掩码,掩码原理为:

SBj=SB(Mp,q,h,nX)M(p+1),(q+1),(h+1),(n+1), ∀p,q,h,n∈{1,4}

其中,

Mpqhn={ MPp , MQq , MHh , MNn , MP(p+1)mod4 , MQ(q+1)mod4MH(h+1)mod4 , MN(n+1)mod4 , ...... , MP(p+3)mod4 , MQ(q+3)mod4 ,MH(h+3)mod4 , MN(n+3)mod4 }

在所述公式中,P,Q,H,Nt,表示的是在四组掩码分组中随机的选择一组,p,q,j,n∈[1,4],表示在每组掩码分组中随机挑选的第几个数。

在每组掩码分组中可以任意的选择一组输入输/输出掩码的S盒作为共用S盒,在第t组中共用(已经计算好的)的S盒输入掩码为mtr,输出掩码为mt(r+1),第t组的共用S盒表示为Sbox_mtr_mt(r+1)mod4。

在每组掩码分组中,我们已知一组输入掩码和输出掩码的S盒,即为共用S盒,其它的3组输入输出掩码组合和共用S盒存在着特定的规律,即掩码值高低位要么相同,要么取反,所以我们可以采用共用S盒的思想,来减少掩码S盒的数目,主要原理是:当一组明文(32位)与其中一组掩码值异或时,根据输入掩码值高低位与每组共用S盒输入掩码高低位的关系来进行地址的选择,当值相同时,则地址不变,值不同时,则地址取反;根据输出掩码高低位与每组共用S盒输出掩码高低位的关系来进行输出选择,当值相同时,则输出不变,值不同时,则输出取反,这样每组就可以共用一个S盒来完成字节替代操作。

所述的基于S盒共用的低熵掩码方案,所述的线性部分的掩码实现,对于AES线性部分包含密钥加操作(XOR)、行移位操作(SR)以及列混合操作(MC),主要包含线性操作的掩码实现和掩码补偿部分的实现;

对于线性操作的掩码实现:所述的XOR表示的是轮密钥与轮加密结果之间的异或操作,异或的结果恰好是下一轮字节替代的输入值,是与密钥强相关的中间项,因此需要对XOR操作添加掩码。XOR属于线性操作,可以直接通过异或操作进行掩码,但是在掩码的过程中一定要注意与掩码值异或的顺序,所述的SR操作发生在字节替代之后,根据公式Sm(xMtr)=S(x)Mt(r+1)mod4的设计,字节替代的输出是带有掩码的,因此SR操作与密钥的关系是弱相关的,作为线性操作可以直接进行操作,不需要再添加新的掩码值,所述的MC操作发生在SR操作之后,同SR操作一样,MC变换的值与密钥的关系也是弱相关的,作为线性操作可以直接进行操作,不需要再添加新的掩码值;

对于掩码补偿:主要发生在下一轮加密开始前,即每轮加密结束时,利用简单的异或操作去除本轮添加的掩码值,同时添加新的掩码值。对于最后一轮则只需要去掉当前的掩码值,不需要添加新的掩码值,就可以输出正确的密文,在进行字节替代之后,操作数是添加了掩码的,根据添加掩码值的特点,假如把掩码值排成4*4的矩阵,每轮掩码值的变换关系,即掩码值每行都向左移动一列,我们称之为行变换(记作LT)。除最后一轮外,对每轮的输入掩码值依次进行行变换、行移位、列混合和添加新的掩码,对于最后一轮则只需要对输入掩码进行行变换和行移位操作。在每轮结束进行掩码补偿时,一定要先加新掩码在去之前的掩码,这样才能够保证算法的安全性。

所述的基于S盒共用的低熵掩码方案,所述的AES字节替代模块的实现:所述的AES算法中字节替代是唯一的非线性操作,为了满足掩码的基本原则,设计的字节替代操作掩码要满足等式Sm(xMtr)=S(x)Mt(r+1)mod4,所以在字节替换操作过程中必须替换掉原来的S盒,根据表的重新计算技术对新的S盒进行计算,得到的即为本文的共用S盒。根据前文的4个不同的掩码值分组,分别计算每组内的共用S盒,每组内的共用S盒共有四种可能,可以随机选择其中一个作为共用S盒,因此S盒共用方案需要的共用S盒数目为4个;

S盒共用方案的字节替代模块适用于32位的输入,这32位的数据被分为四组,每组8位。当数据输入时,根据不同的掩码值,选择不同的共用S盒进行字节替代操作,在进行字节替代时,这四组8位数据是并行执行的。

所述的基于S盒共用的低熵掩码方案,所述的AES的整体实现是:采用共用S盒思想实现整个AES的掩码方案。在算法开始时,首先将明文与随机选择的4组掩码值进行异或,然后与密钥进行异或操作,把这个结果作为中间轮的输入。对于中间轮依次进行行移位、字节替代、列混合、密钥加和掩码补偿操作,而对于最后一轮依次进行行移位、字节替代、密钥加,最后进行掩码补偿操作获得正确的密文,进行输出。对分组的四组数据以随机的顺序进行字节替换、列混合、密钥加和掩码补偿操作。在所有的128位都进行完以上操作之后,需要进行重新排序,把重新排序的结果作为下一轮的输入,最后输出正确的密文;

在查表的时候采用串行的查找方式,每128位数据的查找次数为4。通过对比S盒共用方案与RSM方案的字节替代模块可以看出:RSM方案需要16个掩码S盒,而S盒共用方案只需要4个,是RSM方案1/4,但是在进行字节替代时组与组之间采用的是串行查找的方式,这样使得字节替代操作的吞吐量变为原来的1/4

在存储空间上采用与固定值掩码相同的策略,即预先计算好掩码值和与掩码值对应的共用S盒,存入ROM中,执行算法时,根据制定好的随机规则,选择相应的随机掩码和共用S盒进行运算;

S盒共用方案需要存储在ROM中的变量如下所示:

1)掩码值Mt

2)每组掩码值的偏移量p、q、h、n

3)根据每组掩码分组中输入输出掩码的值重计算得到的共用S盒,共4个;

4)根据每轮的输出掩码确定的掩码补偿的值。

有益效果:

1.本发明是一种基于S盒共用的低熵掩码方案,主要是减小算法占用的面积,通过采用S盒共用方案,使掩码S盒的数目从16个减少到4个(不考虑密钥扩展操作),可以更好的应用到资源受限的设备中去。

本发明的相邻掩码值通过异或操作可以看出不存在相邻掩码值异或之后汉明重量存在规律的特点,而且本发明的方案S盒不需要循环移位,所以也不存在S盒循环偏移量为1的问题。因此本文设计的方案解决了RSM不能抵抗基于偏移量的一阶CPA攻击的缺陷,可有效抵抗基于偏移量的CPA攻击,提高了算法的安全性。

本发明采取了掩码值选取随机化和字节替代顺序随机化的思想,增加了算法的安全性。

附图说明:

附图1是本发明S盒共用方案的原理图。

附图2是本发明掩码补偿操作图。

附图3是S盒共用方案的字节替代模块。

附图4是应用S盒共用方案的AES掩码实现。

具体实施方式:

实施例1:

一种基于S盒共用的低熵掩码方案,通过降低掩码方案中掩码S盒的数目,从而降低掩码方案占用的面积,依次分为S盒共用思想和AES算法实现两部分,所述的AES算法实现分为线性部分的掩码实现、AES字节替代模块的实现及AES的整体实现三个步骤完成。

实施例2:

一种实施例1所述的基于S盒共用的低熵掩码方案,掩码值的选取,所选用的RSM方案的掩码值必须是正交的,这样才能够保证算法的安全性。对于掩码值的选择采用如下的方法:

设正交矩阵的数量级别为Q,列数为N,行数为Q^JJ的选取满足N=(Q^J)-1/Q-1。

首先采用简单的置换方法生成正交矩阵,其中Q=2、N=15、J=4,生成的16*16的正交矩阵A如公式(1)所示。

(1)

然后从正交矩阵A中随机选择8列,就能够构造满足约束的16个掩码。

实施例3

一种实施例1或2所述的基于S盒共用的低熵掩码方案,所述的S盒共用,S盒共用方案是一个通用的掩码方案,只要掩码值满足正交向量的特征就适用于S盒共用方案。对于S盒共用方案的掩码值可以有不同的选择,选取方法详见1.1。需要选择16个数作为掩码值,这16个数具有统一的特点,即满足正交向量特征。以RSM方案的一组掩码值为例,对S盒共用思想的实现进行阐述。该组掩码值为{0x00,0x0f,0x36,0x39,0x53,0x5c,0x65,0x6a,0x95,0x9a,0xa3,0xac,0xc6,0xc9,0xf0,0xff},通过分析这组掩码值的特点,可以根据掩码值高低位的关系,将掩码值分为四组,即在每组中掩码值的高低位相同或者取反。分组如下,表示为Mt,其中t∈[1,4]。

M1=[00,0f,f0,ff] (2)

M2=[36,39,c6,c9] (3)

M3=[53,5c,a3,ac] (4)

M4=[65,6a,95,9a] (5)

在每组掩码分组中采用的掩码原理为:

Sm(xMtr)=S(x)Mt(r+1)mod4 (6)

其中x是没有掩码的8字节的数据,Mtr为第t个掩码分组中的第r个掩码值,S代表普通的S盒,Sm代表掩码后的S盒。

整个128位明文的掩码,掩码原理为:

SBj=SB(Mp,q,h,nX) M(p+1),(q+1),(h+1),(n+1), ∀p,q,h,n∈{1,4} (7)

其中,

Mpqhn={ MPp , MQq , MHh , MNn , MP(p+1)mod4 , MQ(q+1)mod4MH(h+1)mod4 , MN(n+1)mod4 , ...... , MP(p+3)mod4 , MQ(q+3)mod4 ,MH(h+3)mod4 , MN(n+3)mod4 } (8)

在所述的公式(8)中,P,Q,H,Nt,表示的是在四组掩码分组中随机的选择一组,p,q,j,n∈[1,4],表示在每组掩码分组中随机挑选的第几个数。

在每组掩码分组中可以任意的选择一组输入输/输出掩码的S盒作为共用S盒,在第t组中共用(已经计算好的)的S盒输入掩码为mtr,输出掩码为mt(r+1), 如在第一组M1中,可选择共用S盒的一种情况为输入掩码为00,输出掩码为0f,可以表示为S-box_m11_m12,第t组的共用S盒表示为Sbox_mtr_mt(r+1)mod4。

在每组掩码分组中,我们已知一组输入掩码和输出掩码的S盒,即为共用S盒,其它的3组输入输出掩码组合和共用S盒存在着特定的规律,即掩码值高低位要么相同,要么取反,所以我们可以采用共用S盒的思想,来减少掩码S盒的数目,主要原理是:当一组明文(32位)与其中一组掩码值异或时,根据输入掩码值高低位与每组共用S盒输入掩码高低位的关系来进行地址的选择,当值相同时,则地址不变,值不同时,则地址取反;根据输出掩码高低位与每组共用S盒输出掩码高低位的关系来进行输出选择,当值相同时,则输出不变,值不同时,则输出取反,这样每组就可以共用一个S盒来完成字节替代操作。我们也计算了相应输入输出掩码值下的S盒,并对以上提出的S盒共用方案的功能进行了验证,结果表明S盒共用方案功能是正确的。

实施例4

一种实施例1或2或3所述的基于S盒共用的低熵掩码方案,所述的线性部分的掩码实现,对于AES线性部分包含密钥加操作(XOR)、行移位操作(SR)以及列混合操作(MC),主要包含线性操作的掩码实现和掩码补偿部分的实现。

对于线性操作的掩码实现:所述的XOR表示的是轮密钥与轮加密结果之间的异或操作,异或的结果恰好是下一轮字节替代的输入值,是与密钥强相关的中间项,因此需要对XOR操作添加掩码。XOR属于线性操作,可以直接通过异或操作进行掩码,但是在掩码的过程中一定要注意与掩码值异或的顺序,例如在第一轮加密时,一定要将掩码值与明文/密钥异或之后再与密钥/明文进行异或,只有这样的操作顺序才不会泄露明文和密钥的异或值。所述的SR操作发生在字节替代之后,根据公式Sm(xMtr)=S(x) Mt(r+1)mod4的设计,字节替代的输出是带有掩码的,因此SR操作与密钥的关系是弱相关的,作为线性操作可以直接进行操作,不需要再添加新的掩码值,以节约防护成本。所述的MC操作发生在SR操作之后,同SR操作一样,MC变换的值与密钥的关系也是弱相关的,作为线性操作可以直接进行操作,不需要再添加新的掩码值,以节约防护成本。

对于掩码补偿:本文的设计方案掩码补偿主要发生在下一轮加密开始前,即每轮加密结束时,利用简单的异或操作去除本轮添加的掩码值,同时添加新的掩码值。对于最后一轮则只需要去掉当前的掩码值,不需要添加新的掩码值,就可以输出正确的密文,在进行字节替代之后,操作数是添加了掩码的,根据本设计方案添加掩码值的特点,假如把掩码值排成4*4的矩阵,每轮掩码值的变换关系,即掩码值每行都向左移动一列,我们称之为行变换(记作LT)。

除最后一轮外,对每轮的输入掩码值依次进行行变换、行移位、列混合和添加新的掩码,对于最后一轮则只需要对输入掩码进行行变换和行移位操作。在每轮结束进行掩码补偿时,一定要先加新掩码在去之前的掩码,这样才能够保证算法的安全性。

实施例5

一种实施例1或2或3或4所述的基于S盒共用的低熵掩码方案,所述的AES字节替代模块的实现,所述的AES算法中字节替代是唯一的非线性操作,为了满足掩码的基本原则,设计的字节替代操作掩码要满足等式Sm(xMtr)=S(x) Mt(r+1)mod4,所以在字节替换操作过程中必须替换掉原来的S盒,根据表的重新计算技术对新的S盒进行计算,得到的即为本文的共用S盒。根据前文的4个不同的掩码值分组,分别计算每组内的共用S盒,每组内的共用S盒共有四种可能,可以随机选择其中一个作为共用S盒,因此S盒共用方案需要的共用S盒数目为4个。

盒共用方案的字节替代模块适用于32位的输入,这32位的数据被分为四组,每组8位。当数据输入时,根据不同的掩码值,选择不同的共用S盒进行字节替代操作,S盒共用的原理已经在上文中进行了详细的介绍。在进行字节替代时,这四组8位数据是并行执行的。

实施例6

实施例1或2或3或4或5所述的基于S盒共用的低熵掩码方案,所述的AES的整体实现,采用共用S盒思想实现整个AES的掩码方案。在算法开始时,首先将明文与随机选择的4组掩码值进行异或,然后与密钥进行异或操作,把这个结果作为中间轮的输入。对于中间轮依次进行行移位、字节替代、列混合、密钥加和掩码补偿操作,而对于最后一轮依次进行行移位、字节替代、密钥加,最后进行掩码补偿操作获得正确的密文,进行输出。对分组的四组数据以随机的顺序进行字节替换、列混合、密钥加和掩码补偿操作。在所有的128位都进行完以上操作之后,需要进行重新排序,把重新排序的结果作为下一轮的输入,最后输出正确的密文。

在查表的时候采用串行的查找方式,每128位数据的查找次数为4。通过对比S盒共用方案与RSM方案的字节替代模块可以看出:RSM方案需要16个掩码S盒,而S盒共用方案只需要4个,是RSM方案1/4,但是在进行字节替代时组与组之间采用的是串行查找的方式,这样使得字节替代操作的吞吐量变为原来的1/4.

在存储空间上采用与固定值掩码相同的策略,即预先计算好掩码值和与掩码值对应的共用S盒,存入ROM中,执行算法时,根据制定好的随机规则,选择相应的随机掩码和共用S盒进行运算,这样能够减少芯片的RAM占用量。

盒共用方案需要存储在ROM中的变量如下所示:

1)掩码值Mt

2)每组掩码值的偏移量p、q、h、n

3)根据每组掩码分组中输入输出掩码的值重计算得到的共用S盒,共4个;

4)根据每轮的输出掩码确定的掩码补偿的值。

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