软件学报  2017, Vol. 28 Issue (9): 2334-2353   PDF    
对象云存储中分类分级数据的访问控制方法
杨腾飞1,2, 申培松1,2, 田雪1,2, 冯荣权3     
1. 信息安全国家重点实验室(中国科学院 信息工程研究所), 北京 100093;
2. 中国科学院大学 网络空间安全学院, 北京 100093;
3. 北京大学 数学科学院, 北京 100871
摘要: 随着云计算技术的广泛应用,云存储中数据的安全性、易管理性面临着新的挑战.对象云存储系统是一种数据存储云计算体系结构,通常用来存储具有分类分级特点的非结构化数据.在云服务不可信的前提下,如何实现对云存储中大量具有分类分级特点资源的细粒度访问控制机制,保障云存储中数据不被非法访问,是云计算技术中亟需解决的问题.对近些年来国内外学者的成果进行研究发现,现有的方案并不能有效地应对这种问题.利用强制访问控制、属性基加密、对象存储各自的优势,并结合分类分级的属性特点,提出了基于安全标记对象存储访问控制模型.给出了CGAC算法及其安全证明,将分类分级特点的属性层级支配关系嵌入ABE机制中,生成固定长度的密文.该算法不仅访问控制策略灵活,具有层次化授权结构,还可以友好地与对象存储元数据管理机制结合.通过理论效率分析和实验系统实现,验证了所提出方案的计算、通信开销都相对较小,具有很高的实际意义.
关键词: 对象存储     云计算     数据安全     访问控制系统     分类分级数据     属性加密     安全标记    
Access Control Mechanism for Classified and Graded Object Storage in Cloud Computing
YANG Teng-Fei1,2, SHEN Pei-Song1,2, TIAN Xue1,2, FENG Rong-Quan3     
1. School of Cyber Security, State Key Laboratory of Information Security(Institute of Information Engineering, The Chinese Academy of Sciences), Beijing 100093, China;
2. University of Chinese Academy of Sciences, Beijing 100093, China;
3. School of Mathematical Sciences, Peking University, Beijing 100871, China
Foundation item: Strategic Priority Research Program of Chinese Academy of Sciences (XDA06040601); Science and Technology Projects of State Grid Corporation of China (XXB17201400056); National Natural Science Foundation of China (61370187)
Abstract: With the popularity of cloud computing, the security and manageability of cloud data faces new challenges. Object-based storage cluster is a cloud computing architecture, which is usually used to store classified and graded unstructured data. Under the premise of untrusted cloud service, how to achieve practicable fine-grained access control mechanism of massive classified and graded data while protecting data from unauthorized access, is an urgent issue to be handled. The proposed methods in recent years offer no effective ways to solve this new problem. By taking full advantages of mandatory access control method, attribute-based encryption and object storage technology, and by combining with the characters of classified and graded data, this paper proposes a hierarchical secure label-based access control model in object cloud. Similarly, the core algorithm in this model, which is called CGAC and provably secure, provides a method to embed the hierarchical feature of classified and graded attributes into ABE mechanism, and get constant-size ciphertext. This algorithm not only has flexible access policy and hierarchical authorization structure, but also combines the benefits of metadata management of object storage. Finally, through the theoretical analysis and experimental system implementation, the paper verifies that the model's computation cost in encryption and decryption is acceptable, confirming the proposed method has high practical significance.
Key words: object storage     cloud computing     data security     access control model     classified and graded data     attribute-based encryption     secure label    
1 引言

近年来, 云计算技术获得了长足的发展, 云存储技术是云计算中的重要领域, 云存储提供商集合集群和分布式文件系统等技术将数据存储在虚拟化的存储池中, 对外提供在线存储模式的服务, 具有海量级存储、动态扩展、持久性高等优点.目前, 许多云计算厂商提供云存储的商业服务, 如AWS的S3、GoogleDrive、HDFS、百度云等.

对象存储是云存储数据的一种重要存储模式[1].与传统存储模式以块设备记录数据块位置的方式不同, 对象存储基本单元是对象文件, 由存储数据和元数据组成, 提供了具有高性能、高扩展性、高可靠性、跨平台以及数据安全共享的存储体系结构.对象存储由于存在单独的元数据管理服务提供数据逻辑视图, 从而将控制通路与数据通路分离, 提升了文件读写能力, 同时兼具SAN高速直接访问特点及NAS的分布式共享特点[1].

云计算中的分布式对象存储系统通常采用友好访问接口使对象存储拥有跨平台数据共享的特点, 通过接口可以执行数据CRUD和对象属性等操作, 适合加载MB级别的图片、文档、音频等到内存中进行快速处理, 其计算效率和用户体验提升是显著的, 因而对象存储更适合云计算模式下的互联网应用.对象存储的另一个特点是扁平的数据组织结构, 抛弃了庞大的传统目录树管理, 利用多维度的元数据属性进行存储数据的检索和管理[2].综上, 对象存储并不是文件系统和实时数据存储系统, 而是一个存储永久类型静态数据的无中心控制节点的存储系统, 存储的静态数据可以进行检索、访问、必要时的更新.相较于HDFS等云存储模式, 更适合存储图片、邮件、音频等数据, 避免了单点故障和性能瓶颈, 拥有更强的扩展性、冗余和持久性, 适合高性能集群使用.美国国家标准化组织(ANSI)于2005年批准了对象存储的标准规范[3], 目前, 对象存储已得到了广泛应用, 代表性的大规模实现如AWS的S3、华为的OBS、开源实现OpenstackSwift[4]和Ceph等.

但是随着云存储技术的发展, 其动态复杂性、开放性和资源高集中性等特点不可避免地带来了数据安全性问题, 用户将数据托管给云服务提供商存储和管理, 会失去对数据的控制.因此, 需要提供一种灵活可靠的安全机制和体系结构保护用户的机密性、完整性和可用性[5]{Hamlen, 2012 #45}{Hamlen, 2012 #45}{Hamlen, 2012 #45}{Hamlen, 2012 #45}{Hamlen, 2012 #45}.事实上, 当前安全问题呈现上升趋势, 已成为制约云存储发展的重要因素.2012年, 亚马逊数据中心中断, 导致网络瘫痪; 2014年, iCloud云平台被黑客攻击, 导致用户信息泄露.因此, 对数据资源的访问控制是云存储安全核心[6].

访问控制技术是保障数据不被非法访问的重要手段[6], 实现对云存储中大量资源的访问控制机制, 能够使用户将数据安全地托管至云平台.因此, 许多学者提出了不同的方案, 主要集中在3个方面, 见表 1.

Table 1 Researchon access controlin cloud computing 表 1 云计算访问控制技术

虽然云计算中的访问控制机制研究不断深入, 但是在实际应用场景中, 一方面, 随着对象云存储的规模扩大, 通常需要对图片、音视频等具有层级相关性特征的媒资数据进行分类管理.如存在分类关系:音乐→华语音乐→邓丽君, 若用户$\mathcal{A}$上传音乐1.MP3指定其分类属性为邓丽君, 而一个拥有权限级别华语音乐的用户$\mathcal{B}$, 应能够访问邓丽君下的文件.另一方面, 在海量对象数据的存储下, 为实现数据的受控共享和存储隔离, 应进行高效的细粒度的访问控制; 为满足大规模用户的并发访问请求, 还应适应云环境建立分布式授权中心.然而, 由于与传统块存储在适用范围、底层架构、原理和模型方面的差异, 基于对象数据格式的云存储结构面临着更多新的访问控制技术方面的挑战.

(1) 访问控制架构

对象存储的架构与传统块存储模式甚至HDFS不同, 传统块存储由于缺少专有的对象存储元数据服务器, 访问控制决策需要访问数据本身, 导致授权和决策的效率慢, 并发性能较低.同样的HDFS虽然存在简单的元数据服务器, 但其元数据Namenode节点存在单点故障、检索效率过慢的问题, 同样限制访问控制的性能.而对象存储采用分布式的平坦化存储, 可以避免访问数据本身以及单点引发的效率问题, 提高访问的并发性能.但是这种环境下, 访问控制的架构也需满足并解决分布式授权、权限判定问题.同时, 由于对象存储采用的一致性哈希算法, 使得存储的不同等级数据随机分布在存储结点上, 因此, 对象存储中的访问控制还需要解决数据隔离的安全问题.

(2) 细粒度访问控制

在以块存储为核心的存储模式中, 同样由于缺少丰富的属性信息, 目前的方案只能依赖ACL列表实现粗粒度的访问控制, 使用中存在提权风险; 同时, 由于访问控制策略不够灵活, 这些方案在分布式的云计算环境中已不再适用于分类分级数据的应用间交互、网络资源共享.为解决这些瓶颈的限制, 随着Sahai基于公钥密码在IBE的机制上提出KPABE和CPABE[7]的访问控制模型, 基于属性加密的方案受到了广泛关注.虽然这些方案以属性定义密钥, 可以利用椭圆曲线的双线性对与访问控制结构结合, 使得当用户属性符合加密时嵌入的访问控制规则即可解密, 有效解决了云计算环境下细粒度访问控制和解密方不固定的问题.但是目前已提出的方案中尚无有效解决分类分级数据的访问控制方法, 因此, 面对对象云存储分类分级数据的对象属性描述的场景时, 如何利用这些属性实现细粒度的访问控制策略, 有效解决用户授权访问, 保障云数据安全, 是一个技术挑战.

(3) 元数据管理

传统的属性加密通常还有个缺陷——加密密文存储空间及加解密运算量随着属性数目增长而线性膨胀, 对象云计算环境中面对海量属性数目, 属性相关的密文元数据大小尤其将限制对象存储的元数据管理, 不利于细粒度访问控制的应用.

为解决云存储中的上述安全和效率问题, 本文提出了一种对象云存储中分类分级数据的访问控制方法, 克服了上述的安全挑战, 解决了已有方案中的缺陷, 利用灵活访问策略适应了应用场景, 并实现了如下目标.

(1) 提出一种访问控制模型以及对象云存储的访问控制体系结构, 使得能够明确系统结构的实现方式, 并从理论上形式化表达分类分级数据的访问控制策略;

(2) 提出的访问控制模型、算法能够解决分类分级特征的对象数据的细粒度访问控制;

(3) 提出的访问控制算法可以利用对象数据丰富的分类分级属性元数据参与访问控制策略的运算, 生成只有满足分类分级层级支配策略的用户才可解密访问的密文数据;

(4) 提出的访问控制算法得到的密文可作为对象数据的访问控制属性储存在元数据服务器中, 为提高管理及访问效率, 得到的密文长度应固定;

(5) 提出的访问控制算法应满足分布式授权和分布式存储的云架构, 同时, 得到的对象数据应隔离;

(6) 通过理论分析及实验系统实现, 验证其合理性.

综上, 在分类分级特征下, 本文结合对象存储的优点, 解决了对象文件的细粒度访问控制问题, 保障云存储安全, 是具有很强的研究意义的.

1.1 本文贡献

基于上述原因, 本文综合属性加密机制、强制访问控制、对象存储各自的优势, 并结合分类分级的属性特点, 提出了一个基于安全标记对象存储访问控制模型, 同时, 设计了云计算访问控制系统的体系结构.在该模型中, 只有当用户拥有的安全标记满足一定的策略支配访问数据的安全标记时, 通过具体的分类分级数据的属性访问控制算法(fine-grained access control algorithm for classified and graded data, 简称CGAC算法), 用户才可以解密访问数据.该算法将分类属性树之间的层级支配关系反映在密钥和密文中, 只有能支配的属性关系才能进行运算, 因此较好地解决了分类分级特点文件的细粒度访问控制, 实现了云平台存储池数据隔离, 且本文的算法可以从数学上证明其具有抵抗选择明文攻击.另外, 本文结合对象存储的特点实现了分布式层次授权管理机制, 同时, 利用定长密文的设计结构将其与对象存储元数据管理紧密结合, 最终在一种对象存储中实现本文方案, 并验证.

1.2 本文组织结构

本文第2节给出访问控制方案的相关研究.第3节介绍相关预备知识.第4节构造一个灵活的适合分类分级特征的基于安全标记对象存储访问控制模型及系统结构.第5节给出详细的CGAC算法.第6节中给出算法证明及效率分析.最后, 第7节中设计实现访问控制系统.

2 相关研究工作

BLP模型[8]是传统的强制访问控制, 主要用于保护机密等级高的系统, 根据数据的敏感等级及分类特点, 利用主客体标记, 可以实现多级的安全策略, 保障数据的单向流动性.因此, 强制访问控制可以实现数据的安全隔离, 具有高安全性的特点.目前, 对BLP模型在云计算中的研究主要集中在修改传统的BLP模型, 使其更适用于云计算环境中.Shen等人[9]讨论了BLP模型在云计算中的体系结构和访问控制算法, Lin等人[10]以BLP模型和Biba模型为基础, 结合云计算环境特点, 用行为等相关信息提出了CCACSM模型保障资源安全性.

在属性加密的机制中, 有一部分关于层次化属性加密的方案.Horwitz[11]首次提出了具有等级结构的身份密码机制HIBE, 利用多PKG的IBE方案解决单个PKG压力大易攻陷的缺点.该方案中, 每个PKG对应私钥由上层父节点生成, 且每个PKG只负责部分用户密钥的生成.Wan等人[12]在基于密文策略的属性集合加密(CP-ASBE)基础上提出了HASBE算法解决层次用户的访问控制.2014年, Deng等人[13]通过线性秘密共享和随机密钥分配技术提出了一种层次化CP-HABE算法, 类似的还有文献[14].但这些方法都是针对用户的层次化解决方案, 并不适用于分类属性的树形结构需求.Wang等人[15]提出了一种将两个低层次文件合并形成高层次文件的分层访问控制算法.2015年, Liu等人[16]在HABE算法的基础上提出了一种解决树形结构的层次化属性基加密的方法.然而这几种方案的密文是不固定的, 当属性扩张时, 密文线性增长, 不适用于云计算的场景, 无法作为元数据进行存储管理.为提供固定长度的密文适用于云存储场景, Ge等人[17]利用用户拥有定量默认属性的方式提供了阈值访问控制结构的定长密文算法.张欣晨等人[18]在Ge的方案基础上, 在Hadoop平台实现了定长密文访问控制模型, 实验验证了可行性.但Ge的方案中, 层次化结构依然关注在用户的组织上.

而在对象存储的访问控制中, Biswas等人[19]提出了面向内容级别的访问控制, 利用标记作为JSON对象进行存储和策略判定.而在实际产品中, 对象存储的厂商对访问控制关注度不够, 如Rackspace公司开源的Openstack Swift产品只利用了其Openstack架构中Keystone组件的身份认证技术实现了简单的RBAC机制的人员管理, 而对于对象数据, 则依赖自主的ACL表[4].可见, 如何将强制访问控制模型、基于属性访问控制与分类分级特点的资源相结合, 利用各自优势在对象存储中实现安全的云存储系统方案, 是值得进一步研究的.

3 预备知识 3.1 对象存储概述

在基于对象的存储中, 对象数据是以固定接口提供非结构化文件访问操作的一类存储容器.同时维护一组描述文件数据特性属性值的元数据管理, 通常可以利用元数据来实现阻止数据非法访问的安全策略.

图 1所示的对象存储与传统块存储的结构对比, 块存储包括上层应用逻辑表达结构、命名服务、访问控制结构等用户组件和负责将数据逻辑结构映射到存储介质上的存储管理组件.对象存储与之相较, 主要存在两处不同点, 存储管理组建下移至于物理设备层, 块接口变为文件访问对象接口, 通过访问接口可以实现对象数据的增删改查、设置属性等操作, 具有跨平台的特点.另一方面, 由于物理设备具有底层文件系统特征, 分布式对象存储元数据管理只需通过负载均衡提供逻辑拓扑结构即可, 从而避免NAS元数据服务器瓶颈.

Fig. 1 Difference between object storage and block storage 图 1 对象存储与传统块存储的结构对比

正是因为元数据管理的存在, 通常利用这些属性信息进行对象存储访问控制的实现.如Openstack Swift对象存储组件将ACL列表存储在元数据中, 以JSON的形式在Header信息中返回.此时, 请求将由Swift的访问控制中间件处理, 并结合身份认证中间件对用户操作进行访问控制决策.本文方案亦是通过元数据信息、对象存储REST接口及中间件处理流程将本文提出的分类分级属性访问控制方法与对象存储实现了很好的结合.

3.2 双线性映射及复杂性假设

Boneh[20]提出了椭圆曲线上的双线性映射后, 双线性映射被广泛应用于加密、签名等领域.现有的ABE机制也大多基于双线性映射来实现, 现给出双线性映射的定义.

定义1.设G1G2是素数p的循环群, gG1的生成元, 则双线性映射e:G1×G1G2具有如下性质.

●  双线性性:对于所有的u, vG1以及a, bZp, 都有e(ua, vb)=e(u, v)ab;

●  非退化性:对于生成元g, 始终有e(g, g)≠1;

●  可计算性:对于任意的u, vG1, 能够在一个多项式时间内计算e(u, v).

定义2.判定性l-BDHE假设(decisional l-bilinear Diffie-Hellman exponent assumption)[21]定义如下.

给定2l+1个元素组成的向量$\vec{y}=(g, h, {{g}_{1}}, {{g}_{2}}, ..., {{g}_{l}}, {{g}_{l+2}}, ..., {{g}_{2l}})\in {{G}_{1}}$, 其中, gi=gα, αZp未知.任取随机数TG2, 判定 $e{{(g,h)}^{{{\alpha }^{l+1}}}}=T$ 是否成立.若对任意多项式时间, 敌手优势均小于可忽略的值, 则称判定性l-BDHE成立.

3.3 安全模型

本文方案的安全模型由如下一系列游戏来定义, 由敌手$\mathcal{A}$和模拟器$\mathcal{B}$共同参与进行, 如果在游戏中, 敌手的优势是可以忽略的, 则称CGAC算法在选择标记及适应性选择密文攻击下是不可区分的.具体定义如下.

(1) 初始化:在游戏开始之前, 敌手$\mathcal{A}$首先给出要攻击的客体安全标记L*以及访问控制阈值t*;

(2) 系统建立:模拟器$\mathcal{B}$收到敌手$\mathcal{A}$选取的挑战客体标记L*后, 模拟器运行系统建立算法得到系统主密钥MK和系统公开参数PK, 模拟器$\mathcal{B}$PK发送给敌手$\mathcal{A}$, 并秘密保存MK;

(3) 查询阶段1:敌手$\mathcal{A}$进行多项式次数适应性私钥提取和解密询问, 模拟器$\mathcal{B}$利用掌握的信息进行响应:

➢    私钥提取询问:敌手$\mathcal{A}$任意选择用户的安全标记L, 满足|LL*| < t*, 模拟器运行私钥提取算法得到相应于用户安全标记L的私钥sk, 并将sk返回给敌手$\mathcal{A}$;

➢    解密询问:敌手$\mathcal{A}$任意选择安全标记Li和对应的消息M的密文Ci, 要求模拟器输出Ci对应的明文M;

(4) 挑战阶段:敌手$\mathcal{A}$向模拟器$\mathcal{B}$提供两个等长的待挑战消息{m0, m1}, 模拟器随机选择β∈{0, 1}, 利用初始化阶段敌手给定的L*mβ进行加密的密文CT*=Enc(mβ, L*, PK), 并将密文CT*发送给敌手$\mathcal{A}$;

(5) 查找阶段2:与查找阶段1类似, 敌手$\mathcal{A}$仍可进行多项式次数的适应性私钥提取和解密询问, 但是敌手$\mathcal{A}$不能提交被挑战密文(CT*, L)的解密查询或满足|LL*|≥t*L的私钥提取询问;

(6) 猜测:最终敌手$\mathcal{A}$给出β值的一个猜测β'.如果$\mathcal{A}$给出了正确的猜测β=β', 则称$\mathcal{A}$赢得了游戏.其中, $\mathcal{A}$在IND-sLa-CCA游戏中的优势被定义为|Pr[β'=β]-1/2|.

定义3.若在多项式时间内, 任何敌手在上述游戏中最多进行了qK次私钥提取查询和至多qD次解密查询, 其优势仍是可以忽略的, 则称本方案分类分级数据的属性加密算法(CGAC算法)是IND-sLa-CCA安全的.

特别地, CGAC算法的安全性是抗适应性选择密文攻击(CCA), 比CCA安全性弱一些的模型是抗适应性选择明文攻击(CPA)的.在此安全模型下, 敌手不允许进行解密查询.现在已经有许多成熟方案将具有抗适应性选择明文攻击的方案转化为抗适应性选择密文攻击方案, 而仅仅需要增加一些少量运算, 如文献[22, 23]所提到的方案.因此, 本文中的方案将重点讨论抗选择明文攻击下的算法安全性.

4 对象云存储中分类分级数据的访问控制模型 4.1 访问控制方案模型

本文旨在对象存储中分类分级数据的场景下, 实现细粒度访问控制, 保护云服务用户的数据安全.对象存储中拥有海量典型的分类属性特点的数据格式, 如音频媒资等, 本文提出的访问控制模型利用这种树形拓扑结构的特点, 结合传统强制访问控制模型及基于属性的访问控制模型的优点, 实现了对象数据的细粒度访问控制.

对象数据的分类特性表示数据的从属类别, 一个大的类别可以由多个子类别的集合组成, 子类别也可划分, 层层分类构成树形拓扑的分类关系图, 具有从属关系的类别构成分类树, 分类树中的节点称做分类范畴.而分类分级特点在访问控制中的类似从属关系, 表示为其上级对下级的支配关系, 其定义如下.

定义4.定义安全级别为一个全序的集合$\mathbb{S}$ ={level1, level2, …, leveln|n$\mathbb{N}$ +}, 其中, level1level2≥…≥leveln.则对于∀i, j|ij, 有levelilevelj, 称leveli支配levelj.

定义5.分类范畴集C={C1, C2, …, Cn}是n个根节点分别为c1, 0, 0, c2, 0, 0, …, cn, 0, 0的分类树组成的集合.对于根节点为ci, 0, 0的分类树, 设其树的深度为li, 同时定义深度为k的第j个分类为ci, k, j, 则分类ci, k', j'包含ci, k, j, 表示0≤k'≤k且存在分类ci, k', j'到分类ci, k, j的唯一路径, 称为分类ci, k', j'支配ci, k, j, 记做ci, k', j'ci, k, j, 路径为p→(ci, k', j', …, ci, k, j).

图 2所示, 实线箭头指示的路径表示分类c1, k, j的从属关系, 且其被c1, 0, 0的支配路径表示为p1, k, j=(c1, 0, 0, c1, 1, 0, c1, 2, 1, …, c1, k, j).简称为分类c1, k, j的分类路径.

Fig. 2 Classified tree and path 图 2 分类树及支配关系图

访问控制策略面向对象数据, 也就是说, 对象数据是策略的客体.实现细粒度访问控制, 除把整个对象数据作为客体外, 其对象元数据的属性也作为访问控制客体考虑进策略中; 同时, 对于访问控制的主体使用者, 每个用户也有一定的属性集合, 结合BLP模型定义主客体标记.

定义6.对象数据的标记是三元组:Lo=〈A1, …, Am, {C1, …, Cn}, level〉, 同样地, 用户的标记也是一个三元组:Ls=〈A1, …, Am', {C1, …, Cn'}, level〉, 其中,

●   Am表示对象数据或用户的普通属性;

●   Cn表示对象数据或用户的分类范畴属性, 即主客体所属分类属性;

●   level是对象数据或用户的安全等级, level$\mathbb{S}$.

对于云存储服务的访问控制, 其传统的操作读和写转化为了加密上传、写和下载解密、读的过程.数据的属主根据数据分类范畴集及安全级别定义访问控制结构, 并加密数据上传至对象云存储服务器.用户访问对象数据, 若用户拥有满足细粒度访问控制策略的普通属性集和分类范畴集, 且用户的分类范畴支配数据分类属性, 用户安全级别支配数据安全级别, 则数据可被下载解密.在实际应用中, 云存储的其他操作都可以由以上两类构成, 故可将这些操作转换为上述操作的组合, 再根据细粒度访问控制的策略进行控制.

定义7.访问控制策略中的其他参与元素定义如下.

(1) 主体集合Sub={sub1, …, subi}, 表示访问操作的用户, 其中, Sub.Ls表示用户的主体标记.而Sub.Ls.A表示主体的普通属性集, Sub.Ls.C表示主体的分类范畴集, Sub.Ls.level表示主体的安全级别;

(2) 客体集合Obj={obj1, …, objj}, 表示云存储中所有对象数据, 其中, Obj.Lo表示数据的客体标记.而Obj.Lo.A表示客体的普通属性集, Obj.Lo.C表示客体的分类范畴集, Obj.Lo.level表示客体的安全级别;

(3) 访问请求操作集合R={upload, download, read, write}, 表示主体对客体的访问操作请求;

(4) 请求响应集合D={yes, no, error}, 其中, yes表示请求被允许, no表示请求被拒绝, error表示请求出错;

(5) 系统执行状态集合V={S×O×R}, 其中v∈{S×O×R}表示哪些主体以哪些操作对哪些客体进行请求, g(v)∈D表示响应结果.

根据上述定义的元素、标记, 制定访问控制系统的安全规则.

规则1.用户执行上传操作成功, 同时, 用户上传元数据成功, 当且仅当用户从主体标记定义对象数据的客体标记及访问控制结构${{{\mathit{\Gamma }}} _{t, {{L}_{o}}}}$成功, 即:指定访问用户的主体标记包含且至少t个属性支配对象数据的属性才能访问, 且用户主体标记的安全级别小于等于客体标记的安全级别.即:对于∀subS, objO, 有:

$ \begin{align} &g(v(sub, obj, upload\vee write))==D.yes\Leftrightarrow \\ &(sub.{{L}_{s}}\supseteq obj.{{L}_{o}})\wedge \left( \prod\limits_{i={{k}_{1}}}^{{{k}_{m}}}{sub.{{L}_{s}}.{{(A|C)}_{i}}}\ge obj.{{L}_{o}}.{{(A|C)}_{i}} \right)\wedge (sub.{{L}_{s}}.level\le obj.{{L}_{o}}.level) \\ \end{align} $ (1)

其中, Def表示定义操作, ${\mathit{\Gamma }} $表示访问控制结构, mt表示分类范畴集的访问控制阈值.

规则2.用户执行下载和读操作成功, 当且仅当用户的主体标记满足对象数据的访问控制结构, 即用户主体标记包含且至少t个属性支配对象数据的标记, 且用户主体标记的安全级别大于等于客体标记的安全级别.即对于∀subS, objO, 有:

$ \begin{align} &g(v(sub, obj, downoad\vee read))==D.yes\Leftrightarrow \\ &({{{\mathit{\Gamma }} }_{t, {{L}_{o}}}}sub.{{L}_{s}})\wedge (sub.{{L}_{s}}\supseteq obj.{{L}_{o}}) \\ & \wedge \left( \prod\limits_{i={{k}_{1}}}^{{{k}_{n}}}{sub.{{L}_{s}}.{{(A|C)}_{i}}}\ge obj.{{L}_{o}}.{{(A|C)}_{i}} \right) \\ & \wedge (sub.{{L}_{s}}.level\ge obj.{{L}_{o}}.level) \\ \end{align} $ (2)

其中, n表示主体标记支配客体的个数且满足|A|+|C|≥nt, ${\mathit{\Gamma }} $表示访问控制结构, t表示访问控制阈值.

4.2 访问控制系统模型

本方案以CGAC算法为核心, 结合云计算, 特别是对象云存储系统为基础进行设计, 如图 3所示.本系统模型由用户User、云存储服务CSP、主从KGC这3类参与实体构成.其中:用户的操作为提交上传、下载等文件访问请求操作及对象数据加密、解密操作; 云存储服务提供分布式对象云存储服务, 包括对象文件存储管理及元数据管理; 主从KGC为可信第三方主要功能为系统公开参数维护, 授权及私钥产生等.3种角色通过CGAC算法串联, 构成对象云存储访问控制模型, 既可以解决分类分级存储的使用场景, 又满足云存储提供商要求的存储格式, 而且可以有效地基于用户的主体标记和对象数据的客体标记解决细粒度访问控制.

Fig. 3 System structure 图 3 系统结构图

CGAC算法基于ABE方案实现上述第4.1节描述的访问控制模型, 类似文献[7], 算法由系统初始化算法Setup, KGC节点授权算法Delegate, 用户授权及密钥产生算法KeyGen, 对象数据加密算法Encrypt, 密文数据解密算法Decrypt构成.各核心算法参与访问控制规则实现过程中, 组成了如图 3所示整个系统.具体描述如下.

(0) 主KGC执行系统初始化算法Setup, 输入安全参数λ, 系统属性空间Ω包括普通属性和分类范畴属性, l为分类范畴集最大深度, 输出系统公共参数PK和主密钥MK.其中, MK由主KGC安全存储, 用以产生授权的私钥; 而包含了属性空间的PK则被公开, 参与到其他算法中;

(1) 主KGC执行KGC授权算法Delegate为新加入的从KGC授权, 分直接授权和间接授权两种情况(其中:主KGC具有最高权限, 即系统初始化时的所有分类属性集; 同时为各个从KGC授权, 通过分层的体系结构分散计算量, 减轻主KGC负担):

a)直接授权Delegate, 输入属性集A'、主密钥MK、公开参数PK, 由主KGC输出授权目标属性集A'的私钥SKA;

b)间接授权Delegate, 输入属性集A对应上级KGC私钥SKA、系统公开参数PK、目标KGC的属性集A', 其中, A'是A的子集, 输出授权目标属性集A'的私钥SKA;

(2) 用户S访问云存储服务, 提交上传操作请求;

(3) 云存储服务CSP验证TokensH(Ls||T||r):若不存在或不合法, 则重定向至KGC域, 同时产生随机数r发送; 否则, 调转至步骤(8);

(4) 用户S提交自身主体标记Ls和欲生成的对象数据客体标记Lo, 标记包含分类范畴集和安全等级;

(5) 授权KGC验证用户标记是否满足规则1, 同时进行用户私钥生成.同样分直接和间接生成两种情况:

a)直接生成KeyGen, 输入系统主密钥MK、公开参数PK以及用户的主体标记Ls, 输出与用户主体标记关联的私钥SKs;

b)间接生成KeyGen, 输入从KGC私钥SKAPK以及主体标记Ls, 输出与主体标记关联的私钥SKs;

(6) KGC将生成的用户私钥SKs及验证信息H(Ls||T||r)返回;

(7) 同时, KGC将验证结果及参数通过安全信道通知云存储服务CSP;

(8) CSP生成Tokens并返回, 同时缓存键值对Tokens和用户信息H(Ls||T||r);

(9) 用户S通过加密算法Encrypt加密对象数据, 并生成客体标记.该算法进行第4.1节描述的规则1的判定.算法Encrypt, 输入系统公开参数PK、访问控制参数t、文件加密密钥DEK、主体标记Ls、客体标记Lo和对象数据O进行访问控制:若符合规则1, 则输出密文CT和元数据Meta; 否则拒绝;

(10) 发送密文CT和元数据Meta, Tokens到CSP, CSP验证Tokens, 若合法, 则将密文文件作为对象文件存储, 同时将元数据存储在云服务元数据管理器和对象数据扩展属性中, 如XFS文件系统的XATTRs扩展属性中;

(11) 当用户S'想访问对象数据时, 同样通过授权获取私钥SKS'Tokens', 发送文件下载请求;

(12) 若用户S'执行解密算法访问数据.算法Decrypt输入系统公开参数PK、访问控制参数t、用户私钥SKs'和主体标记Ls'、密文CT和元数据Meta, 若S'满足访问控制规则2, 则输出对象数据O; 否则, 拒绝访问.

此模型中, 云存储服务不仅可以是公有云, 也可以为私有云, 此时, 从KGC可以退化融合到对象云存储的各个节点中, 用户访问时直接生成SKToken并缓存, 不需要进行验证, 从而节省部分开销.

5 分类分级数据的属性访问控制算法详述

CGAC算法结合基于属性加密机制, 实现第4.1节提出的访问控制模型中的规则, 保障云存储中用户数据安全.虽然目前已有大量的属性基加密方法, 但是其中大多数ABE算法密文大小、加解密计算复杂度随属性集增长而线性增长, 而这对于对象元数据管理及存储空间设计增加了负担, 且当属性集过大时, 过长的密文影响属性基细粒度访问控制效率, 这些缺点都极大地限制了属性加密机制在云计算中的应用.分类分级的实际应用场景特点同样影响了基于属性加密的细粒度访问控制在云计算广泛应用.

本文提出的CGAC算法在文献[17]的基础上, 结合第4.2节的访问控制系统模型, 主要解决了分类分级的属性加密和分类分级下定长密文构造两个难题, 实现了分类分级对象云存储的细粒度访问控制方案.

5.1 前提约束

CGAC算法依赖于秘密分享方案[24], 因此我们定义拉格朗日系数Δi, S, 其中, iZp; S是一个元素在Zp上的集合: ${{\Delta }_{i, S}}(x)=\prod\limits_{j\in S, j\ne i}{\frac{x-j}{i-j}}.$

为简化算法设计, 在算法描述前进行一些结构的定义, 可以将普通属性集和安全级别映射为分类树, 故下面不再区分讨论两种属性, 从而只考虑分类情况下的属性加密机制, 使运算和算法描述更简洁.

定理1.设普通属性集A={A1, …, Am}, 对每个属性Ai, 可看作深度为0的分类树的根, 参与访问控制运算.

定理2.设安全级别空间为 $\mathbb{S}$ ={level1, level2, …, leveln|level1level2≥…≥leveln, n +}, 随机选取level0, 定义分类树$\tilde{\mathbb{S}}$为根是level0, 叶子属性是leveln的分类树level0level1→…→leveln.$\tilde{\mathbb{S}}$有以下属性:深度k的节点属性为levelk, 且根节点到该节点路径为(level0, level1, …, levelk), 则由分类树的定义, 任意深度1≤ijn, 满足支配关>系levelilevelj, 故$\tilde{\mathbb{S}}\Leftrightarrow \mathbb{S}$.

于是, 根据定理1、定理2可知, 任意普通属性及安全级别可转化为分类属性, 则可将访问控制规则2中的访问控制结构定义转化为:

主体标记包含且至少有t个分类属性树中的分类范畴支配客体标记对应的分类范畴, 则可解密访问数据.

5.2 具体步骤

通过上节方法可简化系统复杂度, 故在CGAC算法中只讨论主体标记包含且至少有t个分类范畴支配客体标记的情况.下面将按照核心算法的步骤进行阐述.

(1) Setup(1λ, Ω, l)→(PK, MK)

G1是一个阶为大素数p的双线性群, 安全参数λ决定了群的大小, gG1的一个生成元.选取双线性映射: e:G1×G1G2.设标记属性空间W是普通属性集, 分类范畴集和安全级别的空间集合, 记Ω={A1, …, Am}∪{C1, …, Cn}∪{leveli|level1, …, levelk}=Ω.AΩ.CΩ.level, 其中, |Ω|表示空间集的属性个数, |Ω|=m+n+1.设通过定理1、定理2, 将Ω中的属性转化为分类范畴集的m+n+1个分类树表示云存储中的分类关系, 令C0={C1, 0, 0, …, Cm+n+1, 0, 0}为m+n+1棵分类树的根, 且每棵树的最大深度为di(0≤in), 则最大树深记为d={d1, …, dn+m, k}, 其中, 前m个深度为0:d1=…=dm=0.同时, 记所有的m+n个伴随属性V={v0, …, vm+n-1}, 且每个用户默认拥有所有伴随属性.定义一个哈希函数$H:{{\{0, 1\}}^{*}}\to Z_{p}^{*}$, 随机选取$ $, 计算g1=gα.同时, 随机选取$\alpha \in Z_{p}^{*}$, 然后, 根据分类树的深度选取${{g}_{2}}, {{{u}'}_{0}}, {{{u}'}_{1}}, ..., {{{u}'}_{2n+2m+1}}\in {{G}_{1}}$, 并且定义u1, 0=u2, 0=…=um+n+1, 0=1.

事实上, 由安全等级转化的分类树与其他分类树无区别, 因此可以将其看做是第m+n+1棵分类树, 其深度dm+n+1=k.于是, 系统生成的公开参数$ PK=\langle g, {{g}_{1}}, {{g}_{2}}, e({{g}_{1}}, {{g}_{2}}), {{\{{{{u}'}_{i}}\}}_{0\le i\le 2n+2m+1}}, {{\{{{u}_{i, j}}\}}_{0\le i\le m+n+1, 0\le j\le {{d}_{i}}}}\rangle $, 主密钥MK=α.

(2) KeyGen

KeyGen是KGC为用户产生私钥的过程, 根据方案模型中描述, 用户密钥产生包括直接生成、间接生成.

a)直接生成KeyGen(MK, PK, Ls)→SKs:

➢  随机选择m+n阶多项式q, 满足q(0)=α;

➢  若主体标记Ls的属性空间属于KGC的属性空间, 即ΩsΩKGC, 则用户的计算属性集为ΩsV.对于每一个元素cΩsV, 由定理1和定理2可知, cΩ中某个分类树中的元素, 设 ${{c}_{i}}={{c}_{{{h}_{i}},{{k}_{i}},{{j}_{i}}}}$ 为第hi个分类树中深度为ki的第ji个属性元素, 则其路径为$({{c}_{{{h}_{i}}, 0, 0}}, {{c}_{{{h}_{i}}, 1, {{j}_{1}}}}, ..., {{c}_{{{h}_{i}}, {{k}_{i}}-1, {{j}_{{{k}_{i}}-1}}}}, {{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}})$;

➢  对于每个属性ci, 随机选择$r\in Z_{p}^{*}$, 计算$s{{k}_{{{c}_{i}}}}=\langle {{a}_{i}}, {{b}_{i}}, {{\{{{d}_{i, j}}\}}_{j\ne i, 0\le j\le 2m+2n+1}}, {{\{{{e}_{h, j}}\}}_{h\ne i, 0\le j\le {{d}_{h}};h=i, {{k}_{i}} < j\le {{d}_{h}}}}\rangle $, 其中, ${{a}_{i}}=g_{2}^{q(H({{c}_{i}}))}{{({{{u}'}_{0}}{{{u}'}_{i}}\prod\nolimits_{\delta =0}^{{{k}_{i}}}{u_{i,\delta }^{{{c}_{{{h}_{i}},\delta ,\xi }}}})}^{{{r}_{i}}}},{{b}_{i}}={{g}^{{{r}_{i}}}},{{d}_{i}}=u_{j}^{'{{r}_{i}}},{{e}_{h,j}}=u_{h,j}^{{{r}_{i}}}$.特别的, 如果属性c在分类中的位置为根节点, 则k=0, 则skc中的退化为${{a}_{i}}=g_{2}^{q(H(c))}{{({{{u}'}_{0}}{{{u}'}_{i}})}^{{{r}_{i}}}}$;

➢  输出生成的Ls的私钥: $S{{K}_{s}}={{\{s{{k}_{c}}\}}_{c\in {{\Omega }_{s}}\cup V}}$;

b)间接生成KeyGen(SKA, PK, Ls)→SKs:

➢  若主体标记Ls的属性空间ΩsΩKGC, 判断其满足KGC的属性集:ΩsA, 否则返回⊥;

➢  由SK的生成算法可知属性集为A的KGC私钥SKA组成形式为SKA={skc}cAV.对于每个属性${{{c}'}_{i}}\in {{\Omega }_{s}}\cup V$, 若ci覆盖${{{c}'}_{i}}$, 随机选择$r\in Z_{p}^{*}$, 并计算:

$ \begin{align} & s{{k}_{{{{{c}'}}_{i}}}}=\langle {{{{a}'}}_{i}},{{{{b}'}}_{i}},{{\{{{{{d}'}}_{i,j}}\}}_{j\ne i,1\le j\le 2m+2n+1}},{{\{{{{{e}'}}_{h,j}}\}}_{h\ne i,0\le j\le {{d}_{h}};h=i,{{k}_{i}} < j\le {{d}_{h}}}}\rangle = \\ & \langle {{a}_{i}}\prod\nolimits_{j={{k}_{i}}}^{{{{{k}'}}_{i}}}{{{e}_{i,j}}}{{({{{{u}'}}_{0}}{{{{u}'}}_{i}}\prod\nolimits_{\delta =0}^{{{{{k}'}}_{i}}}{u_{i,\delta }^{{{{{c}'}}_{{{h}_{i}},\delta ,\xi }}}})}^{{{r}_{i}}}},{{b}_{i}}{{g}^{{{r}_{i}}}},{{\{{{d}_{i,j}}u_{j}^{'{{r}_{i}}}\}}_{j\ne i,1\le j\le 2m+2n+1}},{{\{{{e}_{h,j}}u_{h,j}^{{{r}_{i}}}\}}_{h\ne i,0\le j\le {{d}_{h}};h=i,{{{{k}'}}_{i}} < j\le {{d}_{h}}}}\rangle \\ \end{align} $

➢  输出生成的Ls的私钥: $S{{K}_{s}}={{\{s{{k}_{{{c}'}}}\}}_{{c}'\in {{\Omega }_{s}}\cup V}}$.

(3) Delegate

Delegate为主KGC为新加入的从KGC授权生成私钥的算法, 类似于KeyGen, KGC授权产生分两种情况:直接授权、间接授权.

a)直接授权Delegate(MK, PK, A')→SKA:

➢  随机选择m+n阶多项式q, 满足q(0)=α;

➢  若从KGC属性空间A'⊆Ω, 则用户的计算属性集为A'∪V.对于每一个元素cA'∪V, 由定理1和

定理2可知, cΩ中某个分类树中的元素, 设${{c}_{i}}={{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}}$为第hi个分类树中深度为ki的第ji个元素, 则其路径为$({{c}_{{{h}_{i}}, 0, 0}}, {{c}_{{{h}_{i}}, 1, {{j}_{1}}}}, ..., {{c}_{{{h}_{i}}, {{k}_{i}}-1, {{j}_{{{k}_{i}}-1}}}}, {{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}});$

➢  对于每个属性ci, 随机选择$r\in Z_{p}^{*}$, 计算$s{{k}_{{{c}_{i}}}}=\langle {{a}_{i}}, {{b}_{i}}, {{\{{{d}_{i, j}}\}}_{j\ne i, 0\le j\le 2m+2n+1}}, {{\{{{e}_{h, j}}\}}_{h\ne i, 0\le j\le {{d}_{h}};h=i, {{k}_{i}} < j\le {{d}_{h}}}}\rangle $, 其中, ${{a}_{i}}=g_{2}^{q(H({{c}_{i}}))}{{({{{{u}'}}_{0}}{{{{u}'}}_{i}}\prod\nolimits_{\delta =0}^{{{k}_{i}}}{u_{i,\delta }^{{{c}_{{{h}_{i}},\delta ,\xi }}}})}^{{{r}_{i}}}},{{b}_{i}}={{g}^{{{r}_{i}}}},{{d}_{i,j}}=u_{j}^{'{{r}_{i}}},{{e}_{h,j}}=u_{h,j}^{{{r}_{i}}}$;

➢  输出生成的Ls的私钥:SKA'={skc}cA'V;

b)间接授权Delegate(SKA, PK, $\mathcal{A}$'⊆$\mathcal{A}$)→SKA':

➢  若从KGC属性空间A'⊆Ω, 判断其满足上级KGC的属性集:A'⊆A, 否则返回⊥;

➢  由SK的生成算法可知, 属性集为A的KGC私钥SKA组成形式为SKA={skc}cAV.对于每个属性${{{c}'}_{i}}\in {A}'\cup V$, 随机选择$r\in Z_{p}^{*}$, 并计算:

$ \begin{align} & s{{k}_{{{{{c}'}}_{i}}}}=\langle {{{{a}'}}_{i}},{{{{b}'}}_{i}},{{\{{{{{d}'}}_{i,j}}\}}_{j\ne i,1\le j\le 2m+2n+1}},{{\{{{{{e}'}}_{h,j}}\}}_{h\ne i,0\le j\le {{d}_{h}};h=i,{{k}_{i}} < j\le {{d}_{h}}}}\rangle \\ & =\langle {{a}_{i}}\prod\nolimits_{j={{k}_{i}}}^{{{{{k}'}}_{i}}}{{{e}_{i,j}}}{{({{{{u}'}}_{0}}{{{{u}'}}_{i}}\prod\nolimits_{\delta =0}^{{{{{k}'}}_{i}}}{u_{i,\delta }^{{{{{c}'}}_{{{h}_{i}},\delta ,\xi }}}})}^{{{r}_{i}}}},{{b}_{i}}{{g}^{{{r}_{i}}}},{{\{{{d}_{i,j}}u_{j}^{'{{r}_{i}}}\}}_{j\ne i,1\le j\le 2m+2n+1}},{{\{{{e}_{h,j}}u_{h,j}^{{{r}_{i}}}\}}_{h\ne i,0\le j\le {{d}_{h}};h=i,{{{{k}'}}_{i}} < j\le {{d}_{h}}}}\rangle ; \\ \end{align} $

➢  输出生成的Ls的私钥:SKA'={skc'}c'A'V.

(4) Encrypt(PK, t, DEK, Ls, Lo, O)→(CT, Meta) or (⊥)

为保证对象数据机密性和完整性, 用户将数据加密后存储至云服务CSP.由于属性加密算法不适用于直接加密文件, 故通常的做法是:使用密钥DEK及对称加密算法加密数据生成密文文件EDEK(File), 再使用CGAC算法加密该DEK, 得到对称密钥密文ECGAC(DEK).访问用户通过依次解密密钥密文和密文文件从而访问数据.

随机选取DEKG2.令ΩsΩo分别表示主客体的属性空间.

根据用户的主体标记Ls和访问控制阈值t判断对象数据的客体标记Lo, 如果不满足下列关系之一, 则返回⊥:普通属性集Lo.ALs.A; 分类范畴集Lo.CLs.C; 安全等级Lo.levelLs.level; 阈值1≤t≤|Lo.A|+|Lo.C|, 其中, t表示用户主体标记有t个支配客体标记方可访问数据.

接着, 随机选择$s\in Z_{p}^{*}$和伴随属性的前m+n+1-tVt={v0, …, vm+n-t}.对于每一个分类属性cLo.C, 设其是第

j棵树种深度为k的第×个分类, 则分类属性c其路径为P=(cj, 0, 0, …, cj, k, ×).按如下方式计算:

$ {{E}_{CGAC}}(DEK)=({{E}_{1}}, {{E}_{2}}, {{E}_{3}}), 其中, \\ {{E}_{1}}=DEK\cdot e{{({{g}_{1}}, {{g}_{2}})}^{s}}, {{E}_{2}}={{g}^{s}}, {{E}_{3}}={{\left( {{{{u}'}}_{0}}\prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}}}{\left( {{{{u}'}}_{j}}\prod\limits_{\delta =0}^{{{k}_{j}}}{u_{j, \delta }^{{{c}_{j, \delta, \xi }}}} \right)} \right)}^{s}} $ (3)

输出密文ECGAC(DEK)和EDEK(File), 定义密文文件的元数据信息Meta包含客体标记LoECGAC(DEK), 密文文件存储格式如下:(Meta, Data)=((OID, Lo, ECGAC, …), E(PT)), 其中, OID表示元数据中的对象数据唯一ID.

(5) Decrypt(PK, SKs', Ls', CT, Meta, t)→O or ⊥

用户S'申请访问对象数据, 云服务CSP验证用户提交的主体标记Ls', 如果满足规则2, 则返回密文数据CT.用户获取密文后, 同样首先调用Decrypt算法, 如果用户主体标记Ls'满足访问控制规则2, 说明用户S'拥有足够多的属性支配客体的相应属性, 因此存在一个子集WS'={v|vw, wΩ', vΩo}, 满足|ΩS'|=t, 且当满足Ls'.levelLo.level时, 主体标记的属性集中有t个分类范畴(普通属性和分类属性、安全等级)支配客体标记, 使得用户S'可以使用自己的私钥$S{{K}_{{{s}'}}}={{\{s{{k}_{i}}\}}_{i\in {{\Omega }_{{{s}'}}}\cup V}}$解密密文ECGAC(DEK)获取密钥DEK, 然后, 使用对称密钥解密密文数据获得原始明文.

同时, 对于每一个Ωo中的分类属性${{c}_{i}}={{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}}$, 其根路径为$({{c}_{{{h}_{i}}, 0, 0}}, {{c}_{{{h}_{i}}, 1, {{j}_{1}}}}, ..., {{c}_{{{h}_{i}}, {{k}_{i}}-1, {{j}_{{{k}_{i}}-1}}}}, {{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}})$.设${{{c}'}_{i}}={{c}_{{{h}_{i}}, {{{{k}'}}_{i}}, {{{{j}'}}_{i}}}}$是主体属性中支配ci的属性, 则其路径同样从根$ $开始为$({{c}_{{{h}_{i}}, 0, 0}}, {{c}_{{{h}_{i}}, 1, {{j}_{1}}}}, ..., {{c}_{{{h}_{i}}, {{{{k}'}}_{i}}-1, {{{{j}'}}_{{{k}_{i}}-1}}}}, {{{c}'}_{i}})$.满足以下公式:

$ {{c}_{{{h}_{i}}, \delta, {{j}_{\delta }}}}={{{c}'}_{{{h}_{i}}, \delta, {{j}_{\delta }}}}, \ 1\le \delta \le {{{k}'}_{i}} $

已知密文ECGAC(DEK)=(E1, E2, E3), 根据用户私钥计算下列等式:

$ d_{i,0}^{''}={{{{a}'}}_{i}}\cdot \prod\limits_{\delta ={{{{k}'}}_{i}}+1}^{{{k}_{i}}}{e_{i,\delta }^{'{{c}_{{{h}_{i}},\delta ,{{j}_{\delta }}}}}} $ (4)

D1, D2为解密算子, 同时计算下列等式:

$ {{D}_{1}}=\prod\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{\left( d_{i,0}^{''}\cdot \prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}},j\ne i}{\left( {{{{d}'}}_{i,j}}\cdot \prod\limits_{\delta =1}^{{{k}_{i}}}{e_{i,\delta }^{'{{c}_{{{h}_{j}},\delta ,{{j}_{\delta }}}}}} \right)} \right)}^{{{\Delta }_{H(c),{{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} $ (5)
$ {{D}_{2}}=\prod\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{({{{{b}'}}_{i}})}^{{{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} $ (6)

DEK可以计算解密出:

$ DEK={{E}_{1}}\cdot e\left( {{E}_{3}}, {{D}_{2}} \right)/e\left( {{E}_{2}}, {{D}_{1}} \right) $ (7)

然后, 利用解压的DEK解密密文文件得到数据:

$ File={{D}_{DEK}}\left( {{E}_{DEK}}\left( File \right) \right) $ (8)
6 算法证明及效率分析 6.1 正确性证明

假设用户和数据的标记满足访问控制规则2, 即:主体标记Ls'的属性空间任选t-1个普通属性和分类属性支配客体中属性且Ls'.levelLo.level, 组成t个元素Ωs', 则有:

$ \left. \begin{align} & {{D}_{1}}=\prod\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{\left( d_{i,0}^{''}\cdot \prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}},j\ne i}{\left( {{{{d}'}}_{i,j}}\cdot \prod\limits_{\delta =1}^{{{k}_{j}}}{e_{i,\delta }^{'{{c}_{{{h}_{j}},\delta ,{{j}_{\delta }}}}}} \right)} \right)}^{{{\Delta }_{H(c),{{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \\ & =\prod\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{\left( g_{2}^{q(H(c))}{{({{{{u}'}}_{0}})}^{{{r}_{i}}}}\cdot \prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}}}{\left( {{{{d}'}}_{i,j}}\cdot \prod\limits_{\delta =0}^{{{k}_{j}}}{e_{i,\delta }^{'{{c}_{{{h}_{j}},\delta ,{{j}_{\delta }}}}}} \right)} \right)}^{{{\Delta }_{H(c),{{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \\ & =g_{2}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{q(H(c)){{\Delta }_{H(c),{{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}\cdot {{\left( {{{{u}'}}_{0}}\cdot \prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}}}{\left( {{{{u}'}}_{j}}\cdot \prod\limits_{\delta =0}^{{{k}_{j}}}{u_{j,\delta }^{{{c}_{{{h}_{j}},\delta ,{{j}_{\delta }}}}}} \right)} \right)}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c),{{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \\ \end{align} \right\} $ (9)

${{E}_{k}}={{{u}'}_{0}}\cdot \prod\limits_{j\in {{\Omega }_{o}}\cup {{V}_{t}}}{\left( {{{{u}'}}_{j}}\cdot \prod\limits_{\delta =0}^{{{k}_{j}}}{u_{j, \delta }^{{{c}_{{{h}_{j}}, \delta, {{j}_{\delta }}}}}} \right)}$, 则D1可简化为

$ {{D}_{1}}=g_{2}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{q(H(c)){{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}\cdot {{({{E}_{k}})}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}}=g_{2}^{\alpha }\cdot {{({{E}_{k}})}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} $ (10)

对于已经获得的密文数据, 有:

$ \begin{align} &{{E}_{1}}\cdot \frac{e({{E}_{3}}, {{D}_{2}})}{e({{E}_{2}}, {{D}_{1}})}=DEK\cdot \frac{e{{({{g}_{1}}, {{g}_{2}})}^{s}}\cdot e\left( {{({{E}_{k}})}^{s}}, \prod\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{({{{{b}'}}_{i}})}^{{{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \right)}{e\left( {{g}^{s}}, g_{2}^{\alpha }\cdot {{({{E}_{k}})}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \right)} \\ &\text{ }=DEK\cdot \frac{e{{({{g}_{1}}, {{g}_{2}})}^{s}}\cdot e\left( {{({{E}_{k}})}^{s}}, {{(g)}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \right)}{e{{(g, g_{2}^{\alpha })}^{s}}\cdot e\left( {{g}^{s}}, {{({{E}_{k}})}^{\sum\limits_{i\in {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}{{{r}_{i}}\cdot {{\Delta }_{H(c), {{\Omega }_{{{s}'}}}\cup {{V}_{t}}}}(0)}}} \right)} \\ &\text{ }=DEK. \\ \end{align} $
6.2 安全性证明

本节通过将层次分类分级属性访问控制算法规约至l-BDHE假设, 将证明第5节给出的CGAC算法的选择明文安全性.同样, 为简化安全证明, 假设访问控制策略中, 主体和客体的安全标记都通过定理1、定理2, 转化为至少有t个分类属性支配客体即可访问数据的情况下, 则本节给出该模型的安全性证明.

定理3.设双线性群(G1, G2)内阶为大素数p的判定性l-BDHE假设是成立的, 则本方案CGAC算法是IND-sLa-CPA安全的, 即:在挑战攻击游戏中, 敌手的优势是可忽略的.

证明:设存在一个多项式时间t内的敌手$\mathcal{A}$可以通过最多q次私钥提取查询, 以不可忽略优势ε攻破本方案的IND-sLa-CPA安全, 则可构造概率多项式时间的算法, 以概率不小于ε'、时间不多于t'的优势攻破判定性l-BDHE.我们可以构造一个模拟器$\mathcal{B}$在敌手$\mathcal{A}$的帮助下, 以同样的优势攻破群G中判定性l-BDHE问题.

首先, 模拟器$\mathcal{B}$选定l-BDHE问题的相关参数, 生成挑战元组(g, e(g, g), G1, G2, h, y1, …, yl, yl+2, …, y2l, T), 其中, gG1的生成元, $x\in \mathbb{Z}_{p}^{*}$.定义 ${{y}_{i}}={{g}^{{{x}^{i}}}}$ , 为兼容一般性, 其中, $ $.并且Tl-BDHE解${{y}_{0}}={{g}^{{{x}^{0}}}}=g$G2中的随机元素$e({{g}^{{{x}^{l+1}}}}, h)=e({{y}_{l+1}}, h)$.当Tl-BDHE解时, 模拟器$\mathcal{B}$输出1;否则, T是随机数, 输出0.因此, 模拟器$\mathcal{B}$扮演游戏中的挑战者, 并与敌手$\mathcal{A}$进行如下交互.

●初始化

在游戏开始之前, 敌手$\mathcal{A}$首先给出要攻击的主体安全标记${{L}^{*}}=\langle A_{1}^{*}, ..., A_{m}^{*}, \{C_{1}^{*}, ..., C_{n}^{*}\}, leve{{l}^{*}}\rangle $以及访问控制阈值t*.

●系统建立

模拟器$\mathcal{B}$收到敌手$\mathcal{A}$选取的挑战主体标记L*, 根据定理1、定理2, 将$ $level*转化合并为分类属性$\bigcup\nolimits_{i=1}^{m}{{{A}^{*}}}, \bigcup\nolimits_{i=1}^{n}{{{C}^{*}}}$.设所有的深度为{k1, …, km+n|0≤kil}分类属性树记做空间Ω*, 则|Ω*|=m+n, 且$ $相应地, 分类属性$c_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}^{*}$是第hi个分类属性树中深度为ki的第ji个属性, 其根为$c_{{{h}_{i}}, 0, 0}^{*}$, 则该属性的路径定义为

$ p_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}^{*}=(c_{{{h}_{i}}, 0, 0}^{*}, ..., c_{{{h}_{i}}, {{k}_{i}}-1, {{j}_{{{i}'}}}}^{*}, c_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}^{*}). $

模拟器$\mathcal{B}$首先生成判定性l-BDHE问题相关的系统参数, 为简化表示, 令2n+2m+1=l生成伴随属性集$\bigcup\nolimits_{i=1}^{m+n}{C_{{{k}_{i}}}^{*}}$其中, ${{v}_{i}}\in \mathbb{Z}_{p}^{*}$v1, …, vm+n-1互不相同, 全属性空间为W V.在一次访问请求中, m+n-t*伴随属性被选中参与运算, 表示为$V_{t}^{*}=\{{{v}_{1}}, {{v}_{2}}, ..., {{v}_{m+n-{{t}^{*}}}}\}.$其次, 模拟器$\mathcal{B}$选择随机数$ $, 隐含地令α=α'+xl, 设置g1=gα=gα'×yl, g2=gx.进一步, $\mathcal{B}$随机选择${{\alpha }_{i}}\in \mathbb{Z}_{p}^{*}(0\le i\le l)$, 计算${{{{u}'}}_{0}}={{g}^{{{\alpha }_{0}}}}\prod\nolimits_{i\in {{\Omega }^{*}}\cup V_{t}^{*}}{u_{i}^{'-1}}$${{{u}'}_{i}}={{g}^{{{\alpha }_{i}}}}\cdot {{y}_{l-i+1}}, 1\le i\le l$.最终, $\mathcal{B}$随机选择${{\theta }_{i, j}}\in \mathbb{Z}_{p}^{*}$, 令${{u}_{i, j}}={{g}^{{{\theta }_{i, j}}}}$, 其中, ui, 0=1.

计算上述参数完毕后, 模拟器$\mathcal{B}$将模拟生成的系统参数$(g, e, {{G}_{1}}, {{G}_{2}}, {{g}_{1}}, {{g}_{2}}, {{\{{{{u}'}_{i}}\}}_{0\le i\le 2n+2m+1}}, {{\{{{u}_{i, j}}\}}_{0\le i\le m+n+1, 0\le j\le {{d}_{i}}}})$作为公钥发送给敌手$\mathcal{A}$.注意:本步中所有参数均为G中独立均匀分布.

●查询阶段1

在此阶段, 敌手$\mathcal{A}$可以进行多项式次数的适应性私钥提取询问, 模拟器$\mathcal{B}$回答相应的询问.

设敌手$\mathcal{A}$对属性集Ω提交不超过q次私钥查询, 且提交的属性集Ω*不能通过访问控制结构, 即|ΩΩ*| < t*.模拟器$\mathcal{B}$构造一个私钥SK通过KeyGen过程后传输给$\mathcal{A}$.当模拟器接受到一次私钥查询时, $\mathcal{B}$构造Ω的一个属性子集${\mathit{\Gamma }} $, 使得${\mathit{\Gamma }} $中的属性支配Ω*中的属性, 即 ${\mathit{\Gamma }} =(\Omega \cap {{\Omega }^{*}})\cup V_{t}^{*}$.同样, 定义${\mathit{\Gamma }} $', 使得 ${\mathit{\Gamma }} \subseteq {{\mathit{\Gamma }} }'\subseteq {{\Omega }^{*}}\cup V_{t}^{*}$, 且|${\mathit{{\mathit{\Gamma }} }} $'|=m+n, 令S=${\mathit{\Gamma }} $'∪{0}.对于每个属性c${\mathit{\Gamma }} $', 模拟器随机选择w, 令q(H(c))=w.当q(0)=α=α'+xl时, 利用插值公式可唯一确定m+n次多项式函数q(z), 于是, 模拟器可以对每一个分类属性cΩV按照如下公式计算其对应的私钥skc:

(1) 对于每个属性${{c}_{i}}={{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}}\in {{\mathit{\Gamma }} }'$, $\mathcal{B}$随机选取${{{r}'}_{i}}\in \mathbb{Z}_{p}^{*}$, 令${{r}_{i}}={{x}^{i}}+{{{r}'}_{i}}$, 结合q(H(ci))=wi, 计算私钥如下:

$ s{{k}_{{{c}_{i}}}}=\langle {{a}_{i}}, {{b}_{i}}, {{\{{{d}_{i, j}}\}}_{j\ne i, 0\le j\le 2m+2n+1}}, {{\{{{e}_{h, j}}\}}_{h\ne i, 0\le j\le {{d}_{h}};h=i, {{k}_{i}} < j\le {{d}_{h}}}}\rangle $ (11)

其中, 第1部分:

$ \left. \begin{align} & {{a}_{i}}=g_{2}^{q(H({{c}_{i}}))}{{({{{{u}'}}_{0}}{{{{u}'}}_{i}}\prod\nolimits_{\delta =1}^{{{k}_{i}}}{u_{i,\delta }^{{{c}_{{{h}_{j}},\delta ,\xi }}}})}^{{{r}_{i}}}}=(g_{2}^{{{w}_{i}}}){{({{g}^{{{\alpha }_{0}}}}\prod\nolimits_{i\in {{\Omega }^{*}}\cup V_{t}^{*}}{u_{i}^{'-1}\cdot {{{{u}'}}_{i}}}\cdot \prod\nolimits_{\delta =1}^{{{k}_{i}}}{{{({{u}_{i,\delta }})}^{{{c}_{{{h}_{i}},\delta ,\xi }}}}})}^{{{x}^{i}}+{{{{r}'}}_{i}}}} \\ & =(g_{2}^{{{w}_{i}}}){{({{{{u}'}}_{0}}{{{{u}'}}_{i}})}^{{{{{r}'}}_{i}}}}{{\left( {{g}^{{{\alpha }_{0}}+\sum\limits_{\delta =1}^{{{k}_{j}}}{{{\theta }_{j,\delta }}{{c}_{j,\delta ,\xi }}}}}\prod\nolimits_{j\in {{\Omega }^{*}}\cup V_{t}^{*},j\ne i}{u_{i}^{'-1}} \right)}^{{{x}^{i}}}} \\ \end{align} \right\} $ (12)

第2部分: ${{b}_{i}}={{g}^{{{r}_{i}}}}={{g}^{{{{{r}'}}_{i}}+{{x}^{i}}}}={{y}_{i}}\cdot {{g}^{{{{{r}'}}_{i}}}}$; 第3和第4部分易得: ${{d}_{i,j}}=u_{j}^{'{{r}_{i}}}={{({{{{u}'}}_{j}})}^{{{{{r}'}}_{i}}+{{x}^{i}}}},{{e}_{h,j}}=u_{h,j}^{{{r}_{i}}}={{({{g}^{{{{{r}'}}_{i}}}}\cdot {{y}_{i}})}^{{{\theta }_{h,j}}}}.$

注意, 模拟构造$s{{k}_{{{c}_{i}}}}$的困难之处在于其包含模拟器未知的$ $, 由于划分了${\mathit{\Gamma }} $, ${\mathit{\Gamma }} $'和S这3个集合, 对于ci${\mathit{\Gamma }} $', ai中的因子${{({{{u}'}_{0}}{{{u}'}_{i}})}^{{{x}^{i}}}}$可以消掉未知的${{g}^{{{x}^{l+1}}}}.$

(2) 对于每个属性${{c}_{i}}={{c}_{{{h}_{i}}, {{k}_{i}}, {{j}_{i}}}}\notin {{\mathit{\Gamma }} }'$, 也就是说$c\notin {{\Omega }^{*}}\cup V_{t}^{*}$, 可以通过拉格朗日插值公式计算:

$ q(H({{c}_{i}}))=\sum\nolimits_{{c}'\in {{\mathit{\Gamma }} }'}{{{\Delta }_{{c}', S}}(H({{c}_{i}}))}\cdot q(H({c}'))+{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot q(0) $ (13)

$\mathcal{B}$随机选取${{{r}'}_{i}}\in \mathbb{Z}_{p}^{*}$, 令${{r}_{i}}={{{r}'}_{i}}-{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot {{x}^{i}}$, 计算私钥如下.

其中, 第1部分(注意, 此时${{{u}'}_{j}}={{g}^{{{\theta }_{j}}}}$):

$ \left. \begin{align} &{{a}_{i}}=g_{2}^{\sum\nolimits_{{{c}_{j}}\in {{\mathit{\Gamma }} }'}{{{\Delta }_{{c}', S}}(H({{c}_{i}}))}\cdot {{w}_{j}}+{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot q(0)}\cdot {{({{{{u}'}}_{0}}{{{{u}'}}_{i}}\prod\nolimits_{\delta =1}^{{{k}_{i}}}{u_{i, \delta }^{{{c}_{{{h}_{i}}, \delta, \xi }}}})}^{{{{{r}'}}_{i}}-{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot {{x}^{i}}}} \\ &=g_{2}^{\sum\nolimits_{{{c}_{j}}\in {{\mathit{\Gamma }} }'}{{{\Delta }_{{c}', S}}(H({{c}_{i}}))}\cdot {{w}_{j}}+{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot {\alpha }'}{{({{{{u}'}}_{0}}{{{{u}'}}_{i}})}^{{{r}'}}}{{({{{{u}'}}_{0}})}^{-{{\Delta }_{0, S}}(H({{c}_{i}}))\cdot {{x}^{i}}}}{{({{y}_{i}})}^{-{{\Delta }_{0, S}}(H({{c}_{i}})){{\alpha }_{i}}}} \end{align} \right\} $ (14)

注意:此时对于ci${\mathit{\Gamma }} $', ai中的因子${{({{g}_{2}})}^{q(0)}}{{({{{u}'}_{i}})}^{{{x}^{i}}}}$, 可以消掉未知的 ${{g}^{{{x}^{l+1}}}}.$

第2部分: ${{b}_{i}}={{g}^{{{r}_{i}}}}={{g}^{{{{{r}'}}_{i}}+{{x}^{i}}}}={{y}_{i}}\cdot {{g}^{{{{{r}'}}_{i}}}}$; 第3和第4部分易得: ${{d}_{i,j}}=u_{j}^{'{{r}_{i}}}={{({{{{u}'}}_{j}})}^{{{{{r}'}}_{i}}+{{x}^{i}}}},{{e}_{h,j}}=u_{h,j}^{{{r}_{i}}}={{({{u}_{j}})}^{{{{{r}'}}_{i}}+{{x}^{i}}}}.$

因此, 模拟器$\mathcal{B}$可以计算构造|ΩΩ*| < t*的身份私钥, 其分发过程与原有系统模式相同.

●挑战阶段

敌手$\mathcal{A}$提交两个相同长度的挑战明文m0m1, 以及属性空间W.模拟器$\mathcal{B}$随机抛一枚硬币, 即, 随机选择β∈{0, 1}, 并构造返回mβ的密文给敌手$\mathcal{A}$:

$ CT\to \left( {{m}_{\beta }}\cdot T\cdot e({{y}_{1}}, {{h}^{{{\alpha }'}}}), h, {{h}^{{{\alpha }_{0}}+\sum\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{\sum\limits_{\delta =1}^{{{k}_{j}}}{{{\theta }_{j, \delta }}{{c}_{j, \delta, \xi }}}}}} \right) $ (15)

我们将讨论:当Tl-BDHE的挑战时, CTmβ的有效加密; 当T是随机时, CT是一个随机信息的加密.

首先, 注意:由于hl-BDHE问题中的均匀分布, 故第2部分的随机性是均匀分布的.敌手$\mathcal{A}$只得到与h相关的CT.然后计算当h=gc的第3部分的正确形式:

$ {{h}^{{{\alpha }_{0}}+\sum\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{\sum\limits_{\delta =1}^{{{k}_{j}}}{{{\theta }_{j,\delta }}{{c}_{j,\delta ,\xi }}}}}}={{\left( {{g}^{{{\alpha }_{0}}}}\cdot \prod\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{(u_{j}^{'-1})}\prod\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{({{{{u}'}}_{j}})}{{g}^{\sum\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{\sum\limits_{\delta =1}^{{{k}_{j}}}{{{\theta }_{j,\delta }}{{c}_{j,\delta ,\xi }}}}}} \right)}^{c}} \\ ={{\left( {{{{u}'}}_{0}}\cdot \prod\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{\left( {{{{u}'}}_{j}}\cdot \prod\limits_{\delta =0}^{{{k}_{j}}}{u_{j,\delta }^{{{c}_{j,\delta ,\xi }}}} \right)} \right)}^{c}} $ (16)

最后, 针对同样的c, 可以得到:

$ e{{(g, h)}^{{{x}^{l+1}}}}\cdot e({{y}_{1}}, {{h}^{{{\alpha }'}}})={{(e({{y}_{1}}, {{y}_{l}})\cdot e({{y}_{1}}, {{g}^{{{\alpha }'}}}))}^{c}}=e{{({{y}_{1}}, {{y}_{l}}\cdot {{g}^{{{\alpha }'}}})}^{c}}=e{{({{g}_{1}}, {{g}_{2}})}^{c}} $ (17)

因此, 对比上述CT中的未知元素T, 对于选定的属性集Ω*, 当 $T=e{{(g,h)}^{{{x}^{l+1}}}}$ 时, $\mathcal{B}$可以构造mβ的有效密文:

$ CT=\left( {{m}_{\beta }}\cdot e{{({{g}_{1}}, {{g}_{2}})}^{c}}, {{g}^{c}}, {{\left( {{{{u}'}}_{0}}\cdot \prod\limits_{j\in {{\Omega }^{*}}\cup V_{t}^{*}}{\left( {{{{u}'}}_{j}}\cdot \prod\limits_{\delta =0}^{{{k}_{j}}}{u_{j, \delta }^{{{c}_{j, \delta, \xi }}}} \right)} \right)}^{c}} \right) $ (18)

T是随机数时, 则CT是一个随机信息的加密.

●查找阶段2

与查找阶段1类同, 模拟器$\mathcal{B}$相应的响应敌手$\mathcal{A}$的查询.

●猜测

最终, 敌手$\mathcal{A}$输出猜测的β', 若β=β'模拟器$\mathcal{B}$输出1, 即, 猜测 $T=e{{(g,h)}^{{{x}^{l+1}}}}$ ; 否则, 模拟器$\mathcal{B}$输出0, 表明它认为TG2中的随机元素.

●概率分析

上述挑战-应答游戏成功, 即, 挑战者解决判定性l-BDHE问题的成功概率分析如下.

(1) 如果模拟器$\mathcal{B}$的输出为1, 即$T=e{{(g, h)}^{{{x}^{l+1}}}}$, 挑战密文CT是对mβ的有效密文, 敌手$\mathcal{A}$的环境被完美模拟, 因此, 敌手有ε概率成功解密, $\left| \Pr [\beta ={\beta }']-\frac{1}{2} \right|\ge \varepsilon ;$

(2) 如果模拟器$\mathcal{B}$的输出为0, 即TG2中的随即元素, 敌手$\mathcal{A}$不能得到有关β的任何有效信息, 因此, 敌手有ε概率成功解密, $\left| \Pr [\beta \ne {\beta }']-\frac{1}{2} \right|=0.$

综上, 模拟器$\mathcal{B}$可以以不可忽略的优势解决l-BDHE问题:

$ |\Pr [\mathcal{B}=1|T=e{{(g, h)}^{{{x}^{l+1}}}}]-\Pr [\mathcal{B}=0|T\in Random]|\ge \left| \left( \frac{1}{2}+\varepsilon \right)-\frac{1}{2} \right|=\varepsilon $ (19)

证毕.

6.3 效率分析

本节中, 我们将分别将CGAC算法与已有的使用层次化结构的属性基加密算法、已有的定长密文属性加密算法进行效率和安全性对比.其中, 计算开销主要由加密运算和解密运算组成, 而通信开销以及存储空间长度需要分析密文长度、私钥空间.除此之外, 本文还给出了方案之间的访问控制结构和安全性对比, 具体见表 2.

Table 2 Comparison with the proposed scheme and existing schemes 表 2 本文算法与已有方案之间的对比

在上述性能比较中, 加密、解密分别表示加密解密的计算复杂度, 密文长度和最长私钥长度表示存储的空间复杂度, 安全表示论文中所给出的方案安全性证明, 特点及控制结构分别表示论文方案的特点和其访问控制的结构.设P表示最耗时的一个双线性对运算时间, E表示相对次耗时的一个幂指运算时间, G1G2分别表示所在群中元素的长度.同时, 在表格中我们定义空间的所有属性个数为n, 层次属性的最大深度为l, 用户可以解密数据的属性个数阈值t, 则(t-n)阈值表示访问控制结构为n个属性中存在t个属性满足即可访问.

通过对比本文所提出的方案, 相较于文献[26, 27], 其密文长度、加解密运算所需的双线性对运算与系统属性个数相关, 本文方案所带来的计算开销及存储空间都将大大缩小.同时, 与其他定长方案[25, 26]相比, 本文的访问控制结构比较灵活, 同时, 加解密的计算开销较小.此外, 本文方案同样满足CPA安全性.但需要指出的是:与其他方案相比, 由于本方案将属性空间相关参数嵌入私钥, 使计算后的密文空间达到固定长度, 因而产生的私钥长度较大, 带来相应的存储空间开销.尽管如此, 本方案通过牺牲用户的私钥存储空间, 达到了降低访问通信带宽开销、提高计算效率的目的.因为在实际运用的网络环境中, 系统间通信带宽通常成为制约的瓶颈, 提高维护通信带宽的成本代价又非常昂贵, 而相对的存储的增加和维护十分容易, 以SS512的群为例, 100个分类属性和最大深度为30的私钥存储开销最大仅为20M, 因此, 本文方案是可行的.

7 系统实现与结果分析 7.1 系统设计

Openstack Swift是一种典型并且开源的对象存储, 其作为云基础服务Openstack的核心子项目之一, 为其他子项目提供存储服务.Swift利用便宜的基础硬件存储, 通过软件层面的算法, 引入一致性散列技术实现数据冗余性和均衡分布, 同时支持多租户模式、容器和对象读写操作, 适用于存储互联网应用场景下的非结构化数据.

7.1.1 访问控制中间件

Swift利用Proxy Server模块对外提供标准的基于HTTP的REST接口, 对账户、容器和对象进行CRUD操作.而在Swift内部, 它利用Python的WSGI模型(Web services gateway interface)和Python Paste框架构建, 根据Pipeline配置中的调用顺序, 依次通过中间件处理Swift的请求链.中间件类似于洋葱结构包裹在Swift核心模块之上, 请求会依次通过各个加载中间件, 我们可以定制自己的中间件组件, 处理进出中间件的响应请求, 在到达核心Swift之前修改其中的请求数据, 或者直接交给下层中间件处理, 也可以在本层直接响应结果.

图 4所示, 本文的方案是将访问控制策略通过Swift中间件实现, 用户通过REST接口向proxyserver提交访问请求.其后, 请求被交给访问控制中间件处理.访问控制中间件从请求中获取Token, 从而根据第4.2节中访问控制模型中的流程验证用户身份并获取主体标记; 同时, 从请求中获取客体标记, 利用第4.1节访问控制规则1和规则2进行判定:如果不满足规则要求, 则直接返回响应状态码“403 Forbidden”; 否则, 交给下层中间件进一步进行下个逻辑的处理.

Fig. 4 Process flows of Swift middle wares 图 4 Swift中间件处理流程

7.1.2 系统实现

本节主要基于Openstack Swift介绍第4.2节中访问控制模型中的对象云存储的具体实现, 分别对模型中的3个参与者进行详细描述.

(1) 对于访问控制模型中的云存储服务CSP, 主要实现对象存储如图 5所示, 其中:访问决策模块进行访问控制策略的判定由Swift中间件实现, 其编写规则参照WSGI标准; 标记解析模块负责主客体标记的解析, 通过Token从Keystone获取用户的主体标记, 从元数据管理模块获取客体的标记, 交给访问控制决策模块分析; 当用户满足访问控制规则, 由访问决策模块交给后端控制模块Controller, 通过一致性散列技术完成相应的对象数据或元数据的CURD操作.

Fig. 5 Implementations of access control system for objectstorage 图 5 对象云存储访问控制系统实现

需要特别指出的是:由于Swift的元数据最大长度默认为256B, 元数据越短, 服务器可以缓存更多的元数据, 保持较高的响应速度; 而当元数据长度增长时, 会消耗大量硬件计算资源和存储资源, 使云存储服务的性能急剧降低, 因此, 固定长度的密文可以作为元数据存储.当用户进行上传操作时, Proxy Server通过REST接口获取到用户POST的数据客体标记, 及通过CGAC算法加密的固定长度的密文后, 将上述信息作为对象数据密文的元数据存储.

另外, 由于采用无状态REST协议, 代理服务proxy server和存储结点都可以横向扩展来实现负载均衡, 避免单点故障, 此时, 访问控制中间件都需要配置并加载在proxy server的pipeline中.同时还需要修改Swift的Cache集群结构, 利用一致性散列分配地址空间, 缓存Token的验证和主体标记.

(2) 访问控制模型中的主从KGC则由Keystone身份认证模块负责实现, 进行用户的身份认证管理及CGAC算法中的Setup, KeyGenDelegate算法实现, 完成CGAC系统的初始化和用户、子KGC的私钥产生、授权等, 具体实现通过修改Openstack的认证组件Keystone来完成; 认证模块与访问控制决策模块的交互, 包括Token同步等, 通过Fernet机制进行.

(3) 访问控制模型中的用户User端, 需要实现的模块主要包括提供用户身份信息进行认证并获取用户私钥进行存储, 通过调用对象存储接口实现对象数据的上传、下载, 以及实现CGAC算法中的EncryptDecrypt进行用户数据的加密或云数据的解密等操作.

7.2 实验环境

根据上述的系统结构, 在2.7GHZ inteli5 CPU, 4GB DDR3RAM的电脑上通过VMWARE建立一个4核CPU和4GB内存的虚拟机, 运行Debian Linux8.2jessie系统.并在该系统中建立Swift对象存储, 其中, 其配置上只有1个代理节点和利用本地回环建立的4个存储结点.而在用户客户端的加解密模块和用户私钥生成模块的实现中, 我们使用了Charm-Crypto[28]作为双线性密码计算的库, 并选择群中元素g的大小|g|为512比特, 利用python语言实现了对象云存储中分类分级数据的访问控制系统.限于篇幅, 本文系统的部分核心实现可在GITHUB[29]上获取.

7.3 结果分析

通过在上述环境中实现了图 5架构下的整个系统, 并获取了一些系统运行截图:

图 6左所示, 展示用户通过REST接口获取Token的运行图; 而图 6右则展示了当用户请求下载数据时, 由于主体标记中的安全级别小于客体的安全级别, 下载失败.

Fig. 6 Screen shots of system 图 6 系统运行截图

通过对整个对象存储访问控制系统进行测试, 得出下面的整个系统运行结果图, 系统运行时间包含了CGAC算法执行时间、加密上传或下载解密、访问控制决策时间、对象存储检索时间、元数据管理时间等系统操作时间.由于在本地测试, 统计时间不包含网络延时.时间结果也反映了用户客户端数据加密解密效率, 即CGAC算法的EncryptDecrypt效率.同时, 私钥生成时间也反映了分布式keystone的Keygen执行效率.

随机生成t=2的一个分类拓扑进行模拟访问, 通过实际实验的结果, 不同的曲线表示不同的分类树深度在系统分类属性个数下的运行效果.图 7(a)表明, 系统建立时间与系统属性个数及分类树深度成正比.图 7(b)表明:私钥的生成时间与系统属性个数及分类树深度同样成正比关系, 且增长速度变快.图 7(c)表明:私钥的存储空间与系统属性个数及分类树深度同样成正比关系, 且与私钥生成时间的曲线相符.图 7(d)表明:加密算法的执行时间与系统属性个数及分类树深度相关性不大, 且波动较小.还可以发现, 加密时间很短平均只有17ms, 因此加密算法的效率是很高的.图 7(e)表明:对称密钥密文存储空间与系统属性个数及最大分类树深度相关性不大, 且波动较小, 平均对称密钥密文长度为0.47KB, 因此只要设置对象存储中单个元数据的大小大于0.5KB即可.图 7(f)表明:解密算法的执行时间, 由于参与运算的分类树深度是固定的, 解密时间所以与分类树深度相关性不大, 而与系统属性个数程正相关性.

Fig. 7 Run time and communications of system 图 7 系统运行时间及通信量

通过实际运行结果的效率对比图, 发现其结果与算法分析中相符, 随着属性个数的增多, 私钥的存储空间大将会增长很快.但是这种开销在存储廉价的现代是可以忽略的, 因而, 本文提出的CGAC可以将对称密钥加解密计算量和空间限定, 使其更好的与对象云存储相结合, 实现了对分类分级特征对象数据的细粒度访问控制.在真实云计算环境中, 用户私钥开销可以接受, 且当用户数目和系统属性个数增加时, 更能体现本方案优势.此外, 现有的ABE密文访问控制系统中都存在访问权限的更改, 包括策略和属性变化时, 尤其是用户属性的撤销设计难度大的难题, 通常需要进行重加密, 导致效率不高.CGAC算法虽然同样具有以上问题, 但是由于对象存储的场景下, 存储的多为图片音频等静态数据, 更新的频率很小, 因此此处的性能损耗同样是在可以接受的范围内.

8 结束语

在云计算越来越普及的环境下, 云存储利用网络对存储资源整合利用所面临的数据安全问题越来越多.本文针对分类分级特点的对象存储服务, 提出了一套事实可行的访问控制方案和模型; 同时, 借助ABE机制, 设计出一种可靠的基于分类分级属性的属性加密算法.该算法将强制访问控制、定长密文的属性加密、对象存储与分类分级特性的优势相结合, 不仅提高了数据的安全性, 解决了细粒度访问控制问题, 同时使得计算开销和通信开销大大减少, 提高了系统效率.本文同时给出了基于OpenstackSwift对象存储的具体实现, 验证了本方案的可行性.在下一步的工作中, 将研究更高效的算法降低系统复杂度, 同时对阈值访问控制结构进行扩展; 另外, 研究基于代理重加密的撤销机制, 降低撤销时的开销.

参考文献
[1]
Factor M, Meth K, Naor D, Rodeh O, Satran J. Object storage:The future building block for storage systems. In:Proc. of the Local to Global Data Interoperability-Challenges and Technologies. IEEE, 2005. 119-123.[doi:10.1109/LGDI.2005.1612479]http://ieeexplore.ieee.org/document/1612479/citations?tabFilter=papers
[2]
Mesnier M, Ganger GR, Riedel E. Object-Based storage. IEEE Communications Magazine, 2003, 41(8): 84–90. [doi:10.1109/MCOM.2003.1222722]
[3]
Committee AIT. Project t10/1355-d working draft:Information technology-SCSI objectbased storage device commands. 2004.
[4]
Arnold J. OpenStack Swift:Using, Administering, and Developing for Swift Object Storage. O'Reilly Media, Inc., 2014.
[5]
Hamlen K, Kantarcioglu M, Khan L, Thuraisingham B. Security issues for cloud computing. International Journal of Information Security and Privacy, 2010, 4(2): 39–51.
[6]
Wang YD, Yang JH, Xu C, Ling X, Yang Y. Survey on access control technologies for cloud computing. Ruan Jian Xue Bao/Journal of Software, 2015, 26(5):1129-1150(in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4820.htm[doi:10.13328/j.cnki.jos.004820]http://www.jos.org.cn/ch/reader/view_abstract.aspx?flag=1&file_no=4820&journal_id=jos
[7]
Bethencourt J, Sahai A, Waters B. Ciphertext-Policy attribute-based encryption. In:Proc. of the IEEE Symp. on Security and Privacy (SP 2007). IEEE, 2007. 321-334.[doi:10.1109/SP.2007.11]
[8]
Bell DE, Padula LJL. Secure computer system:Unified exposition and multics interpretation. In:Proc. of the Secure Computer System Unified Exposition & Multics Interpretation. 1976. 161.
[9]
Shen C. Application analysis of BLP model in cloud storage. Computer & Digital Engineering, 2012, 40:65-66(in Chinese with English abstract).[doi:10.3969/j.issn.1672-9722.2012.06.021]http://kns.cnki.net/KCMS/detail/detail.aspx?filename=jssg201206023&dbname=CJFD&dbcode=CJFQ
[10]
Lin GY, He S, Huang H, Wu JY, Wei C. Access control security model based on behavior in cloud computing environment. Journal on Communications, 2012, 33(3):59-66(in Chinese with English abstract).http://kns.cnki.net/KCMS/detail/detail.aspx?filename=txxb201203009&dbname=CJFD&dbcode=CJFQ
[11]
Horwitz J, Lynn B. Toward hierarchical identity-based encryption. In:Proc. of the Advances in Cryptology-EUROCRYPT. Springer-Verlag, 2002. 466-481.[doi:10.1007/3-540-46035-7_31]
[12]
Wan Z, Liu JE, Deng RH. HASBE:A hierarchical attribute-based solution for flexible and scalable access control in cloud computing. IEEE Trans. on Information Forensics and Security, 2012, 7: 743–754. [doi:10.1109/TIFS.2011.2172209]
[13]
Deng H, Wu Q, Qin B, Domingo-Ferrer J, Zhang L, Liu J, Shi WC. Ciphertext-Policy hierarchical attribute-based encryption with short ciphertexts. Information Sciences, 2014, 275: 370–384. [doi:10.1016/j.ins.2014.01.035]
[14]
You L, Wang L. Hierarchical authority key-policy attribute-based encryption. In:Proc. of the 2015 IEEE 16th Int'l Conf. on Communication Technology (ICCT). IEEE, 2015. 868-872.[doi:10.1109/ICCT.2015.7399963]
[15]
Wang S, Zhou J, Liu JK, Yu J, Chen J, Xie W. An efficient file hierarchy attribute-based encryption scheme in cloud computing. IEEE Trans. on Information Forensics and Security, 2016, 11: 1265–1277. [doi:10.1109/TIFS.2016.2523941]
[16]
Liu Z, Yan H, Lin Z, Xu L. An improved cloud data sharing scheme with hierarchical attribute structure. Journal of Universal Computerence, 2015, 21(3): 454–472. [doi:10.3217/jucs-021-03-0454]
[17]
Ge A, Zhang R, Chen C, Ma C, Zhang Z. Threshold ciphertext policy attribute-based encryption with constant size ciphertexts. In:Proc. of the Information Security and Privacy. Springer-Verlag, 2012. 336-349.[doi:10.1007/978-3-642-31448-3_25]
[18]
Zhang XC, Yang G. Attribute-Based access control model with constant-size ciphertext in Hadoop cloud environment. Computer Engineering and Applications, 2015, 51(23): 87–93(in Chinese with English abstract). [doi:10.3778/j.issn.1002-8331.1311-0372]
[19]
Biswas P, Patwa F, Sandhu R. Content level access control for openstack swift storage. In:Proc. of the 5th ACM Conf. on Data and Application Security and Privacy. ACM Press, 2015. 123-126.[doi:10.1145/2699026.2699124]http://doi.acm.org/10.1145/2699026.2699124
[20]
Boneh D. Identity-Based encryption from the Weil pairing. In:Proc. of the Advances in Cryptology-CRYPTO 2001. SpringerVerlag, 2001. 213-229.[doi:10.1007/3-540-44647-8_13]
[21]
Boneh D, Boyen X, Goh EJ. Hierarchical identity based encryption with constant size ciphertext. In:Proc. of the Annual Int'l Conf. on the Theory and Applications of Cryptographic Techniques. Springer-Verlag, 2005. 440-456.[doi:10.1007/11426639_26]
[22]
Ran C, Halevi S, Katz J. Chosen-Ciphertext security from identity-based encryption. Siam Journal on Computing, 2007, 36: 1301–1328. [doi:10.1137/S009753970544713X]
[23]
Fujisaki E, Okamoto T. Secure integration of asymmetric and symmetric encryption schemes. Journal of Cryptology, 2013, 26: 80–101. [doi:10.1007/s00145-011-9114-1]
[24]
Shamir A. How to share a secret. Communications of the ACM, 1979, 22: 612–613. [doi:10.1145/359168.359176]
[25]
Agrawal S, Freeman DM, Vaikuntanathan V. Functional encryption for inner product predicates from learning with errors. In:Proc. of the Advances in Cryptology-ASIACRYPT 2011, Int'l Conf. on the Theory and Application of Cryptology and Information Security. Seoul, 2011. 21-40.[doi:10.1007/978-3-642-25385-0_2]
[26]
Herranz J, Laguillaumie F, Ràfols C. Constant size ciphertexts in threshold attribute-based encryption. In:Proc. of the Int'l Conf. on Practice and Theory in Public Key Cryptography. 2010. 19-34.[doi:10.1007/978-3-642-13013-7_2]
[27]
Li J, Wang Q, Wang C, Ren K. Enhancing attribute-based encryption with attribute hierarchy. Mobile Networks and Applications, 2011, 16: 553–561. [doi:10.1007/s11036-010-0233-y]
[28]
Akinyele JA, Green M, Rubin A. Charm:A framework for rapidly prototyping cryptosystems. Cryptology ePrint Archive, Report. 2011/617. 2011.https://link.springer.com/article/10.1007/s13389-013-0057-3
[29]
Yang T. Sample code of "an access control mechanism for classified and graded object storage in cloud computing". 2016. https://github.com/hbhdytf
[6]
王于丁, 杨家海, 徐聪, 凌晓, 杨洋. 云计算访问控制技术研究综述. 软件学报, 2015, 26(5): 1129-1150. http://www.jos.org.cn/1000-9825/4820.htmnotenoalianjie
[9]
沈承东, 严明向. BLP模型在云存储中应用分析. 计算机与数字工程, 2012, 40: 65-66. [doi: 10.3969/j.issn.1672-9722.2012.06.021]
[10]
林果园, 贺珊, 黄皓, 等. 基于行为的云计算访问控制安全模型. 通信学报, 2012, 33(3): 59-66.
[18]
张欣晨, 杨庚. Hadoop环境中基于属性和定长密文的访问控制方法. 计算机工程与应用, 2015, 51(23): 87–93. [doi:10.3778/j.issn.1002-8331.1311-0372]