对称块加密方法、装置、设备及介质与流程

文档序号:17480725发布日期:2019-04-20 06:25阅读:172来源:国知局
对称块加密方法、装置、设备及介质与流程

本发明涉及信息安全技术领域,具体而言,涉及一种对称块加密方法、装置、设备及介质。



背景技术:

数据加密是信息安全领域的核心技术,包括对称秘钥体系和公钥密码体系。对称秘钥体系主要分为:对称块加密和对称流加密体系。

标准对称块加密算法的基本步骤是:将原文按照固定长度进行拆分,末尾不足则进行填充,填充完成后将块原文与秘钥进行特殊加密算法处理,获取到加密密文。其中cbc模式(密码分组链接模式)时需要iv(初始化向量)参与第一次块加密,随后将第一次块加密结果与第二次块加密原文异或作为加密原文进行块加密,以此类推,最后获取加密结果。

标准对称块解密算法即是将加密算法进行逆运算获取分块加密结果拼接。

在研究过程中发现,现有的对称块加密存在下列的缺点:

1、由于块加密算法必须以固定块为单位进行加密,因此,块加密若要实现更新则必须先解密出原文进行拼接,在此过程中,如果使用标准对称块加密算法对更新后的原文进行加密,将会导致内存中出现原文信息,增加了原文泄露的风险。

2、由于块加密算法缺少解密结果的校验过程,若对称加密秘钥或密文被污染,也可以使用对称块解密算法正常进行解密运算,且难以判断解密结果是否正确。



技术实现要素:

本发明提供了一种对称块加密方法、装置、设备及介质,以至少解决相关技术中使用标准对称块加密算法加密原文导致的泄漏风险大的问题。

第一方面,本发明实施例提供了一种对称块加密方法,包括:

获取原文;

按照对称块加密算法的加密块长度,将所述原文分组为n组原文;

获取长度与所述加密块长度相同的随机数;

将所述随机数分别与所述n组原文中的每组原文按位异或为n组异或原文;

将第1组异或原文异或初始化向量再异或所述随机数后,再加密为第1组加密密文;将第i组加密密文异或第i+1组异或原文再异或所述随机数后,再加密为第i+1组加密密文;生成加密结果;

其中,i=1,2,3…n-1,n为所述多组异或原文的分组数量。

第二方面,本发明实施例提供了一种对称块加密装置,所述装置包括:

第一获取模块,用于获取原文;

分组模块,用于按照对称块加密算法的加密块长度,将所述原文分组为n组原文;

第二获取模块,用于获取长度与所述加密块长度相同的随机数;

加密模块,用于将所述随机数分别与所述n组原文中的每组原文按位异或为n组异或原文;将第1组异或原文异或初始化向量再异或所述随机数后,再加密为第1组加密密文;将第i组加密密文异或第i+1组异或原文再异或所述随机数后,再加密为第i+1组加密密文;生成加密结果;

其中,i=1,2,3…n-1,n为所述多组异或原文的分组数量。

第三方面,本发明实施例提供了一种对称块加密设备,包括:至少一个处理器、至少一个存储器以及存储在所述存储器中的计算机程序指令,当所述计算机程序指令被所述处理器执行时实现第一方面所述的方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序指令,当所述计算机程序指令被处理器执行时实现第一方面所述的方法。

通过本发明实施例提供的对称块加密方法、装置、设备及介质,采用获取原文;按照对称块加密算法的加密块长度,将所述原文分组为n组原文;获取长度与所述加密块长度相同的随机数;将所述随机数分别与所述n组原文中的每组原文按位异或为n组异或原文;将第1组异或原文异或初始化向量再异或所述随机数后,再加密为第1组加密密文;将第i组加密密文异或第i+1组异或原文再异或所述随机数后,再加密为第i+1组加密密文;生成加密结果;其中,i=1,2,3…n-1,n为所述多组异或原文的分组数量的方式,解决了使用标准对称块加密算法加密原文导致的泄漏风险大的问题,降低了块加密过程中原文泄漏的风险。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的对称块加密方法的流程图;

图2是根据本发明实施例的对称块加密装置的结构框图;

图3是根据本发明实施例的对称加密设备的硬件结构示意图;

图4是根据本发明优选实施例的对称块加密方法的流程图。

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例,为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细描述。应理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。对于本领域技术人员来说,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明更好的理解。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

在本实施例中提供了一种对称块加密方法,图1是根据本发明实施例的对称块加密方法的流程图,如图1所示,该流程包括如下步骤:

步骤s101,获取原文;

步骤s102,按照对称块加密算法的加密块长度,将所述原文分组为n组原文;

步骤s103,获取长度与所述加密块长度相同的随机数;

步骤s104,将所述随机数分别与所述n组原文中的每组原文按位异或为n组异或原文;

步骤s105,将第1组异或原文异或初始化向量再异或所述随机数后,再加密为第1组加密密文;将第i组加密密文异或第i+1组异或原文再异或所述随机数后,再加密为第i+1组加密密文;生成加密结果;

其中,i=1,2,3…n-1,n为所述多组异或原文的分组数量。

通过上述步骤,在步骤s105中进行对称块加密的过程中,被加密的加密原文是经过原文与随机数异或之后得到的异或原文,因此在加密过程中内存中不会出现原文,降低了原文泄漏的风险。

为了进一步降低对称块加密过程中的原文泄漏风险,上述步骤s101~步骤s104可以在受到保护的设备(例如数字安全卡)中执行。

可选地,按照对称块加密算法的加密块长度,将所述原文分组为多组原文包括:在所述多组原文中最后一组原文的长度小于所述加密块长度的情况下,在所述最后一组原文的末尾填充1或0,以补齐不足的长度。

由于现有的标准对称块加密算法无法校验解密结果是否正确,为了解决上述问题,可选地,在本实施例中,对加密原文进行了修改:在获取原文之前,获取输入数据;该输入数据是原本需要加密的明文;计算所述输入数据的摘要;将所述输入数据和所述摘要组合为所述原文。通过上述方式,在原文中嵌入摘要,使得解密结果可以利用摘要来验证其输入数据是否正确。上述摘要可以采用公知的任一种摘要信息算法来计算。

可选地,将所述输入数据和所述摘要组合为所述原文包括:将输入数据长度字段、所述输入数据、摘要长度字段和所述摘要组合为所述原文;其中,所述输入数据长度字段的长度为第一预设长度,其值为所述输入数据的长度值;所述摘要长度字段的长度为第二预设长度,其值为所述摘要的长度值。在上述方式中,一旦输入数据长度字段、所述输入数据、摘要长度字段和所述摘要的组合顺序,以及输入数据长度字段和摘要长度字段的长度为已知信息,则在解密得到解密结果后,就可以根据已知的组合顺序以及字段长度,在相应的解密结果中获取到输入数据和摘要,进而利用摘要来验证输入数据是否正确。

可选地,所述摘要的长度与所述加密块长度相同,在这种情况下,摘要可以放在一个加密块中加密。此时,将所述输入数据和所述摘要组合为所述原文时,可以将所述摘要拼接到所述输入数据的头部或者尾部,以组合为所述原文。通过上述的方式,在解密密文得到解密结果后,可以直接从第一个解密块或者最后一个解密块中得到摘要,提高了处理效率。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

在本实施例中还提供了一种对称块加密装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”或者“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的对称块加密装置的结构框图,如图2所示,该装置包括:

第一获取模块21,用于获取原文;

分组模块22,用于按照对称块加密算法的加密块长度,将所述原文分组为n组原文;

第二获取模块23,用于获取长度与所述加密块长度相同的随机数;

运算模块24,用于将所述随机数分别与所述n组原文中的每组原文按位异或为n组异或原文;

加密模块25,用于将第1组异或原文异或初始化向量再异或所述随机数后,再加密为第1组加密密文;将第i组加密密文异或第i+1组异或原文再异或所述随机数后,再加密为第i+1组加密密文;生成加密结果;

其中,i=1,2,3…n-1,n为所述多组异或原文的分组数量。

可选地,所述装置还包括:

第三获取模块,用于获取输入数据;

计算模块,用于计算所述输入数据的摘要;

组合模块,耦合至第三获取模块和计算模块,用于将所述输入数据和所述摘要组合为所述原文。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述模块分别位于多个处理器中。

另外,结合图1描述的本发明实施例的对称块加密方法可以由对称块加密设备来实现。图3示出了本发明实施例提供的对称块加密设备的硬件结构示意图。

对称块加密设备可以包括处理器31以及存储有计算机程序指令的存储器32。

具体地,上述处理器31可以包括中央处理器(cpu),或者特定集成电路(applicationspecificintegratedcircuit,asic),或者可以被配置成实施本发明实施例的一个或多个集成电路。

存储器32可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器32可包括硬盘驱动器(harddiskdrive,hdd)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(universalserialbus,usb)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器32可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器32可在数据处理装置的内部或外部。在特定实施例中,存储器32是非易失性固态存储器。在特定实施例中,存储器32包括只读存储器(rom)。在合适的情况下,该rom可以是掩模编程的rom、可编程rom(prom)、可擦除prom(eprom)、电可擦除prom(eeprom)、电可改写rom(earom)或闪存或者两个或更多个以上这些的组合。

处理器31通过读取并执行存储器32中存储的计算机程序指令,以实现上述实施例中的任意一种对称块加密方法。

在一个示例中,对称块加密设备还可包括通信接口33和总线30。其中,如图3所示,处理器31、存储器32、通信接口33通过总线30连接并完成相互间的通信。

通信接口33,主要用于实现本发明实施例中各模块、装置、单元和/或设备之间的通信。

总线30包括硬件、软件或两者,将对称块加密设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(agp)或其他图形总线、增强工业标准架构(eisa)总线、前端总线(fsb)、超传输(ht)互连、工业标准架构(isa)总线、无限带宽互连、低引脚数(lpc)总线、存储器总线、微信道架构(mca)总线、外围组件互连(pci)总线、pci-express(pci-x)总线、串行高级技术附件(sata)总线、视频电子标准协会局部(vlb)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线30可包括一个或多个总线。尽管本发明实施例描述和示出了特定的总线,但本发明考虑任何合适的总线或互连。

该对称块加密设备可以基于获取到的数据,执行本发明实施例中的对称块加密方法,从而实现结合图1描述的对称块加密方法。

另外,结合上述实施例中的对称块加密方法,本发明实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种对称块加密方法。

为了使本发明实施例的描述更加清楚,下面结合优选实施例进行描述和说明。

本优选实施例提供了一种对称块加密方法,在本优选实施例中,针对块加密算法数据更新必须解密原文的问题,修改算法实现在不解密原文情况下实现块加密更新,本优选实施例还实现了能够判断对称解密结果是否正确的技术效果。

本优选实施例尤其适用于需要动态更新数据的加密场景,例如密码键盘的字符输入过程中的加密等。

参考图4,本优选实施例的对称块加密方法包括如下步骤:

步骤1:对输入原文进行消息摘要运算,将数据按照输入原文长度+输入原文+摘要长度+摘要的方式进行拼接作为加密原文。

步骤2:生成与加密块长度相同的随机数;

步骤3:将随机数与加密原文位异或,若原文长度大于随机数长度,则超出部分继续与随机数进行异或,以此类推;

步骤4:将异或后的加密原文进行加密,第一组数据加密时,将原算法的“原文异或初始化向量”修改为“原文异或初始化向量异或随机数”,第二组数据加密时。将原算法的“第一组密文异或第二组原文”修改为“第一组密文异或第二组原文异或随机数”;

例如:

设:原文为按照预定的加密块长度分组成的多组p1,p2,p3...,随机数为s,初始化向量为iv,v为异或后加密块,e为加密密文,box为加密算法,则

v=p^s

如果采用标准加密算法:

e1=box(p1^iv);即将原文数据块p1与初始化向量iv异或后得到的数据(即第1组异或原文)进行加密,得到加密密文e1;

e2=box(e1^p2);即将加密密文e1与原文数据块p2异或后得到的数据(即第2组异或原文)进行加密,得到加密密文e2;

后续加密过程与e2的加密方法相同,直至全部数据加密完毕。

采用本优选实施例的加密算法:

e1=box(v1^iv^s);

e2=box(e1^v2^s);

后续加密过程也与e2的加密方法相同,直至全部数据加密完毕。

由于p^s^s=p,则box(p1^iv)=box(p1^s^iv^s)=box(v1^iv^s)。

可见采用本优选实施例的加密算法在加密过程中不出现原文(p1,p2,p3…),但异或原文与原文保持一致,两个加密算法得到的加密结果(e1,e2,e3…)与标准加密算法保持一致,可以由标准解密算法解密。

步骤5:获取加密结果;

步骤6:将加密结果使用标准算法进行解密后根据拼接规则获取输入原文及原文摘要,对输入原文进行摘要运算并与解密出摘要进行对比,若一致则表示解密成功。

采用以上在算法中增加随机数变量和摘要运算的机制,即可实现在对称加密过程中不出现明文的情况下更新加密数据,保证解密运算结果正确。

此外,由于p^s^s=p,因此,在本发明实施例的块加密过程中,可以随时更新随机数s,以实现安全性的提升。

例如,通过本发明实施例实现加密数据在不解密原文的情况下实现更新,流程包括如下步骤:

步骤1,生成与iv长度相同的随机数s,假设s的长度为16分为记为s1,s2,s3,…,s16;

步骤2,输入第一位数据p1长度为1,将数据p1与s1异或,得到r1。将r1保存;

步骤3,输入第二位数据p2长度为2,将数据p2与s2异或,得到r2。异或原文变为r1+r2;

步骤4,如果要更新随机数,则生成新随机数sn,sn长度也为16分,别记为sn1,sn2,…,sn16;

步骤5,将r1,r2分别异或s1,s2再分别异或sn1,sn2,则实现更新随机数s为sn;

步骤6,采用新的随机数sn继续对p3…加密。

当输入数据长度大于16时,即原文长度大于块加密长度,则根据块机密算法的规则,则将超出16(一个加密块的长度)但不超出32(两个加密块的长度)部分的数据pn与s(n%16)进行异或;

全部数据输入完成后r1,r2,…,rn,…即为异或后的原文。然后再进行块加密运算。上述算法中,在加密过程中不出现原文。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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