CN117200966A - 一种基于分布式身份和联盟链的可信授权数据共享方法 - Google Patents
一种基于分布式身份和联盟链的可信授权数据共享方法 Download PDFInfo
- Publication number
- CN117200966A CN117200966A CN202310971647.8A CN202310971647A CN117200966A CN 117200966 A CN117200966 A CN 117200966A CN 202310971647 A CN202310971647 A CN 202310971647A CN 117200966 A CN117200966 A CN 117200966A
- Authority
- CN
- China
- Prior art keywords
- data
- attribute
- user
- verification
- doc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013475 authorization Methods 0.000 title claims abstract description 50
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000012795 verification Methods 0.000 claims abstract description 108
- 238000007726 management method Methods 0.000 claims description 33
- 230000008520 organization Effects 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 14
- 238000005516 engineering process Methods 0.000 claims description 12
- 238000011217 control strategy Methods 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 238000009826 distribution Methods 0.000 claims description 5
- 239000011159 matrix material Substances 0.000 claims description 5
- 238000010200 validation analysis Methods 0.000 claims description 5
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 4
- 238000011084 recovery Methods 0.000 claims description 4
- 238000012550 audit Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010276 construction Methods 0.000 claims description 3
- 238000013524 data verification Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 3
- 230000006855 networking Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 2
- YSCNMFDFYJUPEF-OWOJBTEDSA-N 4,4'-diisothiocyano-trans-stilbene-2,2'-disulfonic acid Chemical compound OS(=O)(=O)C1=CC(N=C=S)=CC=C1\C=C\C1=CC=C(N=C=S)C=C1S(O)(=O)=O YSCNMFDFYJUPEF-OWOJBTEDSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了基于分布式身份和联盟链的可信授权数据共享方法,包括:1)系统初始化:在初始化阶段,不同企业、机构下不同部门的用户组成联盟链网络,每个用户获得一个DID作为身份标识,同时还获得属于自己的公私钥对以及一个初始化DID Doc;接着,每个用户的DID和DID Doc哈希值被记录在区块链上,然后系统生成属性加密的公共安全参数及主密钥,然后系统将公共安全参数发送给所有用户,采用秘密共享方法将主密钥拆分为联盟链网络节点数量个子秘密并分发给各个用户;2)分布式身份管理:分布式身份管理由属性授权和属性验证组成;3)数据共享:数据共享由数据发布和数据请求组成。本发明实现了访问控制权限的分布式授权及不同企业、机构间数据的安全共享。
Description
技术领域
本发明涉及一种基于分布式身份和联盟链的可信授权数据共享方法,属于区块链与数据共享技术领域。
背景技术
数据作为一种新的生产要素,价值不断提高,人们对于数据的安全与隐私愈发重视。近年来,国内外颁布一系列法律法规进一步保护和限制数据的使用。随着人工智能、大数据等技术的发展,数据作为上述技术中的重要驱动力发挥着重要作用。然而由于对数据使用的限制,不同企业、机构等多个对等主体间的数据共享与流通存在着障碍,一个个“数据孤岛”逐渐形成。
为了促进数据共享,进一步挖掘数据生产要素价值,人们结合云存储与基于属性加密的访问控制技术,利用用户属性设置细粒度的访问控制策略。在不同企业、不同机构共享数据场景中往往互不信任,缺少可信第三方。然而,在传统的基于属性加密的访问控制策略中往往存在一个可信的第三方授权中心保管着主密钥,同时负责对用户属性进行认证并生成属性私钥。因此,传统的基于属性加密的数据共享方案并不适用于分布式场景,存在着缺乏可信第三方、属性授权认证难的问题。区块链作为一种分布式账本,以其去中心化、公开透明、不可篡改、可追溯等特点适用于大部分分布式场景。联盟链作为区块链的一种,在上述特性的基础上还有着更严格的准入机制、更高效的共识效率等特点,更加适用于不同企业共享数据的业务场景。因此,联盟链可以为数据共享方案提供去中心化的授权环境,然而,当前方案大多在区块链网络中采用密码学方法对用户的各个属性单独进行授权与认证,但是仍需一个中心化的机构管理用于属性加密的主密钥。
因此,亟需提出一种面向企业、机构等对等多主体间的数据共享方案,去除中心化的授权中心,为整个系统中的用户建立分布式身份,同时实现去中心化的数据访问授权,以保证数据在整个环境中安全、顺畅地流通。
发明内容
为解决上述问题,本发明提供一种基于分布式身份和联盟链的可信授权数据共享方法,解决了现有对等多方数据共享方案中难以找到可信任第三方授权中心问题,实现了访问控制权限的分布式授权,只有满足数据拥有者事先设置的允许访问的属性的用户方能访问该数据,实现不同企业、机构间数据的安全共享。
为解决上述技术问题,本发明所采用的技术方案如下:
一种基于分布式身份和联盟链的可信授权数据共享方法,包括:
(1)系统初始化:在初始化阶段,不同企业、机构下不同部门的用户组成联盟链网络,每个用户获得一个DID作为身份标识,同时还获得属于自己的公私钥对以及一个初始化DIDDoc;接着,每个用户的DID和DIDDoc哈希值被记录在区块链上,然后系统生成属性加密的公共安全参数及主密钥,然后系统将公共安全参数发送给所有用户,采用秘密共享方法将主密钥拆分为联盟链网络节点数量个子秘密并分发给各个用户;
(2)分布式身份管理:分布式身份管理由属性授权和属性验证组成;
2.1)属性授权:用户向系统中对应组织申请相关属性授权,负责管理该属性的组织中的领导节点(属性签发者)根据用户的DID在链上查询对应的DIDDoc哈希值,对用户提供的DIDDoc进行哈希运算,如果两者相同则对该用户是否符合该属性进行审核,如果审核通过,则为该用户生成该属性对应的声明,并更新DIDDoc后返还给用户,用户根据声明生成凭证并更新DIDDoc,并将哈希值更新上链;
2.2)属性验证:当网络中的验证用户想要验证待验证用户的属性是否属实时,待验证用户向系统提供DIDDoc,系统中的分布式身份管理群组对该文档中的凭证进行验证,验证通过后向验证用户提供验证结果;
(3)数据共享:数据共享由数据发布和数据请求组成;
3.1)数据发布:数据发布者通过系统发布数据,首先对要发布的数据进行哈希运算获得消息摘要值,然后设置访问控制策略,即允许访问该数据的用户属性集合,接着使用属性加密相关安全参数加密该数据,最后将加密数据上传至云服务器,将数据描述、访问控制策略、数据消息摘要以及数据在云服务器上的索引地址上传至联盟链账本;
3.2)数据请求:数据请求者向系统发送数据请求,系统中的分布式身份管理业务群组首先对该请求者属性进行验证,验证通过后以去中心化的方式为其生成属性私钥,获得属性私钥后请求者从该数据对应的云服务器索引地址处下载数据并用属性私钥解密,解密后对文件进行哈希运算,对比哈希值与联盟链账本上记录的哈希值是否一致,如果一致则表示数据未经篡改,为数据拥有者上传的原始数据,至此完成数据请求。
上述方法应用于不同企业或机构间数据共享场景,实现对用户数据细粒度的访问控制。
上述方法由两种业务逻辑组成,分别是分布式身份管理业务和数据共享业务,分别由两个不同的群组负责,在整个方案部署之初首先进行系统初始化,然后同时运行两种不同的业务。
本发明方案中的角色如下:
对等节点(Peer):不同企业不同部门中的各个用户共同组成联盟链网络,每个用户是网络中的对等节点,维护链上账本。属于同一企业部门的对等节点共同组成联盟链中的组织(Org)。
领导节点(Leader):联盟链中每个组织有一个领导节点,负责在生成新的区块时与其他组织的领导节点共同完成共识。在所有领导节点完成共识后将更新后的账本发送给同一组织的其他对等节点从而达成全网共识。
群组(Group):由于整个联盟链网络共支撑两种业务逻辑,即分布式身份管理业务和数据共享业务,因此共存在两个群组,分别是分布式身份业务群组(GroupDID)和数据共享业务群组(GroupDS)。分布式身份业务群组由各个组织中的领导节点组成,数据共享业务群组由整个网络中的所有对等节点组成。不同群组间业务数据在逻辑上隔离,拥有独立的数据通道,保障了两种业务在执行时互不干扰。
数据拥有者(DataOwner,DO):联盟链网络中的所有节点都可以是数据拥有者,数据拥有者可以根据自身的访问控制需求设置访问控制策略,即满足设定属性的用户才可正确解密加密文件,然后利用属性加密公钥加密数据并上传至云服务器。
数据请求者(DataVisitor,DV):联盟链网络中的所有节点都可以是数据请求者,数据请求者首先向系统申请属性私钥,然后利用属性私钥解密想要访问的数据,只有数据请求者的属性满足数据拥有者设定的访问控制策略方能成功解密数据。
属性签发者(Issuer):不同组织的领导节点在分布式身份业务群组中担任签发者的角色,联盟链上的对等节点可以向任一组织的领导节点申请对应某个属性的声明(Claim),领导节点审核通过后为其颁发声明,在收到声明后该对等节点更新DIDDoc的声明字段。
属性验证者(Verifier):不同组织的领导节点共同组成分布式属性验证者,共同完成在用户属性私钥请求阶段对于声明属性的验证,属性验证通过后方可为该用户生成对应属性的属性私钥。
本发明方案共由两种业务逻辑组成,分别是分布式身份管理业务和数据共享业务,分别由两个不同的群组负责,在整个方案部署之初首先进行系统初始化,然后同时运行两种不同的业务。
上述基于分布式身份和联盟链的可信授权数据共享方法,首先,整体方案结合了联盟链与基于密文策略的属性基加密(CP-ABE)技术实现对于用户共享数据的细粒度访问控制;其次,依托于联盟链环境,整个方案中无需中心化授权中心,采用秘密共享技术将属性加密主密钥拆分为多个子秘密交由联盟链中的节点共同保管,在数据请求者请求数据时共同为其生成属性私钥;最后,为了解决数据请求者的属性认证问题,本方案引入分布式数字身份(DistributedIdentity,DID),用户的身份属性掌握在自己手中,无需中心化身份管理中心,在数据请求者请求数据时联盟链节点对该用户的DID文档(DIDDoc)中的凭证部分(Credential)部分进行验证,验证通过后为其生成属性私钥。
设有N个企业的M个部门的u个用户useri,i∈[1,u]能够相互之间共享数据,系统初始化包括如下步骤:
1.1)联盟链组网:所有用户共同组成联盟链网络,每个用户都是网络中的Peer节点,表示为pi,i∈[1,u],同时属于同一部门的pi组成联盟链网络中的组织orgi,i∈[1,M],每个组织中有一个Leader节点li,i∈[1,M];
1.2)公私钥生成:系统为每个pi和li生成公私钥对(pki,ski)、(pkl_i,skl_i),每个用户将私钥自己保存,将公钥全网公布上链;
1.3)分布式身份生成:系统为每个useri生成唯一的分布式数字身份DIDDIDi,并初始化分布式身份文档DIDDocDoci,DID与DIDDoc格式如图3所示,初始化的DIDDoc文档“Claim”字段为空;
1.4)分布式身份上链:将每个useri的DIDi和Doci哈希值hDoc_i=H1(Doci)记录在联盟链账本上;
1.5)属性加密初始化:
1.5.1)参数生成:系统输入参数λ,生成一个双线性映射e=G×G→GT,G和GT为循环群,阶数为素数p,G的生成元为g,选择两个随机数α,β∈Zp选定一个哈希函数H2,满足H2:{0,1}*→G,生成公共参数Pp=(g,gβ,e(g,g)α,H2)以及主密钥Msk=gα,其中,zp为阶为p的整数循环群;
1.5.2)参数分发:系统将公共参数PP发送给网络中所有节点,接着系统按照m-of-u门限秘密共享的方式将主密钥MSK拆分为u个子秘密,步骤如下:
首先,定义m-1次多项式函数:
f(x)=s+a1x+…+at-1xm-1
式中,s为要分割的秘密值,此方案中s=Msk=gα,t为秘密重构的门限值,在本方案中a1、a2、……、am-1为GF(p)上的随机元素;
然后,根据下式计算各个秘密份额:
yi=f(xi)=s+a1xi+…+am-1xi m-1,i=1,2,…,u
式中,u为秘密拆分的份额数,yi为函数在xi点的取值,将yi作为子密钥分发给用户,其中skABE_1=y1,skABE_2=y2,……,skABE_u=yu,截至目前,系统已经完成了将主密钥Msk划分为u个份额,最后系统将主私钥销毁,至此,系统完成系统初始化。系统中一共有u个用户,skABE_u含义为第u个用户的属性加密私钥份额。
上述2.1)中,在属性授权阶段,当领导节点根据用户提供的DIDDoc完成哈希运算得到的哈希值,与联盟链账本上记录的哈希值不一致时,不为该用户发放该属性的声明;在属性授权阶段,当领导节点审核属性申请者不满足该属性时,不为该用户发放该属性的声明。
上述2.1)中,若Peer节点pi想要向组织orgj申请对于属性Attk的授权(组织与节点的关系为:节点属于某一组织,而在此处节点可以向任一组织申请属性,此处orgj表示任意一个组织),整个系统将按如下步骤对该属性进行授权:
2.1.1)授权申请:pi向orgj发送属性授权申请其中,DIDi为pi的分布式数字身份,Doci为pi的DIDDoc,Attk为要申请授权的属性key值,att为属性值,例如pi想要申请对于“科长”属性的申请,则Attk="职位",att="科长",/>为使用pi私钥对数字身份、属性key值、时间戳签名的结果,TS为时间戳;
2.1.2)DIDDoc验证:orgj的Leader节点lj在收到Request后,首先根据DIDi在联盟链账本上查询其DIDDoc对应的哈希值hDoc_i,验证是否满足hDoc_i=H1(Doci),若满足则继续下一步骤;
2.1.3)属性核验:lj对该节点申请的Attk的值att是否符合实际进行核验,如果满足则为其DIDDoc更新Claim字段,然后将该DIDDoc返还给pi;
2.1.4)凭证生成:pi收到新的文档后使用自己的私钥ski对更新的“Claim”字段进行签名,得到“Credential”字段的内容;
2.1.5)更新账本:pi对新的Doci进行哈希运算得到h'Doc_i=H1(Doci),用h'Doc_i替换账本上hDoc_i;
当执行2.1.2)时,如果hDoc_i≠H1(Doci),则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上;
当执行2.1.3)时,如果实际中pi申请的属性值Attk≠att,则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上。
上述2.2)中,在属性验证阶段,当分布式身份管理业务群组验证待验证用户的属性凭证时,需得到超过半数领导节点的验证成功消息,然后才会返回认证成功消息给验证用户,如未超过半数,则向验证用户返回验证失败消息。
上述2.2)中,若节点pj想要对节点pi进行属性验证,整个系统将按如下步骤进行验证:
2.2.1)分布式文档发送:pi向pj发送其DIDDocDoci
2.2.2)请求发送:pj根据DIDi在账本上获取文档哈希值hDoc_i,判断是否满足H1(Doci)=hDoc_i,如满足则向分布式身份管理群组GroupDID中的所有节点发送属性验证请求其中,DIDj为pj的分布式数字身份,DIDi为pi的分布式数字身份,Doci为pi的DIDDoc,/>为使用pj私钥对pj、pi分布式数字身份、piDIDDoc以及时间戳的签名结果,TS为时间戳;
2.2.3)属性验证:GroupDID中的所有节点收到Request后,对于每个组织的领导节点lm∈GroupDID按照如下步骤对Doci进行解析:
2.2.3.1)使用pi的公钥按照Doci中“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密,将解密后的结果与“Claim”字段中除“Credential”字段外的内容进行比较,如果相等则继续下一步;
2.2.3.2)使用“Claim”字段中“issuer”对应的公钥对“Proof”中的“signature”字段内容进行解密,将解密后的结果与“Claim”字段中除“Proof”和“Credential”字段外内容进行比较,如果相同则验证通过,向pj发送验证通过消息
如果GroupDID中超过半数的验证通过,则向pj发送属性验证通过消息;
当执行2.2.3)时,如果“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密后结果,与“Claim”字段中除“Credential”字段外的内容不一致,则返回验证失败消息如果“Proof”中的“signature”字段内容进行解密后的结果,与“Claim”字段中除“Proof”和“Credential”字段外内容不一致,则返回验证失败消息/>如果GroupDID中未超过半数的验证通过,则向pj发送属性验证失败消息。
上述3.1)中,若Peer节点po想要发布数据Datan,整个系统将按如下步骤完成数据发布:
3.1.1)访问控制策略设置:数据拥有者pi设置访问控制策略Strategyn=(AM,γ),其中,AM表示一个l×w的矩阵,γ表示AM每一行映射到相应属性的映射函数,对于所有的i∈[1,l],AMi为AM第i行向量,γi为AM的第i行参与方标识,随机选取一个向量v=(s,y2,…,yw),其中,s为共享值,y2,…,yw为随机值,则AW·v为利用秘密共享得到的关于秘密值s的w个共享子秘密,λi=AWi·v属于γa且表示共享子秘密;
3.1.2)数据加密:数据拥有者随机选择参数rt∈Zp,利用属性加密公共参数Pp计算密文数据:
此处,Datan为数据拥有者想要共享的数据,g、gβ、e(g,g)α、H2为属性加密相关的公共安全参数,CDatan为Datan属性加密后的密文,C、C’、Ct、Dt并没有具体的含义,就是用一个符号代替了等号后边的算式,是用公共参数中的哈希函数H2计算括号中的内容的结果;
3.1.3)数据上传:数据拥有者将密文数据CDatan上传至云服务器,云服务器保存密文数据并返回存储地址Addrn;
3.1.4)链上发布:数据发布者将要发布的数据相关信息上传至联盟链,链上存储格式为(Addrn,Desc,hData_n,DIDo,Strategyn),其中,Addrn表示数据在云服务器上的存储地址,Desc表示对数据的描述,hData_n=H1(Datan)为数据明文的哈希值,DIDo为数据发布者的DID。
上述3.2)中,在数据请求阶段,如果数据请求者未通过属性验证,则系统不为其生成属性私钥;在数据请求阶段,如果数据请求者对解密后的数据进行哈希运算的结果与联盟链账本上记录的哈希值不一致,则数据拥有者重新上传加密数据至云服务器。
上述3.2)中,若数据请求者pv想要访问po的数据Datan,将按如下步骤执行获取数据:
3.2.1)数据信息获取:数据请求者pv根据联盟链上对数据的记录(Addrn,Desc,hData_n,DIDo,Strategyn),获取该数据在云服务器上的存储地址Addrn以及该数据的拥有者的DIDDIDo;
3.2.2)属性私钥请求:数据请求者pv向数据拥有者po发送请求其中DIDv表示数据请求者的分布式数字身份,Docv表示数据请求者的DIDDoc,TS表示时间戳,/>表示使用数据请求者私钥对其分布式身份、DIDDoc和时间戳的签名;
3.2.3)属性验证:po在收到pv的请求后,首先用pv的公钥对签名进行验证,验证无误后向分布式身份管理业务群组发送属性验证请求,分布式身份管理业务群组按照分布式身份管理中的属性验证算法对pv的属性进行验证,验证通过则继续执行下一步骤;
3.2.4)属性私钥生成:po在对pv完成属性验证后,数据共享业务群组开始执行属性私钥生成算法,为pv分布式生成属性私钥,此算法共需要GroupDS中至少个节点参与执行,且算法从po开始至pv结束,假设参与密钥生成的节点集合为{po,p1,…,pm-2,pv},其中po为数据拥有者,pv为数据请求者,p1…pm-2为任意m-2个节点,按照如下步骤进行私钥生成:
3.2.4.1)po根据pv的属性集合Sv,对于每一个属性x∈Sv,随机选择一个参数t∈Zp,计算kx=H2(x)t,然后计算部分属性私钥其中,skABE_o为po的属性加密子密钥,g、gβ、H2为属性加密公共安全参数Pp中的参数,然后将PSK发送给pv,将t发送给所有参与密钥生成的节点;Ko、L、Kx并无具体含义,只是一个变量;
3.2.4.2)对于pi∈{p1,…,pm-2},每个节点在收到t后,计算Ki=skABE_i·gβt,skABE_i为pi的属性加密子密钥,计算完成后将Ki发送给pv;
3.2.4.3)pv收到PSK和{K1,…,Km}后,首先计算Kv=skABE_v·gβt,skABE_v为pv的属性加密子密钥,然后根据m-of-u秘密共享技术中的秘密恢复算法恢复得到K,即构造:则K=MSK·gβt=gα·gβt=Γ(0),最终得到该用户的属性私钥由三部分组成,分别是K、L和/>这里的通过秘密共享恢复得到K就是组成用户属性私钥的第一个“K”;
3.2.4.4)数据解密:pv根据地址Addrn从云服务器上下载加密数据CDatan,然后对使用属性私钥解密,如果属性集合满足访问控制策略Strategyn=(AM,γ),则计算数值ωt∈Zp,满足/>通过下式解密:
最后计算C/e(g,g)αs得到数据明文Datan;
3.2.4.5)数据校验:pv对数据明文Datan进行哈希运算,如果满足H1(Datan)=hData_n,则说明数据未经篡改。
如果数据拥有者po向GroupDID申请验证pv的属性得到返回结果为未通过,则终止执行数据请求子算法;pv对数据明文Datan进行哈希运算,如果H1(Datan)≠hData_n,则说明数据已经被篡改,则po数据拥有者需重新执行数据发布算法上传数据,pv重新执行数据请求算法获取数据。
本发明基于分布式身份和联盟链的可信授权数据共享方法,包含三个算法,分别是系统初始化算法、分布式身份管理算法与数据共享算法,其中分布式身份管理算法包含属性授权和属性认证两个子算法,数据共享算法包含数据发布和数据请求两个子算法。
本发明未提及的技术均参照现有技术。
本发明提供的基于分布式身份和联盟链的可信授权数据共享方法,提出了基于分布式数字身份和联盟链的分布式属性授权与认证机制,解决了传统基于属性加密方案中依赖可信中心化授权机构的问题;提出了基于秘密共享和属性加密的分布式数据访问控制授权方案,在实现细粒度的访问控制同时,满足了多方数据共享场景下的去中心化密钥托管与生成需求;本发明在整个系统组建之初为每个用户生成一个分布式数字身份,属于不同企业、机构中不同部门的用户可以使用此系统彼此之间共享数据,通过密文策略的属性基加密技术实现对于数据细粒度的访问控制。与传统的依赖于第三方可信授权中心的基于属性基加密方案不同,本发明依托于联盟链设计了分布式去中心化授权机构,主密钥以秘密共享的方式由全网所有节点维护,在生成属性私钥时由全网节点分布式生成,解决了在多对等主体共享数据环境下的密钥托管问题。同时,本发明在属性的授权与验证方面同样采用分布式解决方案,用户的属性信息保存在用户自己的DIDDoc中,无需中心化的身份或属性管理机构,在验证时通过验证凭证部分即可实现对于属性的验证,在保护用户隐私的前提下实现了对用户访问权限的验证。
附图说明
图1为本发明实施例中基于分布式身份和联盟链的可信授权数据共享方法对应的整体联盟链网络架构图。
图2为本发明实施例中基于分布式身份和联盟链的可信授权数据共享方法对应的算法示意图。
图3为本发明实施例中分布式数字身份(DID)和DID文档(DIDDoc)示例格式。
具体实施方式
为了更好地理解本发明,下面结合实施例进一步阐明本发明的内容,但本发明的内容不仅仅局限于下面的实施例。
本发明实施例公开了一种基于分布式身份和联盟链的可信授权数据共享方法,应用于不同企业或机构间数据共享场景,实现对用户数据细粒度的访问控制。本申请实例中,结合图1、图2、图3对本申请实施例记载的方案进行说明,如图2所示,该方法包括如下步骤:
1.系统初始化:在初始化阶段,如图1所示,不同企业、机构下不同部门的用户组成联盟链网络,每个用户获得一个DID作为身份标识,同时还获得属于自己的公私钥对以及一个初始化DIDDoc。接着,每个用户的DID和DIDDoc哈希值被记录在区块链上。然后系统生成属性加密的公共安全参数及主密钥,然后系统将公共安全参数发送给所有用户,采用秘密共享技术将主密钥拆分为联盟链网络用户数量个子秘密并分发给各个用户。
示例性地,有N个企业的M个部门的u个用户(useri,i∈[1,u])能够相互之间共享数据,首先所有用户要完成系统初始化,组建联盟链网络。具体步骤如下:
(1)联盟链组网:所有用户共同组成联盟链网络,每个用户都是网络中的Peer节点,表示为(pi,i∈[1,u]),同时属于同一部门的pi组成联盟链网络中的组织(orgi,i∈[1,M]),每个组织中有一个Leader节点(li,i∈[1,M]);
(2)公私钥生成:系统为每个pi和li生成公私钥对(pki,ski)、(pkl_i,skl_i),每个用户将私钥自己保存,将公钥全网公布上链;
(3)分布式身份生成:系统为每个useri生成唯一的分布式数字身份(DID)DIDi,并初始化分布式身份文档(DIDDoc)Doci,DID与DIDDoc格式如图3所示,初始化的DIDDoc文档“Claim”字段为空;
(4)分布式身份上链:将每个useri的DIDi和Doci哈希值hDoc_i=H1(Doci)记录在联盟链账本上;
(5)属性加密初始化:
1)参数生成:系统输入参数λ,生成一个双线性映射e=G×G→GT,G和GT为循环群,阶数为素数p,G的生成元为g。选择两个随机数α,β∈Zp选定一个哈希函数H2,满足H2:{0,1}*→G,生成公共参数Pp=(g,gβ,e(g,g)α,H2)以及主密钥Msk=gα。
2)参数分发:系统将公共参数PP发送给网络中所有节点。接着系统按照m-of-u门限秘密共享的方式将主密钥MSK拆分为u个子秘密。步骤如下:首先,定义m-1次多项式函数:
f(x)=s+a1x+…+at-1xm-1
式中,s为要分割的秘密值,此方案中s=Msk=gα,t为秘密重构的门限值,在本方案中a1、a2、……、am-1为GF(p)上的随机元素。
然后,根据下式计算各个秘密份额:
yi=f(xi)=s+a1xi+…+am-1xi m-1,i=1,2,…,u
式中,u为秘密拆分的份额数,yi为函数在xi点的取值,将yi作为子密钥分发给用户,其中skABE_1=y1,skABE_2=y2,……,skABE_u=yu。截至目前,系统已经完成了将主密钥Msk划分为u个份额,最后系统将主私钥销毁。
至此,系统完成步骤1系统初始化。
2.分布式身份管理。本步骤由两个子算法组成,分别是属性授权和属性验证。属性授权算法允许联盟链网络中任一Peer节点向某个组织申请对于某个属性的授权,该组织的Leader节点在收到该授权请求后会对该属性进行核验,验证通过后为其更新DIDDoc中的“Claim”字段;属性验证算法允许网络中任一Peer节点(验证用户)对另一Peer节点(待验证用户)声明的属性进行验证,验证用户向分布式身份管理群组(GroupDID)申请对待验证者进行属性验证,如果GroupDID中超过半数成员返回验证通过消息,则待验证者通过验证。
对于属性授权子算法,示例性地,Peer节点pi想要向组织orgj申请对于属性Attk的授权,整个系统将按如下步骤对该属性进行授权:
(1)授权申请:pi向orgj发送属性授权申请其中DIDi为pi的分布式数字身份,Doci为pi的DIDDoc,Attk为要申请授权的属性key值,att为属性值,例如pi想要申请对于“科长”属性的申请,则Attk="职位",att="科长",TS为时间戳。
(2)DIDDoc验证:orgj的Leader节点lj在收到Request后,首先根据DIDi在联盟链账本上查询其DIDDoc对应的哈希值hDoc_i,验证是否满足hDoc_i=H1(Doci),若满足则继续下一步骤。
(3)属性核验:lj对该节点申请的Attk的值att是否符合实际进行核验,如果满足则为其DIDDoc更新Claim字段,然后将该DIDDoc返还给pi。
(4)凭证生成:pi收到新的文档后使用自己的私钥ski对更新的“Claim”字段进行签名,得到“Credential”字段的内容。
(5)更新账本:pi对新的Doci进行哈希运算得到h'Doc_i=H1(Doci),用h'Doc_i替换账本上hDoc_i。
作为本发明一个可选实施方案,所述方法还包括:在属性授权阶段,当属性签发者根据用户提供的DIDDoc完成哈希运算得到的哈希值,与联盟链账本上记录的哈希值不一致时,不为该用户发放该属性的声明。
示例性地,当执行(2)时,如果hDoc_i≠H1(Doci),则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上。
作为本发明一个可选实施方案,所述方法还包括:在属性授权阶段,当属性签发者审核属性申请者不满足该属性时,不为该用户发放该属性的声明。
示例性地,当执行(3)时,如果实际中pi申请的属性值Attk≠att,则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上。
对于属性验证子算法,示例性地,节点pj想要对节点pi进行属性验证,整个系统将按如下步骤进行验证:
(1)分布式文档发送:pi向pj发送其DIDDocDoci
(2)请求发送:pj根据DIDi在账本上获取文档哈希值hDoc_i,判断是否满足H1(Doci)=hDoc_i,如满足则向GroupDID中的所有节点发送属性验证请求
(3)属性验证:GroupDID中的所有节点收到Request后,对于每个lm∈GroupDID按照如下步骤对Doci进行解析:
1)使用pi的公钥按照Doci中“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密,将解密后的结果与“Claim”字段中除“Credential”字段外的内容进行比较,如果相等则继续下一步。
2)使用“Claim”字段中“issuer”对应的公钥对“Proof”中的“signature”字段内容进行解密,将解密后的结果与“Claim”字段中除“Proof”和“Credential”字段外内容进行比较,如果相同则验证通过,向pj发送验证通过消息
如果GroupDID中超过半数的验证通过,则向pj发送属性验证通过消息。
作为本发明一个可选实施方案,所述方法还包括:在属性验证阶段,当分布式身份管理业务群组验证待验证用户的属性凭证时,需得到超过半数领导节点的验证成功消息,然后才会返回认证成功消息给验证用户。如未超过半数,则向验证用户返回验证失败消息。
示例性地,当执行(3)时,如果“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密后结果,与“Claim”字段中除“Credential”字段外的内容不一致,则返回验证失败消息如果“Proof”中的“signature”字段内容进行解密后的结果,与“Claim”字段中除“Proof”和“Credential”字段外内容不一致,则返回验证失败消息/>如果GroupDID中未超过半数的验证通过,则向pj发送属性验证失败消息。
至此,系统完成步骤2分布式身份管理。
3.数据共享。本步骤由两个子算法组成,分别是数据发布和数据请求。数据发布算法允许网络中任一Peer节点(数据拥有者)发布想要共享的数据,数据拥有者可以根据数据的隐私需求设置访问控制策略,并将数据加密上传至云服务器,只有设定属性组的用户方能解密并访问数据;数据请求算法允许网络中任一Peer节点(数据请求者)申请访问其他节点发布的数据,请求者首先向数据发布者发送数据访问请求,该访问者会执行分布式身份管理算法中的属性验证子算法,验证通过后由数据共享业务群组为其生成属性私钥,如果该节点属性满足数据拥有者设置的访问控制策略则可从云服务器下载并解密得到数据。
对于数据发布子算法,示例性地,假设Peer节点po想要发布数据Datan,整个系统将按如下步骤完成数据发布:
(1)访问控制策略设置:数据拥有者pi设置访问控制策略Strategyn=(AM,γ),其中AM表示一个l×w的矩阵,γ表示AM每一行映射到相应属性的映射函数。对于所有的i∈[1,l],AMi为AM第i行向量,γi为AM的第i行参与方标识。随机选取一个向量v=(s,y2,…,yw),其中s为共享值,y2,…,yw为随机值,则AW·v为利用秘密共享得到的关于秘密值s的w个共享子秘密,λi=AWi·v属于γa且表示共享子秘密。
(2)数据加密:数据拥有者随机选择参数rt∈Zp,利用属性加密公共参数Pp计算密文数据:
(3)数据上传:数据拥有者将密文数据CDatan上传至云服务器,云服务器保存密文数据并返回存储地址Addrn;
(4)链上发布:数据发布者将要发布的数据相关信息上传至联盟链,链上存储格式为(Addrn,Desc,hData_n,DIDo,Strategyn),其中Addrn表示数据在云服务器上的存储地址,Desc表示对数据的描述,hData_n=H1(Datan)为数据明文的哈希值,DIDo为数据发布者的DID。
对于数据请求子算法,示例性地,数据请求者想要访问pv想要访问po的数据Datan,将按如下步骤执行获取数据:
(1)数据信息获取:数据请求者pv根据联盟链上对数据的记录(Addrn,Desc,hData_n,DIDo,Strategyn),获取该数据在云服务器上的存储地址Addrn以及该数据的拥有者的DIDDIDo。
(2)属性私钥请求:数据请求者pv向数据拥有者po发送请求
(3)属性验证:po在收到pv的请求后,首先用pv的公钥对签名进行验证,验证无误后向分布式身份管理业务群组发送属性验证请求,分布式身份管理业务群组按照算法2.分布式身份管理中的属性验证子算法对pv的属性进行验证,验证通过则继续执行下一步骤。
(4)属性私钥生成:po在对pv完成属性验证后,数据共享业务群组开始执行属性私钥生成算法,为pv分布式生成属性私钥,此算法共需要GroupDS中至少个节点参与执行,且算法从po开始至pv结束,假设参与密钥生成的节点集合为{po,p1,…,pm-2,pv},则按照如下步骤进行私钥生成:
1)po根据pv的属性集合Sv,对于每一个属性x∈Sv,随机选择一个参数t∈Zp,计算kx=H2(x)t,然后计算部分属性私钥其中skABE_o为po的属性加密子密钥。然后将PSK发送给pv,将t发送给所有参与密钥生成的节点;
2)对于pi∈{p1,…,pm-2},每个节点在收到t后,计算Ki=skABE_i·gβt,计算完成后将Ki发送给pv;
3)pv收到PSK和{K1,…,Km}后,首先计算Kv=skABE_v·gβt,然后根据m-of-u秘密共享技术中的秘密恢复算法恢复得到K,即构造:则K=MSK·gβt=gα·gβt=Γ(0),最终得到/>
(5)数据解密:pv根据地址Addrn从云服务器上下载加密数据CDatan,然后对使用属性私钥解密,如果属性集合满足访问控制策略Strategyn=(AM,γ),则计算数值ωt∈Zp,满足/>通过下式解密:
最后计算C/e(g,g)αs得到数据明文Datan。
(6)数据校验:pv对数据明文Datan进行哈希运算,如果满足H1(Datan)=hData_n,则说明数据未经篡改。
至此,完成数据请求子算法。
作为本发明一个可选实施方案,所述方法还包括:在数据请求阶段,如果数据请求者未通过属性验证,则系统不为其生成属性私钥。
示例性地,如果数据拥有者po向GroupDID申请验证pv的属性得到返回结果为未通过,则终止执行数据请求子算法。
作为本发明一个可选实施方案,所述方法还包括:在数据请求阶段,如果数据请求者对解密后的数据进行哈希运算的结果与联盟链账本上记录的哈希值不一致,则数据拥有者重新上传加密数据至云服务器。
示例性地,pv对数据明文Datan进行哈希运算,如果H1(Datan)≠hData_n,则说明数据已经被篡改,则po数据拥有者需重新执行数据发布算法上传数据,pv重新执行数据请求算法获取数据。
上述基于分布式身份和联盟链的可信授权数据共享方法,解决了现有对等多方数据共享方案中难以找到可信任第三方授权中心问题,实现了访问控制权限的分布式授权,只有满足数据拥有者事先设置的允许访问的属性的用户方能访问该数据,实现不同企业、机构间数据的安全共享。
应用例
本实施例采用图1所示数据共享架构,本实例主要展示整个方法中属性加密部分,包括属性加密初始化、属性私钥生成、加密和解密4个关键步骤。假设一共有四个属性,分别为attr1='1'、attr2='2'、attr3='3'、attr4='4'。数据请求者pv的属性集合为{‘1’,’2’,’3’},数据拥有者po设置的访问控制策略为只有满足’1’和’2’中的一个并且同时还满足’3’方可解密文件,即“(1or2)and3”。
在属性加密初始化阶段,选择大素数p:
p=8780710799663312522437781984754049815806883199414208211028653399266475630880222957078625179422662221423155858769582317459277713367317481324925129998224791
然后选择生成元g:
g=[8266835738393944340570605873122274734123099277559061281705211900781391710862141188430403029002734399902293599769321259014466269118286187032567909519673711,2681104563116707003503764729151093711598744842117463649401925097843751135917511375110266129216741883509109927662304328535051637521637349074923738777690261]
根据初始化算法,得到公共参数Pp和主私钥MSK:
Pp=
(g=[8266835738393944340570605873122274734123099277559061281705211900781391710862141188430403029002734399902293599769321259014466269118286187032567909519673711,2681104563116707003503764729151093711598744842117463649401925097843751135917511375110266129216741883509109927662304328535051637521637349074923738777690261],gβ=[5767366214077627024868084914053889520676248397389120023138668574686891545403900405743845096584299464153903641947746318483051032921153766980213730398487335,2305905490205277016276292722673248558830645497919520353326472076697259109593576836598624341853629390264267995875935356748880773130209035266049971683034887],e(g,g)α=[5332474901638060159428279163395265225111828497010104962150686417285792967029671050212078269266358945535469481621789710116140809370725090701294663348514432,4985770765772685279513226874863399585293593575170019684018722514063148620224215760608765310303037638797179221699269457336051855444178062059501595918871277],H2={[7682942249971297645352268702083628699680373425901234176480048920235247164904402299445043131928959558350786288659396065088414067925791711164084281898157267,6978989009944489246027360799324017761104486342876999737757613618138849165718651527026642997509980663054598974154376968985974896238437237373417307971494263],[15704964756931190665977072591994257474590329975855391900810313569783446102376723456663852810895932633104711630497040597822549316403084335314602727400105,1400205464494693491010060785405102119499543460182980033618273029123810460943929651803213279619084082780128613814620566606314079632951211202895530815294027],[8233937789073281392807932211811396078981411211335125096263260745208811056784579702357494987493306916238149107836655095367868004159264876475382282636858001,5221724809418594402533365299568055805402230380260461703528740618882152712772811989758258426059747591561229332835831081172159311300218102212335650653262001],[6895596966931687923687510382947672983800306543023681721766498604673920822750445292678983485328114895466312259276461794904340447070406216139502329935098272,2234776100243007486543245826231059752110305526943433403176245910480249830707051502537442232846221428079812481873713540211443721200071796184475934515949586]})
MSK=[7577280023015495684123560002227202678093066908075110135485031573864780385058850702285604886177846601841691808443945459266426338047633145579050968746434022,5402399362392810157814093899737508063518460973878645096337620224790409318014764576781668143634105888024536944378381587104463836836808134553605326744858431]
在属性私钥生成阶段,会由数据拥有者po首先开始为数据请求者pv分布式生成属性私钥,由po开始至pv结束。po首先选择一个随机数t:
t=430029488240220388321516749267354113419839611824。
根据计算得到pv的属性私钥为:
PSK=(K=[4564686094705362779292554441541019951168371122042396034063976403533116674185476329741624875025910545984747859923282397915720771613354269601129093598778126,2908843930664428097263990292033573588878957377664280454816166271857095340117829072071357217660880113467055726262098670958398681978666094854321369742438446],L=[7321427794766274501604380022354906890768671394004160061956591124296765575178040463205085357167762640103272660205425382373725963616070008593535056295630278,7054700802813484387500736071839488306071126739444608370622537010573397472622708123730430112737776145528854211254318093234498139629352083991386396101176543],{K1=[6451578942079588244579217650812812201626275790526551943371063127317322871436852771334554923831628889391537916949127788362057057119659636593313330889601607,7895596257445935453255661792299698001842460461818834913558204475413497270528538221571045461669973889359215053574062011974338758216128066497171070986541834],K2=[2956812099828677433003393069979328313350457631456749502151611981385708497680420785322827211935710149207697370049516244504219641924063329721422118393496796,2836376098584148145574902200578449106068002233857797948143093141463710637888726870544138098148145546124856171289712844644897303052374457878757952471507808],K3=[3833155155750967972583174649715934618442788499608348511820131512594489427729990185729000863228617670176286422092600486548766196715274858051043611333780840,2853383934704076127178140393243847279118272711478567515529438524407438553866180023525389663560302312682348451574532626975226224588080266159271998097897724]})
在加密阶段,假设数据拥有者po想要加密的数据为Data=[1035252303959776505255759651342331577126314383398034327105355831651119081968893113381561466604650688193190018618579560243096364814653070987322605233523445,6185095159029713951228374063649714611706445205926287352388232236309148134402212801025362792011490336834097124773358696528934771942980568532513599712021307]。
首先根据数据拥有者设置的访问控制策略生成访问控制矩阵,由于访问控制策略为“(1or2)and3”,则可得到访问控制矩阵AM以及共享值s:s=178547278522520622664195348307379211085526314500。/>
则经过加密算法得到数据密文
CData=(C=[7427571742542961362078821904756583020801253645764382674415502790150777861134081935240471461036426222154117952562310631445008018992424346866014424222047228,487072716180120702130388437779713089893322358656956696965241628947913969681760468539842355496453724463978912671097483603725748375480965820759669245120469],C'=[3817828549311089162203250724640395502180234720784996829363390826404418317563727965806489005858489537095552494665252875596626444028605743349390823247940139,8067840640317732297556585278297936174300628088996277895604004342206204981747979934005478972287794000658970232767719909655897322041253165146815646300573266],{C2=[5178172249176432688612082773702098980438102737449568995858883652115066658941200434179329568080220949894385130300384374898662826116931957986543100203905752,3034191262686496240627576134772870141765690482880137434191817642629955814312340877258563157442365269271597519410644659569346568318946249098305480752801079],C3=[8682476286297915196405925562748919884607449524361689077596781619548371198763032009043751042089533769574835009947942247482416772701176250952965635651396889,4907723125490434460304545831652417402582357045141210796366068583213900910761507752209207564426543738668306473153798690114140522431205874686895706582882268],C1=[2598061302048418811380378639175813896440599037058670485461380571094379365327313123482699901446115032909169638112882109277808652619186351641302884157117562,7060021068216203233674505872759610814581550168845336001899366352151570266109306945316363155606926104820577062092378780510795217789739503679884806345786031],D2=[3342801834586423311903541540993054686346486811406195539941425612904203031313577359230479616955897857744637638416310431821410535338944884012595971052983493,2910197086121997883348908387020626982300329271371401893225622501721953378295346762057726581423423202904268400313827507672681234430611161456235103394453035],D3=[7786533265999197482846139572665137316297881726036141282599605162021854009806825104444035168895661329391704042869790425502608286928562482113148232667143553,7065235403759652187072460296895161330975635143840595062326379529627938036725309338784862412521033843830280677610614584066406670952418920817373983490389149],D1=[197393319835781377354011442302965320530502168044802826873662086397921033305692133889850840729978909356971776238017077800067871510592817519832361801983595,8223268773883880327382991135505238599036712802569483744805551540636604670485161684021875922724376755231234329247297142149706939920884452444906219714991866])。
在解密阶段,数据请求者使用自己的属性私钥PSK对密文CData按照
Data=C/e(g,g)αs进行解密。
其中:
Пγ(t)∈SCt=[5171184172125906293172643763249304495356381976116341821882557502225021490302542227448302646940731065398950640754111614898951614243970468291102073916249617,8670864302805442974739253022111898716035175365064880257045531032222952491715306209729480609025670613735272289290309360783752486304144858147238715721832553]
Пγ(t)∈Se(Dt,Kγ(t))=[8055812700127803983197391240669352460896293085589680651401680082142621568858995524297771980374282008970901732800190238197836505120872223677732393630844349,164902457636749321788968484719524871312469901687712386439080903067936724759919718120823471696007791513292891935172728050023892370774128208449124697792928]
经计算,得到:
CData=[1035252303959776505255759651342331577126314383398034327105355831651119081968893113381561466604650688193190018618579560243096364814653070987322605233523445,6185095159029713951228374063649714611706445205926287352388232236309148134402212801025362792011490336834097124773358696528934771942980568532513599712021307],与数据拥有者po加密的数据一致。
Claims (10)
1.一种基于分布式身份和联盟链的可信授权数据共享方法,其特征在于:包括:
(1)系统初始化:在初始化阶段,不同企业、机构下不同部门的用户组成联盟链网络,每个用户获得一个DID作为身份标识,同时还获得属于自己的公私钥对以及一个初始化DIDDoc;接着,每个用户的DID和DID Doc哈希值被记录在区块链上,然后系统生成属性加密的公共安全参数及主密钥,然后系统将公共安全参数发送给所有用户,采用秘密共享方法将主密钥拆分为联盟链网络节点数量个子秘密并分发给各个用户;
(2)分布式身份管理:分布式身份管理包括属性授权和属性验证;
2.1)属性授权:用户向系统中对应组织申请相关属性授权,负责管理该属性的组织中的领导节点根据用户的DID在链上查询对应的DIDDoc哈希值,对用户提供的DIDDoc进行哈希运算,如果两者相同则对该用户是否符合该属性进行审核,如果审核通过,则为该用户生成该属性对应的声明,并更新DIDDoc后返还给用户,用户根据声明生成凭证并更新DIDDoc,并将哈希值更新上链;
2.2)属性验证:当网络中的验证用户想要验证待验证用户的属性是否属实时,待验证用户向系统提供DIDDoc,系统中的分布式身份管理群组对该文档中的凭证进行验证,验证通过后向验证用户提供验证结果;
(3)数据共享:数据共享包括数据发布和数据请求;
3.1)数据发布:数据发布者通过系统发布数据,首先对要发布的数据进行哈希运算获得消息摘要值,然后设置访问控制策略,即允许访问该数据的用户属性集合,接着使用属性加密相关安全参数加密该数据,最后将加密数据上传至云服务器,将数据描述、访问控制策略、数据消息摘要以及数据在云服务器上的索引地址上传至联盟链账本;
3.2)数据请求:数据请求者向系统发送数据请求,系统中的分布式身份管理业务群组首先对该请求者属性进行验证,验证通过后以去中心化的方式为其生成属性私钥,获得属性私钥后请求者从该数据对应的云服务器索引地址处下载数据并用属性私钥解密,解密后对文件进行哈希运算,对比哈希值与联盟链账本上记录的哈希值是否一致,如果一致则表示数据未经篡改,为数据拥有者上传的原始数据,至此完成数据请求。
2.根据权利要求1所述的方法,其特征在于:设有N个企业的M个部门的u个用户useri,i∈[1,u]能够相互之间共享数据,系统初始化包括如下步骤:
1.1)联盟链组网:所有用户共同组成联盟链网络,每个用户都是网络中的Peer节点,表示为pi,i∈[1,u],同时属于同一部门的pi组成联盟链网络中的组织orgi,i∈[1,M],每个组织中有一个Leader节点li,i∈[1,M];
1.2)公私钥生成:系统为每个pi和li生成公私钥对(pki,ski)、(pkl_i,skl_i),每个用户将私钥自己保存,将公钥全网公布上链;
1.3)分布式身份生成:系统为每个useri生成唯一的分布式数字身份DIDDIDi,并初始化分布式身份文档DIDDoc Doci,初始化的DIDDoc文档“Claim”字段为空;
1.4)分布式身份上链:将每个useri的DIDi和Doci哈希值hDoc_i=H1(Doci)记录在联盟链账本上;
1.5)属性加密初始化:
1.5.1)参数生成:系统输入参数λ,生成一个双线性映射e=G×G→GT,G和GT为循环群,阶数为素数p,G的生成元为g,选择两个随机数α,β∈Zp选定一个哈希函数H2,满足H2:{0,1}*→G,生成公共参数Pp=(g,gβ,e(g,g)α,H2)以及主密钥Msk=gα,zp为阶为p的整数循环群;
1.5.2)参数分发:系统将公共参数PP发送给网络中所有节点,接着系统按照m-of-u门限秘密共享的方式将主密钥MSK拆分为u个子秘密,步骤如下:
首先,定义m-1次多项式函数:
f(x)=s+a1x+…+at-1xm-1
式中,s为要分割的秘密值,此方案中s=Msk=gα,t为秘密重构的门限值,在本方案中a1、a2、……、am-1为GF(p)上的随机元素;
然后,根据下式计算各个秘密份额:
yi=f(xi)=s+a1xi+…+am-1xi m-1,i=1,2,…,u
式中,u为秘密拆分的份额数,yi为函数在xi点的取值,将yi作为子密钥分发给用户,其中skABE_1=y1,skABE_2=y2,……,skABE_u=yu,截至目前,系统已经完成了将主密钥Msk划分为u个份额,最后系统将主私钥销毁,至此,系统完成系统初始化,其中,skABE_u为第u个用户的属性加密私钥份额。
3.根据权利要求1或2所述的方法,其特征在于:2.1)中,在属性授权阶段,当领导节点根据用户提供的DIDDoc完成哈希运算得到的哈希值,与联盟链账本上记录的哈希值不一致时,不为该用户发放该属性的声明;在属性授权阶段,当领导节点审核属性申请者不满足该属性时,不为该用户发放该属性的声明。
4.根据权利要求1或2所述的方法,其特征在于:2.1)中,设Peer节点pi想要向组织orgj申请对于属性Attk的授权,整个系统将按如下步骤对该属性进行授权:
2.1.1)授权申请:pi向orgj发送属性授权申请其中,DIDi为pi的分布式数字身份,Doci为pi的DIDDoc,Attk为要申请授权的属性key值,att为属性值,为使用pi私钥对数字身份、属性key值、时间戳签名的结果,TS为时间戳;
2.1.2)DIDDoc验证:orgj的Leader节点lj在收到Request后,首先根据DIDi在联盟链账本上查询其DIDDoc对应的哈希值hDoc_i,验证是否满足hDoc_i=H1(Doci),若满足则继续下一步骤;
2.1.3)属性核验:lj对该节点申请的Attk的值att是否符合实际进行核验,如果满足则为其DIDDoc更新Claim字段,然后将该DIDDoc返还给pi;
2.1.4)凭证生成:pi收到新的文档后使用自己的私钥ski对更新的“Claim”字段进行签名,得到“Credential”字段的内容;
2.1.5)更新账本:pi对新的Doci进行哈希运算得到h'Doc_i=H1(Doci),用h'Doc_i替换账本上hDoc_i;
当执行2.1.2)时,如果hDoc_i≠H1(Doci),则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上;
当执行2.1.3)时,如果实际中pi申请的属性值Attk≠att,则终止此子算法地执行,同时将此次执行失败的记录记录在联盟链账本上。
5.根据权利要求1或2所述的方法,其特征在于:2.2)中,在属性验证阶段,当分布式身份管理业务群组验证待验证用户的属性凭证时,需得到超过半数领导节点的验证成功消息,然后才会返回认证成功消息给验证用户,如未超过半数,则向验证用户返回验证失败消息。
6.根据权利要求1或2所述的方法,其特征在于:2.2)中,设节点pj想要对节点pi进行属性验证,整个系统将按如下步骤进行验证:
2.2.1)分布式文档发送:pi向pj发送其DIDDocDoci
2.2.2)请求发送:pj根据DIDi在账本上获取文档哈希值hDoc_i,判断是否满足H1(Doci)=hDoc_i,如满足则向分布式身份管理群组GroupDID中的所有节点发送属性验证请求其中,DIDj为pj的分布式数字身份,DIDi为pi的分布式数字身份,Doci为pi的DIDDoc,/>为使用pj私钥对pj、pi分布式数字身份、piDIDDoc以及时间戳的签名结果,TS为时间戳;
2.2.3)属性验证:GroupDID中的所有节点收到Request后,对于每个组织的领导节点lm∈GroupDID按照如下步骤对Doci进行解析:
2.2.3.1)使用pi的公钥按照Doci中“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密,将解密后的结果与“Claim”字段中除“Credential”字段外的内容进行比较,如果相等则继续下一步;
2.2.3.2)使用“Claim”字段中“issuer”对应的公钥对“Proof”中的“signature”字段内容进行解密,将解密后的结果与“Claim”字段中除“Proof”和“Credential”字段外内容进行比较,如果相同则验证通过,向pj发送验证通过消息
如果GroupDID中超过半数的验证通过,则向pj发送属性验证通过消息;
当执行2.2.3)时,如果“Claim”字段中“Credential”字段中的“Signaturevalue”进行解密后结果,与“Claim”字段中除“Credential”字段外的内容不一致,则返回验证失败消息如果“Proof”中的“signature”字段内容进行解密后的结果,与“Claim”字段中除“Proof”和“Credential”字段外内容不一致,则返回验证失败消息/>如果GroupDID中未超过半数的验证通过,则向pj发送属性验证失败消息。
7.根据权利要求1或2所述的方法,其特征在于:3.1)中,设Peer节点po想要发布数据Datan,整个系统将按如下步骤完成数据发布:
3.1.1)访问控制策略设置:数据拥有者pi设置访问控制策略Strategyn=(AM,γ),其中,AM表示一个l×w的矩阵,γ表示AM每一行映射到相应属性的映射函数,对于所有的i∈[1,l],AMi为AM第i行向量,γi为AM的第i行参与方标识,随机选取一个向量v=(s,y2,…,yw),其中,s为共享值,y2,…,yw为随机值,则AW·v为利用秘密共享得到的关于秘密值s的w个共享子秘密,λi=AWi·v属于γa且表示共享子秘密;
3.1.2)数据加密:数据拥有者随机选择参数rt∈Zp,利用属性加密公共参数Pp计算密文数据:
此处,Datan为数据拥有者想要共享的数据,其中{g、gβ、e(g,g)α、H2}为属性加密相关的公共参数Pp中的内容,CDatan为Datan属性加密后的密文;
3.1.3)数据上传:数据拥有者将密文数据CDatan上传至云服务器,云服务器保存密文数据并返回存储地址Addrn;
3.1.4)链上发布:数据发布者将要发布的数据相关信息上传至联盟链,链上存储格式为(Addrn,Desc,hData_n,DIDo,Strategyn),其中,Addrn表示数据在云服务器上的存储地址,Desc表示对数据的描述,hData_n=H1(Datan)为数据明文的哈希值,DIDo为数据发布者的DID。
8.根据权利要求1或2所述的方法,其特征在于:3.2)中,在数据请求阶段,如果数据请求者未通过属性验证,则系统不为其生成属性私钥;在数据请求阶段,如果数据请求者对解密后的数据进行哈希运算的结果与联盟链账本上记录的哈希值不一致,则数据拥有者重新上传加密数据至云服务器。
9.根据权利要求1或2所述的方法,其特征在于:3.2)中,设数据请求者pv想要访问po的数据Datan,将按如下步骤执行获取数据:
3.2.1)数据信息获取:数据请求者pv根据联盟链上对数据的记录(Addrn,Desc,hData_n,DIDo,Strategyn),获取该数据在云服务器上的存储地址Addrn以及该数据的拥有者的DIDDIDo;
3.2.2)属性私钥请求:数据请求者pv向数据拥有者po发送请求其中DIDv表示数据请求者的分布式数字身份,Docv表示数据请求者的DIDDoc,TS表示时间戳,/>表示使用数据请求者私钥对其分布式身份、DIDDoc和时间戳的签名;
3.2.3)属性验证:po在收到pv的请求后,首先用pv的公钥对签名进行验证,验证无误后向分布式身份管理业务群组发送属性验证请求,分布式身份管理业务群组按照分布式身份管理中的属性验证算法对pv的属性进行验证,验证通过则继续执行下一步骤;
3.2.4)属性私钥生成:po在对pv完成属性验证后,数据共享业务群组开始执行属性私钥生成算法,为pv分布式生成属性私钥,此算法共需要GroupDS中至少个节点参与执行,且算法从po开始至pv结束,假设参与密钥生成的节点集合为{po,p1,…,pm-2,pv},其中,po为数据拥有者,pv为数据请求者,p1…pm-2为任意m-2个节点,按照如下步骤进行私钥生成:
3.2.4.1)po根据pv的属性集合Sv,对于每一个属性x∈Sv,随机选择一个参数t∈Zp,计算kx=H2(x)t,然后计算部分属性私钥其中,skABE_o为po的属性加密子密钥,g、gβ、H2为属性加密公共安全参数Pp中的参数,然后将PSK发送给pv,将t发送给所有参与密钥生成的节点;
3.2.4.2)对于pi∈{p1,…,pm-2},每个节点在收到t后,计算Ki=skABE_i·gβt,skABE_i为pi的属性加密子密钥,计算完成后将Ki发送给pv;
3.2.4.3)pv收到PSK和{K1,…,Km}后,首先计算Kv=skABE_v·gβt,skABE_v为pv的属性加密子密钥,然后根据m-of-u秘密共享技术中的秘密恢复算法恢复得到K,即构造:则K=MSK·gβt=gα·gβt=Γ(0),最终得到
3.2.4.4)数据解密:pv根据地址Addrn从云服务器上下载加密数据CDatan,然后对使用属性私钥解密,如果属性集合满足访问控制策略Strategyn=(AM,γ),则计算数值ωt∈Zp,满足/>通过下式解密:
最后计算C/e(g,g)αs得到数据明文Datan;
3.2.4.5)数据校验:pv对数据明文Datan进行哈希运算,如果满足H1(Datan)=hData_n,则说明数据未经篡改。
10.根据权利要求9所述的方法,其特征在于:如果数据拥有者po向GroupDID申请验证pv的属性得到返回结果为未通过,则终止执行数据请求子算法;pv对数据明文Datan进行哈希运算,如果H1(Datan)≠hData_n,则说明数据已经被篡改,则po数据拥有者需重新执行数据发布算法上传数据,pv重新执行数据请求算法获取数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310971647.8A CN117200966A (zh) | 2023-08-03 | 2023-08-03 | 一种基于分布式身份和联盟链的可信授权数据共享方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310971647.8A CN117200966A (zh) | 2023-08-03 | 2023-08-03 | 一种基于分布式身份和联盟链的可信授权数据共享方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117200966A true CN117200966A (zh) | 2023-12-08 |
Family
ID=89000645
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310971647.8A Pending CN117200966A (zh) | 2023-08-03 | 2023-08-03 | 一种基于分布式身份和联盟链的可信授权数据共享方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117200966A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407849A (zh) * | 2023-12-14 | 2024-01-16 | 四川省电子产品监督检验所 | 一种基于工业互联网技术的工业数据安全保护方法及系统 |
-
2023
- 2023-08-03 CN CN202310971647.8A patent/CN117200966A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117407849A (zh) * | 2023-12-14 | 2024-01-16 | 四川省电子产品监督检验所 | 一种基于工业互联网技术的工业数据安全保护方法及系统 |
CN117407849B (zh) * | 2023-12-14 | 2024-02-23 | 四川省电子产品监督检验所 | 一种基于工业互联网技术的工业数据安全保护方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111371561B (zh) | 一种基于cp-abe算法的联盟区块链数据访问控制方法 | |
CN110493347B (zh) | 基于区块链的大规模云存储中数据访问控制方法及系统 | |
CN112019591B (zh) | 一种基于区块链的云数据共享方法 | |
CN109587132B (zh) | 一种基于联盟链的数据传递方法及装置 | |
KR102025409B1 (ko) | 블록체인을 기반으로 한 데이터 접근 관리 시스템 및 데이터 접근 관리 방법 | |
US20210089676A1 (en) | Methods and systems for secure data exchange | |
CN112073479A (zh) | 一种基于区块链的去中心数据访问控制方法及系统 | |
CN113014392B (zh) | 基于区块链的数字证书管理方法及系统、设备、存储介质 | |
KR102307574B1 (ko) | 블록체인을 기반으로 한 클라우드 데이터 저장 시스템 및 데이터 저장 방법 | |
CN114039790B (zh) | 一种基于区块链的细粒度云存储安全访问控制方法 | |
US20070127719A1 (en) | Efficient management of cryptographic key generations | |
JP2005539441A (ja) | 公衆ネットワークを介して安全なデータ配信を供給するための方法及びシステム | |
CN112532580B (zh) | 一种基于区块链及代理重加密的数据传输方法及系统 | |
CN114036539A (zh) | 基于区块链的安全可审计物联网数据共享系统及方法 | |
CN113411323B (zh) | 基于属性加密的医疗病历数据访问控制系统及方法 | |
CN113836222B (zh) | 一种基于区块链的可隐藏策略和属性的访问控制方法 | |
CN109819323B (zh) | 一种混合云系统中的视频内容访问方法 | |
WO2021154157A1 (en) | Blockchain-based data exchange | |
CN113901512A (zh) | 数据共享方法及系统 | |
CN117200966A (zh) | 一种基于分布式身份和联盟链的可信授权数据共享方法 | |
Yao et al. | A lightweight access control mechanism for mobile cloud computing | |
CN115883102B (zh) | 基于身份可信度的跨域身份认证方法、系统及电子设备 | |
CN114254284B (zh) | 数字证书生成、身份认证方法及量子ca认证中心与系统 | |
CN114189338B (zh) | 基于同态加密技术的sm9密钥安全分发和管理系统及方法 | |
CN106790185B (zh) | 基于cp-abe的权限动态更新集中信息安全访问方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |