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 位.实验环境包
   261   262   263   264   265   266   267   268   269   270   271