Page 262 - 《软件学报》2020年第12期
P. 262
3928 Journal of Software 软件学报 Vol.31, No.12, December 2020
• Create(S):挑战者设置 j:=j+1,利用外包私钥生成算法获取属性集 S 对应的(SK,TK),并将(j,S,SK,TK)存储
在 T 中,然后将转换密钥 TK 发送给敌手.在相同输入的情况下,Create 能够被重复的查询;
• Corrupt(i):如果在表 T 中存在第 i 个记录,挑战者获取该记录(i,S,SK,TK),并设置 D:=D∪{S},然后将私钥
SK 返回给敌手;若不存在该记录,则返回⊥;
• Decrypt(i,CT):如果在表 T 中存在第 i 个记录,挑战者获取该记录(i,S,SK,TK),并将以(SK,CT)为输入的解
密运算输出结果返回给敌手;若不存在该记录,则返回⊥.
*
*
挑战:敌手提交两个等长的明文 M 0 和 M 1 ;提交一个挑战访问树 T ,使得任意 S∈D 都不满足 T .挑战者抛硬
*
*
*
币获得一个随机值 b,计算明文 M b 关于访问树 T 的密文 CT ,并将 CT 返回给敌手.
阶段 2:重复阶段 1 的查询,但不能进行如下查询.
• 获取能解密挑战密文的私钥;
• 解密挑战密文.
猜测:敌手给出一个关于 b 的猜测值 b′.
4 面向公有云的快速加密与共享方案
方案包括初始化、私钥生成、加密和解密这 4 个模块,利用 Spark 技术的 Map 操作和 Reduce 操作并行化
计算用户私钥和数据密文.
(1) 初始化:Setup(U,k)
k 为系统安全参数,选择一个阶为大素数 p 的双线性群 G 和 G T ,从 G 中选择一个元素 g 并记为 G 的生成元,
α
*
*
,,α ∈
双线性映射 e:G×G→G T ,选择 g ∈ 2 Ga Z ,对于系统中每个属性 i∈U,选择 t ∈ Z ,计算 Y=e(g,g 2 ) ,系统属性
p
p
i
i t
T = g .定义哈希函数 H 1 :{0,1} → * Z * p ,H 2 :{0,1} → * {0,1} .将系统公钥 PK 向所有用户及云服务器公开,而系统主
k
i
密钥 MK 由授权中心秘密保存.系统公钥 PK 如下:
a
PK=〈p,g,g ,G,G T ,e,Y,{T i } i∈U ,H 1 ,H 2 〉.
系统主密钥 MK: MK = 〈 g α ,{ }t ii U∈ . 〉
2
(2) 生成用户私钥:KeyGen(PK,MK,S)
用户私钥先由用户完成初步计算,再外包给云服务器完成最后的计算.
*
首先,用户客户端选择随机数 ,,tt β ∈ Z ,生成用户部分转换密钥:
p
0
) ,L =
at
TK′ = 〈 , S K = (g g αβ g t β ,T = g 0 t ,{t tβ / }t 0 i S . 〉
2
∈
i
t β
将 TK′发送至云服务器,再利用 Spark 技术的 Map 操作并行计算私钥子项 K = i T i ttβ / 0 t = T ,完整的用户转换
i
密钥 TK 如下:
TK =〈 , S K = (g g αβ g t β ,{K = T t β } 〉
) ,L =
at
.
∈
2 i i i S
最终解密密钥 DK=〈β〉由用户秘密保存,而转换密钥 TK 由云服务器保存在转换密钥库中.
k
(3) 加密:Encrypt(T,M∈{0,1} ,PK)
加密计算过程由用户客户端和云服务器共同完成(如图 3 所示).首先,用户客户端随机选择 R∈G T ,计算
s
αs
s
s
s=H 1 (R,M),r=H 2 (R),C=R⋅Y =R⋅e(g,g 2 ) ,C′=M⊕r,C 0 =g ,将 g 和共享访问逻辑表达式发送至云服务器.
云服务器根据共享访问逻辑表达式构建密文共享访问树 T,采用 Spark 技术的 Map 和 Reduce 两种操作完
成访问树 T 的秘密值分发与叶子节点属性加密计算,其中:Map 操作并行计算访问树 T 的每个节点(包括叶子节
点和非叶子节点),而 Reduce 操作针对访问树 T 的每个叶子节点作进一步计算.令 I j,child 为非叶子节点 I j 的孩子
节点,其包含的叶子节点 L i 集合为{}L iL i I∈ , j child ,则非叶子节点 I j 包含的叶子节点集合为 L set = {{ }L i i L ∈ I , j child } I , j child I∈ j .
• Map 操作
该部分按非叶子节点 I j 和叶子节点 L i 分为如下两种情况.
¾ 针对非叶子节点 I j ,Map 操作输入的键值对为(I j ,L set ).首先,根据其阈值 d,随机选择一个一元 d−1 次多