1. 引言
随着云存储的发展,越来越多的企业选择在云上存储数据,而不是花费昂贵的费用来购买存储设备。然而云存储目前最大难题之一就是安全隐患 [1] ,为了保证数据的机密性,Shamir和Bonehe [2] 首次提出了身份加密机制的概念,在加密明文前,数据拥有者需要知道用户的身份信息,用户解密密钥和用户的身份信息相关联,该机制为公钥密码体系的一对一加密。在实际应用中常常需要一对多的加密模型,例如数据拥有者共享的数据多个用户都可以解密查看。Sahai和Waters [3] 首次提出了模糊身份基加密,增加了访问控制策略 [4] ,用属性来标记用户身份信息,实现了公钥密码体系的一对多加密。随后Goyal等人 [5] 将基于属性加密体制分为密文策略ABE (CP-ABE)和密钥策略ABE (KP-ABE)两种。在CP-ABE中,数据拥有者具备制定策略的权利,密文和加密者定义的访问策略相关联,密钥则是和属性相关联;在KP-ABE中密文则是和属性相关,而密钥与访问策略相关联。属性基加密要求将访问策略在明文中公开,攻击者可以根据访问策略推测出用户的敏感信息,从而泄露用户隐私。
随着近年来对属性加密方案的研究 [6] [7] ,为了进一步保护用户信息的安全性,Nishide等人 [8] 提出了一个隐藏访问策略的加密方案,将访问策略隐藏在密文中,实现了在保护消息机密性的同时保护了访问策略,但该方案只支持“与”操作,访问策略的可表达性受到较大影响。Lai等人 [9] 在合数阶双线性群上提出一种在标准模型下证明是完全安全的隐藏访问结构的CP-ABE方案。文献 [10] [11] 提出了可支持任意门限或者布尔表达式的属性基加密方案,增加了访问结构的灵活性。宋衍等人 [12] 提出了一种基于访问树的策略隐藏属性加密方案,该方案是通过定义末端节点实现访问策略的隐藏,并证明是自适应安全的。基于属性基加密的方案中,往往用户需要大量的计算才能够获得明文,为了提高计算效率,Green等 [13] 提出了带外包解密的属性基加密概念,将部分计算交给云服务器计算。Lai等人 [14] 提出了改进的带可验证的外包解密的属性基加密概念,从用户可以验证云服务器计算的是否正确。文献 [15] [16] [17] 相继提出了一些基于外包解密的ABE方案。
本文在文献 [12] 的基础上,通过将树型访问结构转换成属性列表,取消了文献 [12] 中定义的末端节点只能表示与的限制。采用分割加密的思想,将访问策略加密和明文加密分别加密,实现访问策略的隐藏。用户只能判断自己是否符合访问策略,但无法知道具体的访问策略是什么,在解密步骤通过引入了外包计算简化用户的计算开销,提高了解密效率。
2. 预备知识
2.1. 双线性映射
设G1,G2是阶为素数p的循环群,
表示模p循环群,g是G1的生成元。
是从(G1, G1)到G2的一个映射。如果满足一下条件,则称
是一个双线性映射:
1) 双线性性质:
。g,h是G1中的元素,a,b是
中的元素。
2) 非退化性:
。
3) 可计算性:对G1中的所有元素
,存在一个有效的算法计算出
的值。
2.2. DBDH假设
随机选择
,p是G的阶,g是G的生成元。DBDH假设即为不存在一个多项式时间的概率算法能够以不可忽略的优势区分元组
和元组
。
2.3. 本文方案
2.3.1. 系统模型
本方案共包含四个实体:可信机构,数据拥有者,用户和云服务器。各个实体的功能如下:
1) 可信机构:可信机构是完全受信任的中央授权机构,它生成系统的公共参数并为用户计算私钥。
2) 数据拥有者:数据拥有者的工作是制定访问结构、对数据加密并将密文上传到云服务器。
3) 用户:用户从云端服务器下载密文,然后向可信机构提交自己的属性列表,并从可信机构获得相应的私钥,当且仅当属性列表满足访问结构的时候可以成功解密密文。
4) 云服务器:云服务器负责存储密文和解密外包计算。云服务器是不完全受信任的,它有可能会泄露存储的数据或给用户故意返回错误的计算结果。
2.3.2. 访问结构转换规则
将访问结构转换成属性列表的规则,假设节点
的叶子节点个数为
。
1) 如果节点是and,则
2) 如果节点为or,则
3) 如果节点为of,门限值为h,则
由下到上,计算出根节点对应的所有属性列表
2.3.3. 访问结构
在本文中,用户的身份由特定是属性集合表示,本方案的访问结构为树型,可以灵活的支持and、or和threshold。
系统中是所有属性集合为
,对于任何
的取值集合为
,访问树为T,转换后的属性组合为
,其中
,用户的属性列表为
,其中
。
本文利用加密分割思想将对访问结构的加密和密文加密分割开,数据拥有着将定义好的访问结构转换成符合访问结构的所有可能组合的列表,然后加密。例如图1访问树T,将转换成
,然后Wi中的属性值用
代替,不以明文的形式出现在属性列表中,攻击者虽然可以根据加密后的属性列表恢复出访问结构的内部节点,但具体的属性值无法确认,因此实现了策略的隐藏。用户通过判断自己的属性列表是否与其中的某一条一致来确定是否满足访问策略。
2.4. 方案安全模型
本方案可在标准模式下达到完全安全。其所基于的安全模型通过以下挑战者S和敌手A之间的交互游戏进行描述,若最终敌手A给出正确的猜测,则敌手胜利,反之挑战者胜利。游戏过程入下:
初始化阶段:敌手A向挑战者S提交访问结构T0和T1。挑战者S选择安全参数并运行初始化算法得到系统公钥PK和系统主私钥MSK,挑战者保留系统主私钥MSK,并且把系统公钥PK发送给敌手A。
第一阶段:敌手向挑战者询问属性集U的私钥(可多次),同时要求私钥既不能满足T0也不也能满足T1,挑战者S运行生成私钥算法,生成SK并发送给A。
挑战:敌手A输出两个长度相同的消息M0和M1。挑战者随机选择
,对Mj进行加密,并且将密文发送给敌手A。
第二阶段:重复第一阶段,继续询问私钥。
猜测:敌手A输出对j的猜测
,如果
,则称敌手A赢得游戏;否则,敌手A失败。我们定义敌手A获得胜利的优势为
。
定义1:
基于属性基的加密方案在选择性明文攻击下是完全安全的,并且只有在没有多项式有界攻击者的情况下才能以不可忽略的优势赢得上述游戏。
3. 算法设计
1) 初始化过程( 1 λ )
输入公共参数
,生成两个阶为素数p的乘法循环群G1、G2,G1的生成元是g。e为双线性映射
。系统随机选择
,计算
对于每个属性
系统随机选择
,计算
。输出:系统公钥
,主密钥
。
2) 加密过程(PK, T, M)
输入:明文M,访问结构T,和系统公钥PK。
第一步:加密访问结构。将访问结构根据转换规则转换成属性列表
。
,将wi进行加密,随机选择
,对于
,计算如下
。
,
。如果数据拥有者的计算能力有限,该步骤也可以交给云端服务器计算,因为只是将访问
结构暴露了出去,即使攻击者获得到了所有的信息,攻击者也不知道该访问结构能够解密的是那一个密文,所以云端服务器来进行访问结构的加密也是安全的。
第二步:加密明文M。计算
。
生成密文为:
。
3) 提取私钥
输入:用户的属性列表U,主私钥MSK,和系统公钥PK。
随机选择
,对于任意
,随机选取
,计算
。设置
,计算
,
。最后输出
。
假设
,
,以免不同的属性列表U、
实现相同的解密功能。以上假设成立的概率
,其中
[18] 。
4) 外包解密
输入:转换密钥TK,密文CT。
服务器根据TK和CT,首先判断用户的属性列表是否符合解密条件,如果符合则进行密文转换计算,否则终止服务。
服务器根据TK和CT计算,验证是否存在
使得F等于
,如果存在,则用户属性列表U满足访问条件则相等,否则终止服务。若满足访问条件则计算
。
5) 用户解密
如果用户收到云端服务器返回的
,明文计算如下:
;否则,用户无权解密。
4. 安全性证明
以下证明该方案在DBDH假设下满足选择明文攻击的完全安全。假设敌手A能以不可忽略的优势ε来攻破本文方案,那么就能够构造出一个模拟器S,它可以以
的优势打破DBDH。
在DBDH游戏中,挑战者S会选择群G1和G2,群G1的生成元为g,映射为
,随机选择数
。挑战者S投掷硬币
,如果µ = 0,则设置
,否则µ = 1,设置
。
初始化阶段:敌手A提供给挑战者S两个要挑战的访问结构T0和T1。挑战者S随机选择
,对于
随机选取
,当属性值存在于访问树Tj的叶子节点中,令
,否则令
,
,S把系统公钥
发送给敌手A。
第一阶段:敌手A提供一个属性集合
作为私钥询问的输入,要求属性集合U不满足访问结构T0和访问结构T1。挑战者S计算出私钥发送给A,对于U内的属性
,只是存在一个
使得
不满足Tj。对于
,随机选择
,如果
,计算
,否则
,计算
,
,设置
,
,令
,
,将私钥发送给敌手A。
挑战阶段:敌手A提交M0和M1给挑战者S。将Tj转化成属性列表Wj。令
,设
,
,当
时,
;当
时,
为随机值。对于
,计算如下
,
,
。
,把密文
发送给外包服务器,外包服务器通过转换密钥TK将密文CT转换成
,首次判断用户属性列表是否符合访问结构,如果符合则计算
,然后将密文
发送给敌手A。
第二阶段:重复第一阶段,继续询问私钥。
猜测阶段:敌手输出对j的猜测
,如果
,模拟器会猜测
;
,模拟器会猜测
。
当
时,敌手A获得有效密文
。敌手的优势为:
。当
时,敌手获得的密文
是随机的,无法得知它明文的任何信息,
。因此,模拟器在解决DBDH假设上总的优势为:
。
由以上证明可知,在DBDH假设中,若多项式时间敌手A的优势为ε,则模拟器S的优势为
。因
此,如果敌手A可以在安全模型下能够以不可忽略的优势破坏本方案,则模拟器S的优势也不容忽视,由此可证明在安全模型下没有敌手可以破坏本方案。
5. 效率分析
本文通过将访问结构转换成属性列表,实现了方案中策略隐藏的要求。为了彰显本方案的优点,本节将本方案分别从用户的私钥长度,解密长度以及系统的采用的双线性群阶和复杂性假设四个方面与其它方案做对比。e表示双线性配对运算所需的时间,G2表示群G2中的运算,
和
分别表示群G1和G2中元素的长度,m表示系统中的属性个数,
表示访问结构中末端内部节点的个数,
表示
的子结点个数。具体结果如表1所示。
Table 1. Comparison of this scheme and other schemes
表1. 本方案与其它方案比较
6. 结束语
随着云存储的发展,系统用户和信息量将会不断增长,方案的计算复杂度也越来越大。如何在安全的前提下,支持灵活的访问结构,用户通过少量的计算可以得到明文是一个值得研究的问题。本文提出了一种基于属性基加密的策略隐藏方案,对访问结构没有任何限制,通过将部分运算交由云服务器来计算,大大减少了用户的计算量。考虑到在实际应用中,系统中用户的属性会经常性变化,后续工作将在此解决方案的基础上进一步研究属性撤销操作的方法。
参考文献