一种可处理大分组数据的加密方法
技术领域
本发明涉及信息安全技术领域,具体涉及一种可处理大分组数据的加密方法。
背景技术
社会的信息化是当今时代的热点问题,与之相伴的是信息产业的蓬勃发展。在这样的背景下,一方面,信息资产逐渐成为了企业的核心资产之一,另一方面,企业所需保有的信息量在逐年攀升。保障众多重要信息的机密性,涉及企业的核心利益,是意义重大的问题;而处理大量信息所需的时间、机器等开销,使得企业成本增加,因此在提供充分安全保障的同时,尽量缩减加密开销,是艰巨的挑战。
解决上述问题的关键是对称密钥加密算法;而应用最广泛的对称密钥加密算法则是分组密码,这得益于其出色的实现效率与研究透彻的安全性。分组密码算法在为用户数据提供机密性之余,还被广泛用于构造其它密码学函数如密码学杂凑函数、消息认证码等,因此是信息安全领域最重要的密码学组件之一。为满足上述安全需求,须设计效率高、安全性好的分组密码。此处安全性的含义,随需求不同而有所差异:如仅单纯保障数据的机密性,则分组密码算法只需在单一未知密钥下,表现得类似伪随机置换,即可满足需要;但若要使用分组密码构造其它算法,或要通过加密模式等具备可证明安全的结构扩展分组密码的定义域,则需要分组密码表现得类似理想的随机密码,要求其不仅在单一密钥下表现类似随机置换,还需在多个密钥下表现得类似相互独立的一族随机置换。这对分组密码的设计也是新的挑战,超出了通常理解的保密性的范畴。
分组密码通常具备相对较小的、固定的定义域——该定义域的规模称为分组长度。为加密大量数据,可考虑的选项包括使用加密模式、选择分组长度较大的特殊密码等。然而据研究,现有加密模式提供的安全强度相对较低,在攻击者能够影响部分参数的情形下,很可能不安全。而分组长度较大的、特别设计的分组密码,其分组长度通常仍然是少数固定的值,应用的灵活性仍相对较低。为弥补灵活性的缺陷,一些新提出的设计——如美国国家安全局于2013年中发布的新型SIMON与SPECK分组密码系列——包含了多个分组长度不同的算法,使得灵活性大幅增加;然而其分组长度最大仅为128比特,仍未实现在极大范围内可调的目标。这些都表明,为满足大量数据快速加密的需求,设计特别的、基于分组密码的大数据加密算法,是十分迫切的。
目前,常用的分组密码方案包括:DES、AES、SMS4、PRESENT等,在安全度方面,DES的差分/线性分析可在理论上破解,在相关密钥下不安全,实际情形下也已被穷举破解。AES对单密钥情形下的差分/线性分析有可证明的安全界,但在相关/选择密钥下安全性弱。SMS4相当于71.87%比例的轮数一倍利用线性分析理论攻破;PRESENT在单密钥情形下,约相当于83.87%比例的轮数已被利用线性分析理论攻破,但在已知密钥情形下安全性弱。上述方案中DES、SMS4与PRESENT的安全性均由后续的实际分析结论支持,实际分析时发现无法攻破完整的密码方案/无法给出实用、高效的攻击,即认为该方案实际运用时是比较安全的。然而通常的密码分析并不能全面保障方案的安全性,例如AES在设计时,特别注意了抵御差分与线性攻击,能够给出安全界的理论证明;然后后续研究发现,AES的密钥编排扩散速度相对较慢,在相关/选择密钥条件下的安全性较弱,AES-192与AES-256都已被相关密钥差分攻击理论上完全攻破,10轮AES-128则有相对复杂的已知密钥区分器,其作用虽然尚不明确,但其令人怀疑其作为理想密码运用的合理性。
为满足大量数据高效率、高安全度加密的需求,一方面要选择合适的、基于分组密码的结构(主要是域扩展方法),另一方面则要设计安全度极高的分组密码。自2004年起广泛展开的不可分辨性(indifferentiability)的研究,使得构造“理论安全”的加密结构与分组密码成为可能。某些密码学结构如基于Feistel的域扩展结构已被证明在满足某些条件时,与假想的(分组长度较大的)理想密码模型不可分别;用于构造分组密码的Even-Mansour结构也被证明与假想的理想密码模型不可分别,这些证明足以完全保证其针对所有不利用底层结构(如置换)实现细节的攻击的抵抗能力。利用这样的思想,用真正可靠的方式构造出底层结构,进而构造出分组密码,便可以进而给出高效率、高安全的大分组数据加密机制。
发明内容
针对现有技术的不足,本发明提供的一种可处理大分组数据的加密方法,能够通过改进伪随机值引入方式与轮函数本身,实现了以更低的轮数达成更高轮数的安全度的目标。
本发明的目的是采用下述技术方案实现的:
一种可处理大分组数据的加密方法,其改进之处在于,包括:
(1)选择大分组长度参数t,则明文长度为128t比特,密钥长度为128t/2比特;
(2)将明文解析为2l个128比特的状态小组(x
1,x
2...x
l,x
l+1...x
2l),将密钥解析为l个128比特的密钥小组
其中,2l=t;
(3)对所述明文的状态小组进行n轮循环加密,其中第i轮加密的输入为第i-1轮加密的输出,第1轮加密的输入为所述明文的状态小组,2≤i≤n,n为正整数。
优选的,所述步骤(3)中循环加密包括:
(3-1)将第i轮加密输入的状态小组的低位数据
作为第i轮加密输出的状态小组的高位数据
(3-2)采用加密运算对第i轮加密输入的状态小组的高位数据
进行处理,并将处理后的状态小组的高位数据作为第i轮加密输出的状态小组的低位数据
进一步的,所述步骤(3-2)包括:
(3-2-1)进行l次第一加密运算,将第l次第一加密运算的输出与其自身相连作为中间密钥,第j-1次第一加密运算的步骤包括:
分别将所述密钥小组
中第j个元素
与所述第i轮加密输入的状态小组的低位数据
中第2l+1-j个元素
相连作为第j-1次第一加密运算的密钥,即
采用分组加密算法处理第j-1次第一加密运算的密钥和j-1次第一加密运算的输入获取所述第j-1次第一加密运算的分组加密算法处理结果,其中,第j-1次第一加密运算的输入为第j-2次第一加密运算的分组加密算法处理结果与第j-2次第一加密运算的输入的异或值,第1次第一加密运算的输入为128比特随机数,2≤j≤l;
(3-2-2)进行l次第二加密运算,其中第w次第二加密运算的步骤包括:
采用分组加密算法处理中间密钥和第w次第二加密运算的输入获取第w次第二加密运算的分组加密算法处理结果,其中,所述中间密钥为第l次第一加密运算的输出与其自身相连值,所述第w次第二加密运算的输入为128比特加密常量值w;
将所述第i轮加密输入的状态小组的高位数据
中第l+1-w个元素x
l+1-w与所述第w次第二加密运算的处理结果的异或值作为第i轮加密输出的状态小组的低位数据中第2l+1-w个元素。
进一步的,所述分组加密算法包括:
将所述分组加密算法输入的256比特密钥数据分割为高位128比特数据k1和低位128比特数据k2,对128比特输入数据进行4步运算处理,获取分组加密算法处理结果,公式为:
式(1)中,m为4步运算的128比特输入数据,等于128比特明文输入数据与k1的异或值,S1、S2、S3和S4均为步函数,令a=1,2,3,4,步函数Sa的公式为:
式(2)中,
为模2
128加上k
2的加法运算,x
a为步函数的128比特输入数据,其值为:
Ps1、Ps2、Ps3和Ps4均为128比特置换函数,令t=1,2,3,4,128比特置换函数Pst的公式为:
Pst(yt)=Roundst,10(Roundst,9(Roundst,8(...Roundst,1(yt)))) (4)
式(4)中,yt为128比特置换函数的128比特输入数据,其值为:
令r=1,2...10,Roundst,r(yt)的公式为:
式(6)中,yt1为128比特输入数据yt的64比特高位数据,yt2为128比特输入数据yt的64比特低位数据,RCst,r为下标为st的128比特置换Pst在第r轮的64比特轮常量,F为轮函数,公式为:
式(7)中,z为轮函数的64比特输入数据
S
1(z)为将64比特输入数据左移1位,S
8(z)为将64比特输入数据左移8位,S
19(z)为将64比特输入数据左移19位,S
2(z)为将64比特输入数据左移2位。
优选的,所述n轮循环加密中n等于6。
与最接近的现有技术相比,本发明具有的有益效果:
(1)本发明提供的一种可处理大分组数据的加密方法能够满足未来电力系统应用环境对大分组数据加密的需求;
(2)本发明提供的一种可处理大分组数据的加密方法符合未来电力系统应用环境对数据加密算法效率的高要求,能够满足海量数据加密的需要;均基于已证明的安全紧界属一定程度上的最优设计,且分组密码基于结构简单、效率较高的ARX运算,其Feistel结构的轮函数在使用Intel处理器SSE指令实现时,只需6个CPU周期即可完成;
(3)本发明提供的一种可处理大分组数据的加密方法具备较高的灵活性与可扩展性,能够通过提供不同强度的安全性-效率折中,满足不同情形、不同等级的需求;
(4)本发明提供的一种可处理大分组数据的加密方法,具备理论上可证明的安全性;
(5)本发明提供的一种可处理大分组数据的加密方法的安全性同时得到若干实际分析结论的支持。
附图说明
图1是本发明提供的一种可处理大分组数据的加密方法流程图;
图2是本发明提供的一种可处理大分组数据的加密方法实际应用场景图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步的详细说明。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明提供了一种可处理大分组数据的加密方法,如图1所示,包括:
(1)选择大分组长度参数t,则明文长度为128t比特,密钥长度为128t/2比特;
(2)将明文解析为2l个128比特的状态小组(x
1,x
2...x
l,x
l+1...x
2l),将密钥解析为l个128比特的密钥小组
其中,2l=t;
(3)对所述明文的状态小组进行n轮循环加密,其中第i轮加密的输入为第i-1轮加密的输出,第1轮加密的输入为所述明文的状态小组,2≤i≤n,n为正整数。
其中,所述n轮循环加密中n等于6。
所述步骤(3)中循环加密包括:
(3-1)将第i轮加密输入的状态小组的低位数据
作为第i轮加密输出的状态小组的高位数据
(3-2)采用加密运算对第i轮加密输入的状态小组的高位数据
进行处理,并将处理后的状态小组的高位数据作为第i轮加密输出的状态小组的低位数据
所述步骤(3-2)包括:
(3-2-1)进行l次第一加密运算,将第l次第一加密运算的输出与其自身相连作为中间密钥,第j-1次第一加密运算的步骤包括:
分别将所述密钥小组
中第j个元素
与所述第i轮加密输入的状态小组的低位数据
中第2l+1-j个元素
相连作为第j-1次第一加密运算的密钥,即
采用分组加密算法处理第j-1次第一加密运算的密钥和j-1次第一加密运算的输入获取所述第j-1次第一加密运算的分组加密算法处理结果,其中,第j-1次第一加密运算的输入为第j-2次第一加密运算的分组加密算法处理结果与第j-2次第一加密运算的输入的异或值,第1次第一加密运算的输入为128比特随机数,2≤j≤l;
(3-2-2)进行l次第二加密运算,其中第w次第二加密运算的步骤包括:
采用分组加密算法处理中间密钥和第w次第二加密运算的输入获取第w次第二加密运算的分组加密算法处理结果,其中,所述中间密钥为第l次第一加密运算的输出与其自身相连值,所述第w次第二加密运算的输入为128比特加密常量值w;
将所述第i轮加密输入的状态小组的高位数据
中第l+1-w个元素x
l+1-w与所述第w次第二加密运算的处理结果的异或值作为第i轮加密输出的状态小组的低位数据中第2l+1-w个元素。
其中,第一加密运算和第二加密运算的分组加密算法采用的计算公式相同,仅输入量不同;
所述分组加密算法包括:
将所述分组加密算法输入的256比特密钥数据分割为高位128比特数据k1和低位128比特数据k2,对128比特输入数据进行4步运算处理,获取分组加密算法处理结果,公式为:
式(1)中,m为4步运算的128比特输入数据,等于128比特明文输入数据与k1的异或值,S1、S2、S3和S4均为步函数,令a=1,2,3,4,步函数Sa的公式为:
式(2)中,
为模2
128加上k
2的加法运算,x
a为步函数的128比特输入数据,其值为:
Ps1、Ps2、Ps3和Ps4均为128比特置换函数,令t=1,2,3,4,128比特置换函数Pst的公式为:
Pst(yt)=Roundst,10(Roundst,9(Roundst,8(...Roundst,1(yt)))) (4)
式(4)中,yt为128比特置换函数的128比特输入数据,其值为:
令r=1,2...10,Roundst,r(yt)的公式为:
式(6)中,yt1为128比特输入数据yt的64比特高位数据,yt2为128比特输入数据yt的64比特低位数据,RCst,r为下标为st的128比特置换Pst在第r轮的64比特轮常量;
F为轮函数,公式为:
式(7)中,z为轮函数的64比特输入数据S1(z)为将64比特输入数据左移1位,S8(z)为将64比特输入数据左移8位,S19(z)为将64比特输入数据左移19位,S2(z)为将64比特输入数据左移2位。
例如:采用6轮Feistel结构进行分组加密,其中,第i轮加密过程如图2所示,包括:
(1)选择大分组长度参数4,则明文长度为128*4比特,密钥长度为128*2比特;
(2)将明文解析为4个128比特的状态小组(x
1,x
2x
3,x
4),将密钥解析为2个128比特的密钥小组
(3)对所述明文的状态小组进行6轮循环加密,其中第i轮加密的输入为第i-1轮加密的输出,第1轮加密的输入为所述明文的状态小组(x1,x2x3,x4)。
所述步骤(3)中循环加密包括:
(3-1)将第i轮加密输入的状态小组的低位数据
作为第i轮加密输出的状态小组的高位数据
(3-2)采用加密运算对第i轮加密输入的状态小组的高位数据
进行处理,并将处理后的状态小组的高位数据作为第i轮加密输出的状态小组的低位数据
所述步骤(3-2)包括:
(3-2-1)进行2次第一加密运算,包括:
分别将所述密钥小组
中第1、2个元素与所述第i轮加密输入的状态小组的低位数据
中第4、3个元素相连作为第j-1次第一加密运算的密钥,即
采用分组加密算法处理第j-1次第一加密运算的密钥和j-1次第一加密运算的输入获取所述第j-1次第一加密运算的分组加密算法处理结果,其中,第j-1次第一加密运算的输入为第j-2次第一加密运算的分组加密算法处理结果与第j-2次第一加密运算的输入的异或值,第1次第一加密运算的输入为128比特随机数;
(3-2-2)进行2次第二加密运算,包括:
采用分组加密算法处理中间密钥和第1、2次第二加密运算的输入获取第2次第二加密运算的分组加密算法处理结果,其中,所述中间密钥为第2次第一加密运算的输出与其自身相连值,所述第1、2次第二加密运算的输入为128比特加密常量值1和2;
分别将所述第i轮加密输入的状态小组的高位数据
中第2、1个元素与所述第1、2次第二加密运算的处理结果的异或值作为第i轮加密输出的状态小组的低位数据中第1、2个元素,即
其中,第一加密运算和第二加密运算的分组加密算法采用的计算公式相同,仅输入量不同;
采用本发明提供的一种可处理大分组数据的加密方法进行测试,测试向量如表1,软件性能测评数据如表2;
表1 一种可处理大分组数据的加密方法测试的测试向量
0x00 00 00 00 00 00 00 00 |
0x00 00 00 00 00 00 00 00 |
0x66 2B D1 D8 19 0F 9D 64 |
0x01 23 45 67 89 AB CD EF |
0x01 23 45 67 89 AB CD EF |
0xA4 DD CE DD D5 70 07 C5 |
0x00 00 00 00 00 00 00 00 |
0x01 23 45 67 89 AB CD EF |
0xDA 2E 3A B9 72 62 DB BA |
0x01 23 45 67 89 AB CD EF |
0x00 00 00 00 00 00 00 00 |
0x2D B6 8B EA 59 70 0B 7D |
表2 一种可处理大分组数据的加密方法测试的软件性能测评数据
|
平均数据处理速率(CPU时钟周期/字节) |
加密 |
90 |
解密 |
100 |
利用RC4流密码算法生成的密钥流的前10240比特,a=1时所用的40个轮常量包括:0xdae33e7468d47db9,0x292695778c649511,0x4e63c3028cfdc904,0x8d4e48178da48dfc,0x3ce54b7cef261284,0xdd1edd4305a40d74,0xe50d88c65a74f685,0x5021d596ddf36bd5,0xc673ad834e21e71f,0xbc16d9b32ac5efd5,0xade874672315a45,0x82e2e1f04faac88e,0x30a5d9088fa6c5e1,0xfc7b8a589bf3a4ec,0xb9d8f2d16ab58c3e,0x5122258f4defb2d7,0xeda0865739c2b96,0x24898063b4b15484,0xb632783a8f429d51,0x8dbc662f064cda80,0x977a7aa544a9e7db,0xa5b43391d093c124,0xa52f50a634239f82,0x8c00143ece471b54,0x69241f1325513bbf,0x2b44eda0dcec8928,0xbbd96166def1dd52,0xa681f3194a75a9,0x99b35c40bf96387a,0x8b2b691e25b98809,0x99a295a48d40e435,0xb635752955529fed,0xb860607c5e7ebc1d,0xa56c0dba9e7ca623,0xf4e8d9b9efbc712,0x766e7d4898a415df,0x68869cdb2fc94aec,0xe3d03a090e17d503,0xd9dab0046245b661,0xc8cfff2aa74a0acd
a=2时所用的40个轮常量包括:0xfe8d7d1dc08fe6e,0xaa7e68e8a99ebaf4,0xbafdc5cff4ce5649,0x200ec87e35803920,0x17fbf1b4b14143a5,0xfe7e874b3df34bfd,0xbea5b97a3453fce9,0x4f21bcfe071719fa,0xe1167e3d48eb30c8,0x4ad3cf1b8df0e37c,0xed54b64b3264fef7,0x2b96ab67b472eda7,0x5edfa15a1f07cce4,0xa9b24bad8e9e12c5,0x9d67f65ee4784024,0xfe577f9bd3f1a396,0xda28061381856961,0xd552727baf8655c9,0x734b8e25b293df54,0x5f12137f094e0ecd,0xf9d47948bdedb27f,0x578d62b56b69041d,0x4734043833ce0b0d,0x9ced6005fbf6185a,0xd9541e76e9dfff0e,0x204ea293d1777cf,0x45007d170fccbf1a,0x429a5f4ae1bd51d0,0x728c7089289c3c15,0x816c25735938f31b,0x838751347ecea613,0x8ded485712b762d2,0xd6f32157bbf293f2,0xb291d6c3cb299862,0xde424ab35772eb45,0x9eb37e6c71176b7c,0xfa7bab2851575c04,0xb266f8a4991026b8,0x46ef775ada6fb4df,0x36b116ad00be3172
a=3时所用的40个轮常量包括:0xbb40027a00d5f3cf,0x5ef163f7b2c99f50,0x9ce825089872da1c,0x6d144eb845037a7c,0xcf6721c45226eaa8,0xd4ff59918cc7adb9,0x57e34103d9ead8c9,0x304d66fa92029739,0xb7162d5183537636,0xaf6b7172f4e2dea8,0xf578286b91ee865d,0x9c34e57f761844c7,0xcba1fcefcb6e9dbf,0x6f7ab60a6de7f146,0x5e7bcca28f7df3bf,0xcefaca2a020525b1,0xf41fad6f5b514f81,0x149550f604bedbfd,0x463dd9480de76180,0x3df59f72f23e079b,0x88a02e63af006a13,0x128cd613006e4c98,0x9c356af404198c40,0x817e676ff7a06957,0x13120ffd08c515c8,0xc40ef596ed0ba3bd,0xbb930f90a7e9216b,0xfa4640f2d8db1ada,0x70d396d5e6a532c5,0x29acda2a67cdc4aa,0xb7c862e0ff614107,0x80a343984d5a0c7a,0x897fdc54824e78c3,0xd803d76f09a9089c,0x10f5201d3c89118f,0x43487acc1a757737,0x880e9d9c84f3b861,0xaa36958139bb710d,0x99143e0453fdf987,0x31a23bf8f422dca9
a=4时所用的40个轮常量包括:0xef0a3b59641eeafe,0x3d72fb23a0022293,0xe2231b19ed200590,0xe24e040d38b96e1f,0x35b0f0d09eaa1644,0x1919e3691992e7e2,0xd3f01b6c41ff4991,0xf2d59e14ab855622,0x692f30b35bd574a6,0x7746b7a0385000bd,0xc3ddfea816b6c8d9,0xa1e9ecfb851ccf99,0x8ae4b602c598e32,0xfc85c5839036a05,0x7cd2070dee945fb6,0xbf78025a79deec40,0x3279f9571719735d,0x81a4f7377f3e7d49,0x55a303a8884bb08b,0xef2bb8f7554bbb7f,0xffa5e0ab2e96c658,0x77a2b1626fc2306d,0xf44b1b4d910c6d73,0xb05963c7560454fd,0x94145e883ef2cb21,0xe4a5060c95659689,0x12e373f0554c95d9,0x4d39468340460f37,0xafe3a013a4a0abae,0x7cb2ddcef0b635a3,0x8c4e5048f5dcff91,0xfff8ea258f3e712c,0x57db1e3284e498bb,0x387c42c33d6e5c9d,0xef4750d65cffdd5e,0x3ab2b3ec71ca048,0x393394678a251ea5,0x8c354f460fdcad74,0x193bd47e5673c852,0xdfff569359ce8d3a
经分析,本发明使用的40轮Feistel结构的置换,目前可以通过差分区分器区分的轮数约为35轮,而概率大于2-128的差分对即使存在,也很难求出;另一方面,偏差大于2-128的线性逼近至多于35轮上成立,至少在10轮以上实现输入比特的完全扩散,基于不可能差分与零相关等的区分器能运作的轮数均小于差分区分器。因此依现有技术,无法/很难构造40轮SEM128单轮结构的区分器,即,所构造的置换族{Ri}与真随机置换在现有技术条件下是不可区分的,本发明提供的方法采用4轮,一方面保证在相当长时间内对现实的理论分析的抵抗能力,另一方面减少不必要的安全余量,以增加效率。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。