0 引 言
云计算技术受到越来越多用户的青睐,其主要原因是该技术的弹性计算、海量存储、便捷访问等优点。由于用户以及用户数据爆发性地增长,系统面临着崩溃和被黑客攻击的危险
[1]。此外,数据安全成为了云服务发展的瓶颈,面对这一亟须解决的问题,学者们提出了多种多样的解决方法。Bell等
[2]提出强制访问模型(mandatory access control,MAC)的概念,所有资源都由系统控制并受MAC策略的约束。要访问基于MAC的系统中的资源,主体必须持有该资源所需的适当安全许可及其安全分类。自主访问控制模型(discretionary access control,DAC)的访问控制策略可以看成一个矩阵,通过该访问控制矩阵实现对请求合法性的判定
[3],客体的所有者负责管理该客体的访问授权,有权分配、更改该客体的属性信息。Galindo引入了一种基于身份的加密(identity-based encryption,IBE)方案,其中发送方可以使用接收方的身份作为加密消息的公钥
[4]。 Xu等
[5]和 Shen等
[6]分别提出了一种改进的代理重加密算法(proxy re-encryption,PRE),通过减少双线性运算提高系统的运行效率。Oh等
[7]提出基于角色的访问控制(role based access control,RBAC)的方案,融入了自下而上的权限角色管理方法。Goyal等
[8]提出基于属性加密(attribute-based encryption,ABE)的方案,密文被标记为一组属性,私有密钥与控制用户能够解密哪些密文的访问结构相关联。后续全同态加密算法(fully homomorphic encryption,FHE)
[9,10]和密文搜索算法等也相继提出。
上述方案或模型面临一个问题,就是当用户数据访问策略发生改变时,必须由用户对数据进行重新加密,并需要将加密后的文件重新上传云端,这势必产生不可忽略的计算和通信开销。直至目前,有大量的研究对访问模型中策略变化和策略更新进行了探索
[11,12],并且所提出的方案将重加密过程中所需要优质的网络资源和计算资源转移给专用代理(云服务器)。虽然之前的部分研究降低了用户物理机的性能需求,使用户得到了极大的便利,但是并未很好地降低第三方云服务器所需要的性能需求。
针对以上问题,本文提出了优化的、低成本的、安全的细粒度数据共享方案,通过降低重加密阶段的计算复杂度极大限度地降低了第三方云服务器的性能需求,主要创新点为:
1) 针对多权限云中的数据,提出灵活、安全的访问控制模型,即使云服务提供商不可信,也能保证数据安全;
2) 将基于改进的代理重加密技术与改进的基于属性加密技术相结合,减少双线性运算次数,提高系统的运行效率,降低了云服务器的计算资源;
3) 制定高效的策略更新方案,降低计算开销。
1 相关理论知识
本节针对改进方案中涉及的基本理论知识进行了描述,包含双线性映射、Fisher-Yates scrambling算法以及基于属性的加密。其中,Fisher-Yates scrambling算法为随机置乱算法,在方案中可以对加密后的密文进行再次随机置乱,以确保方案的安全性。
1.1 双线性映射
定义1 (双线性映射
[5,6]):当映射函数
满足以下条件时,称之为双线性映射:
1) 是阶的群,其中是素数;
2) 对于所有的生成元,满足;
3) 非退化性,即如果是的成员,那么是的成员;
4) 是可计算的,对于所有的,存在有效算法,可以计算出。
1.2 Fisher-Yates scrambling算法
定义2 (Fisher-Yates scrambling
[13]):Fisher-Yates随机置乱算法也称为Knuth算法,是一种经典的shuffle算法。该算法的本质是生成随机排列的有限集。这个算法是无偏的,总数为
,每种排列都有相同的概率。该算法效率很高,时间复杂度为
,不需要额外的存储空间。对于序列
,执行以下步骤:
1) 令;
2) 生成一个随机整数;
3) 交换和的值,且;
4) 重复2),3),直到时停止重复。
对于执行Fisher-Yates scrambling算法之后的数组,我们定义为:。
1.3 基于属性加密
基于密文策略的属性加密(ciphertext-policy ABE,CP-ABE),Bethencourt,Sahai和Waters提供了一种加密方案
[14],该方案基于属性的加密工作,能够将复杂的基于树的访问策略嵌入到密文中,比基于密钥策略的属性加密(key-policy ABE,KP-ABE)性能更好。CP-ABE还引入了“变量属性”,它使用一组传统属性来表示可以通过更复杂的操作(包括>,<,< >和=)进行评估的值。通过以下步骤完成:对于介于0和某个系统定义的最大值之间的给定十进制整数,首先将值转换为二进制,然后为每个位创建一个属性。例如,可以使用“access_level_flexint_1xxx OR(access_level _flexint_x1xx AND(access_level _flexint_xx1x OR access_level _flexint_xxx1))”策略来强制执行“>5”,该策略将创建访问树。
2 细粒度访问策略设计
本节阐述所提出方案中的细粒度访问策略设计,其中包含方案流程、算法设计,详细描述了细粒度访问策略模块设计、核心算法的执行流程。
2.1 方案流程
本文提出的基于改进的代理重加密与属性加密结合的访问策略(ACSBPA)方案由初始化算法,密钥生成算法,初始加密算法,重加密密钥生成算法,代理重加密算法,初始密文解密算法和重加密密文解密算法)七个算法组成。
如
图1所示,方案的主要组成部分实体部分有:属性管理机构(attribute management agency, AMA),密钥生成中心(key generation center, KGC),数据拥有者(data owner, DO),数据请求者(data recipient,DR)以及云服务提供商(cloud service provider, CSP)。
方案中各实体之间的交互描述如下。
1) 数据拥有者与属性管理机构交互:在属性管理机构中记录了数据拥有者的属性值,在初次加密时,数据拥有者可以设置访问策略来限制访问加密文件的权限,同时数据拥有者的属性值也限制了其访问数据的权限以及范围;当用户为数据请求者时也需要与属性管理机构交互,完成用户数据请求者的属性注册。属性管理机构存储了数据拥有者、数据请求者的属性值,当访问策略需要更新时,数据拥有者从属性管理机构获取数据接收者的属性值,更新访问策略,对明文执行加密或重加密操作。
2) 属性管理机构与密钥生成中心交互:属性管理机构将用户初始的属性值、变化后的属性发送到密钥生成中心,密钥生成中心根据用户未更改和已更改的属性为用户生成最新的基于属性的密钥、传统的公私密钥对、对称加密密钥。
3) 密钥生成中心与数据请求者交互:数据请求者根据数据不同的存储方式向密钥生成中心请求密钥,若需要存储于云端,则密钥生成中心发送给数据拥有者加密数据所需要的所有私钥。
4) 数据拥有者和云服务提供商交互:数据拥有者制定基于CP-ABE的密文访问控制策略,使用获得的密钥、参数、访问策略对数据加密并上传至云端。在此阶段,密文采取树结构访问控制策略,用户的密钥与属性集有关,只有当用户满足访问控制策略才能解密密文。
5) 数据请求者与云服务提供商交互:数据请求者申请访问数据,只有符合访问策略则可以将初次加密后的密文转换为明文。交互至此,在执行完1),2),3),4),5)后,完成了密文初次共享。
6) 密钥生成中心与云服务提供商交互:密钥生成中心将重加密密钥发送到云服务提供商端,云服务提供商使用基于数据拥有者和数据请求者生成的重加密密钥对初次加密的密文重加密,最后将重加密密文存储于云服务提供商。
7) 数据请求者与数据拥有者交互:若数据请求者属于数据拥有者指定的新的属性集,则数据拥有者通过秘密通道将基于属性的私钥发送到数据请求者端;若数据请求者不属于数据拥有者指定的新的属性集,则无法获取基于属性的私钥及重加密后的密文。
8) 数据请求者与云服务提供商交互:数据请求者从CSP端获取密文,使用由数据拥有者通过秘密通道发送的基于属性的密钥、自身的传统的公私密钥对、系统参数、重加密密文作为解密条件,将密文转换为明文。交互到此阶段,在执行完1)、2)、3)、4)、6)、7)、8)后完成了密文的重加密共享。
在本方案中,由发送方制定访问控制策略。密文采取树结构访问控制策略,数据访问者密钥与属性集有关,只有当数据访问者满足访问控制策略才能解密密文,执行流程如下:
1) 初始化:密钥生成中心执行和,并且与属性管理机构交互。由属性管理机构将指定密文接收者属性集合标记为,根据生成传统的公私钥对。同时,由密钥生成中心生成基于算法的对称密钥,完成整个系统初始化。
2) 初次密文加密/上传:由属性管理机构根据,生成访问策略policy。之后,执行,将明文加密为密文。最后,将初始密文发送给云端,由云端对密文存储并由云端执行重加密算法。
3) 初次密文下载/解密:当符合的用户申请访问数据时,从云端下载密文数据后,使用解成明文。
4) 密文共享:若数据拥有者欲将此数据分享给属于中的用户,将密文上传至云端,属于中的用户直接从云端下载密文,用其私钥解密密文。反之,若合法数据接收者不属于,则创建新的属性集,更新访问策略。若执行代理重加密共享时,由属性管理机构与数据拥有者以及密钥生成中心交互,执行重加密密钥生成算法,生成一个重加密密钥,由云端或第三方代理服务器执行重加密算法。在重加密时,通过执行重加密算法将数据分享给属于的用户。云端执行代理重加密算法时,计算并输出重加密密文。
5) 重加密密文下载/解密:当属于集中的数据请求者申请数据时,若该数据请求者符合传统公私钥对的解密算法,则云服务器将与数据拥有者通信,数据拥有者也会与KGC和AMA确认数据请求者的属性以及属性公钥是否符合。数据拥有者确认授权后,通过安全通道将发送给数据请求者,数据请求者从云端下载重加密密文,执行解密算法,将重加密密文解密为明文。
2.2 算法设计
1) 初始化
构造双线性映射,其中,、和是阶的椭圆曲线群,是素数。随机选择两个哈希函数,,可以将任意长度的0/1串全部映射到中,可以将中的元全部映射到,中。输出系统公共参数,是系统中所有用户加密和解密所需要的参数。此外,生成主秘密参数,由保留,为用户生成解密所需的私钥。
其中:是的生成元,是的生成元,和,且,,。
2) 密钥生成
KGC根据数据拥有者和用户DR的属性集生成传统的公私密钥对(,),其中
以、用户属性集以及作为输入,将属性密钥分发给用户。执行操作如下
3) 初始加密
以、基于AES加密的对称密钥、明文数据信息M以及访问策略作为输入,取,利用Fisher-Yates scrambling算法将经过哈希变换后的与基于AES加密的对称密钥随机置乱为,再将与随机置乱,输出初始密文,其中
4) 重加密密钥生成
由DO授权,首先在整数之间随机生成一个正整数,再以为输入,计算出用户DO到用户DR'的代理重加密密钥,其中
5) 代理重加密
以和用户身份集为输入,计算重加密密文,其中
6) 初次密文解密
以、和初次加密密文作为参数输入。数据请求者进行解密计算,具体如下
7) 重加密密文解密
以、、、和重加密密文作为参数输入。数据请求者DR'进行解密计算,具体如下
的计算步骤如下
}
在本文方案中,和算法一样,不再赘述。
3 方案安全性及证明
本节从方案的一致性和安全性全面分析了方案中的核心算法,证明了本方案的可行性、合理性以及保密性。
3.1 方案的一致性
定理1 任何通过正确步骤生成的代理重加密密文都可由指定属性集的接收者解密。
证 ,任何由正确步骤生成的私钥
及正确执行以下步骤
,
,
后,若、,、和同时成立,那么接收数据的新用户通过执行解密算法
可得出最后的明文。
3.2 方案的安全性
定义3 判定双线性Diffie-Hellman难题:
和两个q(q是素数)阶的椭圆曲线,是的一个随机生成元。在双线性映射中的DBDH(Decisional Bilinear Diffie-Hellman)难题被定义为攻击者A区分和两个元组的优势,其中a,b,c,r都是在中随机选取的,且用代表上述优势,如果对于任何多项式时间的攻击都是可忽略的,就可以说DBDH成立。
定义4攻击游戏
为了证明方案的安全性,在多项式时间内,攻击者和挑战者之间定义了攻击游戏。攻击游戏由6个阶段组成,在初始阶段攻击者选择一个用户属性和两个条件(和)作为攻击对象。在设置阶段,挑战者设置一个方案。在挑战阶段,攻击者选择两条挑战明文,挑战者利用两条挑战明文中随机选择的一条、收到的集合和条件(和)进行加密生成的初始密文,然后询问攻击者初始密文是由哪条密文加密而成。在挑战阶段前后,攻击者可以询问用户的属性集和重加密密钥,但其中不包括可以直接将初始密文解密为明文的私钥。如果攻击者没有任何优势做出正确选择,那就说明本文中的方案具有安全性。
定理2方案中DBDH难题成立,所以方案在随机预言机模型下具有安全性。
证
1) 初始化:攻击者A首先选择一个属性集合作为挑战的属性集合,同时攻击者A将和作为挑战条件;然后将和发送给攻击者B;最后攻击者B将、和发送给挑战者C。
2) 设置:挑战者C执行Setup算法为攻击者生成中的主公共参数和主秘密参数。在方案所有执行过程中,由于哈希函数在安全性证明中被认为是随机预言机,所以其不会被发送。挑战者C将发送给攻击者B,攻击者B得到哈希函数查询,挑战者C将查询到的用户属性与相对应的哈希值记录在表中。
攻击者B随机选取和,生成主公共参数,为A提供和,模拟的随机预言机查询,并记录所得到的属性和结果。
3) 首次查询阶段:由挑战者C向攻击者B提供哈希查询和私钥查询;然后,攻击者B向攻击者A提供哈希查询、、私钥查询和重加密密钥查询。
4) 挑战阶段:首次查询是否结束由攻击者A决定,并由攻击者A向攻击者B发送两条挑战明文,攻击者B直接将挑战明文发送给挑战者C;挑战者C执行生成密文来进行挑战(其中b是在中是随机的);最后将密文发送给攻击者B。此时,根据密文的结构, 。在此阶段和重新执行设置阶段,攻击者B随机选择,,并计算,。最后,将扩展成方案中可用的初始密文,并将作为方案中可用的挑战密文。
5) 二次查询阶段:此阶段与首次查询阶段相同。
6) 猜测阶段:攻击者A猜测出一个结果,攻击者B将其发送给挑战者C,如果,则攻击者A获得了这场游戏的胜利。最后,获得这场游戏胜利的优势表示为。
如果攻击者A成为了方案中的获胜者,则攻击者B成功攻破方案的安全性。
综上,具有难题的难解性和安全性。
定理3方案中初次加密阶段符合Fisher-Yates scrambling随机置乱算法,所以该方案在初次加密阶段生成的密文更具有随机性,密文更具有难解性。
证
1) 从1~n之间随机选出一个数和最后一个数(n)交换,然后从1~n-1之间随机选出一个数和倒数第二个数(n-1)交换。假设有5个数: 0,1,2,3,4。
第一步,从[0,4]这5个位置中(包含0和4)随机出一个数(比如是3)和4号交换,得到0,1,2,4,3。原来4的位置放3的概率就是1/5。
第二步,从[0,3]这4个位置中(包含0和3)随机出一个数(比如是0)和3号交换,得到4,1,2,0,3。原来3的位置放0的概率就是(4/5)·(1/4)=1/5。
第三步,从[0,2]这3个位置中(包含0和2)随机出一个数(比如是0)和2号交换,得到2,1,4,0,3。原来2的位置放4的概率就是(4/5)·(3/4)·(1/3)=1/5。
第四步,从[0,1]这2个位置中(包含0和1)随机出一个数(比如是0)和1号交换,得到1,2,4,0,3。原来1的位置放2的概率就是(4/5)·(3/4)·(2/3)·(1/2)=1/5。
第五步,从[0,0]这1个位置中(包含0和0)随机出一个数(比如是0)和0号交换,得到1,2,4,0,3。原来0的位置放1的概率就是(4/5)·(3/4)·(2/3)·(1/2)=1/5。
2)在加密计算中,,利用Fisher-Yates scrambling算法将经过哈希变换后的与随机置乱为,再将与随机置乱,确保密文和明文的安全性。在不增加方案的计算消耗和存储空间的情况下,方案中初次加密阶段符合Fisher-Yates scrambling随机置乱算法。
4 实验及性能分析
4.1 复杂性对比
本文提出的
方案与苏铓等
[15]提出的基于代理重加密的云数据访问授权确定性更新方案(
)的时间复杂性的对比如
表1。其中,
代表指数运算,
代表线性对运算。
文献[
15]是近期提出的代理重加密与属性加密机制方案。从
表1可以看出,本文提出的
方案在复杂性方面优于
方案。
4.2 仿真及计算开销分析
本次实验仿真是在AMD R7 4800H CPU @2.90 GHz,32 GB内存,操作系统为Windows 10,Myeclipse 2014版PC上进行的。在本节中,将策略更新函数,初次加密算法,重加密算法,重解密算法与近几年相关文献进行对比分析。
1) 策略更新函数
方案通过“不同的属性数量”来对性能进行评估。在仿真测试中,访问策略包含40个属性,所加密的文件为1 GB。包含“or”,“and”和“
k of
n”门限。本次测试通过改变访问策略中的属性数量来测量策略更新的处理时间。如
图2所示,本文策略更新时间保持在3~5 ms,解密所需时间没有随策略的增加呈正比例增长。而在属性为40个时,文献[
16,
17]策略更新时解密所需时间超过了300 ms。
2) 初次加密算法
如
图3所示,在属性为5个和40个时,本方案初次加密算法计算耗时分别为33 ms和240 ms,文献[
18]初次加密计算耗时分别为29 ms和190 ms,文献[
19]初次加密算法计算耗时分别为26 ms和189 ms。三种方案初次加密算法计算耗时随着属性数量的增加呈正比例增长。虽然本文方案中的初次加密算法计算耗时高于文献[
18,
19],但是这个计算耗时在客户的正常接受范围内。
3) 重加密算法
本文方案中的重加密算法不涉及双线性映射,对第三方云服务器所需的性能需求达到最大限度的优化。在用户数量极速增长的情况下,第三方云服务器所需要的性能相对较小。如
表2所示,属性为5~40个时,重加密算法的计算耗时在50 ms以内,而文献[
20]方案中的重加密计算耗时随着属性数量的增加呈正比例增长。当属性为40个时,计算耗时达到了1 850 ms。由此说明,本方案在重加密方面计算开销更小。
4) 解密算法
如
图4所示,虽然属性在不断地增加,但是本文解密算法的计算耗时保持在26~28 ms,而文献[
19]和[21]方案中的解密计算耗时随着属性数量的增加而增加明显。当属性增加到40个时,文献[
19,
21]提出方案的计算耗时都超过了250 ms。因此,与文献[
19,
21]相比,本文解密算法的计算开销具有明显的优势。
5 结 语
随着云服务的爆发性发展,用户的数据安全成为研究的焦点。代理重加密和基于属性加密成为研究者的关注点之一。本文以不完全可信的云服务商为背景,改进代理重加密算法,实现了云中数据的安全存储以及密文共享,且降低了云平台所需的性能需求。同时,在明文初次加密阶段使用Fisher-Yates scrambling算法将密钥与加密元素两次置乱,在不增加方案的计算开销的情况下,增加了封装对称密钥的随机性和封装后密文的难解性。另外,结合基于属性加密算法,实现了多用户多属性的访问策略,解密时间与用户属性没有形成正比关系。本方案保证了云环境中用户数据的安全,还实现了数据的安全共享。
国家自然科学基金资助(61662022)
湖北民族大学高水平科研成果校内培育项目(PY20008)