发明内容
为了解决上述背景技术中存在的至少一项技术问题,本发明提供一种基于区块链的支持策略隐藏的解密外包方法及系统,其使用了表达灵活的线性访问结构,能支持任意形式的访问控制策略,且隐藏了访问策略,在保护数据机密性的同时保护了用户的隐私。
为了实现上述目的,本发明采用如下技术方案:
本发明的第一个方面提供一种基于区块链的支持策略隐藏的解密外包方法,包括如下步骤:
属性权威机构接收用户端提交的属性集合并生成对应的属性密钥;
数据拥有者采用对称密钥将明文加密得到的密文存储至分布式存储系统,制定访问策略,采用访问策略对对称密钥加密得到隐藏的访问控制策略;
数据拥有者部署智能合约,生成存储交易,将明文哈希值、密钥密文和隐藏的访问控制策略发送至区块链;
数据访问者部署解密外包合约,将外包转换密钥发送给区块链,区块链将外包转换密钥和密文发送至云服务器,云服务器采用外包转换密钥对密文进行转换,区块链执行智能合约对服务器返回的解密结果进行验证,验证正确,云服务器发送给数据访问者对转换密文解密。
本发明的第二个方面提供一种基于区块链的支持策略隐藏的解密外包系统,包括:
属性权威机构用于接收用户端提交的属性集合并生成对应的属性密钥;
数据拥有者用于采用对称密钥将明文加密得到的密文存储至分布式存储系统,制定访问策略,采用访问策略对对称密钥加密得到隐藏的访问控制策略;
数据拥有者用于部署智能合约,生成存储交易,将明文哈希值、密钥密文和隐藏的访问控制策略发送至区块链;
数据访问者用于部署解密外包合约,将外包转换密钥发送给区块链,区块链将外包转换密钥和密文发送至云服务器,云服务器采用外包转换密钥对密文进行转换,区块链执行智能合约对服务器返回的解密结果进行验证,验证正确,云服务器将发送至用户端对转换密文解密。
与现有技术相比,本发明的有益效果是:
本发明将访问策略中的属性分为属性名和属性值两部分,公开属性名,将更为敏感的属性值嵌入到密文中,以此来隐藏访问策略,从而避免访问策略显式存储造成的用户隐私泄露缺陷。
本发明使用表达能力强的LSSS访问结构,可以支持任意形式的访问控制策略;利用区块链和CP-ABE实现对用户分布式的细粒度访问控制;将解密过程分为两层,先由第三方服务器对密文进行转换,用户只需要进行一次幂操作即可恢复明文消息,可有效降低用户的数据解密计算开销。
本发明使用智能合约对返回的第三方外包转换结果和存储在区块链中的验证密文进行自动比对,实现外包计算的公开验证,既可以验证了第三方外包计算结果的正确性,又保证了验证操作的公平性和可信性。
具体实施方式
下面结合附图与实施例对本发明作进一步说明。
应该指出,以下详细说明都是例示性的,旨在对本发明提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本发明所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本发明的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
整体思路:
将访问策略中的属性分为属性名和属性值两部分,将属性名公开,将更为敏感的属性值嵌入到密文当中,以此来隐藏访问策略,在保证数据机密性的同时,也保证用户的隐私不被泄露。利用表达能力强的线性秘密共享结构作为访问结构,支持任意“与”门、“或”门和门限;使用对称密码算法将数据加密存储在链外分布式存储系统中,将密文哈希值存储在区块链中,防止密文被窃取或篡改;使用属性加密方法将数据加密密钥加密,并和访问策略一起存储在区块链中;利用区块链和CP-ABE实现分布式的细粒度访问控制;将解密过程中的密集型计算外包给云服务器,并对返回的转换结果与区块链中的验证密文比较,实现外包计算结果的公开可信验证。因为解密过程中第一层和第二层使用不同的密钥,执行外包解密算法的第三方和恶意用户都不能完全解密密文。
实施例一
如图1-图2所示,本实施例提供了一种基于区块链的支持策略隐藏的解密外包方法,包括如下步骤:
步骤1:系统初始化
作为一种或多种实施例,步骤1中,所述系统初始化包括:
Register(注册):数据拥有者和数据访问者在区块链上进行注册,获取签名公私钥对,用于对交易签名和验证交易的有效性。
(1)Setup(λ) →{PK,MK}
属性权威机构选取安全参数λ,生成公钥和系统主密钥,具体包括:
属性权威机构输入安全参数λ,运行双线性群生成器生成公共参数
。
其中,p1、p2 、p3 、p4是四个不同的素数,G和GT是阶均为N的乘法循环群,N=p1p2p3p4;e是双线性配对运算,
,G有四个子群/>
,子群的阶分别为素数p1、p2 、p3 、p4,属性空间表示为U。
(2)从子群
中随机选择g,从ZN中随机选取α、a、β。计算/>
。
其中,g为
的生成元;ZN为模N的余数集合;e(g,g)为将群G中元素映射群GT中的双线性配对运算,即/>
。
(3)H、H1为两个哈希函数,
,H1用于验证转换密文的正确性。其中,/>
为长度为
的二进制串,/>
为将二进制串映射到模p的整数群中;H1为普通哈希函数,将字符串映射为指定长度的哈希串。/>
用户端向属性权威机构提交属性集合S=(IS,LS),属性权威机构为用户端生成属性密钥
作为一种或多种实施例,步骤2中,属性权威机构接收用户端提交的属性集合并生成对应的属性密钥包括:
属性权威机构从ZN中随机选取t,从
中随机选取R、R1、Ri,其中/>
。计算
,/>
。
ZN为模N 的余数集合;R、R1、Ri都为子群
中的元素;α、a、β、g1为MK中的参数;H(Li)为将属性值映射到整数群中。
其中,所述属性集合包括用户的属性名集合IS和用户的属性值集合LS,属性密钥用于生成外包转换密钥。
数据拥有者采用对称密钥算法将待加密的明文数据加密得到的密文存储至分布式存储系统,制定矩阵型访问策略A,其中,访问策略中的属性分为属性名和属性值两部分,将属性名矩阵和映射函数显式存储,将属性值隐藏在密钥密文的多个组件中。
作为一种或多种实施例,步骤3具体包括:
(1)数据拥有者选择对称密码算法和密钥M,加密明文数据data以及数据密文存储到链外分布式存储系统中;
(2)数据拥有者指定访问策略
,其中A为l×n矩阵,ρ将A中的每一行Ax映射为属性名,
数据拥有者从ZN中随机选取向量
;从群/>
中随机选取/>
、/>
,从ZN中随机选取rx,其中/>
。
(3)将访问策略中的属性分为属性名和属性值两部分,将属性名公开,将更为敏感的属性值嵌入到密文当中。
计算
(4)输出生成的密文
其中,g为PK中参数,α、a、β、g1为MK中参数;e(g,g1)为将群G中元素映射群GT中的双线性配对运算,即
,/>
计算哈希值,防止/>
被篡改,用于对转换密文的验证。
步骤4:数据拥有者部署智能合约,生成存储交易,将明文哈希值、密钥密文和显式存储的属性名矩阵和映射函数元组
发送至区块链;
作为一种或多种实施例,步骤4中,存储交易的生成包括:
步骤401:数据拥有者部署智能合约,输入密文数据的存储地址、密钥密文、区块链中注册得到的私钥,输出存储交易
。
数据拥有者计算数据明文的摘要
,数据密文的存储地址/>
、数据密文摘要/>
、密钥密文/>
和访问策略
的共同摘要
步骤402:存储交易生成后,节点将该交易在链上广播给其他节点以验证,通过数据拥有者的签名验证交易的有效性,具体包括:
其他节点接收到广播交易后,计算交易的消息摘要值,记为
,使用数据拥有者的公钥解密他的签名
。
比较交易的消息摘要值和共同摘要
,若相等,表明该交易确实由数据拥有者发送原始交易,为有效交易,则该交易将会被打包到区块以便通过PBFT进行共识;若不相等,表明该交易被篡改。
步骤5:数据访问者部署解密外包合约,将外包转换密钥发送给区块链,区块链将外包转换密钥和密文发送至云服务器,云服务器采用外包转换密钥
对密文进行转换,区块链执行智能合约对服务器返回的解密结果进行验证,验证正确,云服务器将转换密文发送至用户端进行最终解密。
作为一种或多种实施例,步骤5中,数据访问者部署解密外包合约,将外包转换密钥发送给区块链包括:
步骤502:数据访问者部署智能合约,输入外包转换密钥和在区块链中注册得到的私钥,输出存储交易
;
数据访问者计算外包转换密钥的摘要
,并对该摘要签名
;
步骤503:存储交易生成后,节点将该交易在链上广播给其他节点以验证,通过数据访问者的签名验证交易的有效性,具体包括:
其他节点接收到广播交易后,计算交易的消息摘要值,记为
。使用数据访问者的公钥解密他的签名/>
。
比较
,若相等,表明该交易确实由数据访问者发送原始交易,为有效交易,则该交易将会被打包到区块链以便进行共识;若不相等,表明该交易被篡改。
所述云服务器采用外包转换密钥对密文进行转换,具体包括:
数据访问者者部署智能合约,输入外包转换密钥TK、密文CTA,输出存储交易
;
云服务器搜索计算任务,并下载其中的外包转换密钥和密文;
云服务器使用外包转换密钥TK对密文CTA进行转换,并将转换密文CT’附在合约上返回。
区块链执行智能合约对服务器返回的解密结果进行验证
,若成立,智能合约判断为true,表明云服务器返回正确结果,智能合约将云服务器返回的结果附在解密外包合约中返回给用户。若不成立,智能合约判断为false,表示云服务器返回错误结果。
用户使用UK对区块链返回的部分解密结果进行最终解密,解密结果为M或
。/>
步骤6:数据访问者获取到对称密码算法中的密钥后,根据区块链上存储的密文地址,对密文进行解密得到数据明文data。计算数据明文摘要
,并对比解密后的明文哈希/>
和原始明文哈希D进行比对,若相等,表明明文未被篡改,若不相等,则表明被篡改。
其中,所述访问策略采用线性矩阵秘密共享方案(Linear Secret SharingScheme,LSSS);
一个线性秘密共享方案是指用一个秘密值s对消息进行加密,该秘密值被分成多份被不同共享份额持有。解密的前提是恢复出秘密值s,达到一定的共享份额即可恢复出秘密值s。该方案包括秘密共享和秘密重构:
(1)秘密共享:在方案中,存在一个l×n的共享矩阵M和映射函数ρ,ρ可以将矩阵中的每一行映射为一个属性。指定
为待共享的秘密值,随机选取
,构成随机列向量/>
。计算/>
,Mi为M中第i行向量,λi为s在访问矩阵M中的第i份共享份额。
秘密重构:设A为任意授权集合,定义
根据矩阵M,映射函数ρ可以计算一个常量集合
,有
,则可以恢复秘密值/>
而对于非授权集合来说,不存在这样的常量集合,即无法恢复秘密值s。
由于访问策略中包含授权用户的特定属性,显式存储会暴露数据拥有者和授权用户的隐私信息。
例如在医疗数据共享领域中,患者制定一个访问策略{医院:省立医院;科室:遗传科;医生编号:G-001},即使不知道患者加密的具体数据,但所有人都能通过访问策略知道该患者患有遗传病,这显然不够安全。目前在大部分基于CP-ABE的访问控制方案中,密文和访问策略都存储在集中式云服务器中,虽然访问控制策略由数据拥有者制定,但对用户的访问控制都由中心化的云服务器执行,存在权力过大和单点故障等缺陷。
实施例二
本发明提供一种基于区块链的支持策略隐藏的解密外包系统,包括:
属性权威机构用于接收用户端提交的属性集合并生成对应的属性密钥;
数据拥有者用于采用对称密钥将明文加密得到的密文存储至分布式存储系统,制定矩阵型访问策略将对称密钥加密得到密钥密文,其中访问策略中的属性分为属性名和属性值两部分,将属性名矩阵和映射函数显式存储,将属性值隐藏在密钥密文的多个组件中;
数据拥有者用于部署智能合约,生成存储交易,将明文哈希值、密钥密文和显式存储的属性矩阵和映射函数元组发送至区块链;
数据访问者用于部署解密外包合约,将外包转换密钥发送给区块链,区块链将外包转换密钥和密文发送至云服务器,云服务器采用外包转换密钥对密文进行转换,区块链执行智能合约对服务器返回的解密结果进行验证,验证正确,云服务器将转换密文发送至用户端,用户对转换密文进行最终解密。
所述访问策略采用线性矩阵秘密共享方案。
所述访问策略中的属性分为属性名和属性值两部分,将属性名公开,将属性值嵌入到密文当中,以此来隐藏访问策略。
云服务器采用外包转换密钥对密文进行转换包括:
搜索计算任务,并下载其中的外包转换密钥和密文;
使用外包转换密钥对密文进行转换,得到转换密文,将转换密文附在合约上返回至区块链。
数据访问者获取到对称密码算法中的密钥后,根据区块链上存储的密文地址,对密文进行解密得到数据明文,计算数据明文摘要,并对比数据明文摘要和
,若结果为true,表明明文未被篡改;若结果为False,表明结果被篡改。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。