掌桥专利:专业的专利平台
掌桥专利
首页

基于区块链的限时加解密系统

文献发布时间:2023-06-19 16:04:54



技术领域

本发明涉及信息技术领域,具体涉及一种基于区块链的限时加解密系统。

背景技术

ABE是一种基于属性的加密算法,即根据属性加密消息(attribute-basedecryption, ABE),该加密算法无需关注接收者的身份,只有符合属性要求的用户才能解密密文,保证了数据的机密性。此外,ABE中的用户密钥与随机多项式或随机数相关,不同用户的密钥无法联合,防止用户合谋攻击。提供了一定程度上管控解密范围的效果。相应的,为了从时间角度控制访问权限,本领域公开了附带时间限制的加密算法。这种加密算法将限时时长加入密文中,进行解密时,读取本地时间戳,若超过限时时长在拒绝执行后续解密操作。但这种限时加解密算法可以通过修改本地时间而轻易被绕过,因此安全性不高。

发明内容

本发明要解决的技术问题是:目前带有时间限制的加解密算法安全性不高的技术问题。提出了一种基于区块链的限时加解密系统,能够提供高安全性的限时加解密服务。

为解决上述技术问题,本发明所采取的技术方案为:基于区块链的限时加解密系统,包括加密代理、解密代理和智能合约,所述智能合约包括加密接收栏、解密接收栏、输出栏和若干个加解密栏,所述加解密栏包括栏标识、加密函数和时钟,所述时钟记录加密函数的更新剩余时长,所述更新剩余时长为0时,所述加解密栏更新所述加密函数并重置时钟,加密方将待加密数据和限时时长发送给加密代理,所述加密代理同步记录加解密栏的时钟状态,检查是否存在于限时时长相符的时钟,若存在则获得对应的栏标识,若不存在,则向所述智能合约发送设置时钟请求,所述智能合约设置时钟后,返回对应的栏标识,所述加密代理将待加密数据关联加密标识符发送给栏标识对应的加解密栏,获得加密后的密文,所述加密代理提取密文的哈希值,记为密文哈希值,签名密文哈希值、栏标识、限时时长和时间戳,作为密文签名,将密文和密文签名作为加密结果发送给加密方;所述解密代理接收解密方发送的解密请求,所述解密请求包括密文、密文签名和接收秘钥,使用加密代理的公钥验证密文签名,获得密文哈希值、栏标识、限时时长和时间戳,验证密文哈希值,若当前时刻处于限时时长内,则将密文关联解密标识符提交给栏标识对应的加解密栏,获得解密后的数据,将解密后的数据使用接收秘钥加密后,发送给解密方。

作为优选,所述加密代理检查待加密数据的长度,若待加密数据的长度超过预设阈值,则生成对称加密的秘钥Key,使用秘钥Key加密待加密数据,获得初级密文,将秘钥Key关联加密标识符提交给加解密栏,获得秘钥密文,将初级密文和秘钥密文打包作为密文,提取密文的哈希值作为密文哈希值,所述解密代理获得密文后,检查是否存在初级密文和秘钥密文,若不存在,则将密文关联解密标识符提交给栏标识对应的加解密栏,获得解密后的数据,若存在,则将秘钥密文关联解密标识符提交给栏标识对应的加解密栏,获得秘钥Key,使用秘钥Key解密初级密文,获得解密后的数据。

作为优选,所述加解密栏的加密函数为一元多项式f(x),加解密栏使用一元多项式f(x)加密数据的方法为:将待加密数据转换为二进制流,按预设规则补位后,截断为若干个预设长度的二进制段,将二进制段转换为整数D;生成数据对(x,△),使得D=f(x)+△,x为自变量,△为修正值;将数据对按顺序组合作为密文;加解密栏解密数据的方法为:依次读取数据对,将每个数据对中的自变量x代入一元多项式f(x),并与修正值△求和,获得整数D;将全部整数D转换为二进制流并按顺序拼接后,去除补位后,获得解密的数据。

作为优选,所述智能合约生成若干个自变量x的取值集合,取值集合包括若干个整数,取值集合具有集标识,为每个一元函数f(x)的每个取值集合生成等效一元多项式f’(x),等效一元多项式f’(x)与一元多项式f(x)在取值集合内的函数值相等,所述加解密栏加密数据时,选择一个取值集合,生成取值集合的真子集,在真子集内选择自变量x的值生成数据对,将数据对按顺序组合,并在起始位置拼接集标识,作为密文反馈给加密代理,当所述解密代理在预设周期内收到超过预设数量的解密请求时,所述解密代理向所述智能合约请求等效一元多项式f’(x),所述解密代理截取预设长度的密文发送给栏标识对应的加解密栏,所述加解密栏读取密文起始位置记录的集标识,获得一元函数f(x)在集标识对应取值集合下的等效一元多项式f’(x),将等效一元多项式f’(x)发送给解密代理,解密代理将数据对中的自变量x代入等效一元多项式f’(x),并与修正值△求和,获得整数D,将全部整数D转换为二进制流并按顺序拼接后,去除补位后,获得解密后的数据。

作为优选,所述加解密栏将集标识使用智能合约的公钥加密后拼接在数据对组合的起始位置,加密所述集标识使用的非对称加密算法为密文不唯一的非对称加密算法。

作为优选,所述加解密栏每次执行加密时,生成随机偏移值Q,将每个二进制段对应的整数D均减去偏移值D,即生成数据对(x,△),使得D-Q=f(x)+△,将偏移值Q和集标识拼接在数据对组合的起始位置,解密代理请求等效一元多项式f’(x)时,将偏移值Q和等效一元多项式f’(x)发送给解密代理,解密代理将数据对中的自变量x代入等效一元多项式f’(x),并与修正值△和偏移值Q求和,获得整数D,将全部整数D转换为二进制流并按顺序拼接后,去除补位后,获得解密后的数据。

本发明的实质性效果是:通过智能合约确保了限时验证的可靠执行,提高了限时加解密的安全性;通过改进的加密算法,提高了限时加解密的效率;借助等效一元多项式使智能合约能够在高业务量时保持较高的执行效率。

附图说明

图1为实施例一限时加解密系统示意图。

图2为实施例一加解密栏加密数据方法示意图。

图3为实施例一数据对生成方法示意图。

图4为实施例一请求等效一元多项式方法示意图。

图5为实施例二加解密栏加密数据方法示意图。

其中:10、加密方,11、待加密数据,12、限时时长,20、加密代理,30、智能合约,40、解密代理,50、解密方,51、解密请求。

具体实施方式

下面通过具体实施例,并结合附图,对本发明的具体实施方式作进一步具体说明。

实施例一:

基于区块链的限时加解密系统,请参阅附图1,包括加密代理20、解密代理40和智能合约30,智能合约30包括加密接收栏、解密接收栏、输出栏和若干个加解密栏,加解密栏包括栏标识、加密函数和时钟,时钟记录加密函数的更新剩余时长,更新剩余时长为0时,加解密栏更新加密函数并重置时钟,加密方10将待加密数据11和限时时长12发送给加密代理20,加密代理20同步记录加解密栏的时钟状态,检查是否存在于限时时长12相符的时钟,若存在则获得对应的栏标识,若不存在,则向智能合约30发送设置时钟请求,智能合约30设置时钟后,返回对应的栏标识,加密代理20将待加密数据11关联加密标识符发送给栏标识对应的加解密栏,获得加密后的密文,加密代理20提取密文的哈希值,记为密文哈希值,签名密文哈希值、栏标识、限时时长12和时间戳,作为密文签名,将密文和密文签名作为加密结果发送给加密方10;解密代理40接收解密方50发送的解密请求51,解密请求51包括密文、密文签名和接收秘钥,使用加密代理20的公钥验证密文签名,获得密文哈希值、栏标识、限时时长12和时间戳,验证密文哈希值,若当前时刻处于限时时长12内,则将密文关联解密标识符提交给栏标识对应的加解密栏,获得解密后的数据,将解密后的数据使用接收秘钥加密后,发送给解密方50。

用户通过加密代理20和解密代理40分别实现限时加密以及在限时内解密数据的功能,为用户提供限时加解密服务。通过验证密文哈希值和密文签名,能够验证是否为正确的加密数据,提高限时加解密的安全性。

表1 智能合约30内容表

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

当限时加解密的数据量较大时,会导致智能合约30难以及时执行完成。为此,本实施例提供了解决方案。具体包括:加密代理20检查待加密数据11的长度,若待加密数据11的长度超过预设阈值,则生成对称加密的秘钥Key,使用秘钥Key加密待加密数据11,获得初级密文,将秘钥Key关联加密标识符提交给加解密栏,获得秘钥密文,将初级密文和秘钥密文打包作为密文,提取密文的哈希值作为密文哈希值,解密代理40获得密文后,检查是否存在初级密文和秘钥密文,若不存在,则将密文关联解密标识符提交给栏标识对应的加解密栏,获得解密后的数据,若存在,则将秘钥密文关联解密标识符提交给栏标识对应的加解密栏,获得秘钥Key,使用秘钥Key解密初级密文,获得解密后的数据。

加解密栏的加密函数为一元多项式f(x),请参阅附图2,加解密栏使用一元多项式f(x)加密数据的方法为:步骤A01)将待加密数据11转换为二进制流,按预设规则补位后,截断为若干个预设长度的二进制段,将二进制段转换为整数D;步骤A02)生成数据对(x,△),使得D=f(x)+△,x为自变量,△为修正值;步骤A03)将数据对按顺序组合作为密文;加解密栏解密数据的方法为:步骤A04)依次读取数据对,将每个数据对中的自变量x代入一元多项式f(x),并与修正值△求和,获得整数D;步骤A05)将全部整数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(35)+462,对应的数据组合为(35,462),D2=f(39)+748,对应的数据组合为(39,748),则“EuWk”的加密结果为{(35,462),(39,748)}。每个整数的数据组合是不唯一的。

为了提高一元多项式的计算效率,本实施例采用等效一元多项式的方案,请参阅附图3,包括:步骤B01)智能合约30生成若干个自变量x的取值集合,取值集合包括若干个整数,取值集合具有集标识;步骤B02)为每个一元函数f(x)的每个取值集合生成等效一元多项式f’(x),等效一元多项式f’(x)与一元多项式f(x)在取值集合内的函数值相等;步骤B03)加解密栏加密数据时,选择一个取值集合,生成取值集合的真子集;步骤B04)在真子集内选择自变量x的值生成数据对;步骤B05)将数据对按顺序组合,并在起始位置拼接集标识,作为密文反馈给加密代理20。

在本实施例中,为加解密栏2设置的自变量x取值集合为{2,4,7,9,10},一元多项式f(x)为:f(x)=7*x^2+12*x-4。生成真子集{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)相同。

请参阅附图4,当解密代理40在预设周期内收到超过预设数量的解密请求51,包括:步骤C01)解密代理40向智能合约30请求等效一元多项式f’(x);步骤C02)解密代理40截取预设长度的密文发送给栏标识对应的加解密栏;步骤C03)加解密栏读取密文起始位置记录的集标识,获得一元函数f(x)在集标识对应取值集合下的等效一元多项式f’(x);步骤C04)将等效一元多项式f’(x)发送给解密代理40;步骤C05)解密代理40将数据对中的自变量x代入等效一元多项式f’(x),并与修正值△求和,获得整数D;步骤C06)将全部整数D转换为二进制流并按顺序拼接后,去除补位后,获得解密后的数据。等效一元多项式f’(x)能够解密相应真子集对应的加密密文。但不能解密其他密文。相对于实施例一本实施例通过等效一元多项式,将等效一元多项式提供给解密代理40,由解密代理40自行解密,能够减轻区块链网络的运算压力。

加解密栏将集标识使用智能合约30的公钥加密后拼接在数据对组合的起始位置,加密集标识使用的非对称加密算法为密文不唯一的非对称加密算法。

本实施例的实质性效果是:通过智能合约30确保了限时验证的可靠执行,提高了限时加解密的安全性;通过改进的加密算法,提高了限时加解密的效率;借助等效一元多项式使智能合约30能够在高业务量时保持较高的执行效率。

实施例二:

基于区块链的限时加解密系统,本实施例在实施例一的基础上,提供了新的技术方案,进一步提高限时加解密的安全性。请参阅附图5,本实施例中,包括:步骤D01)加解密栏每次执行加密时,生成随机偏移值Q;步骤D02)将每个二进制段对应的整数D均减去偏移值D;步骤D03)生成数据对(x,△),使得D-Q=f(x)+△;步骤D04)将偏移值Q和集标识拼接在全部数据对组合的起始位置。如Q=30时,字符串“EuWk”的加密结果为{30,(35,432),(39,718)}。解密代理40请求等效一元多项式f’(x)时,执行步骤D05)将偏移值Q和等效一元多项式f’(x)发送给解密代理40;步骤D06)解密代理40将数据对中的自变量x代入等效一元多项式f’(x),并与修正值△和偏移值Q求和,获得整数D;步骤D07)将全部整数D转换为二进制流并按顺序拼接后,去除补位后,获得解密后的数据。本实施例可以与实施例一同时实施。

由于每次加密时,生成的偏移值Q各不相同,将偏移值Q拼接在数据对组合的起始位置,因此只有智能合约30提供偏移值Q后,解密代理40才能正确解密密文。因此使用相同的等效一元多项式f’(x)时,也不会造成密文泄露。相当于实施例一,本实施例进一步提高了限时加解密的安全性。

以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。

技术分类

06120114694975