一种基于联盟链智能合约的隐私数据访问控制方法

xiaoxiao2023-3-29  51



1.本发明属于区块链应用技术领域,具体涉及一种基于联盟链智能合约的隐私数据访问控制方法。


背景技术:

2.随着物联网技术、云计算、大数据等新兴技术的发展,越来越多的个人和组织用户将其数据进行在线存储及远程共享。用户可以随时随地访问并获取数据。然而,存储在云端的数据可能包含大量的隐私和机密,一旦受到攻击或缺乏监控,可能造成数据被篡改或隐私泄露等重大事故凹。数据加密被认为是实现数据安全的有效方法之。
3.云存储信息泄露与破坏影响着云存储应用系统实施的效率,也是目前云存储应用面临的一个重要问题。云存储应用系统中信息被破坏表现为黑客入侵、病毒攻击。对云存储的非法操作包括非法访问者访问隐私数据以及合法访问者对云存储非授权对象进行非法访问。造成云存储被攻击的主要原因是云存储访问控制技术不能保障数据库本身的安全防护,具体表现在云存储访问控制过程的中心化管理缺乏对数据库访问者访问行为的认证、记录和监管,对云存储信息泄露事件的责任追溯及控制力不足等。所以,如何加强对云存储访问者身份及访问权限的认证,构建对访问者访问行为的动态、实时监管机制以及访问者身份、访问行为的事后追溯体系,是目前云存储访问控制需要解决的问题。
4.区块链是比特币的技术体系与应用模式,最早于2008年11月由中本聪提出。区块链的根本特点是去中心化共识认证和分布式记账,由于使用了哈希计算和数字签名技术,区块链从理论上构建了一个完善的、不可伪造的信息或数据记录体系,成功解决了信息或数据的可追溯问题。区块链本身的技术特性使其在实际应用中具备开放性和灵活性,区块链可以根据具体应用环境的特点轻松地进行调整并与应用体系进行融合,而且对应用体系没有额外的硬件设备要求。区块链这一技术体系是多个成熟技术的融合,应用过程中在软件构建方面也不会带来新的问题。因此,区块链在社会生活相关领域得到了迅猛发展
5.现有技术的问题在于:1)随着用户属性个数的增加,其计算密钥生成和分发的难度越来越大,不能满足实际应用的需要,因此使用cp-abe进行权限验证效率降低。2)权限验证是在不受信的第三方服务器上进行时,服务器可能会恶意篡改数据。对数据访问者的权限设置不当造成隐私数据泄露和权限验证计算开销。


技术实现要素:

6.鉴于现有问题,本发明的目的在于提供一种基于联盟链智能合约的隐私数据访问控制方法,,以解决上述问题。
7.本发明提供如下的技术方案:
8.一种基于联盟链智能合约的隐私数据访问控制方法,包括以下步骤:s1:初始化系统,设置系统参数并计算用户公钥;s2:生成发布数据的密文,构造发往服务器的消息;s3:请求数据并验证权限;s4:从数据库中下载数据;s5:更新本地授权信息,新增享有资源的用
户的权限;s6:更新本地授权信息,删除不再享有资源的用户的权限。
9.步骤s1具体为:系统设置eigamal签名算法时使用的参数(p,g),其中p为素数,g为的一个生成元,为非零元的集合;z
p
的非零元构成一个乘法群,用户从中选取的值;(p,g)作为用户的私钥,计算自通过公式y≡g
x
modp计算用户的公钥,并在本地安全保存为(ski,pki)。
10.述步骤s2包括:
11.s21:数据拥有者do生成数据的密文:数据拥有者do收集需要发布的数据m,选择一随机正整数a0,计算k=h
256
(a0),使用对称密钥k对数据m进行加密得到密文c=ek(m),计算密文哈希值hc=h
256
(c);
12.s22:数据拥有者do将拥有访问权限的授权用户信息插入到mpt中,其中授权用户信息包括公钥哈希值和公钥加密的解密密钥;并在本地生成一个空文件记录被授权用户的信息;
13.s23:数据拥有者do构造发往服务器的消息:
14.其中,hc是密文在云存储服务器上的索引,pk
do
是do的公钥,c=ek(m)为密文,sig
skdo
为通过数据拥有者的私钥进行的签名,desc是数据拥有者do对数据的描述;
15.s24:通过云存储服务器验证数据拥有者do签名合法性,若签名合法则把消息meg储存在本地,云存储服务器返回存储地址dress;
16.s25:数据拥有者do发布交易提案
[0017][0018]
其中,h(mpt)为mpt的哈希结果;
[0019]
s26:数据拥有者do把交易提案发送至联盟链网络中,区块链中的节点对交易提案进行验证和共识,数据拥有者do通过在新接收到的区块中查询是否有自己的交易提案来确定交易提案是否被记录到联盟链上。
[0020]
步骤s3包括:
[0021]
s31:数据访问者du对数据拥有者do的哈希值为hc的数据感兴趣时,通过公式:把hc下载并记录在本地并且生成一个交易请求发布到区块链中,其中,req为数据访问者du的具体请求内容;
[0022]
s32:联盟链中的节点对交易提案进行验证和共识,如果验证通过,则调用联盟链中预设的访问控制智能合约,对数据访问者du进行权限验证,通过重构mpt

的根来验证数据访问者du的公钥是否在已发布的mpt中,智能合约同时通过计算所有节点的sha-256值验证一致性,如果最终验证结果和区块中存储的mpt根值一致,则该用户获得访问权限;
[0023]
s33:验证通过后,联盟链将存储在mpt中使用数据访问者du公钥加密的解密密钥发送给数据访问者du并将数据访问者du的公钥发送给授权的云存储服务器,若验证为通过,则告知数据访问者du无权访问所请求的数据。
[0024]
步骤s4包括:
[0025]
s41:使用云存储服务器在数据库中下载相关数据,对相关数据签名后发送给数据
访问者du;
[0026]
s42:数据访问者du收到云存储服务器发送的密文c后,验证签名的合法性,如果签名不合法,则忽略密文c;如果签名合法,计算hc′
=h
256
(c)比较hc′
与hc是否相同,其中hc是之前在联盟链中记录的哈希值,以确保密文没有被篡改;如果密文正确,则使用对称密钥k计算dk(c)得到do的数据m。
[0027]
步骤s5对于新增权限用户数据拥有者do在本地更新本地授权信息后,新增享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。
[0028]
步骤s5中的交易提案所包含内容的格式如下:
[0029]
重新部署智能合约:sc
iupdate

{h(mpt)
do
=h(mpt

)
du
};
[0030]
重新发布交易提案:
[0031][0032]
全网广播以下信息:
[0033]
联盟链在网络中发布数据权限更新交易之后,数据拥有者do通过在本地执行mpt插入操作来验证服务器是否进行了正确的用户权限插入。
[0034]
步骤s6对于删除权限用户在数据拥有者do在本地更新本地授权信息删除不再享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。
[0035]
步骤s6中的交易提案所包含内容的格式如下:
[0036]
重新部署智能合约:sc
dupdate

{h(mpt)
do
=h(mpt

)
du
};
[0037]
重新发布交易提案:
[0038][0039]
全网广播以下信息:
[0040]
联盟链在网络中发布数据权限更新交易之后,数据拥有者do通过在本地执行mpt插入操作来验证服务器的用户权限删除是否有误。
[0041]
本发明的有益技术效果在于:
[0042]
1.本发明提供的基于联盟链智能合约的隐私数据访问控制方法,能够实现对数据访问者的访问权限控制:联盟链中的权限验证智能合约来验证请求者权限的mpt中的相关隐私数据,智能合约验证计算结果是否与区块中相应的mpt哈希值相等,有效地实现了实现对数据访问者的访问权限控制。
[0043]
2.本发明提供的技术方案,通过预设的智能合约有效的防止了权限被篡改,或者服务器找到与原始数据的哈子碰撞值,然而这是非常困难的。因此将数据的哈希值保存在联盟链中能够保证数据的不可篡改性。
附图说明
[0044]
图1是本发明实施例基于联盟链智能合约的隐私数据访问控制方法的流程示意图;
[0045]
图2是本发明的一优选实施例中mpt树的模型示意图;
[0046]
图3是本发明的一优选实施例中联盟链的数据流转示意图。
具体实施方式
[0047]
下面对本发明的实施例作详细说明,下述的实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
[0048]
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,在不冲突的情况下,本文所描述的实施例可以与其它实施例相结合。
[0049]
实施例1
[0050]
如图1,本发明实施例提供的基于联盟链智能合约的隐私数据访问控制方法,包括以下步骤:
[0051]
s1:初始化系统,设置系统参数并计算用户公钥;s2:生成发布数据的密文,构造发往服务器的消息;s3:请求数据并验证权限;s4:从数据库中下载数据;s5:更新本地授权信息,新增享有资源的用户的权限;s6:更新本地授权信息,删除不再享有资源的用户的权限。
[0052]
步骤s1具体为:系统设置eigamal签名算法时使用的参数(p,g),其中p为素数,g为的一个生成元,为非零元的集合;z
p
的非零元构成一个乘法群,用户从中选取的值;(p,g)作为用户的私钥,计算自通过公式y≡g
x
modp计算用户的公钥,并在本地安全保存为(ski,pki),如图2所示。
[0053]
述步骤s2包括:
[0054]
s21:数据拥有者do生成数据的密文:数据拥有者do收集需要发布的数据m,选择一随机正整数a0,计算k=h
256
(a0),使用对称密钥k对数据m进行加密得到密文c=ek(m),计算密文哈希值hc=h
256
(c);
[0055]
s22:数据拥有者do将拥有访问权限的授权用户信息插入到mpt中,其中授权用户信息包括公钥哈希值和公钥加密的解密密钥;并在本地生成一个空文件记录被授权用户的信息;
[0056]
s23:数据拥有者do构造发往服务器的消息:
[0057]
其中,hc是密文在云存储服务器上的索引,pk
do
是do的公钥,c=ek(m)为密文,sig
skdo
为通过数据拥有者的私钥进行的签名,desc是数据拥有者do对数据的描述;
[0058]
s24:通过云存储服务器验证数据拥有者do签名合法性,若签名合法则把消息meg储存在本地,云存储服务器返回存储地址dress;
[0059]
s25:数据拥有者do发布交易提案
[0060][0061]
其中,h(mpt)为mpt的哈希结果;
[0062]
s26:数据拥有者do把交易提案发送至联盟链网络中,区块链中的节点对交易提案进行验证和共识,数据拥有者do通过在新接收到的区块中查询是否有自己的交易提案来确定交易提案是否被记录到联盟链上。
[0063]
步骤s3包括:
[0064]
s31:数据访问者du对数据拥有者do的哈希值为hc的数据感兴趣时,通过公式:把hc下载并记录在本地并且生成一个交易请求发布到区块链中,其中,req为数据访问者du的具体请求内容;
[0065]
s32:联盟链中的节点对交易提案进行验证和共识,如果验证通过,则调用联盟链中预设的访问控制智能合约,对数据访问者du进行权限验证,通过重构mpt

的根来验证数据访问者du的公钥是否在已发布的mpt中,智能合约同时通过计算所有节点的sha-256值验证一致性,如果最终验证结果和区块中存储的mpt根值一致,则该用户获得访问权限;
[0066]
s33:验证通过后,联盟链将存储在mpt中使用数据访问者du公钥加密的解密密钥发送给数据访问者du并将数据访问者du的公钥发送给授权的云存储服务器,若验证为通过,则告知数据访问者du无权访问所请求的数据。
[0067]
步骤s4包括:
[0068]
s41:使用云存储服务器在数据库中下载相关数据,对相关数据签名后发送给数据访问者du;
[0069]
s42:数据访问者du收到云存储服务器发送的密文c后,验证签名的合法性,如果签名不合法,则忽略密文c;如果签名合法,计算hc′
=h
256
(c)比较hc′
与hc是否相同,其中hc是之前在联盟链中记录的哈希值,以确保密文没有被篡改;如果密文正确,则使用对称密钥k计算dk(c)得到do的数据m。
[0070]
步骤s5对于新增权限用户数据拥有者do在本地更新本地授权信息后,新增享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。
[0071]
步骤s5中的交易提案所包含内容的格式如下:
[0072]
重新部署智能合约:sc
iupdate

{h(mpt)
do
=h(mpt

)
du
};
[0073]
重新发布交易提案:
[0074][0075]
全网广播以下信息:
[0076]
联盟链在网络中发布数据权限更新交易之后,数据拥有者do通过在本地执行mpt插入操作来验证服务器是否进行了正确的用户权限插入。
[0077]
步骤s6对于删除权限用户在数据拥有者do在本地更新本地授权信息删除不再享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。
[0078]
步骤s6中的交易提案所包含内容的格式如下:
[0079]
重新部署智能合约:sc
dupdate

{h(mpt)
do
=h(mpt

)
du
};
[0080]
重新发布交易提案:
[0081][0082]
全网广播以下信息:
[0083]
联盟链在网络中发布数据权限更新交易之后,数据拥有者do通过在本地执行mpt插入操作来验证服务器的用户权限删除是否有误。
[0084]
实施例2
[0085]
如图3所示,本发明实施例提供的基于联盟链智能合约的隐私数据访问控制方法,是在实施例1的基础上,进一步的具体应用。
[0086]
在需要将电子病历单共享给医生的场景下,在患者进行就医的时候,医生可能需要了解到患者的以往病史或者其他患者的类似病历的治疗方案,可能对患病史进行查看或者需要对某种病史的用药情况,检查数据,治疗方案等进行查看,通过查看可以作为依据来确定本次的治疗方案;本发明提供的技术方案在场景的应用时,其基于联盟链智能合约的隐私数据访问控制方法具体的步骤如下:
[0087]
1.初始化系统,设置系统参数并计算用户公钥:患者用随机生成的对称密钥对原始医疗病历隐私数据进行加密处理生成密文并将其存储到云存储服务器,然后使用已授权医生用户的公钥生成一个访问权限mpt存储结构。
[0088]
2.生成发布数据的密文,构造发往服务器的消息:患者向联盟链中提交隐私数据发布交易,交易中附带mpt根值,并且在联盟中预设访问控制智能合约。
[0089]
3.请求数据并验证权限:当医生想要获取患者的医疗病历隐私数据时需要先向联盟链发送隐私数据访问请求,通过检索寻找到相关信息,联盟链调用智能合约验证医生权限的mpt中的相关隐私数据,智能合约验证计算结果是否与区块中相应的mpt哈希值相等,如果验证通过,联盟链发送医生的公钥到授权的云存储服务器,将存储在mpt中用du公钥加密的解密密钥发送给du,否则,告知无权访问所请求的隐私数据。
[0090]
4.从数据库中下载数据:当联盟链将验证结果返回给医生,医生再向云存储服务器发起请求,当医生收到服务器发来的密文和加密的解密密钥后,首先计算密文的哈希值,与联盟链中记录的数据哈希值进行对比,如果一致,则数据没有被篡改,进一步对密文进行解密得到隐私数据明文。
[0091]
5.更新本地授权信息,新增享有资源的用户的权限,删除不再享有资源的用户的权限:患者有权对医生访问隐私数据的权限进行修改,通过更新动态mpt和重新部署访问控制智能合约来删除或者插入授权用户。添加授权用户可以赋予医生隐私数据的访问权限,删除授权用户可以取消医生对隐私数据的访问权限。
[0092]
本发明上述实施例提供的技术方案,能够实现对数据访问者的访问权限控制:联盟链中的权限验证智能合约来验证请求者权限的mpt中的相关隐私数据,智能合约验证计算结果是否与区块中相应的mpt哈希值相等,有效地实现了实现对数据访问者的访问权限控制。
[0093]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思做出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的试验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

技术特征:
1.一种基于联盟链智能合约的隐私数据访问控制方法,其特征在于,包括以下步骤:s1:初始化系统,设置系统参数并计算用户公钥;s2:生成发布数据的密文,构造发往服务器的消息;s3:请求数据并验证权限;s4:从数据库中下载数据;s5:更新本地授权信息,新增享有资源的用户的权限;s6:更新本地授权信息,删除不再享有资源的用户的权限。2.根据权利要求1所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于,所述步骤s1具体为:系统设置eigamal签名算法时使用的参数(p,g),其中p为素数,g为的一个生成元,为非零元的集合;z
p
的非零元构成一个乘法群,用户从中选取的值;(p,g)作为用户的私钥,计算自通过公式y≡g
x
mod p计算用户的公钥,并在本地安全保存为(sk
i
,pk
i
)。3.根据权利要求2所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于,所述步骤s2包括:s21:数据拥有者do生成数据的密文:所述数据拥有者do收集需要发布的数据m,选择一随机正整数a0,计算k=h
256
(a0),使用对称密钥k对数据m进行加密得到密文c=e
k
(m),计算密文哈希值h
c
=h
256
(c);s22:所述数据拥有者do将拥有访问权限的授权用户信息插入到mpt中,其中所述授权用户信息包括公钥哈希值和公钥加密的解密密钥;并在本地生成一个空文件记录被授权用户的信息;s23:所述数据拥有者do构造发往服务器的消息:其中,h
c
是密文在云存储服务器上的索引,pk
do
是do的公钥,c=e
k
(m)为密文,sig
skdo
为通过数据拥有者的私钥进行的签名,desc是数据拥有者do对数据的描述;s24:通过云存储服务器验证所述数据拥有者do签名合法性,若签名合法则把消息meg储存在本地,云存储服务器返回存储地址dress;s25:所述数据拥有者do发布交易提案其中,h(mpt)为mpt的哈希结果;s26:所述数据拥有者do把交易提案发送至联盟链网络中,区块链中的节点对交易提案进行验证和共识,所述数据拥有者do通过在新接收到的区块中查询是否有自己的交易提案来确定交易提案是否被记录到联盟链上。4.根据权利要求3所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于,所述步骤s3包括:s31:数据访问者du对所述数据拥有者do的哈希值为h
c
的数据感兴趣时,通过公式:把h
c
下载并记录在本地并且生成一个交易请
求发布到区块链中,其中,req为数据访问者du的具体请求内容;s32:联盟链中的节点对交易提案进行验证和共识,如果验证通过,则调用联盟链中预设的访问控制智能合约,对数据访问者du进行权限验证,通过重构mpt

的根来验证数据访问者du的公钥是否在已发布的mpt中,智能合约同时通过计算所有节点的sha-256值验证一致性,如果最终验证结果和区块中存储的mpt根值一致,则该用户获得访问权限;s33:验证通过后,联盟链将存储在mpt中使用所述数据访问者du公钥加密的解密密钥发送给所述数据访问者du并将所述数据访问者du的公钥发送给授权的云存储服务器,若验证为通过,则告知所述数据访问者du无权访问所请求的数据。5.根据权利要求4所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于所述步骤s4包括:s41:使用云存储服务器在数据库中下载相关数据,对相关数据签名后发送给所述数据访问者du;s42:所述数据访问者du收到云存储服务器发送的密文c后,验证签名的合法性,如果签名不合法,则忽略所述密文c;如果签名合法,计算h

c
=h
256
(c)比较h

c
与h
c
是否相同,其中h
c
是之前在联盟链中记录的哈希值,以确保密文没有被篡改;如果密文正确,则使用对称密钥k计算d
k
(c)得到do的数据m。6.根据权利要求5所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于所述步骤s5对于新增权限用户所述数据拥有者do在本地更新本地授权信息后,新增享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。7.根据权利要求6所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于所述步骤s5中所述的交易提案所包含内容的格式如下:重新部署智能合约:sc
iupdate

{h(mpt)
do
=h(mpt

)
du
};重新发布交易提案:全网广播以下信息:联盟链在网络中发布数据权限更新交易之后,所述数据拥有者do通过在本地执行mpt插入操作来验证服务器是否进行了正确的用户权限插入。8.根据权利要求7所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于所述步骤s6对于删除权限用户在所述数据拥有者do在本地更新本地授权信息删除不再享有资源的权限的用户,然后重新部署联盟链上的访问权限的智能合约,发布交易提案并进行全网广播。9.根据权利要求8所述的基于联盟链智能合约的隐私数据访问控制方法,其特征在于所述步骤s6中所述的交易提案所包含内容的格式如下:重新部署智能合约:sc
dupdate

{h(mpt)
do
=h(mpt

)
du
};重新发布交易提案:
全网广播以下信息:联盟链在网络中发布数据权限更新交易之后,所述数据拥有者do通过在本地执行mpt插入操作来验证服务器的用户权限删除是否有误。

技术总结
本发明公开了一种基于联盟链智能合约的隐私数据访问控制方法,包括以下步骤:S1:初始化系统,设置系统参数并计算用户公钥;S2:生成发布数据的密文,构造发往服务器的消息;S3:请求数据并验证权限;S4:从数据库中下载数据;S5:更新本地授权信息,新增享有资源的用户的权限;S6:更新本地授权信息,删除不再享有资源的用户的权限。本发明提供的技术方案能够实现对数据访问者的访问权限控制:联盟链中的权限验证智能合约来验证请求者权限的MPT中的相关隐私数据,智能合约验证计算结果是否与区块中相应的MPT哈希值相等,有效地实现了实现对数据访问者的访问权限控制。据访问者的访问权限控制。据访问者的访问权限控制。


技术研发人员:殷丽华 孙哲 刘帅 方滨兴 韩伟红 李超 张美范 李然
受保护的技术使用者:广州大学
技术研发日:2022.09.01
技术公布日:2023/1/6

最新回复(0)