张晓东,陈韬伟,余益民,3
1.云南财经大学 信息学院,昆明 650221
2.云南省区块链应用技术重点实验室,昆明 650221
3.云南财经大学 智能应用研究院,昆明 650221
目前,新一代信息技术促进了数据的指数级增长,使得数据成为了新的生产要素。然而,随着数据的开放和共享,越来越多的信息泄露事件使得敏感数据的所有权、安全性和隐私性成为各行各业必须面临的问题。但传统的密文共享方法解决敏感数据安全和隐私保护的同时采用中心化的数据访问控制模型,导致了需要耗费大量的通信开销和运算代价[1]。而作为一种新型公钥加密体制的密文属性基加密算法CP-ABE(ciphertextpolicy attribute-based encryption)[2-3],主要由数据所有者制定访问策略,将私钥与属性相关联后嵌入密文,实现了“一对多细粒度”的密文访问控制。因此,将CPABE 算法结合分布式数据共享管理机制可以有效解决上述问题。
2011 年,Waters 等人[4-6]提出一个基于线性秘密共享方案(linear secret sharing scheme,LSSS)的高效率CP-ABE算法,并在标准模型下证明了属性基加密的安全性。2010 年,Lewko 等人[7]将访问结构设计为LSSS矩阵,实现了CCA 安全的双系统加密机制。2012 年,Okamoto等人[8]解除了以往属性基加密方案对谓词和属性大小的限制,提出了无界内积属性基加密方案。2013年,Gorbunov等人[9]提出了由基于布尔公式向基于多项式逻辑电路的转变的属性基加密方案,有效抵御合谋攻击。2014 年,Waters 等人[10]在Rouselakis 等人[11]研究基础上提出线上线下结合的属性基加密方案,减少了在线阶段的计算开销。2015 年,De 等人[12]提出多机构的密文属性加密机制,但方案中隐私性难以保证。2017年,仲红等人[13]提出一种高效且可验证的多授权机构属性基加密方案(MA-CP-ABE),通过外包解密方式减少解密计算开销,但其私钥仍由多个属性授权机构生成。
综上,当前的CP-ABE算法由于其属性密钥仅与属性集合相关,而与用户标识无关,因此无法预防和追溯非法用户持有合法用户的私钥。此外,由于ABE 均由中心化的单权威机构授权,不能满足大规模分布式应用对于不同机构协作的需求,这要求了该权威机构必须完全诚实可信,违背了分布式应用信任分散的需求[14]。
随着比特币区块链系统于2009 年由中本聪[15]首次上线,实现了P2P网络与密码学相结合的分布式账本机制,具有去中心化、防篡改、透明公开验证等特点。这些特点符合当前CP-ABE对密钥审计与追溯的需求,同时分布式管理方式也可解决单点故障、计算开销大等问题。因此,Bramm 等人[16]将CP-ABE 与区块链结合,采用分布式密钥管理提升系统的安全性和效率;Fan 等人[17]则结合区块链解决了云服务器的数据存储隐私和密文访问控制问题;田有亮等人[18]提出了区块链密文溯源系统,实现了交易数据的隐私和动态保护;闫玺玺等人[19]提出一种基于区块链的属性基搜索加密方案,解决了对半诚实且好奇的模型下云服务器返回搜索结果的可验证问题。
以上的CP-ABE方案[16-19]中虽然采用区块链系统进行了分布式管理,但方案仍沿用了中央机构CA(central authority)进行密钥计算和分发,并未解决存在的单点安全隐患。为此,Gao等人[20]通过同态加密的方式将用户属性隐藏,区块链作为进行身份证明和验证的实体,从而获得主密钥,并由用户生成私钥,实现了分布式的密钥计算和属性保存,但其主密钥仍由中心化机构保管,存在安全隐患;郑良汉等人[21]设计了一种层次化多权威CP-ABE 算法,通过区块链技术进行私钥分发,但与区块链的相关程度不高。
因此,本文采用代理密钥封装技术,提出属性基加密的区块链双链方案PKEM-CPABE(proxy key encapsulation mechanism ciphertext-policy attribute-based encryption)。实现数据的隐私保护和加密过程的追踪审计。本文的主要贡献如下:
(1)在Waters[4]所提的CP-ABE方案基础上,通过区块链代理密钥封装机制对主密钥进行封装。其中,设计主密钥代理保管节点和密钥转换节点,分别负责保管主密钥密文与解密主密钥密文,通过区块链节点不同分工实现了主密钥的安全分布式计算与用户属性的管理,无需可信第三方的参与。
(2)方案采用主从式双链架构,主链采用POW共识机制,激励节点参与交易的验证并获得信誉积分奖励,并为子链选举许可计算节点。子链共识采用POA 机制,提高算法主密钥安全分发通信和共识效率。另外,子链事务区块的hash绑定主链区块中,确保子链中事务的追踪与可验证。
(3)设计了支持双链架构的区块结构,对算法中参数的产生、使用和分发的交易进行分类归管。通过全流程追溯防止密钥滥用,确定作恶用户节点行为,实现交易的可验证、可追责和可审计性。
本文中基于PKEM-CPABE算法所涉及的主要参数如表1所示。
表1 方案主要参数Table 1 Notations in this paper
设p是一大素数,G0、G1是两个阶为p的乘法循环群,g为群G0生成元,定义双线性映射[22]e:G0×G0→G1。满足以下性质:
(1)双线性:对于任意g∈G0,a,b∈Zp,有e(ga,gb)=e(gb,ga)=e(g,g)ab;
(2)非退化性:存在g∈G0,e(g,g)≠1;
(3)可计算性:存在有效计算e(g,g)。
参与方集合p上的秘密共享方案Γ如果满足下列条件,则称为Zp上的线性秘密共享方案[22]:
每个共享秘密的份额组成Zp上的一个向量。
对于秘密共享方案Γ,存在一个l×n矩阵M,映射函数ρ为M的行指定属性。对于i=1,2,…,l,ρ(i)是与第i行相关联的参与方。考虑一个列向量v=(s,y2,…,yn),s是被共享的秘密,ri是随机选取的i=2,3,…,n,根据方案Γ,Mv是秘密s被共享的l个秘密份额,λi=vi·Mi(i=1,2,…,l)表示秘密共享密钥份额。
线性秘密共享方案具有线性重构的特性,如果S∈A是一个访问授权集合,那么存在一个常数ωi∈Zp,使得成立,其中λi是秘密s的有效份额,I={i:ρ(i)∈S}。
PKEM-CPABE算法由以下9个算法构成,其关系图如图1所示。
图1 PKEM-CPABE算法流程图Fig.1 Process of PKEM-CPABE algorithm
(1)系统初始化
AbeSetup(1k)→(PK,MSK)。输入安全参数k和属性集合U,输出系统密钥对(PK,MSK)。
设α,β∈Zp及群G0的元素h1,h2,…,hu,其中{1,2,…,u}表示属性集合U对应的属性标号,系统输出密钥对(PK,MSK)为:
(2)用户初始化
PkemSetup(1φ)→(pk,sk)。算法输入系统安全参数φ,输出用户公私钥对(pk,sk)。
定义G2是Zq阶数为q的循环群,令f为群G2的生成元,定义哈希函数Hi,随机选择a∈Zq,输出用户密钥对为(pk,sk):
(3)主密钥的封装
PkemMSK(MSK,pkA)→(CTMSK,capsule1)。算法输入系统主密钥MSK和用户公钥pkA,输出封装后的的主密钥密文CTMSK和胶囊capsule1。
定义哈希函数H2,随机选择e,v∈Zq,定义G 为AES对称加密函数:EAES,DAES。输出主密钥密文CTMSK和胶囊capsule1为:
(4)用户私钥转换
PkemKeyGen(skA,pkB)→(XA,rkA→B)。输入A的用户私钥skA和B的用户公钥pkB,输出转换密钥rkA→B。
随机选择xA∈Zq,定义哈希函数H3,计算转换密钥rkA→B:
(5)用户私钥重加密
PkemEnc(rkA→B,capsule1)→capsule2。输入转换密钥rkA→B和胶囊capsule1,输出胶囊capsule2:
(6)主密钥解密
PkemDec(CTMSK,XA,skB,capsule2)→MSK。通过输入主密钥密文CTMSK,用户私钥skB和capsule2,输出主密钥MSK。
定义哈希函数H3,计算主密钥MSK:
(7)系统加密
AbeEnc(PK,m,(M,ρ))→CT。输入系统公钥PK、明文m和访问控制策略(M,ρ),输出密文CT。加密过程中采用秘密共享技术,最终密文CT为:
(8)属性私钥生成:
AbeKeyGen(MSK,S)→SK。输入系统主密钥MSK和用户属性集合S,输出用户的属性私钥SK。
(9)解密
AbeDec(CT,SK)→m。输入密文CT、属性集合S对应的私钥SK,如果S满足访问结构,则输出明文m,反之则解密失败。
解密计算:
本文安全模型选择明文攻击下的不可区分性(indistinguish ability against selective access structure and chosen plaintext attack,IND-SAS-CPA)游戏,游戏中挑战者(challenger)和敌手(adversary)的交互过程如下[23]。
(1)初始化。挑战者初始化系统AbeSetup(1k),保存用于应答的秘密参数mk,并将公钥pk发送给敌手,敌手宣布要挑战的旧访问策略(M,ρ) 和新访问策略(M*,ρ*)。
(2)询问。敌手向挑战者发送多个属性集合S1,S2,…,Sn,这些属性不满足访问策略(M,ρ)和(M*,ρ*),挑战者运行AbeKeyGen(MSK,S)将生成的相应属性私钥并发给敌手。
(3)挑战明文。①敌手发送两条等长明文m0、m1给挑战者,挑战者随机选取c∈{0,1}使用旧访问策略进行mc加密;②挑战者根据(M*,ρ*)进行策略更新,生成相应更新密文CT*;③挑战者将更新密文CT*发送至敌手。
(4)重复步骤(2),敌手向挑战者发送属性集合Sn+1,Sn+2,…,Sn+m,申请相对应私钥,其属性不满足访问结构(M*,ρ*)。
(5)猜测。敌手输出c的判断结果c∈{0,1}。
定义1若多项式时间敌手赢得以上安全模型游戏优势可以忽略,则本文方案安全。
本文采用双链架构,主链public chain(PC)基于POW共识算法;子链child chain(CC)基于POA共识算法。
(1)PC:主链中将信誉积分作为主链网络的激励机制以吸引节点参与共识并获得积分奖励,同时抵抗作恶节点的攻击和确保网络安全。另外,主链上设置主密钥代理存储节点PSN(proxy storage node)、密钥转换节点RKCN(re-key calculate node)等许可计算节点的选举,被选举出的PSN、RKCN节点与数据拥有者DO、数据使用者DU 共同维护子链账本。PC 中的区块pb(public block)存储由DO 上传的加密密文CT 摘要和各节点信誉积分RS(rating score)。
(2)CC:PSN、RKCN 节点由主链选举构成子链,并与DO、DU节点组成的临时计算委员会,采用POA共识机制,提高子链事务处理速度和读写吞吐量、降低交易成本。子链中的区块cb(child block)存储各参数传递过程的事务信息,实现密钥传递的可追溯性。
在双链结构中,PC和SC通过hash值方式进行锚定。DO 将密文CT存储于IPFS 数据库中,将密文CT地址摘要记录在公链;子链中各节点通过智能合约进行交互。
在双链架构中,设计信誉积分RS,作为节点的量化评价指标,可以客观反映出该节点的好坏。同时,信誉积分采取连带责任制,对于表现好的节点,根据其贡献程度奖励一定数量的积分值作为奖励;对于故障或恶意节点,作为惩罚则扣除相应的RS。
3.1.1 投票机制
本文结合信誉积分提出一种新的计算节点总票数(Votes)的公式:
其中,AV表示赞成票,NV表示反对票,RSi为第i个节点所拥有的RS值,m为该节点获得赞成票个数,n为该节点获得反对票个数。为第i个节点投票所占权重。总赞成票减去总反对票数,与节点自身RS值相加,获得最终票数Votes。
3.1.2 节点选举
基于PKEM-CPABE双链架构中的子链节点负责代理主密钥封装的密钥存储和转换密钥计算。对于Votes值小于0的节点则默认其Votes值为0。在一轮投票中,对所有参与节点Votes值进行由高到低排序,将节点分为不同类型:
(1)PSN:Votes值为前20%的节点;
(2)RKCN:Votes值为20%~80%的节点;
(3)危险节点:Votes值为最后20%的节点。
3.1.3 信誉积分奖惩机制
在子链CC 中,对于成功贡献的节点会给予一定的奖励;反之,则给予一定的惩罚。设共有k个节点参与,单个节点的工作量为WL(work load),奖励系数为τ,根据其工作量所占权重,进行奖励或惩罚。
以某积极节点为例,当其成功完成其工作时,工作量为WLi,节点获得奖励:
参与投积极票AV的节点也将获得奖励,设共有m个节点为该节点投积极票,奖励系数为γ:
则该节点最终信誉积分为RSFinal=RS+Score。
若该节点需要受到惩罚,Score计算方法同上式,参与投积极票NV的节点也将受到惩罚,该节点最终信誉积分为RSFinal=RS-Score,当信誉积分RS等于0时,便不再减少。
3.1.4 RS阈值与奖励调整因子
当RS增加到一定值时,需要利用奖励调整因子平衡该节点与网络中其他节点的关系。设α为RS的阈值,αmax为RS最大值,β为该节点达到RS阈值时对应的投票轮数,x为投票轮数,当Score大于阈值后所获取的奖励为:
当节点RS值达到阈值时,此后所获奖励将逐步减缓,但RS值仍保持增长。既使得某节点在选举中保持优势,又维护了其他节点被选举的公平性,保持了网络中各节点的积极性。
3.2.1 双链及区块结构
基于PKEM-CPABE的双链架构如图2所示。
图2 双链架构和区块结构Fig.2 Architecture and structure of blockchain
每个数据块一般包含区块头和区块体两部分。区块头封装了当前版本号、前一区块地址、当前区块目标哈希值、Merkle根、随机数以及时间戳等信息。其中,公链PC的前一区块信息中包括前一pb块的Hash值和挂接于该区块的子链cb块的Hash值,而子链区块cb的前一区块信息中包括前一cb区块的Hash值。
3.2.2 事务结构
为实现基于PKEM-CPABE的双链架构中密钥流转的来源追溯,定位各节点行为。本文基于PKEM-CPABE算法对区块结构进行设计,利用区块链进行密钥传递过程的行为追责。事务结构7元组定义如下:
其中,ID表示事务标识号;From和To分别表示该事务的发送方与接收方;TxType表示该事务类型,Y为可以公开,N为不可公开;TimeStamp表示事务发布时间戳;Sig表示发布者签名;Data表示事务包含的可选数据域。
某共识节点在收到一笔事务后进行状态初始化,提取事务信息并下载至本地,根据TxType 字段判断该事务是否可公开,从Data字段中获取事务的公共参数。
基于PKEM-CPABE 的数据共享模型如图3 所示,共包含个参与方,分别是数据拥有者DO(data owner)、数据使用者DU(data user)、主密钥代理存储节点PSN(proxy storage node)、转换密钥计算节点RKCN(re-key calculate node)、星际文件系统IPFS(inter planetary file system)和区块链BC(blockchain)。
图3 PKEM-CPABE系统架构图Fig.3 System architecture of PKEM-CPABE
(1)初始化。数据拥有者DO 通过2.1 节算法Abe-Setup(1k)生成系统主密钥对(PK,MSK)。各节点通过算法PkemSetup(1φ)生成各自的用户公私钥对(pk,sk)。
(2)加密。数据拥有者输入公共密钥PK、数据集合m以及访问策略(M,ρ),通过算法AbeEnc(PK,m,(M,ρ))输出加密数据CT,数据拥有者将CT发送给IPFS,事务信息为Tx=(ID,DO,IPFS,Y,TimeStamp,Sig,CT)。
(3)主密钥(MSK)封装。数据拥有者通过算法PkemMSK(MSK,pkA),输入PSN 节点公钥pkPSN和主密钥MSK,获得封装好的主密钥密文CTMSK和胶囊capsule1,并通过事务Tx=(ID,DO,CC,Y,TimeStamp,Sig,CTMSK)将CTMSK上传至子链,通过事务Tx=(ID,DO,RKCN,N,TimeStamp,Sig,capsule1)将capsule1发送给RKCN。
(4)用户私钥转换。当DU请求获取主密钥MSK,向PSN 发送请求,PSN 验证Sig签名后,输入自己的私钥skPSN和DU公钥pkDU,通过算法PkemKeyGen(skA,pkB)生成转换密钥rkPSN→DU和XA。并发送给RKCN:Tx=(ID,PSN,RKCN,N,TimeStamp,Sig,(XA,rkPSN→DU))。
(5)用户私钥重加密。转换密钥计算节点RKCN收到计算请求,输入capsule1和rkPSN→DU,通过算法PkemEnc(rkA→B,capsule1) 生成新的胶囊capsule2,并连同XA发送给DU。Tx=(ID,RKCN,DU,N,TimeStamp,Sig,(XA,capsule2))。
(6)主密钥解密。DU 获得XA和capsule2后,从链上获得主密钥密文CTMSK,输入XA,capsule2和skDU,通过算法PkemDec(CTMSK,XA,skB,capsule2)获得主密钥MSK:Tx=(ID,CC,DU,Y,TimeStamp,Sig,CTMSK)。
(7)属性私钥生成。DU获得MSK后,输入自身属性集合S,通过算法AbeKeyGen(MSK,S)获得属性私钥SK。
(8)解密。DU 通过事务Tx=(ID,PC,DU,Y,TimeStamp,Sig,CT)获得密文CT,输入属性私钥SK,通过算法AbeDec(CT,SK)获得明文m。
定理1若困难性假设q-parallel BDHE 成立,则不存在多项式时间敌手能够选择挑战访问结构(M*,ρ*)攻破本文方案。
证明在本文选定结构模型下,如果敌手A在多项式时间的以ε的优势攻破本文方案,则存在另一敌手B以ε/2 的优势解决判定性q-parallel BDHE假设。
选取两个乘法循环群G0、G1以及双线性映射e:G0×G0→G1,随机选择β,s,b1,b2,…,bq∈Zp,公开:
随机选取θ∈{0,1},若θ=0,则取设置T=(y,Z);若θ=1,取Z∈G1,设置T=(y,Z)。
B收到多元组T后,通过与敌手A进行以下游戏[23]。
(1)初始化。B 选择随机数αʹ∈Zp,计算e(g,g)α=敌手B 随机选择α=α′+βq+1并按以下方式编排群元素h1,h2,…,h|u|。对于每一个x(1 ≤x≤|U|)都选择一个对应的随机数zx,令X是使得ρ*(i)=x的指标i的集合。求hx:
由于gzx的随机性,hx是随机分布的。如果X≠Ø,则有hx=。
(2)Phase 1。A对不满足矩阵M*的集合S做秘密钥提取询问。B 选择随机数r∈Zp,求向量ω=(ω1,ω2,…,ωn*)∈使得ω1=-1 且对所满足ρ*(i)∈S的i,ω·=0。由LSSS的定义知这样的向量一定存在,否则向量(1,0,0,…,0)在S的张成空间中。求:
对∀x∈S,计算Kx。当x∈S,没有i使得ρ*(i)=x时,令Kx=。当x∈S,且有多个i使得ρ*(i)=x时,因为·ω=0。根据这一特性可以消除Kx中包含的。再次令X表示使得ρ*(i)=x的指标i的集合,B 可以按照下式构造Kx:
(3)挑战。敌手发送两个等长挑战消息m0和m1。B 随机选β∈{0,1},计算mβ的密文的各分量:C=mβ·Z·e(g,g)αs和C′=gs。
(4)Phase 2。与Phase 1类似。
(5)Guess。A输出对c的猜测c′,如果c′=c,B 输出θ=0,表示T∈Pq-parallelBDHE,此时敌手的优势Pr[c=;如果θ≠0,则表示T∈Rq-parallelBDHE。此时敌手的优势为。敌手B 攻击qparallel BDHE假设的优势为:
故任何多项式时间敌手赢得IND-SAS-CPA游戏的优势可以忽略。
证毕。
定理2令Γ=(KG,RG,E,R,D)是一种单向代理密钥封装方案。
标准(密文)安全:底层密码系统(KG,E,D)是语义安全的,不会被未获得解密权的挑战者攻破。
证明对于所有的PPT算法Ak,Ei∈E和m0,m1∈Mk:
密钥安全:即使发动合谋攻击,委托人(或被委托人)的密钥仍无法被计算或推算。
证明对于所有PPT算法Ak:
证毕。
(1)可信任与隐私性。为保证主密钥安全,当前CPABE方案均需要用户向密钥中心提供属性集合来生成用户所需的私钥SK,易导致信任成本高、单点故障、用户隐私泄露和私钥安全等问题。本文提出的PKEMCPABE方案利用代理密钥封装机制,在私钥SK生成过程中各节点间相互制约,有效抵御许可计算节点临时作恶问题。
①PSN节点:DO在使用PkemMSK(MSK,pkPSN)对主密钥进行封装时,为防止PSN 作恶,将密钥E,V嵌入KMSK,即PSN需要同时持有pkPSN,E,V才可生成解密密钥KMSK。而DO 将E,V封装进capsule1并发送给RKCN 节点,PSN 仅持有pkPSN,无法通过生成KMSK来解密CTMSK,因此可有效防止PSN节点作恶。
②RKCN 节点:为防止RKCN 节点作恶,PSN 节点使用PkemKeyGen(skPSN,pkDU)生成转换密钥rkPSN→DU时,使用密钥XA,pkDU对skPSN进行加密,RKCN 需再持有XA和skDU才可生成解密密钥KMSK。因此可有效防止RKCN节点作恶。
③鉴于以上分析可知,区块链网络中各参与方均无法获得生成用户属性私钥SK所需的主密钥MSK和用户属性隐私,且属性私钥由DU本地保存,很好地解决了信任成本高、单点故障、隐私泄露和私钥安全等问题。
(2)可追溯性。本文所提出的PKEM-CPABE 方案中,初始化、数据加解密、主密钥加解密以及相关密钥生成均在链下计算,而链上则通过事务进行相关参数的传递,所有事务均为不可篡改,因此链上节点可追溯整个过程.此外,由于事务的不可篡改,各节点还可通过事务信息检测恶意节点相关攻击,维护区块链网络稳定。
基于区块链的PKEM-CPABE算法实验采用一台主机(CPU为酷睿i7 8代,内存为16 GB,主频2.20 GHz,操作系统为Ubuntu19.04),并利用基于配对的PBC密码库(v0.5.14)[24]和Python来实现本文PKEM-CPABE算法,利用以太坊区块链设置若干节点,采用Solidity 编写的智能合约进行模拟。同时,使用基于512 bit 有限域上的椭圆曲线y2=x3+x构造160 位椭圆曲线群,实验数据在条件相同情况下,独立重复性实验30次取得平均值。
如图4所示,当数据大小设置为308 Byte,访问策略属性值在2~16 范围内分别选取间隔为2 的数值。由于本文方案在加密时需要引入代理密钥封装机制,随着属性个数的增加,与文献[4]的方案进行比较,本文方案加密时间和解密时间代价平均高出50 ms。
如图5所示,当数据大小设置为308 Byte,访问策略属性个数设置为2~16、间隔为2时,随着属性个数增加,密钥生成平均时间总体高于Waters方案27 ms。
图5 同文件下单用户密钥生成时间对比Fig.5 Keygen time comparision of same message and single-user
如图6所示,当数据大小设置为308 Byte,访问策略属性个数设置为4个,用户数量分别以偶数递增为16时,本文方案密钥生成时间对比Waters方案有明显的优势。由于Waters方案私钥SK由密钥中心生成,本文方案由各用户单独生成,因此在分布式应用时具有明显优势。
图6 同文件下多用户密钥生成时间对比Fig.6 Keygen time comparision of same message and multi-user
为对3.1节信誉积分和投票机制进行仿真,设定100个网络节点进行投票模拟,其中优秀节点、普通节点和恶意节点的占比分别设置为20%、60%和20%,初始积分RS=60,阈值RS=80,最大RS=100。随机选取工作量比例0~0.5,奖励系数与惩罚系数值为0~10,节点作恶概率范围0~0.5,共进行50轮投票。
如图7所示,多轮投票后优秀节点获得的票数逐渐升高并在后续投票过程保持领先,由于无不良记录,其他节点更倾向于投票给信誉值高的节点;普通节点则比较稳定;而恶意节点的RS值随着选举轮数的增加,其信誉值逐渐减少,有效阻止了恶意节点进入子链。
图7 50轮投票结果Fig.7 50 rounds of voting results
当前众多基于区块链的CP-ABE 数据共享方案仍采用一个或多个权威机构来进行密钥的生成、分发和属性的管理工作,工作量巨大且影响工作效率;并且容易造成单点故障和用户隐私泄露等问题。因此,本文引入密钥封装机制,设计了一种PKEM-CPABE算法,能够实现无授权机构参与下的可证明数据安全共享及其隐私保护。基于这种可分布式计算的CP-ABE算法,本文设计了适用于该算法的双链架构、区块结构和信誉积分机制。仿真结果表明本文所提方案能够实现安全、高效和细粒度的数据访问控制,显著减少了私钥生成时间,提高了系统效率,同时利用双链特性使各节点能够诚实、并行和去中心化地为用户分发私钥,并实现了密钥的全过程管理和操作行为可追溯的链上监管。