一种密钥不固定的对称白盒加密方法和装置与流程

文档序号:11138248阅读:2203来源:国知局
一种密钥不固定的对称白盒加密方法和装置与制造工艺

本发明涉及计算机安全领域,更具体地,本发明涉及一种密钥不固定的对称白盒加密方法和装置。



背景技术:

随着无线通信、互联网等技术的发展,许多设备都能联网,这些设备包括智能手机、平板电脑、汽车、机顶盒、穿戴设备、智能家电(如空气净化器)、智能家居(智能摄像机)等。这些设备的联网给人类生活和生产带来了便利,同时也给不法分子可乘之机,不法分子通过一些方式可以完全控制和访问硬件和软件,在当前的攻击手段中,很容易通过对二进制文件的反汇编、静态分析,对运行环境的控制结合使用控制CPU断点、观测寄存器、内存分析等来获取密码,对设备使用者的人身安全、财产安全造成一定的影响,这导致了白盒密码技术的发展。

白盒加密算法是为应对白盒攻击而产生的算法,白盒攻击有别于传统密码模型中定义的黑盒攻击类型,它假设攻击者对设备终端(即应用程序的运行环境)拥有完全的控制能力。攻击者可以自如地观察动态密码运行的过程,并且内部算法详细内容完全可见、可随意更改。

Chow等人在2002年首先提出白盒攻击环境(White-Box Attack Context)的概念,他假设:

(1)充分享有特权的攻击软件与密码学软件共享一个主机,攻击软件对密码算法的执行完全可以访问。

(2)动态执行(与某个固定的密钥一起)是可以被观测的。

(3)密码算法的内部细节是完全可见和可任意更改的。

chow首次提出了白盒加密算法,密钥不以明文的形式出现在加密运算过程中,chow的AES白盒的主要设计方法是:首先,把轮密钥加(AddRoundKey)和字节代替(SubBytes)组合用T盒(T-Box)表示,选定一个密钥,计算出所有的T-Box,把列混淆(MixColumns)与T-Box组合在一起,在两端输入输出置乱编码,将结果用查找表表示,然后利用一个额外的矩阵来计算行移位(ShiftRows)以及抵消相邻两轮查表表的输入输出置乱编码。整个AES的执行过程可以由查找表和矩阵乘法完成。

但是这种白盒加密算法,密钥是固定的,即密钥未进行变换直接跟算法的非线性变换结合,形成算法中固定的一部分。这种密钥固定的白盒加密算法不能满足用户自己设定密钥,加密的时候只要输入明文,不需要输入密钥。在物联网设备中,一旦使用,就是一批设备的密钥都相同,其安全性令人担忧,因此在物联网环境下,迫切需要有密钥可以动态设定的白盒加密系统。



技术实现要素:

为克服上述现有技术中的缺陷,本发明提出一种密钥不固定的对称白盒加密方法。

密钥不固定的对称白盒加密方法是在对称加密方法的基础上的改进。对称加密方法(通常也称为对称加密算法)中运算包括AddRoundKey、SubBytes、ShiftRows、MixColumns等。白盒加密过程中对这些运算进行组合变成查找表的形式。查找表的数据是先抵消上一个查找表的置乱码,再完成实际的运算,最后再加入置乱码得到的。

根据本发明的一个方面,提出了一种密钥不固定的对称白盒加密方法,包括:步骤1:使用对称加密方法进行密钥扩展,得到多轮的加密密钥Kn;步骤2:对多轮的加密密钥Kn进行置换,得到置换后的密钥Kn′;步骤3:生成白盒库;步骤4:将白盒库和置换后的密钥Kn′传给用户;步骤5:用户利用置换后的密钥Kn′对待加密的数据进行白盒加密,白盒加密时利用白盒库进行查表,得到密文;其中,n表示对称加密方法的加密轮数。

优选的,步骤1、步骤2和步骤3在安全可控的环境下操作。

根据本发明的另一方面,还提供了一种密钥不固定的对称白盒加密装置,包括:密钥扩展模块、密钥转换模块、加密数据变换模块、白盒加密引擎模块和白盒库;其中,密钥扩展模块,用于通过对称加密方法将加密密钥扩展为各轮的轮密钥Kn;密钥转换模块,用于将各轮的轮密钥Kn变换为白盒加密引擎模块中使用的密钥Kn′;白盒库生成模块,用于对对称加密方法中的置换函数Pn进行变换,生成白盒库Tn并传送给白盒加密引擎模块;白盒加密引擎模块,用于对待加密数据、密钥Kn′进行白盒加密,加密时通过白盒库Tn进行查表,并输出密文;其中,n表示对称加密方法的加密轮数。

为了减少查找表的存储大小,轮密钥加AddRoundKey和字节代替SubBytes不会像chow提出的固定密钥白盒一样组合变成一个查找表,而是将字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows组合变成一个表,轮密钥加AddRoundKey单独变成一个表,整个白盒加密过程采用的还是查表的方式进行。置换函数Pn在每轮中至少表示两种变换,一种是与轮密钥加的变换,一种是与字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows的组合的变换。

An可以是线性变换,可以是非线性变换,也可以是线性变换和非线性变换合成的变换。合成变换的优点:隐藏变换中涉及的变换,增加变换的多样性,提高密钥破解的难度。与现有技术相比,本发明的密钥不固定的动态白盒不仅实现了白盒加密的密钥隐藏,而且白盒库与密钥是分离的,用户可以自己设定密钥,方便灵活;同时,整个加密算法的加密引擎部分可以是相同的,只有加密密钥扩展生成的加密轮密钥不同,这符合物联网设备对加密算法烧制要求——大部分内容是相同,小部分不同。

附图说明

图1是本发明一个实施例的密钥不固定的对称白盒加密方法的流程图;

图2是本发明一个实施例的密钥不固定的对称白盒加密装置的结构示意图。

如图所示,为了能明确实现本发明的实施例的流程,在图中描述了特定的设备和运行顺序,但这仅为示意需要,并非意图将本发明限定在该特定设备、顺序、器件和环境中,根据具体需要,本领域的普通技术人员可以将这些器件和环境进行调整或者修改,所进行的调整或者修改仍然包括在后附的权利要求的范围中。

具体实施方式

下面结合附图和具体实施例对本发明提供的一种密钥不固定的对称白盒加密方法和装置进行详细描述。

在以下的描述中,将描述本发明的多个不同的方面,然而,对于本领域内的普通技术人员而言,可以仅仅利用本发明的一些或者全部结构或者流程来实施本发明。为了解释的明确性而言,阐述了特定的数目、配置和顺序,但是很明显,在没有这些特定细节的情况下也可以实施本发明。在其他情况下,为了不混淆本发明,对于一些众所周知的特征将不再进行详细阐述。

根据本发明的一个实施例,提供了一种密钥不固定的对称白盒加密方法,包括:步骤1:使用对称加密方法进行密钥扩展,得到多轮的加密密钥Kn;步骤2:对多轮的加密密钥Kn进行置换,得到置换后的密钥Kn′;步骤3:生成白盒库;步骤4:将白盒库和置换后的密钥Kn′传给用户;步骤5:用户利用置换后的密钥Kn′对待加密的数据进行白盒加密,白盒加密时利用白盒库进行查表,得到密文;其中,n表示对称加密方法的加密轮数。

优选的,步骤1、步骤2和步骤3在安全可控的环境下操作。

下面将根据本发明的上述发明原理,以SM4对称加密方法为例,来对本发明方法的主要实现原理进行详细的阐述和说明。

SM4的密钥与白盒库结合的白盒加密过程如下:首先是密钥的扩展,将128比特的密钥扩展为32轮的轮密钥Kn,每轮的密钥长度还是128比特;其次,根据密钥生成白盒库,白盒库是白盒加密过程中的查找表集合,每轮密钥对应一个查找表,也就是对轮密钥Kn进行置换,设置换函数为Tn。查找表可以用矩阵Tn(Kn)表示(即白盒库),32轮查找表可以分别用T1(K1)、T2(K2)…T32(K32)表示;最后是白盒加密,先将白盒库发送给用户,再输入待加密数据,以字为单位对其进行加密运算,对其进行32轮变换,每轮变换包括非线性变换、32比特循环左移、32比特异或运算,也就是在白盒库中对每轮的查找表进行查找,找到的结果再进入下一轮变换,32轮变换后输出密文。

在这个过程中,白盒库是服务提供商先期制作好的,密钥包含在白盒库中,是固定的,不能由用户随意修改。

在本发明的一个实施例中,为了使得白盒加密的应用更加广泛,不绑定密钥与白盒库,可以由用户自己设定密钥。具体方法如下:

步骤1:首先服务器端接收用户输入的密钥,在安全可控的环境下,扩展轮密钥Kn(n表示轮数,此处为1-32),可以直接使用对称加密方法自带的扩展方法。

步骤2:扩展后的轮密钥不直接用于加密,而是先进行变换,变换包括线性变换和非线性变换等数学运算,变换处理时的数据块大小可以是32比特,也可以是16比特或其他,变换后的轮密钥为Kn′。

步骤3:生成白盒库,对SM4生成时使用的置换函数P进行变换,设变换矩阵为A1、A2...A32,则白盒库为:

T1=A1P′

T2=A1-1PA2

T3=A2-1PA3

...

T32=A31-1PA32

T33=A32-1P

这与原SM4密钥与白盒库结合的白盒加密对应的操作相比,白盒库仅对原算法的置换函数进行混淆变换,而没有对轮密钥进行变换(这一步留在服务端等安全环境下实现)。

除此之外,为了防止白盒攻击遭受相关能量攻击,本实施例在进行变换时采用非线性变换和线性变换相结合的方式,而不是采用单纯的线性变换。第33轮操作是本实施例新增的操作,为的是还原第32轮的操作。

白盒加密方法的置换函数也可以为多个或每轮一个,那么相应的,

T1=A1P1

T2=A1-1P2A2

T3=A2-1P3A3

...

T32=A31-1P32A32

T33=A32-1P32

步骤4:将白盒库和变换后的轮密钥Kn′传送给用户,利用SM4密钥与白盒库不结合的白盒加密算法对用户端的待加密数据进行加密,加密过程中输入明文和变换的轮密码通过查找白盒库完成加密,得到最终的密文。

在对称加密中,SM4进行32轮操作(第33轮算作第32轮的一部分,不单独算作一轮),第1轮和第32轮的操作稍微有些变化,第2轮到第32轮SM4每轮操作包括异或、非线性变换和线性变换组成的合成置换,非线性变换是8比特输入,8比特输出。

为了提高加密的速度和信息的隐藏,白盒加密的操作通过查表完成。在SM4白盒加密操作中,可以将非线性变换和线性变换合成一个表,异或操作通过查表得到。

An可以是线性变换,可以是非线性变换,也可以是线性变换和非线性变换合成的变换。以往的变换中没有过合成变换,合成变换的优点:隐藏变换中涉及的变换,增加变换的多样性,提高密钥破解的难度

为了减少查找表的存储大小,轮密钥加AddRoundKey和字节代替SubBytes不会像chow提出的固定密钥白盒一样组合变成一个查找表,而是将字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows组合变成一个表,轮密钥加AddRoundKey单独变成一个表,整个白盒加密过程采用的还是查表的方式进行。置换函数Pn在每轮中至少表示两种变换,一种是与轮密钥加的变换,一种是与字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows的组合的变换。

对于白盒库的变换函数(或称变换矩阵)An,可以是具有逆的非线性函数。

对于不同的加密算法,轮数可以不同,本发明也可以根据对应的轮数增加或减少相应的操作。

在另一个实施例中,为了防止差分计算分析(Differential Computation Analysis,DCA),进行外部编码,外部编码是在明文的输入和输出中进行编码,如把标准的SM4变为G(SM4(F-1(input),key)),F和G对攻击者是未知的。对于明文的输入(没有密钥)的情况,也要使用白盒库进行混淆操作,即省略上述的步骤1和2而直接生成白盒库,利用白盒库对待加密数据加密,进而生成密文,这种方法有可能使得DCA,不能直接进行统计分析,所以这种方法对明文操作也有很好的加密作用。

密钥不固定的对称白盒加密算法与chow等人提出的密钥固定的白盒对称算法相比,不仅实现了白盒加密的密钥隐藏,而且能让用户自己设定密钥,方便灵活,整个加密算法的加密引擎部分可以是相同的,只有加密密钥扩展生成的加密轮密钥不同,这符合物联网设备对加密算法烧制要求——大部分内容是相同,小部分不同。

在烧制时,考虑到物联网设备的存储空间的限制,可以根据存储空间的大小选择对应安全性强度的白盒加密算法。

根据本发明的另一方面,还提供了一种密钥不固定的对称白盒加密装置,包括:密钥扩展模块、密钥转换模块、白盒加密引擎模块和白盒库生成模块;其中,密钥扩展模块,用于对称加密方法中将加密密钥扩展为各轮的轮密钥Kn;密钥转换模块,用于将各轮的轮密钥Kn变换为白盒加密引擎模块中使用的密钥Kn′;白盒库生成模块,用于通过对称加密方法的置换函数Pn进行变换,生成白盒库Tn并传送给白盒加密引擎模块;白盒加密引擎模块,用于对待加密数据、密钥Kn′进行白盒加密,加密时通过白盒库Tn进行查表,并输出密文;其中,n表示对称加密方法的加密轮数。

在一个实施例中,还是以SM4为例,说明密钥不固定的对称白盒加密装置的具体工作方式。

首先在服务器端接收用户输入的密钥,并传递给密钥扩展模块,密钥扩展模块在安全可控的环境下,扩展轮密钥Kn(n表示轮数,此处为1-32)并将其送入密钥转换模块,可以直接使用对称加密方法(如SM4)自带的扩展方法。

其次,扩展后的轮密钥不直接用于加密,而是送入密钥转换模块进行变换,变换包括线性变换和非线性变换等数学运算,变换处理时的数据块大小可以是32比特,也可以是16比特或其他,变换后的轮密钥为Kn′并被送入白盒库生成模块。

接着,在白盒库生成模块中生成白盒库。具体的方式如下:对SM4生成时使用的置换函数P进行变换,设变换矩阵为A1、A2…A32,则白盒库为:

T1=A1P′

T2=A1-1PA2

T3=A2-1PA3

...

T32=A31-1PA32

T33=A32-1P

这与原SM4密钥与白盒库结合的白盒加密对应的操作相比,白盒库仅对原白盒加密算法的置换函数进行混淆变换,而没有对轮密钥进行变换(这一步留在服务端等安全环境下实现)。

为了防止白盒攻击遭受相关能量攻击,本实施例在进行变换时采用非线性变换和线性变换相结合的方式,而不是采用单纯的线性变换。第33轮操作是本实施例新增的操作,为的是还原第32轮的操作。

白盒加密方法的置换函数也可以为多个或与每轮一个(Pn),那么相应的,

T1=A1P1

T2=A1-1P2A2

T3=A2-1P3A3

...

T32=A31-1P32A32

T33=A32-1P32

最后,将白盒库和变换后的轮密钥Kn′传送给白盒加密引擎模块,利用SM4密钥与白盒库不结合的白盒加密方法对用户端的待加密数据进行加密,加密过程中输入明文和变换的轮密码Kn′通过查找白盒库完成加密,得到最终的密文。

在另一个实施例中,本装置还包括加密数据变换模块,用于将待加密的数据进行置乱变换,并将变换后的数据发送到白盒加密引擎模块,然后通过白盒加密引擎模块对变换后的数据进行白盒加密,并输出密文。这种情况针对的是用户不输入密钥的情况,即直接对待加密数据进行加密处理。这个时候,省略了密钥扩展和转换,只是生成白盒库,然后利用白盒库对待加密数据进行加密得到密文。这也充分说明了本发明的方法和装置中,白盒库完全独立于密钥,因此具有更大的灵活性。

为了减少查找表的存储大小,轮密钥加AddRoundKey和字节代替SubBytes不会像chow提出的固定密钥白盒一样组合变成一个查找表,而是将字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows组合变成一个表,轮密钥加AddRoundKey单独变成一个表,整个白盒加密过程采用的还是查表的方式进行。置换函数Pn在每轮中至少表示两种变换,一种是与轮密钥加的变换,一种是与字节替换SubBytes、列混淆MixColumns以及行移位ShiftRows的组合的变换。

最后应说明的是,以上实施例仅用以描述本发明的技术方案而不是对本技术方法进行限制,本发明在应用上可以延伸为其他的修改、变化、应用和实施例,并且因此认为所有这样的修改、变化、应用、实施例都在本发明的精神和教导范围内。

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