一种RC4硬件电路掩码防护方法及系统与流程

文档序号:11138229阅读:687来源:国知局
一种RC4硬件电路掩码防护方法及系统与制造工艺

本发明属于密码算法防护技术领域,具体地说,尤其涉及一种RC4硬件电路掩码防护方法及系统。



背景技术:

当今世界,以Internet为代表的计算机网络得到了迅速的发展和广泛的应用,基于计算机网络的电子商务、电子政务、电子金融蓬勃发展,因此,网络安全、信息安全就成了人们关心的问题,众多加密算法也运蕴而生。其中,RC4以其实现容易、加密速度快、良好的随机性和抵抗各种分析的能力,在众多领域的安全模块得到了广泛的应用。

在国际著名的安全协议标准SSL/TLS(安全套接字协议/传输层安全协议)中,利用RC4算法保护互联网传输中的保密性。在作为IEEE802.ll无线局域网标准的WEP协议中,利用RC4算法进行数据间的加密。同时,RC4算法也被集成于Microsoft Windows、Lotus Notes、Apple AOCE、Oracle Secure SQL等应用中,还包括TLS(传输层协议)、微软PPTP的微软办公,并应用于Adobe Acrobat,其它很多应用领域也使用该算法。

随着计算机网络的普及,传统的RC4软件加密方法已经越来越不能满足日常的需求,其局限性也逐渐暴露出来。在很多计算机信息安全系统中,RC4的硬件加密手段被应用到设备中来提高密码运算速度和系统的安全性。



技术实现要素:

本发明提供了一种一种RC4硬件电路掩码防护方法及系统,用于抵抗功耗攻击,特别是针对RC4的模板攻击。

根据本发明的一个方面,提供了一种RC4硬件电路掩码防护方法,包括:

输入密钥和S盒分组步骤,将输入密钥和S盒各分为相同数量的分组,并同时向输入密钥和S盒的各分组引入随机数,其中,输入密钥和S盒分组后各部分 之和与不带防护的输入密钥和S盒的内容相同;

S盒初始置换步骤,根据分组输入密钥分别对分组S盒进行初始置换;

密钥流生成步骤,对初始置换后的分组S盒分别进行再次置换,并以再次置换后的各分组S盒之和为新索引,所述新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,将输入密钥和S盒各分为2组:K1密钥组和K2密钥组,S1盒组和S2盒组。

根据本发明的一个实施例,S盒初始置换步骤进一步包括:

设置初始第一索引j1=0,初始第二索引j2=0;

对初始第一索引、各遍历的对应索引S1盒组内容以及K1密钥组内容之和取模得到更新的第一索引,对初始第二索引、各遍历的对应索引S2盒组内容以及K2密钥组内容之和取模得到更新的第二索引;

将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行初始置换。

根据本发明的一个实施例,密钥流生成步骤进一步包括:

设置初始第一索引j1=0,初始第二索引j2=0;

对初始第一索引和各遍历的对应索引初始置换后的S1盒组内容之和取模得到更新的第一索引,对初始第二索引和各遍历的对应索引初始置换后的S2盒组内容之和取模得到更新的第二索引;

将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行再次置换;

根据再次置换后的各分组S盒内容之和为新索引,所述新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,将输入密钥和S盒各分为相同数量的分组进一步包括:

初始化输入密钥和S盒,

S盒分组:初始化S1盒组,其中初始化值为n,利用同一索引下的S1值,初始化S2盒组,使S1和S2的和为没被分开的同一索引S盒的值;

输入密钥分组:初始化K1密钥组,利用同一索引下的K1密钥值,初始化K2密钥组,使K1和K2的和为同一索引值模上输入密钥的长度值下的输入密钥值。

根据本发明的另一个方面,还提供了一种RC4硬件电路掩码防护系统,包括:

输入密钥和S盒分组模块,将输入密钥和S盒各分为相同数量的分组,并同时向输入密钥和S盒的各分组引入随机数,其中,输入密钥和S盒分组后各部分之和与不带防护的输入密钥和S盒的内容相同;

S盒初始置换模块,根据分组输入密钥分别对分组S盒进行初始置换;

密钥流生成模块,对初始置换后的分组S盒分别进行再次置换,并以再次置换后的各分组S盒之和为新索引,所述新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,在输入密钥和S盒分组模块中,将输入密钥和S盒各分为2组:K1密钥组和K2密钥组,S1盒组和S2盒组。

根据本发明的一个实施例,S盒初始置换模块进一步包括:

第一初始索引设置单元,设置初始第一索引j1=0,初始第二索引j2=0;

第一索引更新单元,对初始第一索引、各遍历的S1盒组内容以及K1密钥组内容之和取模得到更新的第一索引,对初始第二索引、各遍历的S2盒组内容以及K2密钥组内容之和取模得到更新的第二索引;

S盒初始置换单元,将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行初始置换。

根据本发明的一个实施例,密钥流生成模块进一步包括:

第二初始索引设置单元,设置初始第一索引j1=0,初始第二索引j2=0;

第二索引更新单元,对初始第一索引和各遍历的初始置换后的S1盒组内容之和取模得到更新的第一索引,对初始第二索引和各遍历的初始置换后的S2盒组内容之和取模得到更新的第二索引;

S盒再次置换单元,将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行再次置换;

密钥流生成单元,根据再次置换后的各分组S盒内容之和为新索引,所述新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,输入密钥和S盒分组模块进一步包括:

初始化输入密钥和S盒,

S盒分组:初始化S1盒组,其中初始化值为n,利用同一索引下的S1值,初始化S2盒组,使S1和S2的和为没被分开的同一索引S盒的值;

输入密钥分组:初始化K1密钥组,利用同一索引下的K1密钥值,初始化 K2密钥组,使K1和K2的和为同一索引值模上输入密钥的长度值下的输入密钥值。

本发明的有益效果:

本发明采用算法级防御措施,引用随机数作为掩码,来达到抗功耗攻击,特别是针对RC4的模板攻击。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要的附图做简单的介绍:

图1是RC4算法的逻辑结构图;

图2是根据本发明的一个实施例的方法流程图;

图3是根据本发明的一个实施例的RC4硬件电路的掩码方案的电路防护方案结构图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。

传统的对密码的攻击都是从数学角度,利用数学理论分析,来寻找破解算法的方法,所依赖的信息有明文输入、密文输出,但并没有考虑密码算法所运行的场合。实际使用中,密码算法的实现必定依赖一定的硬件或软件平台,这些信息包括运行密码设备时所泄露的能量消耗、算法运行时间、电磁辐射等,称为侧信道信息。通过侧信道信息的分析,来实现对密码算法密钥的破解就是侧信道攻击。根据侧信道信息的不同,可以分为功耗攻击、故障攻击、时间攻击等。

其中,功耗攻击的基础思想是芯片运算所产生的功耗和所运算的数据存在联系,因为密码芯片的底层为晶体管级的逻辑门,不同操作数所引起的门的反转等 电路负载不同,这些晶体管的充放电过程所消耗的能量因而包含操作数的一些信息,通过对芯片运行的功耗信息的进行精确地采集测量,并对这些功耗信息进行某些处理,可破解出密钥。

针对功耗攻击的防御,最根本的思想是使功耗和运算的数据无关。目前,对于硬件电路抗功耗攻击的具体措施可以分为三种。第一种是系统级防御措施,主要引入噪声、冗余操作等。第二种是算法级防御措施,通过更改算法的结构,引入随机数,使得运算数据不仅仅包含密钥信息,还包含随机信息,这样采集获得功耗数据也包含了随机信息,因而无法进行功耗攻击机,算法级的防御措施的代表是掩码技术,掩码技术对算法结构进行修改,在计算机中,随机数通常应用于明文,这样加密的中间值和结果都带有随性。第三种是电路级防御措施,它是从底层的逻辑单元入手,通过涉及特定的原件保证其能量消耗独立于设备中的数据。

本发明采用算法级防御措施,引用随机数作为掩码,来达到抗功耗攻击,特别是针对RC4的模板攻击。其中模板攻击是功耗攻击的一种,模板攻击方法的思想是根据不同总体的统计特征来推断新样本的归属问题,及统计学中的判别分析问题,前提是掌握和攻击设备相同或类似的设备。

现有技术中,RC4算法分为S盒的初始置换(KSA)、密钥流的生成(PRGA)两个部分,具体流程为:首先对256个S盒分别赋予初值1、2、3……255,引入输入密钥K(它的典型长度为8到40个字节,理论长度为1到255字节),更新索引j,它有三部分组成:初始j,从0到255遍历的i,和输入密钥K,对每个S盒进行初始置换一次。接着继续更新索引j,这时它仅由两部分组成,初始j和循环从0到255遍历的i,不断对每个S盒置换,并将每次置换的两个S盒之和作为新的索引t,该索引t指向的S盒作为输出密钥流key输出,如此不断输出key,如图1所示为RC4算法的逻辑结构图。该算法的伪代码如下:

Algorithm 1.RC4 Key Scheduling Algorithm(KSA)

1:for i=0→255do

2:S[i]:=i

3:end for

4:j:=0,for i=0→255do

5:j:=(j+S[i]+K[i mod Klength])mod 256

6:swap values of S[i]and S[j]

7:end for

Algorithm 2.RC4 Pseudo-Random Generation Algorithm(PRGA)

1:i:=0,j:=0

2:while GeneratingOutput do

3:i:=(i+1)mod 256,j:=(j+S[i])mod 256

4:swap values of S[i]and S[j]

5:key:=S[(S[i]+S[j])mod 256]

6output key

7:end while

虽然RC4的算法中与输入密钥相关的部分只在S盒的初始化(KSA)中,但同时密钥流输出(PRGA)算法中S盒的初始状态与输入密钥K有关。所以为了减少输入密钥K信息的泄露,同时为了保护S盒,在本发明中,分别给输入密钥K和S盒引入随机数,将输入密钥K和S盒都相应的分成若干分组,它们各自的各部分之和与不带防护的输入密钥K和S盒的内容一致,从而保护了S盒和输入密钥K。

如图2所示为根据本发明的一个实施例的方法流程图,以下参考图1来对本发明进行详细说明。

首先是步骤S110输入密钥和S盒分组步骤,将输入密钥和S盒各分为相同数量的分组,并同时向输入密钥和S盒的各分组引入随机数,其中,输入密钥和S盒分组后各部分之和与不带防护的输入密钥和S盒的内容相同。

此处的若干分组包括多种数量的分组,本发明中以将输入密钥和S盒各分为两个分组为例来进行说明,但不限于此。将输入密钥K相应的分成两部分K1、K2,S盒相应的分成两部分S1、S2,它们各自的两部分之和与不带防护的输入密钥K和S盒的内容一致,从而保护了S盒和输入密钥K。其中,输入密钥为预先设定,S盒中初始状态数据设置与现有技术相同此处不加详述。

具体的,初始化输入密钥和S盒,可以采用现有技术。然后进行S盒分组和输入密钥分组。其中,在对S盒分组时,首先初始化S1盒组,其中初始化值为n,利用同一索引下的S1值,初始化S2盒组,使S1和S2的和为没被分开的同一索引S盒的值;输入密钥分组时,初始化K1密钥组,利用同一索引下的K1密钥值,初始化K2密钥组,使K1和K2的和为同一索引值模上输入密钥的长度值下的输入密钥值。

例如,初始化S盒时,是将0、1、2、3…….255等256个值依次赋予给256个S盒,同样对于分开后的S盒S1、S2初始赋值时必须保证同一索引下的S1和 S2的值之和与原始算法中没被分开的S盒的值一样,比如第10个S盒的初始赋值是9,那么S1[10]+S2[10]=S[10]=9,其它S盒都必须满足类似的关系,只是256个S盒中每个S盒的值在不断变化,取值范围仍在0到255间,S1、S2同样也是这样。给S1中的每个S盒,比如S1[0]、S1[1]…….等,初始赋值的n是随机数,并不特定为某个值,同样对K1的各个值也是如此。

接着是步骤S120S盒初始置换步骤,根据分组输入密钥分别对分组S盒进行初始置换。

具体的,在将输入密钥K分成两部分K1、K2,S分成两部分S1、S2时,首先,设定两个分组的初始索引均为:初始第一索引j1=0,初始第二索引j2=0;对初始第一索引、各遍历的对应索引S1盒组内容和K1密钥组内容之和取模得到更新的第一索引,同理得到更新的第二索引;将更新的第一索引和第二索引取和分别对S1盒组和S2盒组进行置换处理。如以下程序所示:

1:for i=0→255 do

2:S1[i]:=n mod256,S2[i]:=(i-n mod256)mod256

3:K1[i]:=m mod256,

4:K2[i]:=(K[i mod klength]-m mod256)mod256

5:end for

6:j1:=0,j2:=0

7:for i=0→255do

8:j1:=(j1+S1[i]+K1[i])mod 256

9:j2:=(j2+S2[i]+K2[i])mod 256

10:j:=j1+j2

11:swap values of S1[i]and S1[j]

12:swap values of S2[i]and S2[j]

13:end for

最后是步骤S130密钥流生成步骤,对初始置换后的分组S盒分别进行再次置换,并以再次置换后的各分组S盒之和为新索引,新索引指向的S盒的内容为输出密钥流。

具体的,首先设置初始第一索引j1=0,初始第二索引j2=0;对初始第一索引、各遍历的对应索引初始置换后的S1盒组内容之和取模得到更新的第一索引,对初始第二索引、各遍历的对应索引初始置换后的S2盒组内容之和取模得到更新的第二索引;将更新的第一索引和第二索引取和,并根据取和值分别对S1盒 组和S2盒组进行再次置换;根据再次置换后的各分组S盒内容之和为新索引,所述新索引指向的S盒的内容为输出密钥流。如以下程序所示:

Algorithm 4.MaskedRC4 Pseudo-Random Generation Algorithm(PRGA1)

1:i:=0,j1:=0,j2:=0

2:while GeneratingOutput do

3:i:=(i+1)mod 256

4:j1:=(j1+S1[i])mod 256,j2:=(j2+S2[i])mod 256

5:j:=j1+j2

6:swap values of S1[i]and S1[j]

7:swap values of S2[i]and S2[j]

8:key:=S[(S1[i]+S1[j]+S2[i]+S2[j])mod 256]

9:output key

10:end while

本发明采用算法级防御措施,引用随机数作为掩码,来达到抗功耗攻击,特别是针对RC4的模板攻击。

根据本发明的另一个方面,还提供了一种RC4硬件电路掩码防护系统,该系统包括输入密钥和S盒分组模块、S盒初始置换模块和密钥流生成模块。

其中,输入密钥和S盒分组模块将输入密钥和S盒各分为相同数量的分组,并同时向输入密钥和S盒的各分组引入随机数,其中,输入密钥和S盒分组后各部分之和与不带防护的输入密钥和S盒的内容相同;S盒初始置换模块根据分组输入密钥分别对分组S盒进行初始置换;密钥流生成模块对初始置换后的分组S盒分别进行再次置换,并以再次置换后的各分组S盒之和为新索引,新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,在输入密钥和S盒分组模块中,将输入密钥和S盒各分为2组:K1密钥组和K2密钥组,S1盒组和S2盒组。

根据本发明的一个实施例,S盒初始置换模块进一步包括第一初始索引设置单元、第一索引更新单元和S盒初始置换单元。其中,第一初始索引设置单元用于设置初始第一索引j1=0,初始第二索引j2=0;第一索引更新单元用于对初始第一索引、各遍历的S1盒组内容和K1密钥组内容之和取模得到更新的第一索引,对初始第二索引、各遍历的S2盒组内容和K2密钥组内容之和取模得到更新的第二索引;S盒初始置换单元用于将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行初始置换。

根据本发明的一个实施例,密钥流生成模块进一步包括第二初始索引设置单元、第二索引更新单元、S盒再次置换单元和S盒再次置换单元。其中,第二初始索引设置单元用于设置初始第一索引j1=0,初始第二索引j2=0;第二索引更新单元用于对初始第一索引、各遍历的初始置换后的S1盒组内容之和取模得到更新的第一索引,对初始第二索引、各遍历的初始置换后的S2盒组内容之和取模得到更新的第二索引;S盒再次置换单元用于将更新的第一索引和第二索引取和,并根据取和值分别对S1盒组和S2盒组进行再次置换;密钥流生成单元用于根据再次置换后的各分组S盒内容之和为新索引,新索引指向的S盒的内容为输出密钥流。

根据本发明的一个实施例,输入密钥和S盒分组模块进一步包括S盒分组单元和输入密钥分组单元。其中,S盒分组单元用于初始化S1盒组,其中初始化值为n,利用同一索引下的S1值,初始化S2盒组,使S1和S2的和为n;输入密钥分组单元用于初始化K1密钥组,利用同一索引下的K1密钥组值,初始化K2密钥组,使K1和K2的和为同一索引值模上输入密钥的长度值下的输入密钥值。

如图3所示为根据本发明的一个实施例的RC4硬件电路的掩码方案的电路模块,其由六部分组成:1.1、1.2和1.3依次分别为存储明文字节和密文字节的寄存器RegPC、分开的两个S盒的RegS1S2、被分开的输入密钥K的RegK1K2,

它们为三个2×256Reg。2为用来存储输入密钥K的RegK,它为一个1×256Reg。3为用来产生时钟信号等控制信号的控制器CTR。4为用来产生密钥流key的计算模块CC。5为用来生成随机数来计算S1或S2、K1或K2的随机数发生器RNG。6为用来初始化两个S盒S1和S2的计数器CNT。

在该电路模块工作时,控制器CTR产生的时钟等控制信号控制其它部件工作。当明文填充到寄存器RegPC中后,计数器CNT开始计数,并初始化RegS1S2的S1、S2中的一个,假如为S1,初始化为n(0到255),同时RNG产生随机数m1,利用同一索引下的S1的值,初始化S2,使S1与S2的和为n。同样在控制器CTR产生的时钟等控制信号下,将输入密钥存储到RegK中,利用计数器CNT初始化RegK1K2的K1、K2中的一个,假如为K1,同时RNG产生随机数m2,利用同一索引下的K1的值,初始化K2,使K1与K2的和为同一索引下的K值。在运算部件CC的作用下,通过计算RegS1S2的S1、S2、RegK1K2的K1、K2的值产生密钥流key,它与明文异和后得到密文。这样保证RegS1S2的S1、S2,RegS1S2的K1、K2的随机性,同时算法的输出结果不被改变,从而保护了输入密钥K和 S盒。

虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

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