增强FF1格式保留加密安全性的方法及设备与流程

未命名 09-09 阅读:73 评论:0

增强ff1格式保留加密安全性的方法及设备
技术领域
1.本发明涉及密码应用技术领域,具体涉及一种增强ff1格式保留加密安全性的方法及设备。


背景技术:

2.格式保留加密(format preserving encryption,fpe)是一种特殊对称加密算法,它可以保证加密后的密文格式与加密前的明文格式完全相同。它常用于数据脱敏项目中,可以保持加密后的数据格式不变,从而具有无需更改数据库范式以及对上层应用透明的优势。fpe算法可以保证加密后的数据长度不变,加密过程可逆,加密后的数据可以通过密钥解密还原出原始数据。一些fpe算法方案被提出并开始走向应用,比如在2011年,美国nist曾经推荐将源自ffx方案的保留格式加密算法ff1和ff3确立为aes标准工作模式。
3.由于格式保留加密方案允许明密文空间较小,当攻击者获得了很多个明密对以后,有可能因为密文组碰撞导致更多报文的明文泄露,甚至攻击者有条件尝试一些针对密钥的已知明文攻击。
4.在相关技术中,公布号为cn110768797a的专利申请文献中采用对称分组密码算法进行的密钥分散方式来生成派生密钥,派生的密钥用于对数据的全程加密,每轮加密运算采用的密钥是相同的。公布号为cn111783112a的专利申请文献中提出利用轮密钥key_loop对需要重复加密的固定数据p进行单独的加密运算,但每轮加密运算采用的密钥相同。公布号为cn115174039a的专利申请文献中提出通过hmac-sm3/cmac-sm4的方法来产生中间量s,但该方案一次性产生足够长的中间量,每轮调用依次取用。而且上述相关方案均未在每一轮加解密迭代中都调用派生密钥。


技术实现要素:

5.本发明所要解决的技术问题在于如何提升格式保留加密的破解难度。
6.本发明通过以下技术手段解决上述技术问题的:第一方面,本发明提出了一种增强ff1格式保留加密安全性的方法,所述方法包括:随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;基于所述中间量s和数据a,生成密文数据。
7.进一步地,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
8.进一步地,所述密钥采用密钥id进行标识。
9.进一步地,所述随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,包括:随机选择标识为idk的密钥idk_key;利用基于sm3算法的带密钥密码杂凑算法对所述密钥idk_key进行变换,公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为密钥派生的迭代次数,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
10.进一步地,对于长度为n的明文数据x,令,v=n-u,a=x[1

u],b=x[u+1,n],所述在采用格式保留加密ff1算法明文数据进行加密处理时,对数据b进行带所述派生密钥的杂凑值,作为中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(b)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节字符串表示的s。
[0011]
进一步地,所述采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括:采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;将所述分组结果的前d个字节作为所述中间量s。
[0012]
进一步地,所述基于所述中间量s和数据a,生成密文数据,包括:令c= str
radixm
(c),其中c=(num
radix
(a)+y)mod radixm,y=num(s),i为偶数时m=u,i为奇数时m=v,,v=n-u,n为所述明文数据的长度,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基
数且长度为m的字符串,mod表示取模运算符;令数据a=b,数据b=c,得到所述密文数据y=a||b,||表示串联。
[0013]
第二方面,本发明提出了一种基于ff1格式保留算法的数据解密方法,所述方法包括:获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运算时,对密文a`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;基于所述中间量s和密文b`,生成明文数据。
[0014]
进一步地,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
[0015]
进一步地,所述利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为密钥派生的迭代次数,idk_key为密钥, kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
[0016]
进一步地,对于长度为n的密文数据y,令,v=n-u,a`=y[1

u],b`=y[u+1,n],所述在采用格式保留解密ff1算法所述密文数据进行解密处理时,对密文a`进行带所述派生密钥的杂凑值,作为中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(a`)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节的字符串。
[0017]
进一步地,所述采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括:采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示
为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;将所述分组结果的前d个字节作为所述中间量s。
[0018]
进一步地,所述基于所述中间量s和密文b`,生成明文数据,包括:令c= str
radixm
(c),其中c=(num
radix
(b`)-x)mod radixm,x=num(s),i为偶数时m=u,i为奇数时m=v,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串;令数据a`=b`,数据b`=c,得到所述明文数据x=a`||b`,||表示串联。
[0019]
第三方面,本发明提出了一种增强ff1格式保留加密安全性的设备,所述设备包括:密钥选取模块,用于随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一加密模块,用于在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;第二加密模块,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;密文生成模块,用于基于所述中间量s和数据a,生成密文数据。
[0020]
第四方面,本发明提出了一种基于ff1格式保留算法的数据解密设备,所述设备包括:密文获取模块,用于获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;密钥派生模块,用于利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一解密模块,用于在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运算时,对密文b`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;第二解密模块,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;明文生成模块,用于基于所述中间量s和密文a`,生成明文数据。
[0021]
第五方面,本发明提出了一种基于ff1格式保留算法的数据加解密系统,所述系统包括第一用户节点、第二用户节点,所述第一用户节点和所述第二用户节点均与量子密钥分发网络连接,其中:所述量子密钥分发网络,用于生成并在全网的量子网络节点同步多支密钥,并经安全存储介质将密钥导入到所述第一用户节点和所述第二用户节点中;所述第一用户节点,用于采用如上所述的增强ff1格式保留加密安全性的方法对
明文数据进行加密,得到密文数据并发送至所述第二用户节点;所述第二用户节点,用于对所述密文数据进行解密,得到所述明文数据。
[0022]
本发明的优点在于:(1)本发明在对明文进行格式保留加密时,对随机选择的某支密钥基于sm3算法的带密钥密码杂凑算法进行安全派生,产生多个符合前后向安全性的派生密钥,并在格式保留加密每一轮的加密运算中调用不同的派生密钥,随机化扩充密钥空间,提高了算法的复杂度和信息冗余度,提升格式保留加密的破解难度。
[0023]
(2)本发明在每轮调用中根据本轮特征数据(包括轮密钥)实时调用并结合使用sm3和sm4产生中间量。
[0024]
(3)通过量子密钥分发网络(quantum key distribution,qkd)为用户节点分发大量具有统一的密钥标识号索引的预共享密钥,可安全共享大容量密钥。
[0025]
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
[0026]
图1是本发明一实施例提出的一种增强ff1格式保留加密安全性的方法的流程示意图;图2是本发明一实施例提出的一种基于ff1格式保留算法的数据解密方法的流程示意图;图3是本发明一实施例提出的一种增强ff1格式保留加密安全性的设备的结构示意图;图4是本发明一实施例提出的一种基于ff1格式保留算法的数据解密设备的结构示意图;图5是本发明一实施例提出的一种基于ff1格式保留算法的数据加解密系统的结构示意图;图6是本发明一实施例提出的一种基于ff1格式保留算法的数据加解密系统的工作流程图。
具体实施方式
[0027]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0028]
实施例1如图1所示,本发明第一实施例提出了一种增强ff1格式保留加密安全性的方法,所述方法包括:s101、随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;s102、在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b
进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;s103、采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;s104、基于所述中间量s和数据a,生成密文数据。
[0029]
本实施例在对明文进行格式保留加密时,基于sm3算法的带密钥密码杂凑算法对随机选择的某支密钥进行安全派生,产生多个符合前后向安全性的派生密钥,并在格式保留加密每一轮的加密运算中调用派生密钥,随机化扩充密钥空间,提高了算法的复杂度和信息冗余度,提升格式保留加密的破解难度。
[0030]
在一实施例中,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
[0031]
在一实施例中,所述密钥采用密钥id进行标识。
[0032]
具体地,本实施例通过量子密钥分发网络qkd生成并在全网的量子网络节点同步多支使用32比特位密钥id进行标识的128比特位的新鲜密钥,并使用安全sim卡、安全tf卡或安全u盾等安全存储介质进行密钥充注并导入到用户节点的本地存储和运行空间,供用户节点在进行明文加密时调用。
[0033]
在一实施例中,所述步骤s101:随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,具体包括以下步骤:s111、随机选择标识为idk的密钥idk_key;s112、利用基于sm3算法的带密钥密码杂凑算法对所述密钥idk_key进行变换,公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为密钥派生的迭代次数,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
[0034]
需要说明的是,number为可指定的迭代次数,salt0~salt9为512比特位盐值,可以来源于随机数或预定义字符串,在同一加解密域内用户间共享。
[0035]
在一实施例中,对于长度为n的明文数据x,对于长度为n的明文数据x, 2≤n≤2
32
且对于基radix∈[2,2
16
],radixn≥1000000,令,v=n-u,a=x[1

u],b=x[u+1,n],所述步骤s102:在采用格式保留加密ff1算法明文数据进行加密处理时,对数据b进行带所述派生密钥的杂凑值,作为中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(b)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为
派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节的字符串。
[0036]
在一实施例中,所述步骤s103:采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括以下步骤:s131、采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;s132、将所述分组结果的前d个字节作为所述中间量s。
[0037]
在一实施例中,所述步骤s104:基于所述中间量s和数据a,生成密文数据,包括以下步骤:s141、令c= str
radixm
(c),其中c=(num
radix
(a)+y)mod radixm,y=num(s),i为偶数时m=u,i为奇数时m=v,,v=n-u,n为所述明文数据的长度,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串,mod表示取模运算符;s142、令数据a=b,数据b=c,得到所述密文数据y=a||b,||表示串联。
[0038]
实施例2如图2所示,本发明第二实施例提出了一种基于ff1格式保留算法的数据解密方法,所述方法包括以下步骤:s201、获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;s202、利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;s203、在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运算时,对密文a`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;s204、采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;s205、基于所述中间量s和密文b`,生成明文数据。
[0039]
在一实施例中,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
[0040]
在一实施例中,所述步骤s02:利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为迭代次数,idk_key为密钥,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
[0041]
在一实施例中,对于长度为n的密文数据y,令,v=n-u,a`=y[1

u],b`=y[u+1,n],所述步骤s203:在采用格式保留解密ff1算法所述密文数据进行解密处理时,对密文a`进行带所述派生密钥的杂凑值,作为中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(a`)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节的字符串。
[0042]
在一实施例中,所述步骤s204:采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括以下步骤:s241、采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;s242、将所述分组结果的前d个字节作为所述中间量s。
[0043]
在一实施例中,所述步骤s205:基于所述中间量s和密文b`,生成明文数据,包括以下步骤:s251、令c= str
radixm
(c),其中c=(num
radix
(b`)-x)mod radixm,x=num(s),i为偶数时m=u,i为奇数时m=v,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串;s252、令数据a`=b`,数据b`=c,得到所述明文数据x=a`||b`,||表示串联。
[0044]
需要说明的是,本实施例提出的对称解密过程为上述实施例1提出的对称加密的逆过程,通过在每轮解密运算中使用不同的派生密钥,每轮解密运算过程中使用sm3算法对重要参数进行变换,密钥空间增大,整体的算法复杂度和安全性增强。
[0045]
实施例3
如图3所示,本发明第三实施例提出了一种增强ff1格式保留加密安全性的设备,所述设备包括:密钥选取模块11,用于随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一加密模块12,用于在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;第二加密模块13,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;密文生成模块14,用于基于所述中间量s和数据a,生成密文数据。
[0046]
本实施例在对明文进行格式保留加密时,基于sm3算法的带密钥密码杂凑算法对随机选择的某支密钥进行安全派生,产生多个符合前后向安全性的派生密钥,并在格式保留加密每一轮的加密运算中调用派生密钥,随机化扩充密钥空间,提高了算法的复杂度和信息冗余度,提升格式保留加密的破解难度。
[0047]
在一实施例中,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
[0048]
在一实施例中,所述密钥采用密钥id进行标识。
[0049]
在一实施例中,所述密钥选取模块11,具体包括:密钥随机选择单元,用于随机选择标识为idk的密钥idk_key;密钥派生单元,用于利用基于sm3算法的带密钥密码杂凑算法对所述密钥idk_key进行变换,所述密钥派生函数公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为密钥派生的迭代次数,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
[0050]
在一实施例中,对于长度为n的明文数据x,令,v=n-u,a=x[1

u],b=x[u+1,n],所述第一加密模块12,具体用于:在采用格式保留加密ff1算法明文数据进行加密处理时,对数据b进行带所述派生密钥的杂凑值,作为中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(b)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,
log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节的字符串。
[0051]
在一实施例中,所述第二加密模块13,具体包括:加密单元,用于采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;中间量s生成单元,用于将所述分组结果的前d个字节作为所述中间量s。
[0052]
在一实施例中,所述密文生成模块14,具体用于:令c= str
radixm
(c),其中c=(num
radix
(a)+y)mod radixm,y=num(s),i为偶数时m=u,i为奇数时m=v,,v=n-u,n为所述明文数据的长度,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串,mod表示取模运算符;令数据a=b,数据b=c,得到所述密文数据y=a||b,||表示串联。
[0053]
实施例4如图4所示,本发明第四实施例提出了一种基于ff1格式保留算法的数据解密设备,所述设备包括:密文获取模块21,用于获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;密钥派生模块22,用于利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一解密模块23,用于在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运算时,对密文b`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;第二解密模块24,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;明文生成模块25,用于基于所述中间量s和密文a`,生成明文数据。
[0054]
在一实施例中,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。
[0055]
在一实施例中,所述密钥派生模块22,具体用于:利用密钥派生函数对所述密钥进行变换,所述密钥派生函数公式表示为:pkeyi= kf(idk_key,idk,salti,n`,i)kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”)p2=hmac_sm3(idk_key, p1)
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);式中,pkeyi为派生密钥,salti为盐值,n`为密钥派生的迭代次数,idk_key为密钥,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。
[0056]
在一实施例中,对于长度为n的密文数据y,令,v=n-u,a`=y[1

u],b`=y[u+1,n],所述第一解密模块23,具体用于:采用格式保留解密ff1算法对所述密文数据进行每一轮解密处运算时,对密文a`进行带所述派生密钥的杂凑值计算,得到中间量r,公式表示为:r=sm3(pkeyi,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(a`)]b式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkeyi为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]n表示n个字节的字符串。
[0057]
在一实施例中,所述第二解密模块24,具体包括:解密单元,用于采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkeyi为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;中间量s生成单元,用于将所述分组结果的前d个字节作为所述中间量s。
[0058]
在一实施例中,所述明文生成模块25,具体用于:令c= str
radixm
(c),其中c=(num
radix
(b`)-x)mod radixm,x=num(s),i为偶数时m=u,i为奇数时m=v,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串;令数据a`=b`,数据b`=c,得到所述明文数据x=a`||b`,||表示串联。
[0059]
实施例5如图5所示,本发明第五实施例提出了一种基于ff1格式保留算法的数据加解密系统,所述系统包括第一用户节点1、第二用户节点2,所述第一用户节点1和所述第二用户节点2均与量子密钥分发网络3连接,其中:所述量子密钥分发网络3,用于生成并在全网的量子网络节点同步多支密钥,并经安全存储介质将密钥导入到所述第一用户节点1和所述第二用户节点2中;所述第一用户节点1,用于采用如上实施例1所述的增强ff1格式保留加密安全性的方法对明文数据进行加密,得到密文数据并发送至所述第二用户节点;
所述第二用户节点2,用于采用如上实施例2所述的解密方法对所述密文数据进行解密,得到所述明文数据。
[0060]
具体地,用户节点用于使用量子密钥分发网络分发的密钥和ff1-sm4格式保留算法进行数据加解密处理,使用安全sim卡、安全tf卡或安全u盾等安全存储介质进行密钥充注并导入到本地存储和运行空间。
[0061]
密钥代理用于在通信参与方不能直接在量子密钥分发网络的节点进行密钥充注和密钥分发的情况下提供密钥充注和密钥分发的代理功能。
[0062]
量子密钥分发网络包含量子网络节点和量子网络链路控制中心,实现量子密钥生成和分发、量子密钥中继、量子密钥提供等服务;量子网络节点用于存储生成的量子密钥,接收密钥代理的密钥申请,向密钥代理提供密钥或直接提供密钥充注和密钥分发服务;量子网络链路控制中心用于按照量子网络节点id建立节点间的量子密钥分发及中继链路。
[0063]
需要说明的是,基于ff1格式保留算法的数据加解密系统的工作流程如图6所示:(1)通过量子密钥分发网络qkd生成并在全网的量子网络节点同步多支使用32比特位密钥id进行标识的128比特位的新鲜密钥,并使用安全sim卡、安全tf卡或安全u盾等安全存储介质进行密钥充注并导入到第一用户节点和第二用户节点的本地存储和运行空间;(2)对某个数据进行加密的用户节点随机选择密钥标识为idk的预共享密钥,并对idk标识的密钥idk_key进行如下变换:kf(idk_key,idk,salti,n`,i)= p1p2……
p
n`
p1=hmac_sm3(idk_key,idk||salti||i||“ff1 key derivation”);p2=hmac_sm3(idk_key, p1);
……
p
n`
= hmac_sm3(idk_key, p
n`-1
);对于i从0到9:pkeyi= kf(idk_key,idk,salti,n`,i)其中,number为可指定的迭代次数,salt0~salt9为512比特位盐值,可以来源于随机数或预定义字符串,在同一加解密域内用户间共享,hmac_sm3为基于sm3算法的带密钥密码杂凑(hmac)算法。
[0064]
(3)对于长度为n的明文数据x,2≤n≤2
32
且对于基radix∈[2,2
16
],radixn≥1000000,[s]n表示s重复n次,第一用户节点对明文数据进行加密过程为:令,v=n-u,a=x[1

u],b=x[u+1,n],t为长度为t的预设字符串,,,p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4;以num
radix
()表示以radix为基的数字,num( )表示字节串到整数的转化,str
radixm
(n)表示将整数n表示为radix为基的m长字符串,sm3(k,data)表示采用sm3计算data的带密钥k的杂凑值,sm4(k,data)表示采用sm4算法对data进行对称分组密码运算,则对于i从0到9:q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(b)]br=sm3(pkeyi,p||q)取s为下面分组的前d个字节:
r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)y=num(s)m=u(i=偶数)/v(i=奇数)c=(num
radix
(a)+y)mod radixmc= str
radixm
(c)a=bb=c返回加密结果y=a||b。
[0065]
(4)第二用户节点对于密文数据y进行解密的过程包括:对于长度为n的密文数据y,令a`=y[1

u],b`=y[u+1,n],则对于i从9到0:q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(a`)]br=sm3(pkeyi,p||q)取s为下面分组的前d个字节r||sm4(pkeyi,r[1]
16
)||sm4(pkeyi,r[2]
16
)

||sm4(pkeyi,r[-1]
16
)x=num(s)m=u(i=偶数)/v(i=奇数)c=(num
radix
(b`)-x)mod radixmc= str
radixm
(c)b`=a`a`=c返回解密结果x=a`||b`。
[0066]
本实施例通过量子密钥分发网络qkd为用户节点分发大量具有统一的密钥标识号索引的预共享密钥,可安全共享大容量密钥;并基于sm3的带密钥杂凑算法产生多个符合前后向安全性的派生密钥进行ff1-sm4格式保留加密每一轮的加解密运算,在密钥派生之外,在格式保留加密过程中也使用了带密钥的密码杂凑函数hmac进行相关数据的变换和派生,随机化扩充密钥空间,提高了算法的复杂度和信息冗余度,提升格式保留加密的破解难度。
[0067]
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0068]
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
[0069]
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

技术特征:
1.一种增强ff1格式保留加密安全性的方法,其特征在于,所述方法包括:随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;基于所述中间量s和数据a,生成密文数据。2.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。3.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,所述密钥采用密钥id进行标识。4.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,所述随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,包括:随机选择标识为id
k
的密钥id
k
_key;利用基于sm3算法的带密钥密码杂凑算法对所述密钥id
k
_key进行变换,公式表示为:pkey
i
= kf(id
k
_key,id
k
,salt
i
,n`,i)kf(id
k
_key,id
k
,salt
i
,n`,i)= p1p2……
p
n`
p1=hmac_sm3(id
k
_key,id
k
||salt
i
||i||“ff1 key derivation”)p2=hmac_sm3(id
k
_key, p1)
……
p
n`
= hmac_sm3(id
k
_key, p
n`-1
);式中,pkey
i
为派生密钥,salt
i
为盐值,n`为迭代次数,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。5.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,对于长度为n的明文数据x,令,v=n-u,a=x[1

u],b=x[u+1,n],所述在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,公式表示为:r=sm3(pkey
i
,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(b)]
b
式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkey
i
为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]
n
表示n个字节的字符串。
6.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,所述采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括:采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkey
i
,r[1]
16
)||sm4(pkey
i
,r[2]
16
)

||sm4(pkey
i
,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkey
i
为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;将所述分组结果的前d个字节作为所述中间量s。7.如权利要求1所述的增强ff1格式保留加密安全性的方法,其特征在于,所述基于所述中间量s和数据a,生成密文数据,包括:令c= str
radixm
(c),其中c=(num
radix
(a)+y)mod radix
m
,y=num(s),i为偶数时m=u,i为奇数时m=v,,v=n-u,n为所述明文数据的长度,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串,mod表示取模运算符,表示向上取整;令数据a=b,数据b=c,得到所述密文数据y=a||b,||表示串联。8.一种基于ff1格式保留算法的数据解密方法,其特征在于,所述方法包括:获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运算时,对密文a`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;基于所述中间量s和密文b`,生成明文数据。9.如权利要求8所述的基于ff1格式保留算法的数据解密方法,其特征在于,所述密钥为经量子密钥分发网络生成并在全网的量子网络节点同步的多支新鲜密钥,且在同一加解密域内用户间共享。10.如权利要求8所述的基于ff1格式保留算法的数据解密方法,其特征在于,所述利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥,公式表示为:pkey
i
= kf(id
k
_key,id
k
,salt
i
,n`,i)kf(id
k
_key,id
k
,salt
i
,n`,i)= p1p2……
p
n`
p1=hmac_sm3(id
k
_key,id
k
||salt
i
||i||“ff1 key derivation”)p2=hmac_sm3(id
k
_key, p1)
……
p
n`
= hmac_sm3(id
k
_key, p
n`-1
);式中,pkey
i
为派生密钥,salt
i
为盐值,n`为迭代次数,id
k
_key为密钥,kf( )为密钥派生函数,p1~p
n`
为密钥派生函数计算的中间量,“ff1 key derivation”为固定字符串,hmac_sm3为基于sm3算法的带密钥密码杂凑算法,||表示串联,表示异或操作,i=0,1,2...,9。11.如权利要求8所述的基于ff1格式保留算法的数据解密方法,其特征在于,对于长度为n的密文数据y,令,v=n-u,a`=y[1

u],b`=y[u+1,n],所述在采用格式保留解密
ff1算法对所述密文数据进行每一轮解密运算时,对密文a`进行带所述派生密钥的杂凑值计算,得到中间量r,公式表示为:r=sm3(pkey
i
,p||q)p=[1]||[2]||[1]||[radix]3||[10]||[u mod 256]||[n]4||[t]4q=t||[0]
(-t-b-1)mod16
||[i]||[num
radix
(a`)]
b
式中,sm3(k,data)表示采用sm3算法计算数据data的带密钥k的杂凑值,pkey
i
为派生密钥,||表示串联,radix表示基数,num
radix
( )表示以radix为基的数字表示,[ ]表示单字节的字符,i表示格式保留加密算法的迭代次数,mod表示取模运算符,,log(radix)表示对基数radix求以2为底的对数,表示向上取整,表示向下取整,t为长度为t的预设字符串,[s]
n
表示n个字节的字符串。12.如权利要求8所述的基于ff1格式保留算法的数据解密方法,其特征在于,所述采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s,包括:采用sm4算法对所述中间量r和所述派生密钥进行处理,得到分组结果,公式表示为:r||sm4(pkey
i
,r[1]
16
)||sm4(pkey
i
,r[2]
16
)

||sm4(pkey
i
,r[-1]
16
)式中,sm4(k,data)表示采用sm4算法对数据data进行带密钥k的对称分组密码运算,pkey
i
为派生密钥,||表示串联,表示异或操作,,表示向下取整,,log(radix)表示对基数radix求以2为底的对数;将所述分组结果的前d个字节作为所述中间量s。13.如权利要求8所述的基于ff1格式保留算法的数据解密方法,其特征在于,所述基于所述中间量s和密文b`,生成明文数据,包括:令c= str
radixm
(c),其中c=(num
radix
(b`)-x)mod radix
m
,x=num(s),i为偶数时m=u,i为奇数时m=v,num
radix
( )表示以radix为基的数字表示,num( )表示字节串到整数的转化,str
radixm
(c)表示将整数c表示为以radix为基数且长度为m的字符串;令数据a`=b`,数据b`=c,得到所述明文数据x=a`||b`,||表示串联。14.一种增强ff1格式保留加密安全性的设备,其特征在于,所述设备包括:密钥选取模块,用于随机选取密钥,并利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一加密模块,用于在采用格式保留加密ff1算法对明文数据进行每一轮加密运算时,对数据b进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述明文数据包括数据a和数据b;第二加密模块,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;密文生成模块,用于基于所述中间量s和数据a,生成密文数据。15.一种基于ff1格式保留算法的数据解密设备,其特征在于,所述设备包括:密文获取模块,用于获取密文数据,并基于所述密文数据中携带的密钥标识选择密钥;密钥派生模块,用于利用基于sm3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;第一解密模块,用于在采用格式保留解密ff1算法对所述密文数据进行每一轮解密运
算时,对密文b`进行带所述派生密钥的杂凑值计算,得到中间量r,其中所述密文数据包括密文a`和密文b`;第二解密模块,用于采用对称分组密码运算,对所述中间量r和所述派生密钥进行处理,生成中间量s;明文生成模块,用于基于所述中间量s和密文a`,生成明文数据。16.一种基于ff1格式保留算法的数据加解密系统,其特征在于,所述系统包括第一用户节点、第二用户节点,所述第一用户节点和所述第二用户节点均与量子密钥分发网络连接,其中:所述量子密钥分发网络,用于生成并在全网的量子网络节点同步多支密钥,并经安全存储介质将密钥导入到所述第一用户节点和所述第二用户节点中;所述第一用户节点,用于采用如权利要求1~7任一项所述的增强ff1格式保留加密安全性的方法对明文数据进行加密,得到密文数据并发送至所述第二用户节点;所述第二用户节点,用于对所述密文数据进行解密,得到所述明文数据。

技术总结
本发明公开一种增强FF1格式保留加密安全性的方法及设备,方法包括随机选取密钥,并利用基于SM3算法的带密钥密码杂凑算法对所述密钥进行变换,得到派生密钥;在采用格式保留加密FF1算法对明文数据进行加密处理时,对数据B进行带所述派生密钥的杂凑值,作为中间量R,其中所述明文数据包括数据A和数据B;采用对称分组密码运算,对所述中间量R和所述派生密钥进行处理,生成中间量S;基于所述中间量S和数据A,生成密文数据;本发明可提升格式保留加密的破解难度。破解难度。破解难度。


技术研发人员:罗俊
受保护的技术使用者:中电信量子科技有限公司
技术研发日:2023.08.07
技术公布日:2023/9/7
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐