庄朝源,郭 瑞,杨 耿
1.西安邮电大学 网络空间安全学院,西安 710121
2.西安邮电大学 无线网络安全技术国家工程实验室,西安 710121
随着信息技术和互联网技术的发展,数据使用量呈爆发式增长态势,本地的计算和存储能力已经无法满足人们对数据处理日益增长的需求。云计算拥有强大的计算能力和数据存储能力,可以将复杂的计算任务进行拆分后,转交给多个分布式服务器进行计算分析,再将结果返回给用户,所以云计算成为人们存储、处理数据的重要技术。云存储是建立在云服务器上的新型存储技术,可以将存储资源进行整合,为用户提供庞大的数据存储空间和低廉的数据托管成本,便于用户对海量数据进行共享。然而,将数据直接存储在第三方云服务器中,会导致用户失去对数据的控制。在面对恶意用户和未授权用户的非法访问时,数据中所包含的隐私信息存在被窃取的安全隐患。访问控制[1]技术可以利用数据拥有者设定访问策略来确保数据访问的安全性,但是云计算环境下数据多存储在不同的用户实体中,数据量庞大且具有动态扩展等特性,无法满足用户对云中共享数据进行灵活的细粒度访问控制需求。
基于密文策略的属性加密方案(ciphertext-policy attribute-based encryption,CP-ABE)[2]可以为云计算环境中的数据提供机密性和细粒度访问控制。数据拥有者对明文进行加密并在密文中设定访问策略,用户根据属性集生成密钥,解密时用户密钥中包含的属性集必须满足密文中的访问策略,该用户才能成功完成解密。在CP-ABE 中,数据拥有者可以灵活的设置访问策略,向指定的用户授予访问权限,对用户进行细粒度访问控制,保证数据接入安全。然而,访问策略本身涉及数据拥有者、访问者、数据本身的敏感信息,存在相关信息被泄露的安全风险;并且CP-ABE 中用户加、解密需要消耗庞大的计算资源,导致数据保护过程效率低下,阻碍属性加密体制在云计算环境中的广泛应用。
此外,在访问控制系统中引入区块链,利用区块链搭建去中心化机构的平台,为各方构建分布式应用程序。云计算环境中存储的数据可能被多个实体共同拥有,为了使相关数据拥有者参与访问控制授权过程,区块链平台可以由多个数据拥有实体组成,在基于相关数据拥有实体的共识基础上为用户生成属性证书,并生成属性证书编号。属性授权中心在为用户生成属性密钥前,需要在区块链中验证用户是否拥有属性证书。
针对云计算环境下访问控制过程中存在的灵活性差、信息泄露、效率低下等问题,本文构建了一种基于区块链的可验证外包解密的匿名属性加密方案(anonymous attribute-based encryption scheme with verifiable outsourcing decryption based on blockchain,AVOCBABE),具体工作如下:
(1)本方案引入属性匹配技术,即在解密阶段之前添加属性匹配过程,用于测试属性私钥与密文中隐藏的访问策略是否匹配,无需解密。
(2)本方案将部分解密外包给云服务器,用户可以对第三方外包结果进行验证,确保外包解密结果的正确性,极大地降低了用户终端的计算代价。
(3)本方案的用户属性密钥由属性授权机构和用户共同生成,可以防止属性授权机构权力过大,直接获取数据。同时对用户的身份进行匿名化,利用生成的假名可以对用户真实身份进行追踪。
(4)本方案利用区块链技术为数据拥有实体提供平台,通过区块链的共识机制使数据拥有者有效的参与到属性证书授权的过程中,并基于所有相关实体的共识为用户生成属性证书。
Sahai 和Waters[3]在2005 年首先提出了属性基加密(attribute-based encryption,ABE)的概念,通过用户的属性来灵活控制数据的访问权限,广泛应用于各种访问控制场景。属性加密主要分为两类:密文策略的属性加密(CP-ABE)[4]和密钥策略的属性加密(KP-ABE)[5-6]。在CP-ABE 中,用户的属性密钥与属性列表相关联,并且密文是指定在系统的属性范围上定义的访问策略。仅当用户的属性列表与密文的访问策略匹配时,用户才能解密密文;在KP-ABE 中,将在系统属性上定义的访问策略编码为用户的属性秘密密钥,并根据属性列表创建密文,仅当相应的属性列表与用户的属性密钥相关联的访问策略匹配时,用户才能解密密文。在云计算中,数据拥有者可以使用CP-ABE 灵活的指定访问策略来决定用户解密需要具备哪些属性,更加适用于访问控制场景中。然而,一些CP-ABE 方案[7-10]中的访问策略必须在密文中显示,不支持隐私保护,并且计算效率存在问题。
针对访问策略敏感信息泄露问题,越来越多的研究人员提出支持策略隐藏的CP-ABE方案,使得访问策略不在密文中明确的表达,而是将策略隐藏在密文中进行存储。Nishide 等人[11]通过多值属性的布尔公式实现了访问策略的隐私保护,但是该方案策略表达方式受限。为了提高隐藏策略CP-ABE 方案的解密效率,Zhang 等人[12]设计了一种策略隐藏CP-ABE解决方案,在完全解密之前执行属性匹配操作,使用特有的密文组件来测试属性列表是否满足隐藏的访问策略,与完全解密相比,属性匹配过程计算消耗更小,方案在DBDH 假设、D-Line 假设下具有选择明文安全性。Zhou 等人[13]设计了一种隐藏策略的CP-ABE方案,方案可以将密文长度压缩为常数,支持AND 门策略并在q-type 假设下证明方案安全。为了提高策略的表现力,Xiong 等人[14]设计了一种支持LSSS 接入结构的策略隐藏广播加密方案,但是该方案中存在较多的双线性对计算,在执行过程中用户需要耗费大量的计算资源。Zhang等人[15]使用隐藏访问策略的CP-ABE 实现了对个人健康记录数据的细粒度访问控制,并且支持大规模属性集合,方案中公共参数的大小和解密成本都是恒定的。Zeng 等人[16]在医疗物联网(internet of medical things,IoMT)生态环境下提出一种有效的部分策略隐藏和支持大属性宇宙的ABE方案,只显示非敏感属性而将敏感属性隐藏,且该方案对于任何的公开解密密钥的用户都可以进行有效的追踪。Liu等人[17]使用线性秘密共享方案隐藏部分策略,利用多权限抵抗用户之间联合通信造成的共谋攻击,保护IoT环境下数据的隐私安全。
在现有ABE 方案中,密文大小和解密成本随着属性策略的复杂性而增加,因此,2011 年,Green 等人[18]首次提出外包ABE 方案,将复杂的ABE 解密计算交给第三方云服务器进行外包解密,极大地降低了用户端解密过程的计算量。由于第三方云服务器不是完全可信,所以外包解密结果的正确性需要进行验证。Lai等人[19]提出一种支持外包解密验证的ABE 方案,在密文中引入验证元素,根据用户密钥生成重加密密钥,将重加密密钥发送给第三方云服务器进行解密,并设计了一种验证外包结果的方法。Qin等人[20]提出一种将任何具有外包解密的ABE 方案转换化成具有可验证的外包解密的ABE方案,通过第三方将属性密文转化为更短的密文,并具有可验证性。李聪等人[21]提出可追责、可验证的外包解密CP-ABE 方案,可对用户密钥泄露问题进行追责,通过转移密钥的方法实现外包可验证方案,并在标准模型中证明该方案的安全性。Fan等人[22]在物联网环境下提出一种策略隐藏外包解密的CP-ABE方案,利用单向匿名密钥协议将属性匿名化实现策略隐藏,采用雾节点辅助的可验证外包解密,减少用户计算的复杂性。Guo 等人[23]提出应用于无线体感网络的轻量级可验证的CP-ABE 方案,为用户提供了外包解密的正确性验证,并且密文大小恒定。Zhao等人[24]在雾计算场景中构建了电子健康细粒度访问控制系统(access control system in fog-enabled e-health,AC-FEH),利用雾节点进行数据加解密操作,将数据拥有者和用户的计算成本最小化,并且证明了在q-parallel bilinear Diffie-Hellman exponent(BDHE)假设下证明了系统底层CP-ABE 方案的选择性安全。
本章介绍了双线性映射的形式定义,然后描述了方案中基于的困难问题、访问结构和联盟链中背书策略的相关知识。
设q是一个大素数,G1和GT是两个阶为p的乘法循环群,g是G1上的一个生成元,其双线性映射[25]ê:G1×G1→GT满足以下性质。
(1)双线性:对于任意的a,b∈Z*p,始终有ê(ga,gb)=ê(g,g)ab成立。
(2)非退化性:ê(g,g)≠1。
(3)可计算性:对于群G1中的任意两个元素g1,g2,存在一个有效算法计算ê(g1,g2)。
判定性双线性Diffie-Hellman 问题[26](DBDH 问题):G1和GT是两个阶为p的乘法循环群,且满足双线性映射ê:G1×G1→GT,g是G1的一个生成元,选取随机数a,b,c,z∈Zp。给定五元组(g,ga,gb,gc,Z),其中Z∈GT,如果没有一个算法能够以不可忽略的优势在多项式时间内区分Z=ê(g,g)abc或Z=ê(g,g)z,那么认为DBDH问题是难解的。
本文基于联盟链Hyperledger Fabric[27]平台,为数据访问者生成、存储属性电子证书。属性授权中心以区块链中的电子证书作为凭证,为数据访问者生成属性私钥。属性证书授权依赖于背书策略,该策略规定某些对等方需要背书才能将交易视为有效交易,每个认可对等方都会根据策略评估智能合约中的请求,基于共识协议将交易标记为接受或拒绝并在区块链中提交。数据拥有者通过制定的背书策略参与用户属性证书授权过程。如图1 所示,为背书交易过程,用户向区块链中的拥有数据的实体申请属性证书,通过预先设定的背书策略把该申请发送给一个或多个实体,并由实体中的背书节点对用户的属性信息进行审核。每个认可对等实体收到申请提议后首先校验客户端签名,确认请求的有效性,然后在指定实体中的背书节点进行处理,若该实体同意此申请,则对客户端的申请提案进行背书签名并返回给客户端,若不同意则不进行背书签名。客户端收集到的背书签名满足预先设定的背书策略,表示该申请已经正确背书,则将申请信息发送给排序服务节点进行排序,生成区块,并将新的区块广播给其他节点进行更新。若收集的背书签名不满足预先设定的背书策略,则该提案将被遗弃。
图1 Hyperledger Fabric背书交易流程Fig.1 Hyperledger Fabric endorsement transaction process
本章主要介绍方案的系统模型、系统框架和安全模型。
如图2 所示,AVOCB-ABE 系统模型中主要包括5个实体:云服务器(CSP)、联盟链(CB)、属性授权中心(AA)、数据使用者(DU)、数据拥有者(DO)。
图2 AVOCB-ABE系统模型Fig.2 System model of AVOCB-ABE
属性授权中心(AA):负责为整个系统初始化生成公共参数和主密钥,根据数据使用者的属性列表和区块链中的属性证书生成属性密钥,AA 是系统中完全可信实体。
联盟链(CB):用于生成、存储DU的属性证书,在其共识机制的基础上生成属性证书编号CID,属性授权中心在为用户生成属性密钥前,需要在区块链中验证用户的属性证书;存储外包验证的哈希值。
云服务器(CSP):主要分为云存储服务器和云计算服务器。云存储服务器存储数据拥有者生成的数据密文和区块链生成的TxID;云计算服务器主要对用户属性和密文策略进行属性匹配、外包解密等计算。
数据拥有者(DO):参与联盟链中属性证书的授予;为拥有的数据制定背书策略;使用对称密钥加密数据,定义执行基于属性的访问策略,并通过访问策略对对称密钥进行加密,将数据密文和密钥密文存储到云服务器上。
数据使用者(DU):在联盟链中选取需要访问的数据,按照数据的背书策略申请属性证书;向云服务器发送访问请求并要求进行外包解密,下载部分解密密文,使用私钥正确的恢复出数据。
本方案主要包括以下步骤。
(1)Setup(1λ)→(PK,MK):系统初始化算法,由属性授权中心AA执行,通过输入安全参数λ,输出公共参数PK和主私钥MK。
(2)Encrypt(PK,M,W,K)→CTw:加密算法,由数据拥有者执行,首先使用对称加密对数据M加密,然后输入公共参数PK、对称密钥K、访问策略W,执行基于属性的访问策略加密输出密文CTw。
(3)AnonyAlg(ID,PKu,MK)→ID′:身份匿名化,由用户和属性授权中心AA 执行,AA 接收用户的ID,用户公钥PKu,系统主私钥MK,输出用户的假名ID′,返回给用户。
(4)AAKeyGen(PK,MK,L)→SKv,SK1,i:密钥生成算法,由属性授权中心AA 执行生成部分密钥,通过输入公共参数PK、主私钥MK、用户属性列表L,输出属性匹配密钥SKv,部分外包解密密钥SK1,i,并将SKv,SK1,i发送给DU。
(5)UserKeyGen(SKv,SK1,i,SKu,PK)→SKL:密钥生成算法,由数据访问者DU执行。输入属性匹配密钥SKv,部分外包解密密钥SK1,i,用户私钥SKu,公共参数PK,生成完整属性密钥。
(6)AttMat ch(PK,CTw,SKv)→Vatt:属性匹配算法,由云服务器CSP执行,输入公共参数PK,用户属性匹配密钥SKv,密文CTw进行属性验证,然后将验证结果Vatt输出。
(7)OutDec(PK,Vatt,CTw,SKo)→CT′ :外包解密算法,由云服务器CSP执行,输入公共参数PK,属性匹配的结果Vatt,密文CTw,用户外包解密密钥SKo,然后输出部分解密密文CT′。
(8)UserDec(CTw,CT′,PK,SKL)→K:用户解密算法,由用户DU执行,接收到部分解密密文CT′,对外包解密结果进行验证。输入公共参数PK,密文CTw,解密密钥SKu,输出对称加密密钥K,然后用对称解密算法得出明文M。
(9)Trace(ID′,MK,T)→ID :追踪算法,由AA 执行,输入用户的假名ID′,表单T,主密钥MK,输出用户的真实ID。
通过定义敌手的能力来表明隐藏访问策略的CP-ABE 方案的安全需求,并定义了相应的安全概念。在构造的证明中使用选择密文访问策略和选择明文攻击下的不可区分性(indistinguishability against selective ciphertext-policy and chosen-plaintext attacks,IND-sCPCPA)的概念,可以将其称为IND-sCP-CPA游戏,包括敌手A 和挑战者B,具体游戏如下所示。
Init:敌手A 提交挑战密文访问策略W*0、W*1给挑战者B。
Setup:挑战者A 选择足够安全的参数λ,并运行Setup(1λ)算法生成公共参数PK和主私钥MK,主私钥MK由B 保存,将公共参数PK发送给敌手A。
阶段1 敌手A 将属性列表L发送给挑战者B 进行查询,当L|≠W*0∧L|≠W*1或L|=W*0∧L|=W*1时,挑战者B 运行KeyGen(PK,MK,L)密钥生成算法计算A 的密钥SKL,并返回给A ;否则返回⊥。
阶段2 与阶段1相似。
猜测阶段 敌手A 输出对v的猜测v′∈{0,1} ,若v=v′则A 获胜。
定义2 如果没有敌手A 能够以不可忽略的优势在多项式时间内打破IND-sCP-CPA 游戏,那么认为AVOCB-ABE方案是IND-sCP-CPA安全的。
本章主要描述了整个系统的交互流程和具体的算法构造。
如图3所示,本方案的执行整体流程包含以下步骤:
图3 方案流程Fig.3 Solution process
(1)在云计算环境下,AA 作为完全可信实体,执行Setup操作初始化系统公共参数和系统主密钥。
(2)DO根据系统公共参数、在系统的属性范围上定义的访问策略对数据进行加密,并指定区块链中所涉及的实体设置背书策略,将用于外包验证的哈希值存储在区块链上,并返回TxID。最后,DO把TxID和密文存储在CSP中。
(3)DU 根据要访问数据所涉及的实体发送属性信息,区块链利用背书策略对DU生成属性证书和证书编号CID。
(4)DU 将ID、属性列表L发送给AA。先对DU 的真实ID进行匿名化处理,在系统中DU使用假名进行操作。AA与区块链交互验证用户的属性证书和编号CID是否存在。若存在,执行KeyGen生成部分密钥,发送给DU,由DU在客户端生成完整属性密钥。
(5)DU 利用TxID 在CSP 中查找密文,发送属性匹配密钥和外包解密密钥,CSP将用户的属性信息和密文访问策略进行验证,若验证成功,则进行外包解密,将外包解密结果返回给DU。
(6)DU对外包结果进行验证,若外包结果正确,DU使用私钥对外包结果解密获得明文。
(7)若云计算环境中用户存在恶意行为,AA可以通过Trace恢复出用户真实ID,查明用户身份。
本文提出了一种AVOCB-ABE方案,具有用户身份可追踪、策略隐藏、属性匹配、可外包等特点,具体如下:
(1)Setup(1λ)→(PK,MK):G,GT为两个阶为大素数p的乘法循环群,g是G的一个生成元,ê:G×G→GT是一个双线性映射,定义映射函数:H1:{0,1}*→Z*p,H2:GT→Z*p。假设系统中有n个属性,其属性集U={ω1,ω2,…,ωn},且每个属性有多个取值,第i个属性ωi有ni个属性值,Si={vi,1,vi,2,…,vi,ni}为属性ωi的多值集且|Si|=ni;选择随机数α,β∈Z*p,h∈G,计算Y=ê(g,h)α,X=ê(g,g)αβ,P=gβ;公共参数PK=<G,GT,ê,g,h,Y,X,P,H1,H2>,系统主私钥MK=<α,β >。
(2)Encrypt(PK,M,W,K)→CTw:加密模块分为对称加密和属性加密两部分。
①对称加密:DO选择对称加密算法加密明文M,计算CM=Enc(K,M)为对称加密密文。
②属性加密:DO将对称密钥按照访问策略进行属性加密。设DO选择属性策略W={w1,w2,…,wn},且每个属性有属性值wi=vi,ni,并为每个属性选取属性值选择随机数s,s′∈Z*p,计算密文:
DU 将真实ID、公钥发送给AA 计算协商密钥R=(hut)β,生成假名ID′=ID⊕H(R)。建立表单T将用户公钥与假名一一对应存储。
(4)KeyGen(PK,MK,L)→SK:由AA 和DU 两方共同构造属性密钥,防止AA权力过大。
(6)Trace(ID′,MK,T)→ID:系统中若存在恶意用户,将其公开的假名ID′发送给AA 申请追踪,AA 通过ID′在表单T中查询用户公钥,使用主密钥MK计算协商密钥R=(hut)β,恢复出用户真实身份ID=ID′⊕H(R)。
定义3 方案AVOCB-ABE 在IND-sCP-CPA 模型下,在DBDH假设下,不存在敌手A 能够以不可忽略的优势在多项式时间内攻破本方案,则本方案是INDsCP-CPA安全的。
证明 挑战者生成DBDH挑战,B是一个攻击DBDH问题的多项式时间敌手,A 是攻击本方案CTW*v的多项式时间敌手,B 利用A 来攻击DBDH 问题,B 看作A的挑战者。具体挑战过程如下所示。
阶段2 挑战者B 按照阶段1继续进行。
猜测阶段 敌手A 输出对β的猜测β′∈{0,1},若β′=β,B 输出v′=0,Z=ê(g,g)abc;若β′≠β,B 输出v′=1,Z=ê(g,g)z。等式与定义1 中敌手B 区分DBDH 两个元组的优势相同。根据定义1 任何攻击者无法以不可忽略的概率优势攻破DBDH 问题。因此,该方案中不存在敌手A能够以不可忽略的优势在多项式时间内打破IND-sCPCPA模型。
本章通过通信开销、功能比较将现有方案和本文方案进行了对比分析,利用PBC Go密码学库对方案进行仿真。
表1 通信开销对比Table 1 Comparison of communication overhead
如表2 所示,将本文方案与文献[19]方案、文献[12]方案、文献[20]方案、文献[24]方案进行了比较,在保护敏感属性方面,只有文献[12]方案和本文方案实现了策略隐藏,保护用户隐私。在属性匹配方面,只有文献[12]方案和本文方案对用户属性和访问策略进行了预先匹配。在外包方面,文献[19]方案、文献[20]方案、文献[24]方案和本文方案实现了外包解密,将复杂的解密运算外包给云服务器,减少用户端计算开销,但文献[24]方案在外包解密后无法对外包结果进行正确性验证。本文将外包结果与在区块链中存储数据进行对比,确保云服务器外包的正确性。综上所述本方案具有更加丰富的功能。
表2 功能和用户解密效率比较Table 2 Comparison of functions and user decryption efficiency
该方案使用Golang1.15.6 Linux/amd64 版本和Goland编译器,引入PBC Go[28]密码库对算法进行仿真实现,其中采用了PBC Go 库中具有160 位阶的A 型椭圆曲线参数。该仿真是在处理器为Intel®Core™i7-8850H CPU 2.59 GHz 和16.0 GB RAM 的笔记本电脑上,基于Ubuntu 18.04-amd64的系统上进行。方案中各个运算所消耗的时间如表3所示,其中Te表示一次双线性运算的时间,Tp表示一次指数运算的时间,Tm表示一次点乘的运算时间,Th表示一次从{0,1}*符串映射到Z*p上的哈希运算时间。
表3 各个运算运行时间Table 3 Running time of different operations
针对本方案主要仿真了加密、密钥生成、属性匹配、外包解密、用户解密阶段的计算成本和属性密钥大小。如图4(a)~(f)所示,测试将属性个数从0 递增到100,随着属性个数增加计算各部分算法所消耗的时间。如图4(a)所示,当密文中的属性策略达到100 个时,数据拥有者最多使用480 ms对数据进行加密。如图4(b)所示,是AA为用户生成属性密钥的运算时间,AA最多需要730 ms为具有100个属性的用户生成密钥。如图4(c)所示,将用户属性密钥和密文中隐藏的属性进行匹配,最多耗时140 ms。如图4(d)所示,在第三方云服务器中进行外包解密得到部分解密密文,随着密文中属性个数增加外包解密最多耗时138 ms。如图4(e)所示,将部分解密结果返回给用户,在用户端进行解密,解密所耗费的时间为0.84 ms,并且解密时间恒定,与属性个数无关。如图4(f)所示,AA为用户生成的密钥大小恒定,长度为4|G|+|Zp*|,不随着属性个数的增加而变大。
图4 方案各部分计算和通信成本Fig.4 Computation and communication cost of each part of scheme
本文使用联盟链Hyperledger Fabric 进行仿真,各数据拥有实体作为联盟链组织或节点,为DU 生成、存储属性证书,并生成证书编号。
在Hyperledger Fabric 的基础网络中创建3 个组织(Org1,Org2,Org3),组织中的不同节点可以代表不同的实体。在实例化链码过程中根据链码的功能需要编写背书策略,属性证书提交时进行背书的实体节点由交易所属的链码和链码所定义的背书策略共同决定。
如图5 所示,利用程序启动Hyperledger Fabric 网络,根据配置文件进行初始化、创建通道、节点加入通道、安装链码、实例化链码、创建客户端、启动Web 服务等操作,在网页中可视化的对区块链中的数据进行添加、查询等操作。
图5 启动Hyperledger Fabric网络Fig.5 Start Hyperledger Fabric network
如图6、7 所示,对用户的属性进行添加操作,添加成功后返回证书编号(图6中的交易ID),利用属性证书ID 对该属性证书的内容进行查询,从区块链中查询返回属性证书内容。
图6 创建属性证书Fig.6 Create attribute certificates
图7 查询属性证书Fig.7 Query attribute certificates
本文构建了一种高效、策略隐藏、可外包计算的CP-ABE 访问控制方案,解决云计算环境中数据的存储、共享的访问控制和安全问题。为了防止属性授权机构权力过大,用户完整属性密钥由属性授权机构和用户共同生成。解密阶段引入属性匹配技术,测试属性私钥与密文中隐藏的访问策略是否匹配,通过可验证外包解密算法,降低用户终端的计算代价。基于区块链共识机制生成属性证书,通过设置背书策略有效的使数据拥有者参与到访问证书授权的过程中。在随机谕言模型下证明选择性密文策略和选择明文攻击的安全性,利用PBC Go密码学库对方案算法进行效率分析,并使用区块链对方案中属性证书的生成、存储进行了仿真验证。