1.引言
基于属性的加密(Attribute-Based Encryption)被提出后,CP-ABE(Ciphertext Policy Attribute-Based Encryption,密文策略基于属性加密)和KP-ABE(Key Policy Attribute-Based Encryption,密钥策略基于属性加密)都相继被提出,但是绝大多数CP-ABE方案都是CPA(选择明文攻击)安全的,或者sCPA(selective-CPA)安全的,并且只能实现单调的访问结构(即AND,OR)。
而下面说的这篇文章实现了CCA(选择密文攻击)安全,并且实现了关系“非”(NOT)的操作。
CP-ABE的具体概念可以参照博客:https://blog.youkuaiyun.com/ping802363/article/details/65639016
2.方案构造
2.1定义
令属性集N={1,2,3...n},称属性i和¬i为"文字"(literals)。在这节中考虑的访问结构全部为由AND门连接的这些"文字",可以表示为,其中
,
表示文字(即i或¬i)。
2.2 CPA方案构造
- Setup
一个素数阶p的双线性群G,和一个双线性映射.随机元素
和群G的生成元g.
令,其中
.得到
.
那么需要注意的是,代表i出现的三种情况,分别是正(Positive),负(negative),不在乎(don't care).正和负很好理解,那么don't care表示未出现在AND门中的属性i.
- Encrypt
给定明文M,AND门的一个访问结构,随机选择
,并令
.接着计算
,计算过程如下:
- 若
,则
.
- 若
¬
,则
.
- 若
,则
.
密文最终为:.
- KeyGen
令S表示输入属性集合.每个表示为负(negative)属性,首先,对于每个
,选择一个随机数
,记
.令
.接着计算
,计算过程如下:
- 对于
:1)
;2)
.
- 对于
:
.
私钥最终为:.
- Decrypt
假设密文为,其中
.令S表示输入属性集,私钥
.
对于每个,计算
.
- 如果
且
,则
.
¬
且
,则
.
,则
.
最终计算明文:,其中
.
接下来,举一个实例:
假设整个属性集N为:1,2,3,4,5.
W=2 AND ¬3 AND 4,则可得到I={2,3,4}.设用户属性集为S={2,4}
在加密阶段得到的部分密文为:
.
在密钥生成阶段得到的部分密钥为:
解密:
1.如果且
,满足这个条件的分别是2,4.
所以计算:.
2.¬
且
,满足这个条件的为¬3.
所以计算:.
3.,满足这个条件的为1,5.
所以计算:和
故根据公式即可解得密文.
2.3 CCA方案构造
这节主要使用了强存在不可伪造签名来实现CCA安全.假设是长度为m的比特串,令
为
中第i个比特.令
表示{1,...,m}.
- Setup
此阶段继承了前面的构造,除此之外,增加了一些子项.随机选择,对于每个
,定义
.最终得到公钥和主密钥分别为:
.
- Encrypt
给定明文M,AND门的一个访问结构.在运行SigKeygen算法后生成的密钥对
.随机选择
,利用之前构造方法得到
,对于每个
,如果1)
,则
.2)否则
.
利用签名密钥运行签名算法(Sign)得到
上的签名
,最终得到的密文为:
.
- KeyGen
与之前构造相同,对于每个,选择一个随机数
,定义
.除此之外,对于每个每个
,选择一个随机数
.此时定义
.令
.对于每个
,令
.得到私钥为
.
- Decrypt
给定密文,首先运行
,
,
上的验证算法.如果
合法,则继续进行解密,否则停止解密.
假定密钥的形式为S集合上.与之前解密方式一样,对于每个
,计算
,对于每个
,计算
.假设
S满足W,对于每个
,则可恢复
.
对于每个对于每个,若
计算
:
.若
计算
:
.最后计算密文最终计算明文:
,其中
.
-
2.4 优化
- 首先考虑对属性的优化,在这里将属性分为多个层次,加密/解密的复杂性以n为单位线性增长,因为必须处理每个
才能恢复r。密文开销也是如此。这对于少量的AND门来说是不高效的:如果W中出现的"文字"的数量很少,那么大部分的计算都涉及到"不在乎(don't care)"元素。那么作者给出的方式如下:
假设系统中有n=8个属性,组织这样的一棵树,若加密器只关心属性1和4,然后在密文中提供三个"不在乎"元素.而原来的方式需要
.
- 文章中只实现了AND门,而未实现任意阈值门(包括OR门),作者的解决办法与访问树中秘密值s分发类似.举例来说明:
根处的阈值门是2 / 3,因此选择一个随机的1阶多项式p,使p(0) = s。对于i = 1,2,3,令si= p(i)。然后,给定s1,s2和s3中的任意两个值,就可以恢复s。然后对于下面的三个子树,就可以用文中提出的方案进行处理.但是这样处理并不安全,因为s1,s2和s3都没有绑定一个随机值,例如:用户具有属性¬1, 2, 3, 4,¬5,他只满足中间这颗子树,所以不应该被解密.但是由于在第一颗子树中,属性5是一个"不在乎"属性,那么他可以恢复和
,由于s1和s2是一阶多项式上的两个不同的点,因此可以通过插值恢复
.此外,用户有属性3和4,在最后一颗子树上,属性1和2为"不在乎"属性,对于i = 1,2,3,4,他可以(合法地)获得
。通过插值将这些数据与
结合起来,用户现在可以恢复
,得到了
和
,通过插值就可以解得
,所以这是不安全的.
作者针对这个问题,对消息M本身执行秘密共享过程,而不是对消息的随机值s执行秘密共享过程。在上面的示例中,获得M的份额M1,M2和M3,然后分别使用独立的随机指数s1,s2和s3对这些共享进行加密。攻击者不就能再利用"不关心"属性和多项式插值进行解密了。
3 总结
相比BSW方案Water方案,此文章虽实现了CCA安全,但牺牲了灵活性.比如在最后优化访问结构时会出现漏洞,虽然作者给出了折中的解决办法,但未证明其安全性,并且在树结构很复杂时,其加密开销其实并不低.
附上文章信息:
L. Cheung and C. Newport, “Provably secure ciphertext-policy ABE,” in IACR Cryptology ePrint Archive, vol. 2007, 01 2007, pp. 456–465.
参考文献
[1]Sahai A, Waters B R. Fuzzy identity-based encryption[A]. Ronald Cramer. Proceedings of the 24th Annual International Conference on Theory and Applications of Cryptographic Techniques[C]. Berlin: Springer, 2004. 457-473.
[2]Bethencourt J, Sahai A, Waters B. Ciphertext-policy attribute-based encryption[A]. IEEE Symposium on Security and Privacy[C]. Washington: IEEE Computer Society, 2007. 321-334.
[3]B.Waters. Ciphertext-policy attribute-based encryption: an expressive, efficient, and provably secure realization[A]. Edinburgh :Proceedings of the 14th International Conference on Practice and Theory in Public Key Cryptography[C],2011.53–70.