APP下载

基于DAG区块链的密文策略属性加密模型*

2022-01-20王静宇董昊

内蒙古科技大学学报 2021年4期
关键词:密钥加密合约

王静宇,董昊

(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)

随着大数据云计算时代的到来,越来越多的企业、组织和个人选择将数据外包给公共云服务,然而有些数据会涉及到用户的隐私安全.如何保证云上数据的安全,确保数据在共享过程中的安全,是我们目前必须要解决的迫切问题.构建一个高效,灵活,细粒度的安全访问控制模型,需要我们不断的摸索尝试.

2006年Goyal V等提出一种适用于云上数据的访问控制管理模型CP-ABE[1].在CP-ABE中,密文与访问控制策略相关联,用户的密钥由一组属性标记,数据拥有者可以根据属性,授权具有相应属性的用户访问.2007年,Bethencourt等首次提出了引入单一属性授权机构的CP-ABE算法[2],其数据请求用户的密钥由单一机构根据其属性身份信息生成.2012年Liang等提出了一种单属性授权中心具有用户撤销功能的CP-ABE协议[3].但是该方案没有向前安全性,被撤销的实体仍然可以照常解密先前访问的数据.此外文献[4-6]都是只有单一的属性授权机构,单属性授权机构一方面在处理大量请求时会影响系统性能,同时权力过于集中可以猜出用户身份进而造成信息泄漏,另外在云系统中用户的身份属性往往由多个授权机构赋予,单一的属性授权机构并不能满足具有多方参与的云计算场景.在多属性授权机构加密研究上,Chase等提出了第一个具有多授权机构(AA)的方案(MA-ABE)[7],每个AA分别向用户发布一组属性进而构成最终密钥,但是该方案并没有考虑属性撤销的问题.

近年来,陆续有学者提出将区块链与CP-ABE结合,探寻在新的形式下保障分布式系统的数据共享安全.Liu等设计了一个使用智能合约来管理和执行数据共享协议的框架[8].Lin等提出了一种适用于工业4.0的区块链访问控制系统[9],可以进行细粒度的访问控制.Wang等提出将以太坊区块链与CP-ABE相结合的实现[10],通过以太坊智能合约进行属性授权实现云存储的细粒度访问控制.然而现有的方案都是应用在传统链式区块链模型上,受制于链式结构并发运行效率低、出块时间长的缺陷.方案的提出仅仅是与区块链结合的尝试,并不能满足大规模的云计算场景,不具有实用性.

为了解决传统链式结构区块链的并发效率问题,论文[11]提出闪电网络概念,通过最终交易上链,小额交易在“微支付通道”里进行的方式减少对区块链的频繁请求.此外还有多链概念,即通过跨链连接器,充当“中间件”将多个单链通过大家共同遵循的数据接口链接,以实现复杂的业务逻辑.直到2015年有学者提出DAGCoin(Blockless DAG)概念[12],其省略了交易产生区块的阶段,直接对全网交易进行排序,交易发起后直接融入全网,从而节省大量等待出块的时间.DAG在各个维度上较比传统链式结构都显露出更优的特性,特别是在确定性、效率、能耗等方面有着明显的优势.

针对上述问题,通过将DAG区块链Byteball[13]平台与CP-ABE属性加密方案[14-16]整合,提出一种新型的数据安全共享模型(GCP-ABE).(1)引入DAG区块链架构,以解决现有链式区块链模型的并发效率问题;(2)融合优秀的CP-ABE属性加密方案,针对云上多机构参与、高用户动态性等场景对模型架构进行改进;(3)模型中DU的属性由多个属性授权中心管理,密钥分发由数据发布的原机构自治管理;(4)采用(AES+CP-ABE)对密文进行二次加密,并针对系统可能遇到的频繁属性撤销进行算法优化,以确保快速完成对密文的属性重加密.

1 相关工作

1.1 双线性映射

映射e:G×G→GT,G和GT为阶为q的乘法循环群,g为乘法循环群的生成单元.满足如下性质.

e(ga·gb)=e(gb·ga)=e(g·g)ab;

(2)非退化性:∃g∈G,使e(u,v)≠1;

(3)可计算性:存在有效的方法计算e(g·g).

1.2 复杂性假设

双线性参数生成器(BDH):随机算法Г以安全参数k(k>0)为输入,在以k的多项式时间内运行,输出关于两个群G和GT的描述、他们共同的素数阶p、有效计算的双线性映射e:G×G→GT.

1.3 相关定义

描述GCP-ABE模型所需要使用的定义:

定义1:令ACC={ACC1,ACC2,…,ACCn}为系统中全部数据授权中心集合.

定义2:令HKGC={HKGC1,HKGC2,…HKGCn}为系统中全部中枢节点集合.

定义3:令Φ={b1,b2,…bn}为全体用户身份集.

定义4:令Ai={a1,a2,…an}为用户DU的属性集.

2 GCP-ABE模型设计

2.1 GCP-ABE模型架构

GCP-ABE模型包含5个实体:数据所有者(Data Owner,DO)、数据用户(Data User,DU)、云服务器(Cloud Service Provider,CSP)、数据授权中心(Attribute Authorization Center,AAC)、DAG区块链.模型架构如图1所示.

图1 GCP-ABE模型架构

数据所有者(Data Owner,DO):负责定义加密文件的访问控制策略,对其进行初次加密,部署其智能合约,并将其上传至云服务器.

数据用户(Data User,DU):通过区块链网络获得密钥Key并访问云服务器中的加密文件,当其属性集满足密文中的访问结构时,便可解密文件.

云服务器(Cloud Service Provider,CSP):负责存储管理DO上传的加密文件,利用其强大的计算能力对密文进行属性重加密.

数据授权中心(Attribute Authorization Center,AAC):负责对DU的属性授权和更新.

DAG区块链实体以Byteball平台为基础改造包含:

(1)播报节点(Oracle):Oracle数据库由系统内提供数据或基础功能的服务器管理,负责不间断向Byteball网络播报模型中智能合约的触发数据.如:时间、价格、Bitcoin交易.

(2)中继节点(Relay):负责存储整个Byteball区块链数据库,并向其他节点转发单元,其本身不存储任何私钥,也不发送任何单元.

(3)中枢节点(HKGC):既是Byteball中的Hub节点,又是CP-ABE的密钥管理节点;负责建立端到端的加密消息传输通道、代理轻节点向区块链网络发起交易、生成DU的用户密钥Key.

(4)见证人节点(Witness):负责对交易的排序,且仅仅能发出见证单元,无法接触交易“不是矿工”.Byteball默认规定每个用户可以选择12个见证人组成自己的见证人列表.GCP-ABE方案中的见证人节点在各属性授权机构AAC的下属部门集合中通过投票选取.约定被选择节点必须遵守见证人制度,且随时都有被其他见证人替换掉的可能.如:各省级的网络中心为属性授权机构,那么其下属的市级、区级网络中心可以竞选为见证人;

2.2 DAG区块链区块结构

Byteball的基础数据结构是DAG[17],结构中顶点称为“单元”,代表一笔交易;连接各个单元的有向边表明单元间的引用关系;G为创世单元,A→B1表示A引用了B,且A对B进行了合法性验证.同时规定,用户发出新单元时要求相同地址发布的所有单元应当直接或间接地包含该地址之前的所有单元,并且一笔交易可以同时验证多笔交易.凡是被超过一半的见证人直接或间接确认的单元即视为合法单元.不同于IOTA的朴素DAG结构,Byteball保留了类似传统链式区块链的结构“主链”.主链是经过见证人认定的最短路径MC的Parents优选算法,其创造了一个全网共识确定的交易序列,能优雅的避免双花的问题.当获得新单元时,每个节点会持续追踪自身的当前主链(MC),确定在MC上不再变动的点称为“稳定点”.在上述所设定的交易发送规则下,稳定点可以不断向后扩展.稳定点的本质是在当前稳定点的某一条子链路径上出现了一半见证人时,就可以确定稳定点能够朝着当前子链扩展.由于不同的用户节点的稳定点扩展方式保持一致,所以全网的全部用户节点可以实现最终共识,如图2所示.

在GCP-ABE模型中,区块结构包含3类单元:

(1)属性单元:由HKGCi发起,记录着各AACi返回的DU初始属性集,是DU的初始单元.一条边指向同注册HKGCi的其它DU的属性单元,用来系统快速检索用户.另一条边指向同注册Hub的其它DU的更新单元或交易单元,作为验证证据.

(2)更新单元:由AACi发起,用于DU的属性信息调整.如更新单元为DU的第一个属性单元,则一条边指向属性单元,如果不是则指向其最后一个更新单元,依次顺联.生成密钥时,回溯所有更新单元后即可得当时DU的属性集;另一条边指向区块链网络中其它DU的属性单元或交易单元,作为验证证据.

(3)交易单元:由DU发起,记录着DU的交易信息,一条边指向DU的上一个交易;另一条边指向区块链网络中其它DU的属性单元、更新单元或交易单元,作为验证证据.

图2 Byteball区块结构示意图

2.3 加密文件处理步骤

2.3.1数据用户DU注册

(1)DU选择一个信任的HKGCi作为接入口;

(2)本地生成永久公钥和永久私钥(MKDUi,SKDUi),并将MKDui通过安全信道上传给HKGCi;

(3)然后由HKGCi代理向各ACCi发送注册,ACC返回DU的初始属性值;

(4)HKGCi将DU的属性集Ai和唯一身份标识bi整理发布到区块链网络注册DU.

2.3.2文件加密

(1)DO选择一个信任的HKGCi作为发布口,随机生成安全参数k并通过安全信道上传;

(2)HKGCi运行Setup()产生对应密文的主公私钥对和副公私钥对,并通过安全信道将公钥传给DO;

(3)DO在本地先将文件f用AES256加密,并将对应密钥m用Encrypt()二次加密,同时用私钥打包签名得到:

M={AES(f),Enc(m)}DOi;

(4)通过安全信道将M传输给CSP,同时部署相应的密钥生成智能合约模板.

2.3.3用户密钥Key生成

(1)DU填写要访问的加密文件对应的智能合约,并支付一定的密钥生成费用;

(2)发布加密文件的源HKGCi的响应合约,运行KenGen()生成解密密钥SK;

(3)HKGCi用DU的永久公钥MKDUi加密SK和CSP上密文的下载地址:

S={SK,Address_csp}MKDUi通过安全信道传输给DU.(Address_csp具有时效性)

(4)HKGCi更新Oracle交易信息,智能合约交易成功.

2.3.4文件解密

(1)DU通过安全信道取回数据S,先用永久私钥SKDUi解密数据包,得到Key和Address_csp;

(2)在规定时间内下载CSP上的加密文件后,如其属性信息Ai及身份bi满足DO的设定条件,可得到密钥m;

(3)最后通过密钥m解密AES密文得到数据f.

由于DU只能通过提交智能合约的方式得到CSP中加密文件的下载地址,并且用户密钥Key根据当前属性状态实时生成.DU需要支付一定的成本才能得到上述信息,而生成的Key并不能保证一定能解开密文.所以DU获得非法数据会对其造成资源浪费,这在一定程度上减少了系统被DDOS攻击的可能.

2.4 属性加密算法定义

2.4.1Setup(k)初始化算法

执行加密操作之前,DO所属的HKGCi运行此初始化算法.输入安全参数k,首先哈希函数H:{0,1}→GT将字符串属性映射到GT的随机元素上.然后HKGCi随机选取参数α1,β1,α2,β2∈Zp生成对应加密文件的:

主私钥MK1={β1,gα1};

主公钥PK1={G,g,h1=gβ1,e(g,g)α1};

副私钥MK2={β2,gα2];

副公钥PK2={G,g,h2=gβ2,e(g,g)α2}.

2.4.2Encrypt(PK1,PK2,m,T)数据加密算法

由数据所有者DO执行,DO先将待加密文件f通过AES加密,再将其对应的密钥m通过Encrypt()二次加密.算法分为两个部分:

(1)生成访问结构树:首先选取两个随机数s1,s2∈Zp分别为属性左子树TA和身份特征右子树TID的根节点.然后TA中的每个非叶节点由递归的方式分配随机值si:

b)若s1节点是“或”操作,则标记该节点,同时将其所有子节点的值设为s1.

TA的每个叶节点ai,j∈TA计算ci,j=gtjsi.而TID只有2层结构,顶点为“或”操作,子节点的值都设为s2,每个叶节点bi,j∈TID,计算ki,j=gtn+jsi.i为该属性在树中的序号.

2.4.3KeyGen(MK1,MK2,Ai,ti)密钥生成算法

由被请求加密文件的发布源HKGCi执行,算法分为两个部分:

最后运行合并算法,数据用户DU最终密钥为:

Key=(Key1,Key2)=(d1=ga1-r1,∀j∈Ai∶dj=gnj-1,di=grt-1n+k)

2.4.4Decrypt(ct,SK1,SK2)解密算法

由数据用户DU本地运行.算法首先判断用户属性集Ai和用户身份bi是否分别满足TA,TID.如果不满足则返回⊥,否则选取满足TA的最小属性子集Ai′计算:

=Me(g,g)α2s2

则明文为:

2.4.5Revoke(PK2,bi,ai)撤销算法

系统中的撤销分为两种:

(1)用户撤销UserRevoke(PK2,bi):由DO发起,用来限制相应DU访问其数据.算法将副公钥PK2和被撤销用户的标识bi作为参数传入,由上文描述知,只需重构TID即可,无需再次计算密文主体.重构后的TID′=TID-{bi}.同时CSP将DU的身份标识bi从Φ移除,即使DU有加密文件的下载地址也无法访问数据.

由于用户密钥Key由DU主动请求并实时生成,所以系统不需要给每个用户重新分发新的密钥.同时由于被加密的是ASE的密钥m而不是体积庞大的源文件f,所以减轻了CSP的计算压力,即使一次撤销属性可能需要重新计算多个相关加密文件,CSP也可以迅速完成.

2.5 智能合约

在GCP-ABE模型中,系统中关键任务的触发执行都由智能合约来代理.Byteball平台的智能合约是声明式的且非图灵完备,支持从Oracle中获取信息,作为智能合约的执行依据,这可以让现实世界中的事件作为合约的触发点.较比以太坊等图灵完备的智能合约,有着安全性更高,部署简单的优势.模型所涉及到的智能合约有:

2.5.1密钥生成合约

DO通过在单元中发送app=’ciphertext name’消息来发布合约脚本模板,当单元达到稳定状态后,脚本模板则可以被DU调用.密钥生成合约脚本模版伪代码:

["and",{

//合约触发需要DU和HKGC_i同时签名

["sig",{pubkey:"DU pubkey in BASE64"}],

["sig",{pubkey:"HKGC_i pubkey in BASE64"}],

//Oracle数据库返回SK生成成功信息

["and",[

["M_id","@Mid"],

//Oracle数据库反馈交易成功

["in data feed",[["KEY GENERATE LOG"],

"success+@parm","=","true"]]

]],

//交易触发

["and",[

["address","@DUaddress"],

["has",{

what:"output",

asset:"base",

//默认生成一次密钥的金额为100

amount:100,

address:"DO ADDRESS"

}]

]],

}]

DU通过调用DO发布的脚本模板来请求生成对应的SK.算法中Mid为加密文件在系统中唯一标识;parm为随机数,用来区分本次交易;DUaddress为DU的钱包地址.密钥生成合约调用伪代码:

["ciphertext name",[

"hash of where the ciphertext was defined",

{Mid:"value1",parm:"value2",DUaddress:"value3",}

]]

2.5.2用户撤销合约

用户撤销合约由DO触发,用来限制相应用户对其加密文件的访问.DO需要输入被撤销DU的唯一身份标识bi,相应加密文件标识的Mid,parm随机数,并支付给CSP一定的重加密费用.

2.5.3属性撤销合约

属性撤销合约由AACi触发,用来撤销相应用户在其机构中注册的某些属性.AACi需要输入被撤销DU的属性ai,相关HKGCi的钱包地址,parm随机数,并支付给CSP和相关HKGCi一定的重加密费用.

3 分析及实验

3.1 模型安全性分析

GCP-ABE模型,不但具有多个属性授权机构,同时多数据共享机构可以自治管理授权密钥,数据提供者也可以管理数据的授权.系统所有交易操作都由区块链管理,交易明细在链上永久保存,审计溯源方便.

模型中DU的属性由多个属性授权机构AAC管理,其属性集Ai和身份标识bi存储在区块链中.DU每次发起密钥生成请求时HKGCi都会读取存储在区块链中的数据,区块链单元中存储的数据都是经过见证人节点Witnes和后续交易单元验证的,攻击者通过修改属性信息的方式获得非法密钥几乎不可能;模型中加密文件的发布源机构同时是密钥授权机构,DU的每次密钥生成请求都会交由源机构处理,这一定程度保证了密钥的分发安全;模型中CSP对每个加密文件都有一个访问控制列表,被DO撤销访问权限的DU(用户撤销)即使得到文件的访问地址,也无法从CSP上下载文件;模型中DU的请求交易必须通过区块链完成,攻击者的每一次攻击尝试都必须要付出一定的成本.对于攻击者而言攻击所付出的成本较比传统安全模型是非常大的,所以模型在抗DDOS上具有更好的安全优势.

3.2 算法安全性分析

3.2.1属性加密算法

pr[Q(g,ga,gb,gc,e(g,g)abc)=1]-pr[Q(g,ga,gb,gc,e(g,g)θ)=1]≥ε.

如果假设DBDH成立,敌手无法在多项式时间内求解DBDH问题,且优势ε可以忽略,则GCP-ABE模型IND-CPA安全.

(1)准备阶段:敌手A选取挑战访问结构T*.

(4)挑战阶段:敌手A向挑战者B提交一个挑战属性集和两个等长的明文M1,M2(在查找阶段,敌手A不曾查询过挑战属性集的属性密钥).挑战者B运行KeyGen()算法,并随机抽取一个比特b∈{0,1}对明文Mb进行加密:

=Mbe(g,g)(ab+x′)ce(g,g)α2α2

c1=gc

=Mbe(g,g)abce(gc,gx′)e(g,g)α2α2

=MbZe(gc,gx′)e(g,g)α2α2.

(5)查找阶段2:步骤与查找阶段1一致.

(6)猜测阶段:敌手A输出一个猜测b′∈{0,1}.若b′=b,则Z=e(g,g)abc,即DBDH成立.敌手A获得合法的关于消息Mb的密文,其成功概率为

若b′≠b,则Z=e(g,g)θ.则敌手A没有获得消息Mb的密文,没有优势猜测正确b′.其成功的概率为

因此pr[Q(g,ga,gb,gc,e(g,g)abc)=1]-pr[Q(g,ga,gb,gc,e(g,g)θ)=1]≥ε成立,所以GCP-ABE模型是安全的.

另外模型中用户属性被撤销时,相关加密文件的源HKGCi都会重新执行Setup(k)并对密文进行重加密,之前已经生成的属性密钥会全部失效,同时新加入的用户因为其身份标识bi没有在之前加密文件的访问控制列表中,所以无法下载和解密文件,这也保障了数据的向前安全和向后安全.

3.2.2智能合约算法

模型采用的非图灵完备的智能合约,在保证“够用”的同时,避免了以太坊等图灵完备的智能合约出现安全漏洞的高风险.模型中DO在发布加密文件的同时,部署其加密文件的智能合约模板;如果合约编写错误,只需要撤销对应加密文件,重新加密并部署即可;DU只能调用固化在区块链中对应加密文件的智能合约模板,填写DO已经定义好的需要的参数信息;智能合约由系统自动执行,DU无法直接参与,更无法利用智能合约漏洞.

3.3 实验及对比分析

模型的涉及到的属性加密算法通过修改CP-ABE工具包(http://acsc.csl.sri.com/cpabe/)来实现.实验中各节点的硬件配置:CPU型号为Intel i7-8700 3.2 GHZ、内存条型号为Kingston 8*2 GB 1 600 MHZ、SSD硬盘型号为Kingston 128 GB;软件系统版本:Ubuntu 16.04.4 LTS 64位、Byteball软件运行环境Nginx v1.10.3、Node v6.10(HKGC)、Node v5.12(Witness).

3.3.1单笔交易消耗的平均时间对比

图3展示了文献[10]以太坊访问控制方案和文献[19]Fabric访问控制方案与GCP-ABE模型在处理10000笔并发访问交易,且TA属性数量为10时,每笔交易的平均运行时间.可以看出GCP-ABE模型由于省略了打包出块环节,在交易请求连续稳定时,较比以太坊访问控制方案和Fabric访问控制方案分别节省近4倍、2倍的处理时间.另外,不同于传统的单链区块链模型,由于模型应用DAG区块结构,理论上并发交易数量越大,交易的响应时间越短.这一定程度上适用了具有海量用户且频繁交易的场景.

图3 处理一笔交易所消耗的平均时间对比

3.3.2属性撤销效率对比

图4展示了GCP-ABE模型与文献[14]在进行属性撤销操作时,分别处理1,1.5,2,2.5,3和3.5 G的文件所消耗的时间对比.由于GCP-ABE模型事先对文件进行AES加密,重加密算法只处理对应的加密密钥m.所以在属性撤销操作时,重加密速度非常快,且处理时间不随文件大小变化而增长.

图4 处理不同大小文件所消耗时间对比

3.3.3用户撤销效率对比

图5展示了GCP-ABE模型与文献[14]在进行用户撤销时,分别处理50,100,150,200,250和300个10 G的文件所消耗的时间对比.由于GCP-ABE模型的特殊性,重加密算法只需要重构加密文件的TID,而无需重新计算密文主体.相比文献[14]需要重新加密整个原文件来说,系统负担有着显著下降.且处理文件体积越大,数量越多模型优势越明显.

图5 处理不同数量的文件所消耗时间对比

3.3.4其他方案功能性比较

表1展示的是GCP-ABE模型与各访问控制方案的功能性比较.可以看出本文方案针对大数据应用场景增加了撤销机制,更具有实用性.另外GCP-ABE模型的临时公私钥对、安全信道、多属性授权中心和区块链分布式架构的融合,在系统安全性方面的考虑更为全面.

表1 各方案功能性比较

4 结论

本文提出的基于DAG区块链的密文策略属性加密模型,适用于多机构参与和海量用户加入的数据安全共享场景.模型具备多属性授权中心,密钥自治管理,用户级和属性级撤销,且在数据的各个处理阶段都具有较优的性能.研究工作目前只构建了模型的骨架部分,下一步将进一步优化算法,完善各安全模块细节.

猜你喜欢

密钥加密合约
幻中邂逅之金色密钥
幻中邂逅之金色密钥
基于广义logistic混沌系统的快速图像加密方法
保护数据按需创建多种加密磁盘
Android密钥库简析
加密与解密
一种新的动态批密钥更新算法