雾计算中基于无配对CP-ABE 可验证的访问控制方案

2021-08-28 10:08董江涛闫沛文杜瑞忠
通信学报 2021年8期
关键词:访问控制密文解密

董江涛,闫沛文,杜瑞忠

(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081;2.河北大学网络空间安全与计算机学院,河北 保定 071002)

1 引言

云计算能够将巨大的数据计算处理程序分解,然后通过服务器组成的系统进行处理并将结果返回给用户,在较短时间内完成对庞大数据的处理,但其提供的资源集中在用户的核心网络中,在用户与云交互信息时会产生时延较高的问题。随着用户对低时延的需求越来越高,雾计算作为云计算的延伸被提出[1]。与云计算相比,雾计算更侧重于以分布式方式部署应用程序与服务,将云服务与靠近网络边缘的分布式资源相结合,使存储和数据处理等贴近网络边缘设备,可以提供外包计算、资源分配和缓存等多种服务[2-4],有效缓解云计算中存在的时延问题,并广泛应用在智能医疗、智慧城市等多个领域中[5-6]。

雾计算更贴近终端用户,数据中包含大量用户隐私信息,一旦发生数据泄露事件,将严重影响用户隐私。同时,为了保证数据只允许具有访问控制权限的用户查看,建立一种访问控制方案是必要的,如果采取传统的基于角色的访问控制方案[7],用户需要通过角色去访问数据,授权形式单一。为每一个访问用户分配角色与之对应的权限,对于用户数量庞大的雾计算来说,分配角色与其对应权限的工作量是巨大的,并且仅通过角色去授予访问控制权限是粗粒度的,因此设计一种雾计算环境下高效、细粒度的访问控制方案是必要的[8]。基于密文策略的属性加密(CP-ABE,ciphertext policy attribute based encryption)技术可以实现对数据的细粒度访问控制,其密文与密钥都与用户的属性相关,数据拥有者可以根据用户的特征信息制定出由属性集合构成的加密策略,只有当用户的属性集合满足加密策略中的属性要求时才能对数据进行解密。灵活的访问权限授予能够适用于雾计算环境,并保护数据的安全,但效率不高的问题仍然制约了其发展与应用。在基于配对的密码协议中,与标量乘法相比,双线性配对被认为是开销最大、耗时最长的运算,实验表明,在同一椭圆曲线下,双线性配对操作的计算开销比标量乘法的计算开销大2~3 倍。因此减少双线性配对的计算次数能够有效地提升CP-ABE的效率。为了减小用户的解密计算开销,研究者提出了外包解密的概念。解密算法中先使用转换密钥将密文转换为部分密文,且无法通过外包解密算法获取明文数据,再交由用户进行解密,这样用户仅需要较小的计算开销便可以获取明文数据。然而将解密外包后不能确保转换后密文的有效性,当外包解密机构不可信时,可能会篡改转换后密文,因此,对于外包解密的访问控制方案,验证转换后的密文是有必要的。而现有方案往往需要建立可信第三方,这需要高额的信任建立成本,且存在单点故障问题。为了解决上述问题,本文提出了一种雾计算中基于无配对CP-ABE 可验证的访问控制方案。

结合雾计算的特点,本文建立了云-雾-用户分层的访问控制架构,用户通过雾节点与云进行交互。基于密文策略的属性加密技术来实现数据的机密性和细粒度访问控制,用线性秘密共享方案(LSSS,linear secret sharing scheme)构建访问结构来增强访问策略的表达能力,使只有满足访问结构的用户才能对数据进行访问。利用椭圆曲线加密中的简单标量乘法代替双线性配对计算,提升方案整体效率,并设计安全高效的外包解密方案,将解密中的部分计算外包给雾节点,减少数据用户的计算负担。因为区块链技术是理想的防止数据篡改的方法,在雾节点部署区块链,一方面利用区块链技术为雾计算提供可信和安全的环境,另一方面通过雾节点为区块链提供计算资源和存储能力。通过区块链记录整个访问授权的流程,以达到可溯源的目的,并对整个访问事务进行正确性验证以防被恶意篡改。对方案进行仿真实验对比,实验结果表明用户解密时间消耗较小且稳定,整体计算效率更高。

本文主要的研究工作如下。

1) 建立云-雾-用户分层的访问控制架构,并将区块链节点部署在雾层的雾节点设备中,一方面利用区块链技术为雾计算提供可信和安全的环境,另一方面通过雾节点为区块链提供计算资源和存储能力。利用区块链来记录整个访问控制的流程,使其不会被恶意篡改,保护数据安全。

2) 利用椭圆曲线加密中的简单标量乘法代替双线性配对计算,提高了CP-ABE 算法效率,并结合外包解密思想,将解密操作外包给雾节点运行,充分利用了雾节点的计算能力,使用户解密操作的计算开销较小且恒定。本文方案的效率更高,且更适用于设备计算能力受限的雾计算环境。

3) 对本文方案进行安全性分析,建立敌手游戏模型,结果表明该方案满足明文攻击安全。通过性能分析与仿真实验分析,验证了本文方案在满足安全性前提下效率更高。

2 相关工作

2007 年,Bethencourt 等[9]首次提出CP-ABE 方案,基于双线性对使数据加密与访问控制结合,并支持正负属性与门限访问结构,之后被广泛应用于云存储环境中数据的细粒度访问控制[10-11]。以上方案都采用单一授权中心为系统生成密钥并且管理属性,存在单点故障问题。因此Lewko 等[12]提出了多权威机构的CP-ABE 方案,且不需要属性权威机构进行协作。Horvath[13]为了增加系统灵活性,在多权威机构的CP-ABE 方案的基础上,实现了基于身份的撤销。Hur[14]改进了撤销方案,支持对每个用户的属性集进行直接撤销,并在文献[15]的方案中进行了使用。Wang 等[16]解决了CP-ABE 方案中的密钥托管问题,增强了属性表达能力。Li 等[17]提出的方案对外包密文正确性进行了验证,将验证过程在解密前执行,并且为授权用户与未授权用户检查外包密文的正确性,但方案中需要指定2种访问控制策略。Zhang 等[18]提出一种可追溯的多权威机构CP-ABE方案,该方案可以根据跟踪算法识别出泄露解密密钥的恶意用户,并降低跟踪的存储成本。现有CP-ABE 方案中包含了线性对配对计算与求幂计算,极大地限制了在计算能力受限的边缘设备中的使用。

基于配对的密码协议的效率取决于配对计算的速度,因此,为了提高效率,学者做了大量的研究工作。对于如何优化ECC 协议,Freeman 等[19]对椭圆曲线进行了分类,并介绍了其构造和一些优化技术。Scott[20]分析了如何改进配对操作来提升属性加密的效率。Simon 等[21]对椭圆曲线密码中的标量乘法进行了研究,为了进一步减少用户计算将复杂操作进行外包计算。Chevallier-mames 等[22]提出了一种外包计算的访问控制方案,将双线性配对计算操作进行外包,但该方案的服务器并不是完全可信的。Chen 等[23]的方案在此基础上进行改进,使系统的计算开销进一步降低,但方案中所提安全模型并不具备现实基础。为了从本质上优化CP-ABE算法,Odelu 等[24]提出了一种具有恒定密钥大小的CP-ABE 方案,使用椭圆曲线密码学技术避免了双线性配对的计算开销,但该方案用门限方法构建访问结构,制约了其可拓展性。

区块链是一种具有去中心化,并保护数据完整性、有效性和真实性的技术,众多学者将CP-ABE与区块链技术相结合来开展一系列工作。Maesa 等[25]的方案将区块链技术与基于属性的访问控制模型相结合,使用区块链代替传统的数据库来存储策略,并以事务的形式对访问策略进行管理,能够防止任何一方否认策略的真实性。Dagher 等[26]基于区块链的框架提出了针对电子病历的访问控制方案,使病历在被有效访问的同时保护了患者的敏感信息,并使用加密的方法实现区块链中数据的隐私性。但该方案中采用了PoW 共识机制,在保持区块链一致性时计算开销过于庞大。Dorri 等[27]提出了一种用于智能家居设备间访问控制的私有区块链方案。具体来说,访问策略存储在块头部,而访问操作、设备添加和删除记录存储在块体中。谢绒娜等[28]提出了一种基于区块链的可溯源访问控制机制,将客体存储在链下数据服务器,通过链上与链下相结合的方式,实现了对客体访问授权与访问过程的记录。应作斌等[29]针对电子健康档案中密钥管理及用户身份追溯问题,结合变色龙哈希与零知识证明技术完成区块链节点的注册与身份认证,并结合属性加密技术实现了完全细粒度的访问控制。

综上所述,传统的访问控制方案效率较低,双线性配对计算开销大。为此本文提出了雾计算中基于无配对CP-ABE 可验证的访问控制方案,在保障安全的前提下,提升了加解密效率。

3 预备知识

3.1 区块链

区块链是分布式共享账本,具有抗伪造、可溯源、去中心化等特征,能够在不信任的实体之间建立信任关系。联盟区块链由预选的节点组成,且每个块的生成由所有的预选节点共同决定。

1) 数据结构。每个数据块都由一个块头和一个块体组成,其中块头包含前一个区块的哈希值、一组元数据、Merkle 根。通过哈希值链接前一区块;一组元数据表示难度、时间戳与随机数,包含区块生成过程的信息;Merkle 根总结区块链中所有交易的数据结构。块体则包含交易的详细信息。为了保证联盟区块链具有防篡改、完整性,主要使用的密码学算法有哈希算法与数字签名算法。

2) 共识协议。共识协议在区块链的节点之间定义一个公共规则来生成新的区块。目前,较主流的算法有PoS、PoWer、DPoS、PBFT 等,每种算法都有各自的优缺点并适用于不同场景。联盟区块链相较于公有区块链弱化了中心化,根据节点的准入机制,赋予节点信任值,所以更倾向于使用PBFT、DPoS 共识机制。

3) 智能合约。智能合约是以信息化方式传播执行合约的一种计算机协议,区块链的出现为智能合约提供了安全的运行环境,被集成到以太坊中,所有节点协商的智能合约通过交易广播到区块链中达成共识,当一个或多个预定义条件被触发时,智能合约可以自动验证与执行。

3.2 椭圆曲线密码

椭圆曲线密码属于公钥密码体制,基于椭圆曲线离散对数问题的困难性,保证了其安全性。ECC与其他的公钥密码体制相比,系统参数与密钥长度较小,安全性较高。

椭圆曲线是一个系数和变元都在有限域Zp(p为有限域的阶数)的二元三次方程y2=x3+ax+b,记为Ep(a,b)。Ep(a,b)是由方程的全体解(x,y)与无穷远点O构成的集合,x,y∈Zp是未知数,a,b是系数,并满足4a3+27b2≠0。

椭圆曲线计算规则如下。

3.3 LSSS

定义在一个多方集合的线性秘密分享方案∏在域Zp上是线性的。

1) 每一个参与共享的秘密数据可以在域Zp上形成向量。

2) 存在一个大小为l×n的矩阵M被命名为∏的共享生成矩阵,即存在一个l行n列的矩阵M为秘密共享方案∏的共享生成矩阵。对于所有i=1,…,l,存在函数ρ将矩阵M的第i行记作ρ(i)。选取随机值构成向量v=(s,r2,…,rn),其中s∈Zp是将要共享的秘密值,则Mv是根据∏得到的关于s的l个共享份额的向量形式,Mvi属于实体参与方ρ(i)。

4 系统模型

4.1 整体框架

本文提出了一种雾计算中基于无配对CP-ABE可验证的访问控制方案,系统模型如图1 所示,该模型主要由属性授权机构(AA,attribute authority)、云服务提供商(CSP,cloud service provider)、雾节点(FN,fog node)、数据拥有者(DO,data owner)、数据用户(DU,data user)5 类实体组成。

图1 系统模型

AA 是完全受信任的一方,遵循协议规范来执行任务,对系统中的属性进行管理,且每个AA 所管理的属性都不相同,主要负责用户注册,为用户绑定唯一的用户标识符UID,同时负责密钥的生成与分发,并维护所管理属性的属性列表。

CSP 提供数据存储等方面的服务,在本文方案中假设CSP 可信。

FN 提供计算、存储等服务,每个FN 都与CSP连接,负责将用户提交的密文上传到CSP,并负责密文的部分解密。在FN 建立区块链,对访问事务的正确性验证并记录访问授权过程。

DO 是有文件要上传到云端存储的用户,为文件定义访问结构,对文件进行加密后上传到FN,再由FN 上传到CSP。

DU 是访问存储在CSP 中的文件的用户,并不完全受到信任。只有数据用户的属性集满足嵌入在给定密文中的访问结构时,才可以使用私钥从密文中解密文件。

4.2 算法定义

本文模型由系统初始化(Setup)、属性授权机构初始化(AASetup)、私钥生成(KeyGen)、数据加密(Encypt)、数据解密(Decrypt)5 个算法构成。

1) 系统初始化Setup(k1)→(PP,UID)。初始化阶段输入安全参数k进行运算获得系统的全局参数PP 与用户标识符UID。

2) 属性授权机构初始化AASetup(PP)→(PK,MSK)。多个属性授权机构独立运行对属性进行管理,且每个机构中的属性不重复。同时负责系统内密钥的生成与分发。

3) 私钥生成KeyGen(PP,MSK,S,UID)→(SKi,UID,TK,USK)。由属性授权机构运行私钥生成算法通过输入全局参数PP、主密钥MSK,以及属性集合S,计算得到用户的属性私钥SKi,UID,然后将其发送给用户。用户收到后根据属性私钥SKi,UID得到解密密钥USK,并生成要交由雾节点外包计算的密钥TK。在区块链中为用户与雾节点注册数字签名的公钥与私钥。

4) 数据加密Encrypt(PP,PK,(A,ρi),M)→(CT)。DO 先使用对称加密算法对数据M进行加密,然后定义LSSS 访问结构(A,ρi),其中A表示根据访问策略生成的访问控制矩阵,ρi表示矩阵A中属性所对应的行数,然后计算生成密文CT发送给雾节点。

5) 数据解密 Decrypt(PP,PK,TK,USK,CT)→(M)。该算法包括2 个子算法:雾节点运行外包解密算法FN.Decrypt 和用户执行本地子算法DU.Decrypt。

FN.Decrypt(PP,PK,TK,CT)→(CT')。雾节点收到用户访问请求后,先从CSP 获取密文CT,然后使用转换密钥TK 对其进行解密操作,最后将结果发送到区块链中进行正确性验证。

DU.Decrypt(PP,PK,USK,CT')→(M)。当区块链对雾节点生成的访问事务进行验证后,用户将获取转换密文CT',然后使用其自定义的解密密钥USK对密文进行解密,获取数据M。

5 具体方案

本节描述了雾计算中基于区块链的无配对CP-ABE 访问控制方案的具体结构,系统流程如图2 所示。为了提高整个算法的性能,将复杂的双线性配对操作替换为椭圆曲线上的简单标量乘法,从而简化了计算。具体来说,数据拥有者首先用对称加密技术对密文进行加密,然后使用盲因子sG加密对称密钥ck,其中G为阶是r的椭圆曲线循环群的生成器,s为Zp中的随机数,数据用户需要将属性密钥与密文进行计算才能够消除盲因子sG。用户的每个属性都与身份标识UID 绑定,如果用户在解密时互相勾结,则不能成功解密密文。在用户上传文件与访问阶段,通过区块链对访问事务中数据进行正确性验证,并记录访问事务Txupload与Txaccess,使数据上传与访问数据的整个过程可溯源。

图2 系统流程

阶段1系统初始化Setup(k1)→(PP,UID)

输入安全参数k,得到全局参数PP 与用户标识UID。同时构建阶为q的有限域GF(q),在有限域GF(q)中选取椭圆曲线E。选取哈希函数H:{0,1}→Zp,使用户身份标识UID 映射到Z中元素,并定义属性集L={a1,a2,…,am},生成全局参数PP={GF(q),G,L,E,H}。

阶段2属性授权机构初始化AASetup(PP,L)→(PK,MSK)

输入全局参数PP,由系统中的多个属性授权机构共同运行该初始化算法,每个授权机构对属性进行管理,且每个授权中心所管理属性都不相同,对属性ai选取随机数ki∈Zp,并维护与用户标识UID 对应的属性列表。生成系统公钥PK 与主密钥MSK。

阶段3私钥生成KeyGen(PP,MSK,S,UID)→(SKi,UID,TK,USK)

该算法由属性授权机构运行,为用户生成私钥SKi,UID,表示身份标识为UID 的用户所包含属性ai的属性密钥。属性授权中心生成SKi,UID发送给对应用户,之后用户选取随机数z,n∈Zp,得到用户解密密钥USK={d},最后由用户生成雾节点转换密钥TK。在用户向雾节点提交访问申请时,将TK 交由雾节点进行外包解密计算,而用户解密密钥USK 由用户自己保管,用来解密雾节点转换后的密文。

阶段4数据加密Encrypt (PP,PK,(A,ρi),M)→(CT)

数据拥有者在上传文件前执行该算法对数据文件进行加密,输入全局参数PP、系统公钥PK,计算Cn=H(CT),当用户解密后用来验证解密的正确性;并根据访问控制策略定义LSSS 访问结构(A,iρ),来限制用户对文件的访问。其中,A表示l×m的访问矩阵,ρ(x)表示访问矩阵A中每一行所对应的属性。具体步骤如下:DO 定义一个LSSS 访问结构(A,ρi),并随机选取密钥ck,利用对称加密算法对文件M进行处理表示为Eck(M),并计算Cn=H(Eck(M))。然后用户选取随机值s∈Zp,计算得到C0=ck+sG。选取随机向量,其中,v以选取的随机值s为第一个元素,u以0 为第一个元素,计算得到λx=Axv与ωx=Axu,其中x∈[0,l],Ax表示访问矩阵的x行。对选取随机数rx∈Zr,并计算得到{C1,x=λxG+rxkρ(x)G,C2,x=rxG,C3,x=ωxG},最后得到密文CT={(A,ρ),C0,Cn,Eck(M),{C1,x,C2,x,C3,x|∀x∈[1,l]}},由用户将CT 发送到雾节点由雾节点进行上传。

阶段5区块链上传验证阶段

因为用户并不直接与CSP 交互,在上传文件时需要提交到雾节点进行处理,为了使数据文件的整个上传过程可溯源、抗伪造,用户生成上传事务Txupload={U,checkCode,sign},发送给CB 进行验证,其中U表示上传事务的标识符,checkCode 表示密文的完整性校验码,sign 表示用户DO 在CB 上注册的私钥生成的数字签名。checkCode 是通过哈希散列值算法生成的,任意节点都可以通过checkCode 验证密文的完整性。Sign 用来证明该上传请求确实是由DO 发送的。

算法1生成上传事务

输入上传事务的标识符U,加密算法生成的密文CT,联盟链CB 中记录的用户DO 的签名私钥BSKDO

输出上传事务Txupload

在生成Txupload后,将其广播到CB 中的其他节点进行验证,通过签名来验证事务的有效性,计算校验码验证密文有效性,确定其没有被恶意节点篡改。通过比较接收到的Txupload生成的信息摘要MD'与使用DO 的公钥BSKDO解密签名生成的信息摘要MD,来验证Txupload的有效性。如果相等,则认为Txupload是有效的。同时为了保证上传密文的完整性,进一步检查信息摘要checkCode'与Txupload 中checkCode 是否相等,一旦通过验证并由共识机制达成共识后,就会被打包成一个区块,再由雾节点将密文成功上传。

算法2验证上传事务

输入Txupload={U,checkCode,sign},联盟链CB 中记录的用户DO 的签名公钥BPKDO

输出上传事务Txstorage 与密文CT 的验证结果

阶段6雾节点解密算法FN.Decrypt

当数据用户向雾节点申请访问数据时,将转换密钥TK 发送给雾节点,之后雾节点从云服务商获取密文CT,运行FN.Decrypt 算法,对密文CT 进行转换。FN.Decrypt(PP,PK,TK,CT)→(CT')。当申请访问的用户属性能够满足访问结构时,则存在一个常数集{,。可以先通过以下计算得到参数Ax。

然后雾节点生成转换密文 CT'={C0,Eck(M),D,D′},发送到CB 生成访问事务并进行验证。

阶段7区块链访问验证阶段

在区块链收到转换密文后,生成访问事务并进行验证。雾节点从属性授权机构获取到用户当前属性,当用户的属性满足访问结构时,便会存在一个常数集,所以用户权限验证算法中,当存在时,表示用户拥有该文件的访问权限。使用数据用户转换密钥TK、转换密文C′′与密文CT,以及用户的签名公钥计算得到信息摘要,在验证过程中信息摘要能够匹配时,证明雾节点并没有对访问事务中数据进行篡改。因为这种模式,转换密钥以及密文的任何变化都会改变区块链中相应的哈希值,并且该系统中的所有实体都会感知到这些变化,因此可以达到防篡改的目的。

算法3生成访问事务

输入访问事务标识符Ac,联盟链CB 中记录的雾节点的签名私钥BSKFn,转换密钥TK 与密文CT

输出访问事务Txaccess

验证数据用户访问权限后,为数据用户生成一个有效的访问事务 Txaccess={Ac,checkCode,time,sign},其中Ac 表示识别访问事务,checkCode 表示访问事务的信息摘要,time 表示Txaccess生成时的时间,sign 表示证明了该访问事务由哪个雾节点进行解密计算。在访问事务有效生成后被打包成块存储在区块链内,整个数据访问的参与者与数据将被记录在内且不可伪造,以达到可溯源的目的,之后雾节点将生成的外包解密密文发送给用户。

算法4验证访问事务

输入Txaccess={Ac,checkCode,time,sign},联盟链CB 中记录的用户DU 的签名公钥BPKDU

输出访问事务Txaccess验证结果

阶段8用户解密阶段

DU.Decrypt(PP,PK,USK,CT')→(M)。用户收到雾节点发送的转换密文 CT'后,运行算法DU.Decrypt 得到对称密钥ck。

得到对称密钥ck 后,通过对称解密算法将得到文件M。验证Cn=H(Eck(M))是否成立,成立则表示用户解密得到的数据没有被篡改。

6 安全性分析

本节主要分析所提方案在椭圆曲线的决策DBDH 假设下的安全性。

定理1如果概率多项式时间算法1 以不可忽略的优势ε>0破解本文提出的方案,那么算法2能够区分一个DBDH 元组和一个随机元组,并且优势为ε/2。

设G为以大素数r为阶、P为生成元的群,首先由挑战者C 首先随机选择,β∈{0,1}与R∈P,当β=1 时Z=abcG,否则Z=R。挑战者C 发送一个元组(G,aG,bG,cGZ)给B,在下面的安全模型中由B 将扮演挑战者。

A 和B 执行如下操作。

初始化敌手A 先定义一个访问结构(A*,iρ),将其交给挑战者B。

系统设置为系统中的每个属性ai创造公钥来对抗A,挑战者B 对系统进行初始化,选择随机数ki∈Zr,生成PK={kiaG}。对每一个属性ai,B 选择随机数n,v∈Zr,将nG、vG当作系统的公钥发布,并将公钥发送给敌手A,其中公共参数时随机分布的。

阶段1A 向B 提交用户标识所对应的属性(ai,UID),用来请求用户属性所对应的私钥。对用户的身份标识UID,用TUID来标识敌手A 要查询的属性ai在访问矩阵A*中的行子集,所请求的行子集TUID中不能包含(1,…,0),保证了攻击者不能够请求一组能够解密的密钥。B 随机选择t∈Zr,并计算tkia作为私钥发送给敌手A。

挑战阶段A 向B 发送等长的两段信息m0和1m,B 选择一个值S'∈Zr,选取参数β∈{0}1,,通过执行加密算法算法对mβ进行计算。B 构造密文CTb,将产生C0=mβ+sG,选取随机向量,其中v以选取的随机值s为第一个元素,u以0 为第一个元素,得到λx=Axv与ωx=Axv,其中x∈[0,l],Ax表示访问矩阵的x行。最后由挑战者B生成,将密文发送给敌手A。

阶段2同阶段1,敌手A 可以继续向挑战者B 发送(ai,UID)密钥查询,并不违反规定。

猜测游戏中如果β'=β,挑战者B 输出0,表明Z=abcG;否则,B 输出1,表明Z=R。

当Z=abcG时,A 获得有效的密文,则A 的优势为

当Z=R时,A 无法获得任何数据信息,则A 的优势为

因此,B 破解该敌手游戏的优势为

在以上挑战过程中,假设DBDH 成立,如果没有敌手在多项式时间内完成,那么本文方案是满足椭圆曲线的决策DBDH 假设下的安全性的。

本文方案具有区块链安全性、前向安全性和抗共谋安全性。

1) 在本文方案中,为了保证外包计算的正确性,需要对外包解密密文进行正确性验证,在大部分已有的可验证方案中都需要建立一个完全可信的中间实体,这会造成很高的信任构建成本,同时会存在单点故障问题。利用区块链抗篡改与可溯源特性来解决该问题,雾节点生成外包解密校验码发送到区块链,可以在不涉及任何中间实体的情况下对外包解密结果进行验证。同时对用户权限进行了验证,使属性不满足访问结构的用户不能从雾节点获取到转换密文,也就无法进行解密,转换密文与用户权限的验证都是通过区块链进行验证的,可以较小的人工干预实现可信计算,因此本文方案是可信的且具有验证性。为了保证数据用户能够获取完整数据,在数据上传验证过程中加入了密文的完整性校验码,能够随时对密文进行校验,确保了数据的完整性。并且在本文方案中可以跟踪与验证区块链中访问控制信息,任何数据的上传与用户的访问都将被记录为一个不可篡改的访问事务,可以确认哪个数据拥有者将何文件提交到CSP,哪个数据用户与雾节点进行交互对数据进行了访问,任何数据的上传与用户的访问都将被记录为一个不可篡改的访问事务,因此整个访问方案满足可溯源性。

2) 在本文方案中,由多属性权威机构运行密钥生成算法生成属性密钥并发送给用户,但用户并无法从该属性密钥中获取与该属性相关的其他任何信息。同时,在属性授权机构中建立用户属性列表,当用户的属性被整体撤销时,需要在属性列表中删除与用户标识UID 相关的所有属性信息,该用户在申请访问时,雾节点并不能从属性授权机构中获取到用户的相关属性信息,所以会拒绝该用户的访问。当用户所拥有的某个属性被撤销时,只需要在属性列表中修改撤销属性信息即可,这样雾节点获取的用户属性集合将不包含已撤销属性,当文件的访问结构中包含已撤销属性的数据时,将无法通过用户权限验证阶段,因此本文方案满足前向安全性。

3) 本文方案使用对称加密密钥ck 对文件进行加密,然后设置访问结构A*对ck 加密,只有DU的属性满足访问结构时才能解密ck+sG。假设多个未满足访问结构的用户相互勾结交换密钥,组成了满足访问结构中的属性集。根据密钥生成KeyGen算法,用户私钥中属性将与用户标识UID 进行绑定,则产生不同的私钥SKi,UID=ki+H(UID)n,假设互相勾结的用户身份分别为r1,2r,因为不同用户之间的用户标识 UID 不同,通过解密计算得到drxG。其中便无法推出sG,所以仍然无法对密文进行解密。因此,本文方案具有抗共谋攻击性。

7 性能分析

本节对本文方案在理论上和实验上进行分析,证明其可行性。本文方案与文献[17]、文献[18]、文献[24]方案的功能比较如表1 所示。

表1 功能比较

7.1 理论分析

通过功能比较可以发现,在访问结构的比较中,文献[24]方案使用了与门的访问结构,其结构单一不够灵活,并且文献[17,24]方案中采用单一授权机构进行授权,存在单点故障问题。而本文方案与文献[24]方案均避免了双线性配对带来的计算开销,能够提升整体效率。采用外包计算的本文方案与文献[17]方案能够降低用户在解密时的计算开销。

本文方案与文献[17]、文献[18]、文献[24]方案中用户加密、用户解密、外包解密中的计算开销比较如表2 所示,其中,L表示访问矩阵中包含属性个数,Ls表示满足访问矩阵的最少属性数量,N表示系统内属性数量,ω表示与门结构中属性数,P表示双线性配对操作,E表示群内的乘法,Eg、ET分别表示群G内的指数操作与群GT内的指数操作。

从表2 可以看出,文献[18,24]方案并没有使用外包计算技术,用户的计算开销随着访问控制策略的复杂化而呈线性增加趋势。但在使用了外包计算的本文方案与文献[17]方案中,用户解密时的计算开销是稳定的。文献[17]方案中授权用户与未授权用户检查外包密文的正确性,虽然实现外包计算的正确性验证,但需要指定2 种访问控制策略,用户加密时的开销要大于本文方案。文献[18]方案为了使整个CP-ABE 方案做到可溯源,设计了可溯源算法,能够识别系统中泄露信息的恶意用户,但会导致用户的计算开销过大,用户加密与解密开销要远大于其他方案。本文方案与文献[24]方案中均使用椭圆曲线加密中标量乘法取代了双线性配对操作,在加解密时的计算开销均小于其他方案。综上所述,本文方案的计算开销要小于其他方案。

表2 计算开销比较

7.2 实验分析

本文方案的效率主要受区块链与CP-ABE 加解密算法的影响,而区块链上的性能主要取决于共识算法如PBFT,因此本文更侧重于运用椭圆曲线加密中的简单标量乘法代替双线性配对计算后CP-ABE 的效率。通过仿真实验,将本文方案与文献[17-18,24]方案在用户加密、用户解密与外包解密等方面进行比较分析。本文基于charm-crypto 框架使用Python2.7 进行仿真实验,并选择基于512 B 有限域上阶为160 的椭圆曲线;使用Intel Xeon E5-2690 处理器,16 GB 内存,搭建环境为Ubuntu16.04 系统的服务器作为雾节点和AA;使用Intel i5-4200U 1.6 GHz 处理器,4 GB 内存,搭建环境为Ubuntu16.04 64 位系统的笔记本电脑充当用户。实验中所有结果均为 10 次结果的平均值。

数据拥有者加密计算时间比较如图3 所示。从图3 中可以看出,本文方案与文献[17-18,24]方案的数据拥有者在加密计算时的消耗时间随属性数量的增加而越来越多。其中,文献[18]方案的增长率最高,随着属性数量的增加其消耗时间远超其他方案,而本文方案的增长率最小。使用椭圆曲线中简单标量乘法的本文方案与文献[24]方案在数据拥有者加密时的消耗时间远少于其他方案,且本文方案效率更高。

图3 数据拥有者加密计算时间比较

数据用户解密计算时间比较如图4 所示。从图4 中可以看出,没有将解密计算外包的文献[18,24]方案中数据用户在执行解密计算时,其消耗时间会随属性数量的增加而越来越多;而在设计了外包计算的本文方案与文献[17]方案中,用户在解密计算时的开销不会因为访问策略的复杂化而增加用户计算负担,并且本文方案解密消耗时间更少。

图4 数据用户解密计算时间比较

外包解密时间比较如图5 所示。从图5 可以明显看出,避免了双线性对配对操作的本文方案在外包解密操作时所消耗时间要远少于文献[17]方案,并且随着访问结构中属性数量的增加,这种差距将越来越明显,所以本文方案在外包解密算法中效率更高。

图5 外包解密计算时间比较

8 结束语

本文提出了一种雾计算中基于无配对CP-ABE可验证的访问控制方案,利用椭圆曲线加密中的简单标量乘法替代双线性配对计算,并设计安全高效的外包计算,减少了用户解密时计算开销。在雾节点中部署区块链不仅可以为雾计算提供可信和安全的环境,还可以根据区块链防篡改可溯源的特性实现对访问事务的正确性验证并记录访问授权过程。对本文方案的安全性进行了分析,仿真实验结果表明,本文方案的用户解密时间消耗较小且稳定,整体计算效率更高。但本文方案仍存在一些不足之处。现有访问策略会显式地附加在密文上,或者仅实现了部分隐藏以防止公开可见,会出现接收者的持有属性被窥探的情况,导致用户的隐私泄露。因此需要一种完全隐藏属性的访问策略,能够将属性信息完全隐藏在访问策略中,使任何有价值的属性信息都不透露给未授权的接收者。

猜你喜欢
访问控制密文解密
一种跨策略域的林业资源访问控制模型设计
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
炫词解密
解密“一包三改”
基于网络报文流量的协议密文分析方法
密钥共享下跨用户密文数据去重挖掘方法*
炫词解密
炫词解密
内外网隔离中ACL技术的运用