基于国密密码杂凑算法的保留格式加密方法及解密方法技术

技术编号:29018959 阅读:61 留言:0更新日期:2021-06-26 05:19
本发明专利技术提供一种基于国密密码杂凑算法的保留格式加密方法及解密方法,所述加密方法包括如下步骤:S11,字符串拆分:将输入的待加密明文P字符串拆分为两个子字符串并分别转化为BN型整数;S12,字符串迭代:设置迭代索引号为i=0,1,2,

【技术实现步骤摘要】
基于国密密码杂凑算法的保留格式加密方法及解密方法


[0001]本专利技术涉及信息安全
,具体而言,涉及一种基于国密密码杂凑算法的保留格式加密方法及解密方法。

技术介绍

[0002]随着互联网的发展,每天都有各种各样的敏感数据在网络上传播。有大量第三方机构对这些敏感数据进行收集、分析、挖掘,大数据分析可为更优化的决策提供更加可靠的支持,但不对明文信息采取加密或匿名处理就很有可能导致用户的信息滥用,甚至发生严重的隐私泄露事件,造成无法弥补的损失。传统的加密技术能够使得加密后的数据是可证安全的,然而其密文却失去了原有数据的格式,因为绝大部分数据具有特定的格式,比如银行卡号、身份证号等敏感数据,使用传统的分组密码算法直接进行加密可能会导致数据长度的扩展,使得数据的类型发生变化等,需要修改数据库或应用程序来适应这些变化,成本非常高。怎样在可以对密文数据进行数据分析研究的基础上保护用户隐私不被泄漏成为急需解决的难题。为了解决这类问题,保留格式加密(format

preserving encryption,简称FPE)被提了出来。FPE可以用来进行数据遮蔽,即通过对原始数据进行掩码转换,输出一个与原始数据的格式、关联等均一模一样的数据,从而解决从生产环境的数据向测试环境(或者开发环境)导入时可能产生的数据内容安全问题。
[0003]近年来,美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)就此问题进行了研究,并发布了NIST SP 800

38G文档,提出了FPE算法FF1、FF3

1等。FF1和FF3

1算法都将待加密消息一分为二(分别记为左支数据和右支数据),以AES系列算法为基础,采用10轮Feistel结构执行迭代,最后再将左右两块数据拼接在一起。在每一轮迭代中,右支数据进入轮函数进行基于AES的加密后得到轮函数的输出,然后,左支数据再与此轮函数的输出进行模加后得到更新后的左支数据;最后交换左右两支数据后进入下一轮。如此反复,直至迭代结束。然而NIST提出的这些FPE算法FF1和FF3

1在使用中存在诸多问题难以解决,具体如下:
[0004](1)首先,这些FPE算法的执行效率非常慢,比其普通的加密模块,如ECB、CBC、CTR等,执行效率显著下降;比如目前的PC机执行AES加密16个字节通常不到1个微秒;但FF1和FF3

1的加密时间是这些加密时间的几十倍至上百倍。
[0005](2)其次,《中华人民共和国密码法》的出台并正式实施,各行业大力推进我国商用密码的应用和落地,而NIST提出的这些FPE算法均使用国外的AES系列算法,而非我国商用密码算法,这使得这些FPE算法难以实施。

技术实现思路

[0006]本专利技术旨在提供一种基于国密密码杂凑算法的保留格式加密方法及解密方法,以解决现有保留格式加密算法不满足国产化要求以及执行效率低下的问题。
[0007]本专利技术提供的一种基于国密密码杂凑算法的保留格式加密方法包括如下步骤:
[0008]S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;
[0009]S12,字符串迭代:设置迭代索引号为i=0,1,2,

,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;
[0010]S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C。
[0011]进一步的,步骤S11包括如下子步骤:
[0012]S111,输入密钥K,长度为t字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足radix满足2≤radix≤65536;
[0013]S112,分别取INT型整数v

n

u,u,符号

代表赋值;将待加密明文P拆分为两个字符串A和B:
[0014]A

P[1,

,u],B

P[u+1,

,n][0015]其中,P[1,

,u]表示明文字符串P中的第1至u个字符,P[u+1,

,n]表示明文字符串P中的第u至n个字符;
[0016]S113,将这两个字符串A和B分别转为BN型整数α和β:
[0017]α

NUM
radix
(A),β

NUM
radix
(B)。
[0018]进一步的,步骤S12包括如下子步骤:
[0019]S121,利用KDF变换计算d字节的掩码字节串E:
[0020]E

KDF
(d)K
(M)
[0021]M=[1]1||[2]1||[1]1||[radix]3||[10]1||[u mod 2 56]1||[n]4||[t]4||T||[0](

t
‑1‑
b)mod 16
||[i]1||[β]b
[0022]S122,将d字节的掩码字节串E转为BN型整数γ:
[0023]γ

NUM(E)
[0024]S123,执行模加运算得到BN型整数δ:
[0025]δ

(α+γ)mod radix
m
[0026]其中,INT型整数m的取值为,如果imod2=0,m

u,否则m

v;
[0027]S124,左右互换,即α

β,β

δ;
[0028]S125,按迭代次数重复执行步骤S121~S124,迭代完成后得到BN型整数α和β。
[0029]进一步的,步骤S121中所述KDF变换的方法包括如下步骤:
[0030]S1211,计算d满足0≤d<2
32
,初始R为空串,即字节长度为0;
[0031]S1212,对整数i=1,2,...,n,执行:
[0032]R

R||SM3(K||M||[i]4)
[0033]S1213,截取步骤S1212得到的R最左边的d个字节,得到d个字节的掩码字节串E=R[1..d],然后返回E。
[0034]进一步的,步骤S13包括如下子步骤:
[0035]S131,将步骤S125得到的BN型整数α和β分别转为字符串A和B:
[0036][0037]S132,串联字符串A和B,C

A||B,返回密文C本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于国密密码杂凑算法的保留格式加密方法,其特征在于,所述加密方法包括如下步骤:S11,字符串拆分:将输入的待加密明文P拆分为两个子字符串并分别转化为BN型整数;S12,字符串迭代:设置迭代索引号为i=0,1,2,

,9,对步骤S11得到的两个BN型整数进行10轮基于Feistel结构和KDF变换的迭代;所述KDF变换是基于国密密码杂凑算法SM3的密钥导出函数;S13,字符串合并:将迭代得到的两个BN型整数分别转为字符串后串联合并为一个字符串,得到密文C。2.根据权利要求1所述的基于国密密码杂凑算法的保留格式加密方法,其特征在于,步骤S11包括如下子步骤:S111,输入密钥K,长度为t字节的调节因子T,以及待加密明文P;所述待加密明文P是长度为n的字符串,n满足radix满足2≤radix≤65536;S112,分别取INT型整数v

n

u,u,符号

代表赋值;将待加密明文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个字符;S113,将这两个字符串A和B分别转为BN型整数α和β:α

NUM
radix
(A),β

NUM
radix
(B)。3.根据权利要求2所述的基于国密密码杂凑算法的保留格式加密方法,其特征在于,步骤S12包括如下子步骤:S121,利用KDF变换计算d字节的掩码字节串E:E

KDF
(d)K
(M)M=[1]1||[2]1||[1]1||[radix]3||[10]1||[umod256]1||[n]4||[t]4||T||[0]
(

t
‑1‑
b)mod16
||[i]1||[β]
b
S122,将d字节的掩码字节串E转为BN型整数γ:γ

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

(α+γ)mod radix
m
其中,INT型整数m的取值为,如果imod2=0,m

u,否则m

v;S124,左右互换,即α

β,β

δ;S125,按迭代次数重复执行步骤S121~S124,迭代完成后得到BN型整数α和β。4.根据权利要求3所述的基于国密密码杂凑算法的保留格式加密方法,其特征在于,步骤S121中所述KDF变换的方法包括如下步骤:S1211,计算d满足0≤d<2
32
,初始R为空串,即字节长度为0;S1212,对整数i=1,2,...,n,执行:R

R||SM3(K||M||[i]4)
S1213,截取步骤S1212得到的R最左边的d个字节,得到d个字节的掩码字节串E=R[1..d],然后返回E。5.根据权利要求3所述的基于国密密码杂凑算法的保留格式加密方法,其特征...

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

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

1