一种自动检索密钥和选择算法的加解密方法

文档序号:7821605阅读:246来源:国知局
一种自动检索密钥和选择算法的加解密方法
【专利摘要】本发明公开了一种自动检索密钥和选择算法的加解密方法,包括步骤一、生成加密对象所使用的密钥库;步骤二、提取被加密对象的数据特征,得到经过处理后的数据首字节;步骤三、依据提取的数据特征自动检索密钥库;步骤四、依据数据特性选择加密算法;步骤五、依据不同的加密场景自定义增订扩充方案;步骤六、对被加密对象进行加解密运算。本发明在现行加密算法的基础上,采用密钥库替代传统的单一密钥,增强了密钥管理的安全性,依据数据特征选取密钥,并选择适当的加密算法发挥最佳的加密性能,能够支持增订扩充方案以满足特定的加密场景,因此,该方法具有很强的实用性和适应性,具有很广泛的应用场景。
【专利说明】—种自动检索密钥和选择算法的加解密方法

【技术领域】
[0001]本发明属于数据加密安全【技术领域】,具体是一种自动检索密钥和选择算法的加解密方法。

【背景技术】
[0002]现有的常用加密算法,有DES(全称为:Data Encrypt1n Standard)、AES(全称为:Advanced Encrypt1n Standard)、RC4 (也称为 ARC4, Alleged RC4)和 RSA,其中 RSA 公钥加密算法是1977年由罗纳德.李维斯特(Ron Rivest)、阿迪.萨莫尔(Adi Shamir)和伦纳德.阿德曼(Leonard Adleman) 一起提出的,RSA是他们三人姓氏开头字母拼在一起组成的。
[0003]现有的常用加密算法各有各的优劣点,DES和AES算法复杂度高,安全级别虽然能够保障,但其基于数据块的特点,使它存在盲区:无法对长度小于数据块单元大小的数据直接进行加密,DES算法的数据块单元大小为64bit、AES算法的数据块单元大小为128bit ;且当数据长度不是数据块单元大小的整数倍时,需要借助填充和附加信息来完成加密;
[0004]RC4算法复杂度低,可以适用于任意长度的数据进行加密,且数据越长,安全级别越高,但其基于异或加密的特点,使得它在加密少量数据时安全系数很低;
[0005]RSA算法是非对称加密算法,他的优点是加密和解密的密钥分离,可以有效的提高安全级别,但其基于大数分解的原理,使它只能用于少量数据的加解密,当数据长度足够大时,运算速度将成指数增长。
[0006]同时,以上加密算法均使用单一的密钥,适用于数据在传输过程中加密,加密频率少且即时解密,无需长时间保存密钥的情况。
[0007]然而,当大量数据需要加密后存储时,加密对象的数据结构复杂多变,且延时解密,需要长时间保存密钥。单一的加密算法就无法满足多变的数据结构,采用唯一的密钥加密,将使得长时间存储该密钥存在安全隐患。因此如何有效的选择加密算法并管理密钥成为一个亟待解决的难题。


【发明内容】

[0008]本发明针对如何将有效的检索密钥和选择算法结合到对存储的数据加密的问题,提供了一种自动检索密钥和选择算法的加解密方法。
[0009]具体步骤包括生成密钥库,提取数据特征,自动检索密钥库,选择加密算法,增订扩充方案和加解密运算。
[0010]步骤一、生成加密对象所使用的密钥库;
[0011]密钥库是将所有用于加密、解密的密钥,通过特殊的抽号算法将钥头和钥齿有机的整合在一起,形成一个易于检索的密钥库整体,用于根据数据的特征来检索密钥。
[0012]生成密钥库的处理方法是:密钥按序号有序排列,将加密密钥和解密密钥设定成一对密钥,将一定数量的成对密钥,依照特定的映射关系,组合在一起形成密钥库,密钥库的容量依照实际需要设定大小。
[0013]步骤二、提取被加密对象的数据特征,得到经过处理后的数据首字节;
[0014]被加密对象的数据采用比特位乱序的方法,对数据内容实施部分乱序,将散布的多字节位的数据特征集中到首字节,形成该数据的特征码。
[0015]步骤三、依据提取的数据特征自动检索密钥库;
[0016]依据提取数据特征后的首字节和密钥库的序号是一一对应的关系,用首字节的值作为检索密钥库的序号,去自动检索密钥库中该序号的密钥,从而选定密钥,作为加解密所使用的密钥。
[0017]步骤四、依据数据特性选择加密算法;
[0018]根据实际的加密场景和加密对象的数据特征来选择适当的加密算法。
[0019]步骤五、依据不同的加密场景自定义增订扩充方案;
[0020]针对数据加密前后等长和可变长两种适用场景设计了两种扩充方案;
[0021 ] 当加密场景要求加密后的密文,保持原有的数据长度时,采用RC4算法或者AES算法,对AES算法来说,当加密数据不是128bit的整数倍时,加密方法为:先对加密数据前面长度是128bit整数倍的明文做AES加密后,从明文的前边密文的末尾,取适当长度,和明文不足128bit的部分补齐128bit,再做一次AES加密。
[0022]当加密场景允许加密后的密文,长度可变时,对于AES算法,则对明文末尾进行填充,补齐128bit的整数倍,填充的内容为缺少长度的值。
[0023]步骤六、对被加密对象进行加解密运算;
[0024]所述的加密运算采用自动检索到的密钥和自动选择的加密算法,对被加密对象进行提取数据特征和增订扩充方案操作后的数据进行加密运算;
[0025]对密文进行解密运算,再对解密后的数据执行增订扩充方案和提取数据特征的逆操作,还原出原始数据的解密运行。
[0026]根据步骤二提取的加密对象的数据特征,作为检索密钥库序号的首字节,在加解密运算中,和被检索得到的密钥的钥头,进行异或运算,得到加解密后的首字节。其余部分字节,在加解密运算中,将被检索得到的密钥的钥齿作为运算密钥,采用被选择的算法,进行加解密运算,得到加解密后的其余部分字节。
[0027]本发明的优点在于:
[0028](I) 一种自动检索密钥和选择算法的加解密方法,涉及对敏感信息的加解密,并具备良好的扩展性,可以适用于任意长度的各类数据结构的敏感信息。
[0029](2) 一种自动检索密钥和选择算法的加解密方法,可以结合多种加密算法及其扩展,提高安全性。
[0030](3) 一种自动检索密钥和选择算法的加解密方法,在已有的著名加密算法上,引入了密钥库,替代传统的唯一密钥,提高了数据加密的安全性;
[0031](4) 一种自动检索密钥和选择算法的加解密方法,根据数据的结构特征,自动选择不同的加密算法,以发挥算法的优势达到最佳的加密性能和安全级别。
[0032](5) 一种自动检索密钥和选择算法的加解密方法,基于本方法的设计依据,可以有效的进行扩展,能够适用于诸多有特殊要求的加解密场景,具备良好的可移植性。

【专利附图】

【附图说明】
[0033]图1为本发明一种自动检索密钥和选择算法的加解密方法流程图;
[0034]图2为本发明生成具有映射关系的密钥库序号采取的方法示意图;
[0035]图3为本发明依据密钥库序号生成密钥的示意图;
[0036]图4为本发明提取数据特征的比特位乱序方法示意图;
[0037]图5为本发明加密运算的示意图;
[0038]图6为本发明解密运算的示意图。

【具体实施方式】
[0039]下面将结合附图和实施例对本发明作进一步的详细说明。
[0040]本发明一种自动检索密钥和选择算法的加解密方法,具体是一种根据敏感信息特征检索密钥库中的密钥并选择加密算法来进行加解密的方法。
[0041]具体步骤如下:如图1所示,包括生成密钥库,提取数据特征,自动检索密钥库,选择加密算法,增定扩充方案以及相对应的加解密运算。
[0042]步骤一、生成加密对象所使用的密钥库,
[0043]单独的一把密钥由钥头和钥齿两部分组成,钥头是依据映射关系,抽象出的一个标记,钥齿部分是加解密算法的有效密钥部分,随机生成或者人为设定;钥齿的长度和值依据所用算法决定:对称算法成对的钥齿相同,非对称算法成对的钥齿分别为公钥和私钥。
[0044]密钥库是将所有用于加密、解密的密钥,通过特殊的抽号算法将钥头和钥齿有机的整合在一起,形成一个易于检索的密钥库整体,用于根据数据的特征来检索密钥。数据特征主要指数据类型、长度、数据值和意义。
[0045]密钥库本身为人工设定或者随机生成。
[0046]具体的密钥库生成的方法是:将加密密钥和解密密钥设定成一对密钥,在对称加密算法中,加密和解密的密钥是相同的,在非对称加密算法中,加密和解密的密钥则不相同。将一定数量的成对密钥,依照特定的映射关系,组合在一起形成密钥库,密钥库的容量依照实际需要设定大小。最终生成的密钥库,密钥按序号有序排列,且不重复的两两互为一对密钥,呈一一对应的满射关系。
[0047]本发明以数据库容量为128对密钥为例,采用的映射关系基于异或的原理,具体提供了一种能够随机生成包含映射关系的密钥库的方法,将256把密钥设定成是有序排列的一系列密钥,每把密钥都有唯一的一个序号;成对密钥的两个序号异或的值,作为这对密钥的钥头,通过钥头相互映射,任意一把密钥的序号和它的钥头异或,结果为另一把密钥的序号。
[0048]具体的步骤如下:
[0049]步骤101:为加密对象预创建一个大小为256*17字节的二维数组的密钥库;
[0050]如图2所示,256为密钥库的容量,17为密钥长度,包含I个字节的钥头和16字节的钥齿。
[0051]步骤102:生成密钥库中第一对密钥的序号;
[0052]在一个以序号为元素的数组S中,数组S初始大小为256,初始值依次为O到255,首先随机抽取一对密钥的一个序号:抽取的方法为生成一个随机数Random,对当前数组大小256取模,例如取模后值为0x02,则将S数组中下标为0x02的元素,作为第一个序号,标记为序号0x02。然后将该序号从序号数组S中剔除,数组大小变为255。
[0053]抽取该对密钥的另一个序号,抽取的方法为再生成一个随机数Random,对当前数组大小255取模,例如取模后值为0x90,则将S数组中下标为0x90的元素,作为另一个序号,标记为序号0x91,因为序号0x02已经被抽掉了,并将序号0x91从序号数组S中剔除,数组大小变为254。
[0054]步骤103:将第一对密钥序号生成一对密钥;
[0055]如图3所示,步骤102中已经生成一对序号0x02和0x91,则序号作异或运算后的结果0x93,作为序号为0x02和0x91的密钥的钥头,再随机生成一个长度为128bit的密钥128bit_randomkeys作为0x02和0x91的密钥的钥齿,本发明选择对称加密算法RC4和AES,且共用一个密钥库,故该对密钥的钥齿是相同的,也即加密和解密使用相同的密钥,如果选择RSA非对称加密算法,则序号为0x02和0x91的钥齿部分,分别为公钥和私钥。
[0056]步骤104:重复步骤102和103,随机生成剩余的密钥,总计生成128对密钥。
[0057]步骤二、提取被加密对象的数据特征,得到经过处理后的数据首字节;
[0058]自动检索密钥的依据是基于数据特征的数据值,数据特征的数据值是指数据的二进制形式。对于数据内容为可见字符的形式,数据特征局限于可见字符的ACK(Acknowledgement)码,其特征不明显,因此需要采取某种方法,让该数据更具有个性化。
[0059]本发明采取的方法是对数据内容实施部分乱序,将散布的多字节位的数据特征集中到首字节,形成该数据的特征码来检索密钥。
[0060]提取数据特征的处理方法是比特位乱序方法,包含但不局限于比特位的乱序,如图4所示,该方法的步骤为:
[0061]步骤201:对数据长度大于4字节的数据,作比特位乱序处理,本方法以数字1963xxxx为例,结合ASCII码表可得,前四个字节十六进制表示为0x31393633。
[0062]步骤202:将第一字节的第1、2比特位00和第二字节的第5、6比特位10互换;将第一字节的第3、4比特位11和第三字节的第6、7比特位10互换;将第一字节的第5、6比特位00和第四字节的第7、8比特位11互换;保留第一字节的第7、8比特位01不变。
[0063]步骤203:互换后的数据十六进制表示为0xad313730,乱序后的数据首字节Oxad即为提取被加密对象的数据特征,更能表现该数据1963XXXX的特征,从而在检索密钥时,能够检索到序号为Oxad的密钥。
[0064]若不作数据特征提取,则以数字开头的数据,只可能检索到序号为0x30到0x39的密钥。
[0065]综上,被加密对象的数据特征,结果为乱序后的数据首字节;
[0066]步骤三、依据提取的数据特征自动检索密钥库;
[0067]依据提取数据特征后的首字节和密钥库的序号是一一对应的关系,用首字节的值作为序号去自动检索密钥库的序号,从而选定密钥。
[0068]步骤四、依据数据特性选择加密算法;
[0069]根据实际的加密场景来选择适当的加密算法,本发明选择的加密对象的数据特征是数据长度,采取的方法是依据数据的长度来自动选择加密算法。
[0070]本发明以AES算法和RC4算法进行说明,AES算法加密强度高,但不能适用于长度小于128bit的数据,因此当数据长度小于128bit时,采用RC4算法,当数据长度大于128bit时,采用AES算法加密,AES算法和RC4算法共用一组密钥库或者分别使用一组密钥库。本发明中RC4算法,不能反推密钥,因此共用同一组密钥即可。
[0071]由于不同的加密算法各有利弊,因此根据数据的特性来选择加密算法,从而发挥最佳的加密性能;
[0072]步骤五、依据不同的加密场景自定义增订扩充方案;
[0073]某些特殊的加密场景对加密过程有特殊的要求,为了适应不同的加密场景,自定义扩充方法满足加密需要。
[0074]本发明分别针对数据加密前后等长和可变长两种适用场景,分别设计了两种扩充方案。
[0075]当加密场景要求加密后的密文,保持原有的数据长度时,对于RC4算法来说,本身就是等长加密,对于AES算法,要求加密长度是128bit的整数倍,因此当加密数据不是128bit的整数倍时,加密方法为:先对加密数据前面长度是128bit整数倍的明文做AES加密后,从明文的前边密文的末尾,取适当长度,和明文不足128bit的部分补齐128bit,再做一次AES加密。
[0076]当加密场景允许加密后的密文,长度可变时,对于AES算法,则对明文末尾进行填充,补齐128bit的整数倍,填充的内容为缺少长度的值,例如缺少8Byte则填充8个0x08,这样即便数据小于128bit,也无需采用低强度的RC4算法,提高整体的安全性能。
[0077]步骤六、对被加密对象进行加解密运算;
[0078]加解密运算包括加密运算和解密运算;
[0079]所述的加密运算采用自动检索到的密钥和自动选择的加密算法,对被加密对象进行提取数据特征和增订扩充方案操作后的数据进行加密运算;
[0080]对密文进行解密运算,是对解密后的数据执行增订扩充方案和提取数据特征的逆操作,还原出原始数据的解密运行。
[0081]以原始数据为1963xxx...共24字节等长加解密为例,该方法的步骤为:
[0082]步骤601:进行加密运算,如图5所示,被加密对象的原始数据长度大于4字节,先进行提取数据特征,采用比特位乱序方法,乱序后数据变为0Xad313730XXXX...共24字节。
[0083]步骤602:根据首字节的值Oxad,检索密钥库中序号为Oxad的密钥,假定密钥库中,序号Oxad和序号OxOl为一对密钥,将两个序号转换成二进制后进行异或运算,得到异或值Oxac,作为钥头,钥齿为预先生成的随机数128bit_randomkeys。
[0084]步骤603:数据长度为24字节,大于16字节,选择AES加密算法,将数据的首字节Oxad和密钥的钥头Oxac异或,得到密文的首字节0x01,将数据除首字节外的16字节的整数倍,用钥齿128bit_randomkeys作为AES密钥,进行AES算法加密。
[0085]步骤604:原始数据末尾还有7个字节未被加密,属于明文;从步骤603进行加密后的数据末尾,取出9字节密文,和原始数据的7个字节明文,补齐16字节,再一次使用钥齿128bit_randomkeyS做AES加密,得到最终的24字节密文;加密运算完成。
[0086]步骤605:进行解密运算,如图6所示,加密后的数据密文为24字节的密文,首先根据密文的首字节0x01,在密钥库中检索到序号为0x01的密钥,则钥头为Oxac,钥齿为预先随机生成的128bit_randomkeys。
[0087]步骤606:密文长度为24字节,选择AES算法进行解密,除首字节外其他23字节不是16的整数倍,则首先对密文最末尾16字节,用钥齿128bit_randomkeys进行AES解密,得到末尾9字节密文和7字节的原始数据。
[0088]步骤607:将加密后的数据密文首字节0x01和钥头Oxac异或,得到原始数据的首字节Oxad,将加密后的数据密文除首字节0x01外的16字节的整数倍,用钥齿128bit_randomkeys作为AES密钥,进行AES算法解密,得到中间段16字节的原始数据。
[0089]步骤608:数据长度大于4字节,还需执行提取数据特征的逆操作,对前4个字节0xad313730作逆比特位乱序,得到原始数据的前4个字节0x31393633。得到最终的24字节原始数据。
[0090]本发明提供的自动检索密钥和选择算法的加解密方法,在现行加密算法的基础上,采用密钥库替代传统的单一密钥,增强了密钥管理的安全性,依据数据特征选取密钥,并选择适当的加密算法发挥最佳的加密性能,能够支持增订扩充方案以满足特定的加密场景,因此,该方法具有很强的实用性和适应性,具有很广泛的应用场景。
【权利要求】
1.一种自动检索密钥和选择算法的加解密方法,其特征在于:具体包括以下步骤, 步骤一、生成加密对象所使用的密钥库; 密钥按序号有序排列,将加密密钥和解密密钥设定成一对密钥,将成对密钥,依照映射关系,组合在一起形成密钥库; 步骤二、提取被加密对象的数据特征,得到经过处理后的数据首字节; 被加密对象的数据采用比特位乱序的方法,对数据内容实施部分乱序,将散布的多字节位的数据特征集中到首字节,形成该数据的特征码; 步骤三、依据提取的数据特征自动检索密钥库; 提取数据特征后的首字节和密钥库的序号一一对应,用首字节的值作为检索密钥库的序号,自动检索密钥库中该序号的密钥,作为加解密所使用的密钥; 步骤四、依据数据特性选择加密算法; 根据加密场景和加密对象的数据特征选择加密算法; 步骤五、依据不同的加密场景自定义增订扩充方案; 针对数据加密前后等长和可变长两种适用场景设计了两种扩充方案; 当加密场景要求加密后的密文,保持原有的数据长度时,采用RC4算法或者AES算法,针对AES算法,当加密数据不是128bit的整数倍时,加密方法为:先对加密数据前面长度是128bit整数倍的明文做AES加密后,从密文的末尾,补齐128bit,再做一次AES加密; 当加密场景允许加密后的密文,长度可变时,针对AES算法,对明文末尾进行填充,补齐128bit的整数倍,填充的内容为缺少长度的值; 步骤六、对被加密对象进行加解密运算; 所述的加密运算采用自动检索到的密钥和自动选择的加密算法,对被加密对象进行提取数据特征和增订扩充方案操作后的数据进行加密运算; 对密文进行解密运算,再对解密后的数据执行增订扩充方案和提取数据特征的逆操作,还原出原始数据; 根据步骤二提取的加密对象的数据特征,作为检索密钥库序号的首字节,在加解密运算中,和被检索得到的密钥的钥头,进行异或运算,得到加解密后的首字节;其余部分字节,在加解密运算中,将被检索得到的密钥的钥齿作为运算密钥,采用被选择的算法,进行加解密运算,得到加解密后的其余部分字节。
2.如权利要求1所述的一种自动检索密钥和选择算法的加解密方法,其特征在于:所述的密钥由钥头和钥齿组成,钥头是依据映射关系,抽象出的一个标记,钥齿部分是加解密算法的有效密钥部分,随机生成或者人为设定;钥齿的长度和值依据所用算法决定:对称算法成对的钥齿相同,非对称算法成对的钥齿分别为公钥和私钥。
3.如权利要求1所述的一种自动检索密钥和选择算法的加解密方法,其特征在于:所述的密钥库为人工设定或者随机生成。
4.如权利要求1所述的一种自动检索密钥和选择算法的加解密方法,其特征在于:所述的数据特征指数据类型、长度、数据值和意义。
5.如权利要求1所述的一种自动检索密钥和选择算法的加解密方法,其特征在于:所述的步骤一具体如下: 步骤101:为加密对象预创建一个二维数组的密钥库; 步骤102:生成密钥库中第一对密钥的序号; 在一个以序号为元素的数组S中,首先随机抽取一对密钥的一个序号:抽取的方法为生成一个随机数Random,对当前数组大小S取模后,则将数组S中下标为取模值的元素,作为第一个序号,然后将该序号从序号数组S中剔除,数组大小变为S-1 ; 抽取该对密钥的另一个序号,抽取的方法为再生成一个随机数Random,对当前数组大小S-1取模后,则将S数组中下标为取模值的元素,作为另一个序号,标记为第二个序号,并该序号从序号数组S-1中剔除,数组大小变为S-2 ; 步骤103:将第一对密钥序号生成一对密钥; 步骤102中已经生成一对序号,则序号作映射运算后的结果作为该对序号的密钥的钥头,再随机生成一个密钥的钥齿; 步骤104:重复步骤102和103,随机生成剩余的密钥,总计生成密钥库。
6.如权利要求1所述的一种自动检索密钥和选择算法的加解密方法,其特征在于:所述的步骤六具体如下: 步骤601:对原始数据进行加密运算,被加密对象的原始数据长度大于规定字节长度,采用比特位乱序方法进行提取数据特征,得到数据首字节; 步骤602:根据乱序后的数据首字节的值,检索密钥库中对应序号的密钥,密钥的钥头和首字节依据序号生成时的映射关系,得到另一个序号作为密文首字节; 步骤603:根据加密场景选择增订扩充方案,等长AES加密采用末尾二次加密方法,变长AES加密采用填充加密方法,填充的内容为缺少长度的值; 步骤604:根据数据长度选择对应的加密算法,使用钥齿进行加密运算; 步骤605:进行解密运算,首先根据密文的首字节,在密钥库中检索到对应序号的密钥,钥头和密文首字节依据序号生成时的映射关系,得到另一个序号作为解密后首字节;步骤606:根据密文长度选择解密算法,使用钥齿进行解密运算; 步骤607:根据加密是选定的增订扩展方案,进行逆操作,若为AES等长加密,则先解密末尾数据,再解密中间段数据,若为AES变长加密,解密后去掉末尾的填充数据; 步骤608:针对数据长度大于规定字节长度的数据,执行提取数据特征的逆操作,对规定字节作逆比特位乱序,得到原始数据的规定字节,得到最终原始数据。
【文档编号】H04L9/30GK104363091SQ201410717255
【公开日】2015年2月18日 申请日期:2014年12月1日 优先权日:2014年12月1日
【发明者】陈训逊, 吴震, 王洋, 谢铭, 杨帆, 邹学强 申请人:国家计算机网络与信息安全管理中心, 北京赛思信安技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1