可更新属性的链上数据访问控制方法

2023-02-17 06:44徐俊伟袁景凌向广利
小型微型计算机系统 2023年2期
关键词:访问控制密文合约

徐俊伟,袁景凌,2,向广利

1(武汉理工大学 计算机与人工智能学院,武汉 430000)2(武汉理工大学 交通物联网湖北省重点实验室,武汉 430000)

1 引 言

随着区块链[1]技术的不断发展,智能合约[2]的出现将区块链的应用场景从加密货币扩展到金融、电子政务、物联网等各行业中.众多产业加速落地区块链应用的同时,链上数据的透明性成为了数据隐私的重大威胁.在应用区块链的生产系统中,尤其涉及到个人信息如地址、电话、单位等个人敏感数据信息,被记录在区块链各节点中.如何对此类信息进行隐私保护[3]和灵活的细粒度访问控制是区块链应用进一步发展急需解决的问题.

目前基于角色的访问控制机制、基于对象的访问控制和基于属性的访问控制为数据隐私安全提供较好的访问控制权限.但传统的访问控制机制在对用户信息改变的情况下,对历史授权数据的访问权限存在失效的问题,并且系统权限过于集中可能导致单点故障或者权限滥用的不足.

针对以上问题,本文利用区块链结合属性基加密的访问控制,提出可更新属性的链上数据访问控制的方法.利用智能合约的部署,写入当前访问策略与所有节点属性到区块中.当访问策略更新或节点属性发生变化时,可根据不同区块中记录的访问策略与节点属性进行访问权限验证,实现对区块链交易数据在不同策略下的块间管理,同时也有效解决单点故障和权限集中管理的问题.

2 相关工作

2.1 区块链数据隐私保护

区块链系统必要的安全特性和部分隐私保护方法[4]如:共识协议、哈希算法、盲签名等技术之外,利用访问控制对区块链数据进行权限管理[5]实现隐私保护方面也有相关研究,如传统的基于角色的访问控制方法(Role-Based Access Control,RBAC)和常用于分布式环境下的基于属性基加密(Attribute-Based Encryption,ABE)的访问控制方法[6,7].在ABE加密方案实现又可分为密文-策略属性基加密(Ciphertext-Policy Attribute-Based Encryption,CP-ABE)方法和密钥-策略属性基加密(Key-Policy Attribute-Based Encryption,KP-ABE)方法[8,9].田等人[10]分析了两类属性撤销以及3种不同的属性撤销方案,为云存储数据安全共享提供了理论参考.基于访问控制方法保护区块链数据隐私研究方面,Jemel等人[11]提出节点验证访问者身份,利用属性基加密方法,在基于CP-ABE在时间维度方面,不增加撤销成本的情况下引入了访问授权的有效期,避免一次授权永久使用的不足.田等人[12]提出基于属性加密算法,分别生成交易区块和访问策略区块,通过不断追加访问策略区块,实现对区块内容可见性的动态调整.但增加了区块结构的复杂度,并且对之前区块可见性权限区块仍然存在.Yan等人[13]提出ANAC机制,基于所有授权用户和元数据所有者之间的关系来强制访问.通用访问结构和门限秘密共享实现区块链存储个人数据的访问控制结构.

消除区块交易与个人相关联来对区块数据隐私保护的研究中,Mahmood等人[14]结合环签名和零知识证明对用户钱包地址进行伪装,提出了数据可擦除的模型来改变用户对数据的访问以增强区块数据的隐私.

消除交易与个人信息关联在一定程度上保护了数据隐私,由于结果仍存储在区块链上,仍对用户隐私造成潜在威胁.后续研究人员提出对交易信息加密隐藏的方法保护链上数据的隐私,也称为账本信息隐藏,Ben-Sasson 等人[15]利用零知识证明技术构造交易,该方法可以隐藏交易信息来实现对用户数据隐私的保护,如交易发起者、交易接收者以及交易金额等.Saberhagen 等人[16]提出了 CryptoNote 协议,该协议中发起人选择多个相同输出构造合法的环签名,进而隐藏真实发起人.目前多个区块链项目如DigitalNode、ByteCoin、Boolberry,使用该协议作为底层框架进而对用户隐私进行保护.

在数据隔离省去耗时的数据加密过程保护区块链上数据隐私方法的研究中,蔡等人[17]提出双层协同的隐私数据保护方法,分为链间和链内两种方式保护隐私.分别对数据进行分流处理、分区存储和指定参与方的方式实现链上数据隐私保护.

上述方案针对区块链中访问控制问题提出不同的解决方案进行数据隐私保护,根据属性基加密方案实现细粒度[18]的访问控制,利用签名技术以及零知识证明等密码学方法增强数据隐私,如表1所示.但以上方案存在策略及节点属性更新后,对历史区块访问控制失效或权限模糊、使用双链结构增加了系统的复杂度以及系统应用构造实现困难等不同的问题.

表1 区块链隐私保护方案对比Table 1 Comparison of blockchain privacy protection schemes

2.2 准备知识

2.2.1 双线性对

a)双线性:对所有的u,v∈1,a,b∈p,有e(ua,vb)=e(u,v)ab.

b)非退化性:e(g,g)≠1.

c)可计算性:存在有效多项式时间算法,对于∀g1,g2∈1,计算e(g1,g2)的值.

2.2.2 线性秘密共享

定义在实体集P上线性秘密共享方案Π需满足:

b)秘密共享方案Π存在一个l×n的共享矩阵M,函数ρ定义矩阵行i得到ρ(i),i=1,…,l.随机选取v=(s,r2,…,rn),r2,…,rn∈p,s∈p为秘密共享值.Mv是根据方案Π得到关于s的l个共享组成的向量,(Mv)i属于实体ρ(i).

2.2.3 访问结构

定义P={P1,P2,…,Pn}是一个群组,若∀B,C:B∈,B⊆C,C∈,称集合⊆2{P1,P2,…,Pn}是单调的.访问结构是集合群组P的一个非空子集.如⊆2{P1,P2,…,Pn}{ø},在访问结构中的子集就被称为授权的集合,反之则反.

在属性基加密中,群组的角色由属性构成,访问结构包含了被授权的属性.通常情况下,访问结构是指单调的访问结构.

2.2.4 智能合约

比特币采用基于堆栈的脚本语言,没有复杂的循环和流程控制;以太坊则开发图灵完备的脚本语言构造复杂的去中心化应用.智能合约是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本的计算机程序,能够主动或被动处理数据,接收、存储和发送价值,以及控制和管理各类链上智能资产等功能,通过预定触发条件、相应规则,进而执行预设的响应内容[19].以太坊借助智能合约将区块链技术扩展到除加密货币外的很多领域.其中智能合约运行机制如图1所示.在经过各方确认签署类合同条款后,智能合约以代码的形式存储在区块链当中.

图1 智能合约运行机制Fig.1 Smart contract mechanism

3 链上数据访问控制设计

本文使用密文策略加密(CP-ABE)方案,数据拥有者可自定义设置访问策略,数据使用者可根据自身被授权属性是否符合该策略要求,符合策略要求的属性拥有者才拥有数据的访问权限,对数据达到属性级别的细粒度访问控制.

在属性基加密的访问控制机制下引入智能合约.将访问控制策略通过智能合约部署在区块链中,调用智能合约自动判断数据使用者属性信息,对数据的隐私安全实现灵活的访问控制.此外区块链有效避免单点故障服务器崩溃的风险.

针对区块链数据存储透明公开的问题,提出可更新属性的链上数据访问控制方法.利用区块链不可篡改的特性,节点内部共同维护访问策略与节点属性的合约数据,记录当前策略下各节点的属性集.当访问策略更新或者节点属性发生变化时,可根据访问策略对应的节点属性进行数据的访问控制验证,以实现节点对数据的访问权限管理.实现节点在新策略下对区块数据交易隐私的访问授权改变的同时,对被授权的历史交易数据仍具有访问的权限.

3.1 访问控制模型

访问控制系统模型如图2所示.数据拥有者DO(Data Owner)定义数据的访问策略,对其拥有并要分享的原始数据经高效的AES对称加密算法得到对称加密密文数据,之后使用CP-ABE加密方案进行加密得到密文.通过部署的智能合约,将密文数据写入区块当中,经过P2P网络传播以及各节点验证,以及通过共识协议最终密文数据同步到所有节点的区块当中.数据使用者DU(Data User)调用智能合约方法获取存储在区块链当中的数据密文,节点属性由授权中心CA(Central Authority)分配.DU对数据密文根据其属性是否满足对应策略进行授权操作,当且仅当DU所拥有属性满足DO所预置的访问策略时,表示DU具有该数据的访问权限,进而获取相应明文数据,反之即不满足DO所预置的访问策略,用户不具有数据的访问权限.

图2 访问控制系统模型Fig.2 Access control system model

其中对称加密密文数据使用IPFS文件系统存储.CA分配给DU的属性集根据其私钥进行对称加密,对属性集密文以及DO预置访问策略通过智能合约写入区块链当中.

实现方案如下,共包含7个算法:

1)Init(P,S).

授权中心发布访问控制策略P,根据所有属性定义各节点属性集Si.

2)Setup(1λ)→(PK,MSK).

授权中心选取安全参数λ作为输入,输出公共密钥PK和系统主密钥MSK.

3)KeyGen(Si,MSK)→(SKi).

授权中心根据各节点分配属性集Si计算节点私钥SKi.

4)EncryptS(SK,Si)→(ES).

授权中心根据各节点私钥SKi对其自身属性集Si进行对称加密,获得各节点属性集加密后密文属性集集合ES.

5)DeployP(P,ES).

利用智能合约将访问策略P和其所对应的密文属性集集合ES自动化部署到区块链中.

6)Encrypt(PK,mi,P)→(ABEmi).

节点N根据公共密钥PK和访问策略对明文mi进行对称加密处理后,将得到数据信息采用CP-ABE加密方案加密,结果输出ABEmi.

7)Decrypt(PK,SKi,ABEmi)→(mi).

节点发起对数据的访问请求,根据自身私钥SKi首先对策略P对应的密文属性集集合解密得到本节点属性集Si,自身属性满足访问策略即可解密ABEmi得到明文mi.

3.2 系统构造

1)Init(P,S)

本文方案访问策略和各节点属性集由可信授权中心进行管理.授权中心根据预先制定的所有属性分配相应属性集到各节点,访问策略则由数据拥有节点进行设计,经授权中心管理发布.访问策略和节点属性集分别用P、Si表示.

2)Setup(1λ)→(PK,MSK)

3)KeyGen(Si,MSK)→(SKi)

授权中心根据各节点分配属性集Si计算节点私钥SKi.节点N的属性集Si={A1,A2,…,Ak},选取K+1个随机元素r,r1,r2,…,rk∈p,SKi={S,gαμr,gr,{gri,(uAih)riv-r}},1≤i≤k.

4)EncryptS(SK,ST)→(ES)

授权中心根据各节点私钥SKi对其自身属性集Si进行对称加密,获得各节点属性集加密后密文属性集集合ES.其中输入SK={SK1,…,SKn},ST={S1,…,Sn},输出ES={ESK1(S1),…,ESKn(Sn)}.

5)DeployP(P,ES)

授权中心节点发布访问控制策略,同时管理所有节点属性,策略与属性格式如下:

S1={A2,A4,A6,A9},S2={A1,A3,A5,A7,A8}

S为所有节点属性结合,Pi为当前访问策略,S1、S2分别为当前不同节点拥有的属性集.授权中心通过智能合约将节点设计访问策略Policy和该策略所对应的更新后密文属性集集合ES自动化部署到区块链中,使得策略与节点属性集相对应,策略-属性合约作用区块如图3所示.策略更新迭代或节点属性发生改变都不会影响此时区块对节点的访问授权.

图3 策略-属性合约作用区块示意图Fig.3 Policy-attribute block diagram of contract action

记录当前策略、节点当前属性集、历史策略、节点历史属性集.通过确认属性集Si与之相应策略P是否符合条件,进而对数据访问进行不同区块块间的访问控制.

6)Encrypt(PK,mi,P)→(ABEmi)

在应用区块链的系统中,若将原始数据文件存储在区块链当中,其文件存储大小必然对节点内存造成巨大压力,同时也会拉低区块链性能指标.IPFS分布式文件系统使得文件存储在无需信任的多个节点当中,文件上传后得到唯一的哈希值即文件存储路径.通过此路径可对文件进行检索.利用IPFS存储加密数据原件,在对数据上链时,只需对加密数据存储在IPFS的地址以及数据数字摘要进行存储.

首先对原始数据文件生成数字摘要DDi=Hash(mi),通过AES对称加密算法对文件进行加密,得到的密文文件cti=EAES(Ki,mi),密文cti上传至IPFS文件系统中作为数据持久化存储得到URLi=IPFS←cti.令m=(DDi,cti,URLi),选取y=(s,y2,…,yn)T,其中s为秘密共享的值,计算λ=(λ1,…,λl)T=My,选取t1,t2,…,tl∈p,计算C=m·e(g,g)αs,C0=gs,Ci,1=μλivti,Ci,2=(μρ(Mi)h)-ti,Ci,3=gti,i=1,…,l.则:

ABEmi={(M,ρ),C,C0,{Ci,1,Ci,2,Ci,3},1≤i≤l}

(1)

节点调用访问控制合约,数据生成节点将ABEmi密文信息存储在区块链当中,即Block:ABEmi=EABE(m).一旦新的访问策略被发布部署在区块链当中,历史访问策略合约失去写入权限,仅能被调用访问其对应的历史区块信息.

(2)

其中i表示当前策略索引,max表示发布策略总数量.

将ABEmi信息写入区块链,节点之间做到数据高效流通的同时,对区块块高区间数据进行细粒度访问权限控制.

7)Decrypt(PK,SKi,ABEmi)→(mi)

解密算法由数据使用者执行,将公共参数PK、节点密钥SKi和密文ABEmi作为参数,节点属性集Si,满足访问策略P=(M,ρ)时,即Policy:result(Res,Action)←{Si}ski,其中Res表示授权结果,Res∈{getData,Deny},getData表示对授权结果响应,Deny则推出程序.getData进一步解密,最后输出结果为明文mi.

节点N计算J={j:ρ(Mj)∈S}.选取{ωj∈p}j∈J使得∑j∈JωjMj=(1,0,…,0),其中Mj是M的第j行.计算:

(3)

(4)

mi=DAES(cti,Ki)

(5)

数据由信息拥有者DO经过AES对称加密处理后上传资源信息resource即IPFS文件系统中.访问策略P、节点私钥SK以及节点属性S统由授权中心CA进行分配管理,在每次访问策略P或节点属性S发生变化时,由CA对所有节点属性S利用其私钥SK加密,并将结果EAES(S)一同与访问策略P通过合约部署到区块链中,具体如图3所示.数据使用者DU通过访问区块中策略-属性,首先根据自身属性解密历史策略对应的节点属性,节点属性符合此访问策略条件方可进行解密操作,解密后请求资源库返回请求数据,再次解密获得原始数据信息mi,进行哈希校验验证数据正确性.具体流程如图4所示.

图4 数据访问流程图Fig.4 Data access control process

4 安全分析与实验

4.1 安全分析

定理.若判定性q-PBDHE假设成立,则敌手在多项式时间内挑战访问结构(M*,ρ*)的优势ε是可以忽略的.

证明:敌手选择访问访问结构(M*,ρ*),在多项式时间内以不可忽略的优势ε赢得胜利,则存在不可忽略的优势ε攻击q-PBDHE假设.

1)初始化:敌手选择访问结构(M*,ρ*)和参数y,其中M*是l×n的矩阵,l,n≤q.

2)系统建立:模拟器随机选择α=aq+1+α′,α′∈p,则e(g,g)α=e(ga,gaq)·e(g,g)α′,并将参数发送给敌手.属性全集S中每个属性元素Ai用x表示,令X={ρ*(i)=x},随机选取h′,l′∈p,返回给敌手

5)重复查询私钥过程,敌手发送属性集给挑战者以获取私钥,但属性集不满足访问结构(M*,ρ*).

4.2 系统安全

本文提出的可更新属性的链上数据访问控制方法对数据隐私提供了可更新属性和访问策略、细粒度的访问控制,同时利用区块链节点共识机制和防篡改、去中心化等特点实现权限授权的灵活更新.

1)去中心化

本文提出的访问控制机制策略与节点属性通过智能合约部署到区块链当中,避免了服务器单点故障服务崩溃的风险,以及集中式权限管理.

2)防篡改

利用区块链节点的共识机制,如PBFT实用拜占庭共识机制,可容错三分之一恶意节点即N=3f+1,N为节点总数、f为恶意或崩溃节点.访问策略与节点属性一旦部署到区块链中,即使存在小部分恶意节点,区块数据仍可以保持一致性,有效防止了部分恶意节点伪造策略或属性篡改数据访问控制权限.

3)数据隐私性和安全性

在数据存储过程中,原文件被加密后存储在IPFS文件系统中,保证了数据的安全性.节点发起数据访问请求,利用私钥解密得到历史属性,符合所对应的访问策略才可解密得到数据密钥K、加密数据地址URL和原文件数字摘要DD.细粒度的访问控制机制保护了数据的隐私性.在节点属性发生改变以及访问策略更新时,节点仍可通过合约访问历史策略-属性信息,保证历史授权不受当前属性或策略变化影响,同时又对新的授权策略正确执行.

4.3 实验

本文实验测试将访问策略通过智能合约部署到区块链以及调用合约获取数据的访问授权过程.实验硬件环境如下:操作系统为Windows,处理器为 Intel Core i5-4210,内存为8GB.软件环境:使用以太坊作为区块链开发平台,go语言客户端版本为Geth/v1.9.11-stable.合约开发采用Solidity语言编写.区块链节点通过设置不同端口来模拟节点间的通信.对于数据实体加密上传IPFS文件系统、下载解密获取原文件不在本实验中展示.

区块链读写速度与运行环境的硬件相关外,网络延迟也是影响节点数据同步的一个重要因素.由于上链内容为ABE(DDi,Ki,URLi),即写入内容大小保持不变.模拟在属性个数为6个,不同节点数量的情况下,对数据加密、解密、上链和读取所消耗时间进行测试,如表2所示.实验通过启动不同的端口来代表不同节点,测试区块链系统中加密、解密、写入和读取的时间代价.带宽、距离、环境等因素产生的网络延迟则不在测试范围.

表2 节点个数加解密和读写比较Table 2 Encryption/decryption and read/write comparison of nodes number

通过将节点属性加密后与当前访问策略部署上链,在节点属性或访问策略发生变化时,保证历史情况信息的授权不受当前策略的影响.属性-策略更新分为属性集加密和属性-策略部署上链两个步骤.通过模拟此过程各项指标时间代价如图5所示,当区块链节点个数设置为6个,与访问策略所对应的所有节点属性集大小分别设置为1k、2k、4k、8k时,加密上链过程时间消耗控制在4000ms以内,读取解密时间则在45ms以内,时间代价随着节点属性集大小线性增长.其中enc代表Waters方案,可以看出本方案加密过程总体过程时间略高于Waters方案,结合上表中数据写入区块链时间消耗代价,结果是可预料的并且是合理的,实际系统中采用数据异步上链的方法,以此解决区块链数据写入延时的影响.

图5 属性-策略更新时间消耗Fig.5 Attribute-policy update time consumption

本文采用CP-ABE加密方案对数据进行加密,在加密内容ABE(DDi,Ki,URLi)大小不变的前提下,根据访问策略所需属性个数的不同,对无区块链条件下数据加密、解密过程时间消耗与结合区块链进行存储读取进行访问控制的数据加密、解密过程时间消耗进行对比.数据计算时间消耗如图6所示,在以6个区块链节点同步的状态下,随着访问策略所需属性个数的增加数据加密时间代价在1000~1600ms,而解密所需时间约100~350ms,数据上链时间1000~3000ms,数据读取链上数据时间13~21ms.对链上数据读写时间消耗与属性个数无关.

图6 加解密与链上时间代价Fig.6 Encryption-decryption to blockchain time consumption

5 结 语

针对云服务访问控制机制存在权限集中管理、历史数据访问权限不可控等不足,利用区块链智能合约与节点的共识机制,提出基于属性加密的链上数据访问控制方法.该方法将访问策略与节点属性通过智能合约部署到区块链中,节点发出访问请求时,需解密该数据应用访问策略对应节点属性,符合策略即表示获得授权.通过记录访问策略与节点属性,对当前以及历史数据访问权限做出有效分离,同时实现数据细粒度的访问控制;在保护数据的安全性方面,通过链上记录数据存储地址,链下IPFS文件系统实体存储加密源数据的方式,增强实体数据的安全性.

猜你喜欢
访问控制密文合约
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
ONVIF的全新主张:一致性及最访问控制的Profile A
一种基于密文分析的密码识别技术*
一种基于密文分析的密码识别技术*
动态自适应访问控制模型
浅析云计算环境下等级保护访问控制测评技术
大数据平台访问控制方法的设计与实现
合约必守,谁能例外!——对“情势变更”制度不可寄于过高期望