一种基于消息鉴别码算法的保留格式加密方法及解密方法技术

技术编号:28947928 阅读:15 留言:0更新日期:2021-06-18 22:04
本发明专利技术提供一种基于消息鉴别码算法的保留格式加密方法及解密方法,所述加密方法包括:S11,字符串拆分:将输入的待加密明文

【技术实现步骤摘要】
一种基于消息鉴别码算法的保留格式加密方法及解密方法
本专利技术涉及信息安全
,具体而言,涉及一种基于消息鉴别码算法的保留格式加密方法及解密方法。
技术介绍
如今,计算机技术飞速发展,每天都有各种各样的敏感数据在网络上传播。有大量第三方机构对这些敏感数据进行收集、分析、挖掘,这些数据在使用的过程中也导致了不少敏感数据泄漏的问题,甚至经常发生严重的隐私泄露事件,这可能造成无法弥补的损失。在实际应用中,常见的防护手段是对这些敏感数据进行加密。但是对数据库中具有特定格式的数据,比如银行卡号、身份证号等敏感数据,使用传统的分组密码算法直接进行加密会出现一系列的问题,比如通常会导致数据长度的扩展,使得数据的类型发生变化等,这就需要修改数据库结构或应用程序来适应传统加密带来的这些变化,成本非常高。为了解决这类敏感数据的加密问题,保留格式加密(format-preservingencryption,简称FPE)被提了出来。FPE可以用来进行数据遮蔽,即通过对原始数据进行掩码转换,输出一个与原始数据的格式、关联等均一模一样的数据,从而解决从生产环境的数据向测试环境(或者开发环境)导入时可能产生的数据内容安全问题。近年来,美国国家标准与技术研究院(NationalInstituteofStandardsandTechnology,NIST)就此问题进行了研究,并发布了NISTSP800-38G文档,提出了FPE算法FF1、FF3-1等。FF1和FF3-1算法都将待加密消息一分为二(分别记为左支数据和右支数据),以AES系列算法为基础,采用10轮Feistel结构执行迭代,最后再将左右两块数据拼接在一起。在每一轮迭代中,右支数据进入轮函数进行基于AES的加密后得到轮函数的输出,然后,左支数据再与此轮函数的输出进行模加后得到更新后的左支数据;最后交换左右两支数据后进入下一轮。如此反复,直至迭代结束。然而NIST提出的这些FPE算法FF1和FF3-1在使用中存在诸多问题难以解决,具体如下:(1)首先,这些FPE算法的执行效率非常慢,比其普通的加密模块,如ECB、CBC、CTR等,执行效率显著下降;比如目前的PC机执行AES加密16个字节通常不到1个微秒;但FF1和FF3-1的加密时间是这些加密时间的几十倍至上百倍。(2)其次,《中华人民共和国密码法》的出台并正式实施,各行业大力推进我国商用密码的应用和落地,而NIST提出的这些FPE算法均使用国外的AES系列算法,而非我国商用密码算法,这使得这些FPE算法难以实施。
技术实现思路
本专利技术旨在提供一种基于消息鉴别码算法的保留格式加密方法及解密方法,以解决上述NIST提出的FPE算法存在的问题。本专利技术提供的一种基于消息鉴别码算法的保留格式加密方法,包括如下步骤:S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;S12,字符串迭代:设置迭代索引号为i=0,1,2,…,7,对步骤S11得到的两个BN型整数进行8轮基于Feistel结构和PRF变换的迭代;所述PRF变换是基于消息鉴别码算法HMAC-SM3的伪随机数字节生成函数;S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C。进一步的,步骤S11包括如下子步骤:S111,输入密钥K,长度为7个字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足,radix满足2≤radix≤65536;S112,分别取INT型整数,v←n-u,符号←代表赋值,即将赋值给u,n-u赋值给v;将明文字符串P拆分为两个字符串A和B:A←P[1,…,u],B←P[u+1,…,n]其中,P[1,…,u]表示明文字符串P中的第1至u个字符,P[u+1,…,n]表示明文字符串P中的第u至n个字符;即将明文字符串P中的第1至u个字符赋值给字符串A,将明文字符串P中的第u+1至n个字符赋值给字符串B;S113,将这两个字符串A和B分别转为BN型整数α和β:α←NUMradix(REV(A)),β←NUMradix(REV(B))。进一步的,步骤S12包括如下子步骤:S121,组合16个字节的字节串Q:式中,mod表示模运算,即取余数,即:(1)当imod2=0,即当迭代索引号i为偶数时,字节串Q为:取调节因子T的第5~7个字节T[5..7];取调节因子T的第4个字节T[4],将T[4]与一个十六进制数0x0F做与运算,得到T[4]^0x0F;再将此结果左移4比特得到(T[4]^0x0F)<<4;再将(T[4]^0x0F)<<4与[i]1做异或运算,得到((T[4]^0x0F)<<4)⊕[i]1;最后将T[5..7]、((T[4]^0x0F)<<4)⊕[i]1以及[β]12做串联得到字节串Q;(2)当imod2≠0,即当迭代索引号i为奇数时,字节串Q为:取调节因子T的第1~3个字节T[1..3];取调节因子T的第4个字节T[4],将T[4]与一个十六进制数0x0F做与运算,得到T[4]^0x0F;再将T[4]^0x0F与[i]1做异或运算,得到(T[4]^0x0F)⊕[i]1;最后将T[1..3]、(T[4]^0x0F)⊕[i]1以及[β]12做串联得到字节串Q;其中,[i]1表示将i转换为长度为1的字节串,[β]12表示将β转换为长度为12的字节串;S122,将字节串Q利用PRF变换计算消息鉴别码得到字节串E:E←PRFREVB(K)(REVB(Q))S123,将字节串E转为BN型整数γ:γ←NUM(E)S124,执行模加运算得到BN型整数δ:δ←(α+γ)modradixm即将BN型整数α和步骤S123得到的BN型整数γ相加后,将相加的结果与radixm进行模运算,并将模运算结果赋值给BN型整数δ;其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;即当迭代索引号i为偶数时,将u赋值给m;当迭代索引号i为奇数时,将v赋值给m;S125,左右互换,即α←β,β←δ;即将BN型整数β赋值给BN型整数α,再将步骤S124得到的BN型整数δ赋值给BN型整数β;S126,按迭代次数重复执行步骤S121~S125,迭代完成后得到BN型整数α和β。进一步的,步骤S121中的所述字节串Q能够做如下简化:S1211,分别计算两个字节BE和Bo:BE←(T[4]^0x0F)<<4,Bo←T[4]^0x0F即,将(T[4]^0x0F)<<4赋值给BE,将T[4]^0x0F赋值给Bo;S1212,字节串Q简化为:即:(1)当imod2=0,即当迭代索本文档来自技高网
...

【技术保护点】
1.一种基于消息鉴别码算法的保留格式加密方法,其特征在于,包括如下步骤:/nS11,字符串拆分:将输入的待加密明文

【技术特征摘要】
1.一种基于消息鉴别码算法的保留格式加密方法,其特征在于,包括如下步骤:
S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;
S12,字符串迭代:设置迭代索引号为i=0,1,2,…,7,对步骤S11得到的两个BN型整数进行8轮基于Feistel结构和PRF变换的迭代;所述PRF变换是基于消息鉴别码算法HMAC-SM3的伪随机数字节生成函数;
S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C。


2.根据权利要求1所述的基于消息鉴别码算法的保留格式加密方法,其特征在于,步骤S11包括如下子步骤:
S111,输入密钥K,长度为7个字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足,radix满足2≤radix≤65536;
S112,分别取INT型整数,v←n-u,符号←代表赋值,即将赋值给u,n-u赋值给v;将明文字符串P拆分为两个字符串A和B:

A←P[1,…,u],B←P[u+1,…,n]
其中,P[1,…,u]表示明文字符串P中的第1至u个字符,P[u+1,…,n]表示明文字符串P中的第u至n个字符;即将明文字符串P中的第1至u个字符赋值给字符串A,将明文字符串P中的第u+1至n个字符赋值给字符串B;
S113,将这两个字符串A和B分别转为BN型整数α和β:

α←NUMradix(REV(A)),β←NUMradix(REV(B))。


3.根据权利要求2所述的基于消息鉴别码算法的保留格式加密方法,其特征在于,步骤S12包括如下子步骤:
S121,组合16个字节的字节串Q:



式中,mod表示模运算,即取余数,即:
(1)当imod2=0,即当迭代索引号i为偶数时,字节串Q为:
取调节因子T的第5~7个字节T[5..7];
取调节因子T的第4个字节T[4],将T[4]与一个十六进制数0x0F做与运算,得到T[4]^0x0F;再将此结果左移4比特得到(T[4]^0x0F)<<4;再将(T[4]^0x0F)<<4与[i]1做异或运算,得到((T[4]^0x0F)<<4)⊕[i]1;
最后将T[5..7]、((T[4]^0x0F)<<4)⊕[i]1以及[β]12做串联得到字节串Q;
(2)当imod2≠0,即当迭代索引号i为奇数时,字节串Q为:
取调节因子T的第1~3个字节T[1..3];
取调节因子T的第4个字节T[4],将T[4]与一个十六进制数0x0F做与运算,得到T[4]^0x0F;再将T[4]^0x0F与[i]1做异或运算,得到(T[4]^0x0F)⊕[i]1;
最后将T[1..3]、(T[4]^0x0F)⊕[i]1以及[β]12做串联得到字节串Q;
其中,[i]1表示将i转换为长度为1的字节串,[β]12表示将β转换为长度为12的字节串;
S122,将字节串Q利用PRF变换计算消息鉴别码得到字节串E:
E←PRFREVB(K)(REVB(Q))
S123,将字节串E转为BN型整数γ:

γ←NUM(E)
S124,执行模加运算得到BN型整数δ:

δ←(α+γ)modradixm
即将BN型整数α和步骤S123得到的BN型整数γ相加后,将相加的结果与radixm进行模运算,并将模运算结果赋值给BN型整数δ;
其中,INT型整数m的取值为,如果imod2=0,m←u,否则m←v;即当迭代索引号i为偶数时,将u赋值给m;当迭代索引号i为奇数时,将v赋值给m;
S125,左右互换,即α←β,β←δ;即将BN型整数β赋值给BN型整数α,再将步骤S124得到的BN型整数δ赋值给BN型整数β;
S126,按迭代次数重复执行步骤S121~S125,迭代完成后得到BN型整数α和β。


4.根据权利要求3所述的基于消息鉴别码算法的保留格式加密方法,其特征在于,步骤S121中的所述字节串Q能够做如下简化:
S1211,分别计算两个字节BE和Bo:

B

E
←(T[4]^0x0F)<<4,Bo←T[4]^0x0F
即,将(T[4]^0x0F)<<4赋值给BE,将T[4]^0x0F赋值给Bo;
S1212,字节串Q简化为:



即:
(1)当imod2=0,即当迭代索引号i为偶数时,字节串Q为:
取调节因子T的第5~7个字节T[5..7];
将BE与[i]1做异或运算,得到BE⊕[i]1;
最后将T[5..7]、BE⊕[i]1以及[β]12做串联得到字节串Q;
(2)当imod2≠0,即当迭代索引号i为奇数时,字节串Q为:
取调节因子T的第1~3个字节T[1..3];
将Bo与[i]1做异或运算,得到Bo⊕[i]1;
最后将T[1..3]、B...

【专利技术属性】
技术研发人员:罗影张文科敖麒刘红军
申请(专利权)人:工业信息安全四川创新中心有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1