本发明属于信息安全领域,特别是涉及到对系统内或系统间的数据机密性的技术。
背景技术:
分组密码具有加密速度快、安全性高、易于标准化等特点,特别是在网络日趋普及的当今,更是成为确保敏感数据机密性的一种主流加解密方法,因而广泛应用于数据的安全传输与保密存储等多个应用场合中。但是现有的分组密码仍有一个共同的缺陷,即,分析者可利用被加密分组只有有限的几个长度尺寸这一特点,将枚举分组长度尺寸与暴力破解相结合就有可能破解出明文。本发明提出了一种暴力方法不可能破解的分组密码。
技术实现要素:
本发明的目的是提供交叠分组的数据加解密方法,该交叠分组的数据加解密方法是为了解决现有分组密码输出的密文可能被暴力破解的问题。采用分组交叠的方式对各个明文分组进行两层加密,包括:(1)对两两明文分组加密形成第1层密文分组;(2)以压盖边界的方式对第1层密文分组进行加密形成第2层密文分组,并将第2层密文分组作为最终的数据密文。
本发明的技术解决方案是采用交叠的方法对数据明文中的各分组进行两层的加密,其步骤如下;
(1)对两两明文分组加密形成第1层密文分组;
(2)以压盖边界的方式对第1层密文分组进行加密形成第2层密文分组,并将第2层密文分组作为最终的数据密文。
对以上交叠的方法对数据明文中的各分组进行两层的加密步骤如下:
(1)数据的加解密双方事先共享两种已有的对称加密算法以及加解密相关素材;
(2)按单长分组长度将数据明文划分成若干个定长的分组;
(3)加密方对两两明文分组实施联合加密,生成第1层密文分组;
(4)加密方以压盖分组边界的方式对两两第1层密文分组实施联合加密,生成第2层密文分组并作为最终的密文;
(5)解密方对两两第2层密文分组实施联合解密,生成第1层密文分组;
(6)解密方对两两第1层密文分组实施联合解密,将解密结果作为最终的数据明文。
对以上步骤(1)中,选择des、3des、idea、aes、rc5、blowfish、或者rijadeal。
对以上步骤(2)中,“压盖”是指对两个相邻明文分组实施如下操作:对前一个分组的后一半内容和后一个分组的前一半内容进行联合加密从而生成一个第1层密文分组,或者,对两个相邻的第1层密文分组实施如下操作:对前一个分组的后一半内容和后一个分组的前一半内容进行联合加密从而生成一个第2层密文分组。
对以上步骤(1)中,所需的加解密素材类型有多个,包括链接操作模式、初始向量以及对称密钥,使用本方法前,加解密双方要选择一种已有方法来共享所需的加解密素材。
对以上步骤(2)中,可将单长分组的长度可以定义为32位、64位或128位,对应的倍长分组长度则为64位、128位或256位。
对以上步骤(3)中,加密方对两个相邻的明文分组实施联合加密,生成一个第1层密文分组,对后续明文分组也按此法操作直至所有明文被加密。
对以上步骤(4)中,加密方按照如下方式对两个相邻的第1层密文分组实施加密从而生成一个第2层的密文分组:使得该第2层密文分组压盖第1层两个密文分组之间的边界,其结果,第2层密文分组的中点对准第1层两个密文分组的边界。
对以上步骤(5)中,解密方将两个相邻的第2层密文分组实施联合解密,生成一个第1层密文分组,对后续的第2层密文分组也按此法操作直至所有第2层密文分组被解密。
对以上步骤(6)中,解密方将两个相邻的第1层密文分组实施联合解密,生成一个明文分组,对后续的第1层密文分组也按此法操作直至所有第1层密文分组被解密。
下文从使用前提、概念符号、核心方法、方法总结四个方面说明本发明。
1、使用前提
(1)本发明是一个复合型的分组加密算法,使用两种现有的针对单长分组与倍长分组的密码算法(单长分组与倍长分组的含义见概念符号一节)。
(2)加密方与解密方事先通过安全的通道共享两个密钥ks与kd,其中ks与kd为单长分组与倍长分组的密钥。
(3)加密方与解密方事先通过安全的通道共享两个初始向量ivs与ivd,其中ivs与ivd为单长分组与倍长分组的初始向量。
(4)加密方与解密方事先约定一种密文分组之间的链接操作模式。
(5)使用本发明时,数据明文的最小长度为64位。当数据明文长度为64位时,对应的单长分组与倍长分组的长度分别为32位与64位。
(6)当数据明文的长度不是单长分组长度的整数倍时,应当采用加解密双方约定好的填充方法对明文进行填充,使填充后的数据明文长度等于单长分组的倍数。
2、概念符号
(1)概念
分组尺寸:本发明采用两层加密的方法,其中第2层加密生成的每一个密文分组要压盖第1层两个相邻密文分组的边界,从而实现高强度的机密性。两层与交叠加密需要引入两种分组长度,即单长分组与倍长分组。如果单长分组为m比特,则倍长分组为2m比特。
层:本发明需要进行两层加密,相应地将数据分组分为三个层,即第0层分组、第1层密文分组、第2组密文分组。对所有第0层明文分组加密后生成的分组称为第1层密文分组,对所有第1层密文分组加密后生成的密文分组称为第2层密文分组。
交叠:指的是第2层密文分组压盖第1层两个密文分组之间的边界,具体地,使得第2层密文分组的中点对准第1层两个密文分组的边界。
(2)符号
表1符号约定表
(3)核心方法
本发明包含确定分组尺寸长度与密码算法、确定密文分组链接操作模式、两层分组加密、两层分组解密四个核心内容。
①确定单长分组与倍长分组的尺寸长度以及相应的密码算法。
单长分组可以选择32位、64位或128位。当单长分组尺寸确定后,则倍长分组的尺寸也就确定了,即倍长分组的尺寸是单长分组的两倍。对单长分组与倍长分组可以选择任意一种满足需求的密码算法,如表2所示。
例如,当单长/倍长分组尺寸为64/128时,可选择des/aes分别作为单长/倍长分组的密码算法。若单长/倍长分组尺寸为128/256,可选择aes/rijadeal分别作为单长/倍长分组的密码算法。
下文以单长分组为64位,而倍长分组是128位为例进行说明。
表2密码算法选择表
②密文分组链接操作模式
本发明可采用cbc、ofb、cfb、ctr中任意一种分组链接操作模式。由于存在两种不同长度的密文分组,故需要对相邻但长度不同的两个密文分组的链接向量进行匹配变换。下文以cbc操作模式为例,对两个密文分组的链接向量的匹配变换进行说明,具体分为两种情况:
情况1:单长分组在先,倍长分组在后。
此时采用“简单扩展”的方法将在先的单长密文分组扩展至倍长分组,并作为后面倍长分组加解密所需的链接向量
情况2:倍长分组在先,单长分组在后。
此时采用“简单压缩”的方法将在先的倍长密文分组压缩至单长分组,并作为后面单长分组加解密所需的链接向量
③两层分组加密
将数据明文按单长分组长度划分后生成的明文分组序列记为p=<p0,p1,p2,…>,其中pi是明文序列中第i个单长明文分组。对p的加密过程分为两层。首先使用密钥k=(ks,kd)和初始向量iv=(ivs,ivd)的对第0层明文分组序列p进行第1层加密,生成第1层密文分组序列
在对明文进行分组之后,明文分组的个数分为偶数与奇数两种情况,下面对这两种情况分别进行说明。
情况1——明文分组的个数为偶数
设明文分组序列为p=<p0,p1,p2,…,pn-1>,此时n为偶数。对该明文序列两两分组进行第一次加密后,生成了第1层密文分组序列
第1层的加密是针对明文分组,具体地,将两个相邻的单长明文分组<pj,pj+1|j=0,2,4,…,n-2>作为倍长分组密码算法的输入,最终得到第1层密文分组序列
对后续明文分组仿照此法操作,得到相应的第1层密文分组
第2层加密采用交叠分组的方式,具体地,先将
对后续明文分组仿照此法操作,得到相应的第2层密文分组
1≤i≤n/2-1
第2层的最后一个密分分组
如果将本发明的方法用于通信场合,可采用“随加随发”方式,具体地,只要生成第2层密文的条件成立,就立即生成该第2层密文分组,然后立即向解密方发送该密第2层密文。该方式能显著提高数据发送的效率。
情况2——明文分组的个数为奇数
设明文分组序列为p=<p0,p1,p2,…,pn-1,pn>,此时n为偶数。对该明文序列两两分组进行第一次加密后,生成了第1层密文分组序列
第1层的加密是针对明文分组,具体地,将两个相邻的单长明文分组<pj,pj+1|j=0,2,4,…,n-2>作为倍长分组密码算法的输入,最终得到第1层密文分组序列
对后续明文分组仿照此法操作,得到相应的第1层密文分组
第2层加密采用交叠分组的方式,具体地,先将
对后续明文分组仿照此法操作,得到相应的第2层密文分组
其中,
④两层分组解密
采用本发明得到的最终密文分组(即第2层密文分组)序列记为
在解密之前,密文分组序列u的第一个分组是单长分组,其后是若干个倍长分组,最后一个分组有单长与倍长两种不同情况,下面对这两种情况分别进行说明。
情况1——u的最后一个分组为单长分组
记第1层解密操作后的所有密文分组序列为
记第2层解密操作后的单长分组序列为q=<q0,q1,q2,…,qn-1>,其中的每个qi按如下方法计算:
由于以上两层解密都是针对倍长分组,因此,初始向量与各个链接向量的长度都等于倍长分组的长度,不存在链接向量长度的切换问题。
情况2——u的最后一个分组为倍长分组
记第1层解密操作后的所有密文分组序列为
由于以上解密都是针对倍长分组进行解密,因此,不存在链接向量长度的切换问题。
u中最后一个密文分组
由于
记第2层解密操作后的单长分组序列为q=<q0,q1,q2,…qn>,其中的每个qi按如下方法计算:
由于qn是单长分组,因此,计算qn时所需的链接向量长度也是单长分组的长度,因此,需要进行链接向量长度切换。
(4)方法总结
①本发明特点。
本发明具有以下三个特点。
第一,对分组采用了两层交叠加密,其结果是,在不知晓本方法前提下,即使密码分析者获得了加解密所得到的密钥k=(ks,kd),也只能通过暴力方法得到第1层密文分组,不可能得到最终的数据明文。
第二,采用了随加随发方式,其结果是,提高了通信的效率。
③适用场合
本发明适用于对数据具有以下机密性要求的场合:
第一,强安全性的保密通信。例如总部与分部之间的安全通信、总部与合作伙伴之间的安全通信,当然也包括个人与个人之间通过安全通道的通信。
第二,强安全性的敏感数据存储。例如u盘加密、硬盘加密、云存储加密等数据存储设备安全。
④实现提示
当所选择的单长分组与倍长分组密码算法有多种长度的密钥时,应尽可能选择较长的密钥作为本发明的两个密钥ks与kd,以加强安全性。
其次,两个密钥ks与kd和两个初始向量ivs与ivd必须通过安全通道使双方共享。然而通过安全通道共享的方法不属于本发明的内容。
发明特点
第一,对分组采用了两层交叠加密,其结果是,在不知晓本方法前提下,即使密码分析者得到加解密的密钥,通过暴力破解也不可能得到最终的数据明文。
第二,采用了随加随发方式,其结果是,提高了通信的效率。
附图说明
图1为本发明的安全模型;
图2为加密流程图;
图3为解密流程图。
具体实施方式
1、加密流程与实现方法
具体的加密过程如图2所示,对于明文分组p,以单长分组的长度尺寸为单位计算其分组个数n,并初始化三个变量,i=0,c存放第1层的密文分组,c存放第2层的密文分组。其中变量i是用于密文分组的数组的下标变量,因为数组的第一个元素以及第一个分组的编号都是从0开始,所以给其初始值为0。数组p为存放明文分组的数组,数组里的每一元素都存放明文的一个单长的分组,而c则存放第1层的密文分组的数组,每一个元素存放第1层密文的一个密文分组,c则存放第2层的密文分组的数组,每一个元素存放第2层密文的一个密文分组。
整个加密过程不管是单长分组的个数是奇数,还是偶数,前面部分的分组加密过程是一样的,只有最后一次加密有差异,因此,可以把整个的加密过程分成两个部分。通过i来进行区分,如果i<n/2,则进入的是前一部分分组的加密,否则就进入最后的明文分组加密。
先处理p0与p1两个明文分组的加密,首先需要判断i是否为0,判断的条件为真则需要加密p0与p1两个明文分组,具体的过程为,
然后再进行第2层的密文加密,算出
当i<n/2的所有单长明文分组的加密都是一样的,其中第2i个与第2i+1个单长的明文分组加密具体操作为:首先进行第1层的密文加密,第1层后续的密文分组
第2层的加密密文
当变量i=n/2时,此时就进入了最后一个单长分组或最后一次的加密,其过程为先用分组的个数n是否能被2整除,如果能整除,说明现在加密的是偶数个单长明文分组,否则,说明是奇数个单长明文分组。如果为偶数个分组,则使用单长加密算法计算
如果是奇数单长分组,最后一个第1层密文分组
而第2层的最后为
从而完成所有的加密操作。
2、解密流程与实现方法
整个解密的流程如图3所示,首先初始化几个变量:i、ui、ui、qi。变量i是分组的序号,变量ui为接收到的对方的密文,ui存放第一次解密的密文,qi存放的是解密之后的明文。
首先判断i是否小于n/2,如果条件为真,则收到对方发过来的密文不是最后一次的密文分组,否则就是最后一次加密的密文分组。
刚开始解密时,i是为0,所以首先要解密的是收到前两个密文分组,从收到的前面两个密文分组中解密出
其中ivd为倍长解密算法的初始向量。后续的解密是一样的,直到i<n/2,即:
变量i自增至n/2时,也就意味着最后解密操作,首先判断接收到的密文u的分组长度是否为128位,条件为真则说明是奇数个单长分组进行解密,否则为偶数个单长分组的解密。如果是奇数个单长分组的解密,则先解出密文分组
再通过
如果是偶数个单长分组的解密,则先进行第一次解密操作,即:
再通过
从而完成整个的解密操作。