基于智能合约的高效率限时加解密方法与流程

文档序号:30966050发布日期:2022-07-30 17:40阅读:175来源:国知局
基于智能合约的高效率限时加解密方法与流程

1.本发明涉及信息技术领域,具体涉及一种基于智能合约的高效率限时加解密方法。


背景技术:

2.限时加解密技术常用于软件授权信息访问权限的控制。现有技术公开了一种基于属性的加密算法,即根据属性加密消息(attribute-based ecryption, abe)。该加密算法无需关注接收者的身份,只有符合属性要求的用户才能解密密文,保证了数据的机密性。此外,abe中的用户密钥与随机多项式或随机数相关,不同用户的密钥无法联合,防止用户合谋攻击。提供了一定程度上管控解密范围的效果。但基于属性的加密技术无法从时间上管控解密的时间跨度。不能完成带有时间限制的信息访问权限控制。而本领域中公开的附带时间限制的加密算法安全性较低,容易通过时间戳欺骗绕过限时验证。因此有必要研究新的带有时间限制的加解密算法。


技术实现要素:

3.本发明要解决的技术问题是:目前限时加解密算法的安全性不高的技术问题。提出了一种基于智能合约的高效率限时加解密方法,能够有效实现信息解密的时间限制,提高限时加解密的安全性。
4.为解决上述技术问题,本发明所采取的技术方案为:基于智能合约的高效率限时加解密方法,包括:在区块链上发布智能合约,所述智能合约包括加密接收栏、解密接收栏、输出栏和若干个加解密栏,所述加解密栏包括栏标识、加密函数和时钟,所述时钟记录加密函数的更新剩余时长,所述更新剩余时长为0时,所述加解密栏更新所述加密函数并重置时钟;加密方将待加密数据、限时时长和接收公钥按照预设加密格式写入加密接收栏;所述智能合约检测到加密接收栏被写入数据,检查数据是否符合加密格式,若不符合则清空加密接收栏;所述智能合约检查全部加解密栏的时钟,若存在时钟与限时时长相符,则将待加密数据关联加密标识符,输入对应的加解密栏,获得密文;所述智能合约使用合约私钥签名栏标识、限时时长和时间戳,作为密文签名,将密文关联密文签名后,使用接收公钥加密,写入输出栏;加密方读取输出栏内的数据,使用私钥解密获得密文和密文签名,完成加密过程;解密方获得密文和密文签名后,使用智能合约的公钥验证密文签名,获得栏标识、限时时长和时间戳;判断当前时刻是否超出限时时长,若未超出,则将密文、密文签名和接收公钥按照预设解密格式写入解密接收栏;所述智能合约检测到解密接收栏被写入数据,检查数据是否符合解密格式,若不符合则清空解密接收栏;所述智能合约使用公钥验证密文签名,检查当前时刻是否处于限时时长内,若超出限时时长,则清空解密接收栏,则输出栏限时超时标识符,若处于限时时长内,则将密文关联解密标识符,输入对应的加解密栏,获得明文数据;将明文数据使用接收公钥加密后写入输出栏;解密方读取输出栏,使用私钥解密获得明文数据,完成解密过程。
5.作为优选,所述智能合约公布待加密数据的长度限值,加密方判断待加密的长度,若超过长度限值,则使用对称加密算法将待加密数据加密,记为初级密文,对称加密算法使用的秘钥记为key,将key作为待加密数据提交所述智能合约加密,获得key密文,将初级密文、key密文和密文签名打包作为限时加密结果,解密方在限时时长内,通过所述智能合约解密获得key,使用key解密初级密文获得明文数据。
6.作为优选,所述智能合约的加密接收栏、解密接收栏或输出栏被写入数据时,所述智能合约锁定加密接收栏、解密接收栏和输出栏,在预设的时长内,加密接收栏、解密接收栏和输出栏不接受新数据的写入。
7.作为优选,所述加解密栏的加密函数为一元多项式f(x),加解密栏使用一元多项式f(x)加密数据的方法为:将待加密数据转换为二进制流,按预设规则补位后,截断为若干个预设长度的二进制段,将二进制段转换为整数d;生成数据组合(b1,x1,b2,x2,

,bn,xn,

) ,bi∈{0,1},使得d=∑(-1)^bi*f(xi)+

,其中i∈[1,n],

为修正值;将数据组合按顺序组合作为密文;加解密栏解密数据的方法为:依次读取数据组合,将每个数据组合中的bi及xi代入一元多项式f(x),并与修正值

求和,获得整数d;将全部整数d转换为二进制流并按顺序拼接后,去除补位后,获得解密的数据。
[0008]
作为优选,所述限时加密智能合约生成若干个自变量x的取值集合,取值集合包括若干个整数,取值集合具有集标识;为每个一元函数f(x)的每个取值集合生成等效一元多项式f’(x),等效一元多项式f’(x)与一元多项式f(x)在取值集合内的函数值相等;所述加解密栏加密数据时,选择一个取值集合,生成取值集合的真子集,在真子集内选择自变量x的值生成数据组合;所述智能合约使用私钥对栏标识、集标识、限时时长和时间戳签名作为密文签名;当所述限时加密智能合约在预设周期内收到超过预设数量的解密请求时,所述限时加密智能合约不再将密文出入加解密栏,而是执行以下步骤:读取签名中的集标识,获得一元函数f(x)在集标识对应取值集合下的等效一元多项式f’(x),将等效一元多项式f’(x) 使用接收公钥加密后,写入输出栏;解密方读取输出栏,获得等效一元多项式f’(x);解密方将每个数据组合中的bi及xi代入等效一元多项式f’(x),并与修正值

求和,获得整数d,将全部整数d转换为二进制流并按顺序拼接后,去除补位后,获得解密的数据。
[0009]
本发明的实质性效果是:借助区块链上的智能合约避免了时间戳欺骗,提高了限时加解密算法的安全性;通过改进的加密算法,提高了加解密的效率;借助等效一元多项式使智能合约能够有效处理高业务量。
附图说明
[0010]
图1为实施例一高效率限时加解密方法示意图。
[0011]
图2为实施例一待加密数据加密方法示意图。
[0012]
图3为实施例一加解密栏加密方法示意图。
[0013]
图4为实施例二加解密栏加密方法示意图。
具体实施方式
[0014]
下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。
[0015]
实施例一:
基于智能合约的高效率限时加解密方法,请参阅附图1,包括:步骤a01)在区块链上发布智能合约,智能合约包括加密接收栏、解密接收栏、输出栏和若干个加解密栏,加解密栏包括栏标识、加密函数和时钟,时钟记录加密函数的更新剩余时长,更新剩余时长为0时,加解密栏更新加密函数并重置时钟;步骤a02)加密方将待加密数据、限时时长和接收公钥按照预设加密格式写入加密接收栏;步骤a03)智能合约检测到加密接收栏被写入数据,检查数据是否符合加密格式,若不符合则清空加密接收栏;步骤a04)智能合约检查全部加解密栏的时钟,若存在时钟与限时时长相符,则将待加密数据关联加密标识符,输入对应的加解密栏,获得密文;步骤a05)智能合约使用合约私钥签名栏标识、限时时长和时间戳,作为密文签名,将密文关联密文签名后,使用接收公钥加密,写入输出栏;步骤a06)加密方读取输出栏内的数据,使用私钥解密获得密文和密文签名,完成加密过程;步骤a07)解密方获得密文和密文签名后,使用智能合约的公钥验证密文签名,获得栏标识、限时时长和时间戳;步骤a08)判断当前时刻是否超出限时时长,若未超出,则将密文、密文签名和接收公钥按照预设解密格式写入解密接收栏;步骤a09)智能合约检测到解密接收栏被写入数据,检查数据是否符合解密格式,若不符合则清空解密接收栏;步骤a10)智能合约使用公钥验证密文签名,检查当前时刻是否处于限时时长内,若超出限时时长,则清空解密接收栏,则输出栏限时超时标识符,若处于限时时长内,则将密文关联解密标识符,输入对应的加解密栏,获得明文数据;步骤a11)将明文数据使用接收公钥加密后写入输出栏;步骤a12)解密方读取输出栏,使用私钥解密获得明文数据,完成解密过程。
[0016]
表1 智能合约内容表加解密栏1{栏标识1,加密函数1,时钟1}加解密栏2{栏标识2,加密函数2,时钟2}加解密栏3{栏标识3,加密函数3,时钟3}
……
加解密栏60{栏标识60,加密函数60,时钟60}加密接收栏(

euwk’,30d,pub_key1)解密接收栏null输出栏null如表1所示,智能合约记载了60个加解密栏,每个加解密栏都具有一个时钟。时钟1的更新剩余时长为1d,即1天。第二天加解密栏1将更新其加密函数。同时将时钟1重置为60d,即60天。加密函数为对称加密函数,加密的秘钥保存在智能合约内,不对外公开。加密接收栏内被写入了数据(

euwk’,30d,pub_key1),其中

euwk’为待加密数据,30d为限时时长,pub_key1为接收公钥。
[0017]
当限时加解密的数据量较大时,会导致智能合约难以及时执行完成。为此,本实施例提供了解决方案,请参阅附图2,包括:步骤b01)智能合约公布待加密数据的长度限值;步骤b02)加密方判断待加密的长度,若超过长度限值,则进入步骤b03),反之进入步骤b06);步骤b03)使用对称加密算法将待加密数据加密,记为初级密文;步骤b04)对称加密算法使用的秘钥记为key,将key作为待加密数据提交智能合约加密;步骤b05)获得key密文,将初级密文、key密文和密文签名打包作为限时加密结果;步骤b06)将待加密数据提交智能合约加密。解密方在限时时长内,通过智能合约解密获得key,使用key解密初级密文获得明文数
据。使用对称加密秘钥key将数据加密后,再将key通过智能合约加密,减少了智能合约需要加密的数据长度,提高了智能合约的执行效率。
[0018]
智能合约的加密接收栏、解密接收栏或输出栏被写入数据时,智能合约锁定加密接收栏、解密接收栏和输出栏,在预设的时长内,加密接收栏、解密接收栏和输出栏不接受新数据的写入。
[0019]
加解密栏的加密函数为一元多项式f(x),请参阅附图3,加解密栏使用一元多项式f(x)加密数据的方法为:步骤c01)将待加密数据转换为二进制流,按预设规则补位后,截断为若干个预设长度的二进制段,将二进制段转换为整数d;步骤c02)生成数据组合(b1,x1,b2,x2,

,bn,xn,

) ,bi∈{0,1},使得d=∑(-1)^bi*f(xi)+

,其中i∈[1,n],

为修正值;步骤c03)将数据组合按顺序组合作为密文;加解密栏解密数据的方法为:步骤c04)依次读取数据组合,将每个数据组合中的bi及xi代入一元多项式f(x),并与修正值

求和,获得整数d;步骤c05)将全部整数d转换为二进制流并按顺序拼接后,去除补位后,获得解密的数据。如key为“euwk”,在ascii编码下,将字符串euwk转为二进制为:01000101 01110101 01010111 01101011,按照2字节的长度截断为两个整数,分别为d1=17781,d2=22379。一元多项式f(x)为:f(x)=15*x^2-32*x+64。则d1可以表示为d1=f(17)+ f(31)+439,对应的数据组合为(0,17,0,31,439)。同样的方式能够获得整数d2的数据组合。每个整数的数据组合是不唯一的。
[0020]
本实施例的实质性效果是:借助区块链上的智能合约避免了时间戳欺骗,提高了限时加解密算法的安全性;通过改进的加密算法,提高了加解密的效率;借助等效一元多项式使智能合约能够有效处理高业务量。
[0021]
实施例二:基于智能合约的高效率限时加解密方法。实施例一记载技术方案,在限时加解密业务量较大时,会给区块链网络增加较大的执行压力。为此本实施例在实施例一的基础上,提出了具体的解决放哪。请参阅附图4,包括:步骤d01)限时加密智能合约生成若干个自变量x的取值集合,取值集合包括若干个整数,取值集合具有集标识;步骤d02)为每个一元函数f(x)的每个取值集合生成等效一元多项式f’(x),等效一元多项式f’(x)与一元多项式f(x)在取值集合内的函数值相等;步骤d03)加解密栏加密数据时,选择一个取值集合,生成取值集合的真子集,在真子集内选择自变量x的值生成数据组合;步骤d04)智能合约使用私钥对栏标识、集标识、限时时长和时间戳签名作为密文签名;当限时加密智能合约在预设周期内收到超过预设数量的解密请求时,限时加密智能合约不再将密文出入加解密栏,而是执行以下步骤:步骤d05)读取签名中的集标识,获得一元函数f(x)在集标识对应取值集合下的等效一元多项式f’(x),将等效一元多项式f’(x) 使用接收公钥加密后,写入输出栏;步骤d06)解密方读取输出栏,获得等效一元多项式f’(x);步骤d07)解密方将每个数据组合中的bi及xi代入等效一元多项式f’(x),并与修正值

求和,获得整数d,将全部整数d转换为二进制流并按顺序拼接后,去除补位后,获得解密的数据。本实施例能够与实施例一同时实施。
[0022]
在本实施例中,为加解密栏2设置的自变量x取值集合为{2,4,7,9,10},一元多项式f(x)为:f(x)=7*x^2+12*x-4。分别生成2个真子集,分别为{2,4,7}和{2,7,10}相应组编号分别为z1和z2。计算相应的函数值,而后分别生成对应真子集的等效一元多项式f’(x)。
如真子集{2,4,7}对应函数值为{48,156,423},对应的等效一元多项式f’(x)为:f’(x)=-8.75*x^3+120.75*x^2-425.5*x+486,等效一元多项式f’(x)在真子集{2,4,7}上的取值与一元多项式f(x)相同。同时生成组编号为z2的真子集{2,7,10}的等效一元多项式,记为f
’’
(x)=
ꢀ‑
1.25*x^3+30.75*x^2-118*x+171,等效一元多项式f
’’
(x)与一元多项式f(x)在真子集{2,7,10}上的取值相同。等效一元多项式f’(x)和等效一元多项式f
’’
(x)分别能够解密相应真子集对应的加密密文。但不能解密其他密文。相对于实施例一本实施例通过等效一元多项式,将等效一元多项式提供给解密方,由解密方自行解密,能够减轻区块链网络的运算压力。
[0023]
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1