Page 266 - 《软件学报》2020年第12期
P. 266
3932 Journal of Software 软件学报 Vol.31, No.12, December 2020
*
,
挑战:A 提交两个等长的消息 (MM 1 * ) {0,1}∈ 2 k× ,B 作如下处理.
0
*
*
1. B 选择随机值 (R R 1 ) G∈ T 2 ,将其传递给 Waters 挑战者获取与访问结构(M ,ρ )相关联的密文:
,
0
CT=(C,C′,{C i } i∈[1,l] );
k
2. B 选择一个随机值 C″∈{0,1} ;
*
3. B 向 A 发送挑战密文 CT =(C,C′,C″,{C i } i∈[1,l] ).
*
*
阶段 2:敌手 A 重复阶段 1 中的查询,若解密查询的响应值是 M 或 M ,B 用消息 Test 响应.
0
1
猜测:A 要么输出 1 或 0,要么退出.无论哪种情况,B 都不予理睬.B 检索表 T 1 (或 T 2 ),如果 R b (b∈[0,1])仅出现
一次,则输出 b 作为它的猜测值;否则,随机选择 0 或 1 作为它的猜测值.
敌手赢得游戏的优势被定义为 Pr[b′=b]−1/2.
5.2 性能分析
下面着重讨论本文方案的计算性能和存储性能,并且与 Green 等人所提出的 CP-ABE 外包方案 [11] 作对比.
(1) 计算性能
在 CP-ABE 算法中,由于计算开销最大的依次是双线性对运算 B、指数运算 E,故采用这 2 项指标来衡量方
案的计算性能.
生成用户私钥时,授权中心只需计算密钥子项 K,L 和 T,计算代价为 4E;而云集群针对用户的每一个属性执
行一次指数运算,计算代价为|S|E(|S|表示用户属性数量).
数据加密时,用户客户端需计算 s,r,C,C 0 ,计算代价为 4E(H(⋅)需执行一次指数运算),针对共享访问树的每个
叶子节点,还需执行一次指数运算,故用户客户端的计算代价为(4+|T L |)E(|T L |表示共享访问树叶子节点数量);而
云集群针对共享访问树的每个叶子节点,Map 操作需要执行两次指数运算,Reduce 操作需要执行一次指数运算,
故云集群的计算代价为 3|T L |E.
数据解密时,用户客户端的计算代价为 5E;在共享访问树叶子节点的逻辑关系都为“AND”的情况下,云集
群针对每个叶子节点需计算两次双线性对运算,针对每个非叶子节点需计算两次指数运算,计算 F 时需一次双
线性对运算,计算代价为(1+2|T L |)B+(2|T L |−2)E.
本文方案与 Green 的方案 [11] 在授权中心和用户客户端的计算开销对比见表 1:本文方案的私钥生成计算开
销恒定,仅需 4 次指数运算,而数据加密时的计算开销与 Green 的方案 [11] 相比减少了 3/4.
Table 1 Comparison of computing time in authorization center and user client
表 1 授权中心和用户客户端计算开销对比
方案 私钥生成 数据加密 数据解密
Green 方案 [11] (3+2|S|)E (4+4|T L|)E 5E
本文方案 4E (4+|T L|)E 5E
(2) 存储性能
在所提出的方案中,将用户转换密钥和所有的密文数据交由云集群存储,而用户仅需要秘密保存一个最终
解密密钥(占用一个群元素空间),减轻了用户对密钥的管理负担.此外,该方案的数据密文长度与 Green 等人所
提出的方案 [11] 相同,故在云集群中所占存储空间与 Green 的方案相同.
6 实验分析
为了评估本文方案在 Spark 并行处理模式下的计算性能,利用双线性对加密库(http://crypto.stanford.edu/
pbc/)和 CP-ABE 基础开发包(http://acsc.csl.sri.com/cpabe/),并使用 Java 语言,分别针对本文方案、Proxy 方案(即
本文方案在外包计算时不使用 Spark 集群而是使用单台性能较好的服务器)和 Green 的方案 [11] 编写 CP-ABE 算
3
2
法并进行性能实验.从素数阶群 y =x +x 中选取双线性群 G 和 G T ,群 G 和 G T 的元素长度均为 512 位.该实验所
使用的虚拟机 CPU 配置和系统均为:Intel(R) Xeon(R) CPU(E5-2620 2.0GHZ),系统 CentOS6.5 64 位.实验环境包