Page 265 - 《软件学报》2020年第12期
P. 265
罗王平 等:一种支持快速加密的基于属性加密方案 3931
⎡ 1... bc 1n ⎤
1n
令 (M = ρ i ) att ( ),i M = (M M 2 ,...,M m ) = T ⎢ ⎢ ... ... ... ⎥ ⎥ .
,
1
⎢ ⎣ 1... bc ⎥ mn mn⎦
故对于任意基于访问树 T 的秘密共享方案,存在一个线性秘密共享方案(M,ρ)与之等价. □
定理 5. 如果 Waters 提出的 CP-ABE 方案 [14] 达到针对性 CPA 安全,那么所提出的支持快速加密的 CP-ABE
方案在随机预言模型下达到 RCCA 安全 [21] .
证明:假设攻击者 A 在针对性 RCCA 安全模型中,能在多项式时间内以不可忽略的优势ε攻破本文方案,那
么可以构造一个模拟器(或敌手)B,它同样能在针对性 CPA 安全模型中以不可忽略的优势ε攻破 Waters 的方案,
而该方案已被证明在 decisional q-parallel BDHE 假设下是安全的. □
*
*
Init:模拟器 B 激活敌手 A,A 选择一个挑战访问树 T ,B 根据定理 4 及其提供的转换方法,将 T 转换成访问结
*
*
构(M ,ρ )并传递给 Waters 方案的挑战者,作为其希望被挑战的访问结构.
α
a
初始化:模拟器 B 获取 Waters 产生的公钥 PK=g,e(g,g) ,g ,{T i } i∈U ,将其作为系统公钥发送给 A.
阶段 1:模拟器 B 初始化空表 T,T 1 ,T 2 ,一个空的集合 D,一个整数 j=0,攻击者能完成如下查询.
*
• H 1 (R,M):若(R,M,s)已经在 T 1 中,返回 s;否则,选择一个随机值 s ∈ Z ,将(R,M,s)记录在 T 1 中并返回 s;
p
k
• H 2 (R):若(R,r)已经在 T 2 中,返回 r;否则,选择一个随机值 r∈{0,1} ,将(R,r)记录在 T 2 中并返回 r;
• Create(S):B 设定 j:=j+1,采用下面方式中的进行处理:
*
¾ 如果 S 满足 T ,则按如下方式选择一个“假”转换密钥:
*
选择一个随机数 d ∈ Z ,运行 KeyGen((d,PK),S)获取 SK′,令 TK=SK′,SK=(d,TK);
p
, ,{L K′
*
,
¾ 如果 S 不满足 T ,调用 Waters 的私钥生成算法计算 S 的私钥 SK′ = (PK K′′ x xS∈ ) .算法选择
}
*
一个随机值 z ∈ Z ,并设置转换密钥 TK 为 (PK K = , K′ 1/ z ,L = L′ 1/ z ,{K x xS∈ } = {K′ x 1/ z } x S∈ ) ,私钥为
p
(z,TK);
最后,将(j,S,SK,TK)存储在 T 中,并将 TK 返回给 A;
*
• Corrupt(i):A 不能询问任何满足访问树 T 的属性集所相对应的私钥.如果 T 中存在第 i 个元素,B 将获取
该元素(i,S,SK,TK)并设 D:=D∪{S},将 SK 返回给 A;若不存在,则返回⊥;
• Decrypt(i,CT):作为输入参数的密文 CT 都已经半解密.B 和 A 知道所有私钥的转换密钥,因此两者都可
*
以对所有密文进行半解密.设 CT=(C 0 ,C 1 ,C 2 )为访问树 T 对应的密文,从 T 中获取记录(i,S,SK,TK),若没
*
*
有该记录或 S 不满足 T ,将返回⊥给 A.当第 i 个密钥不满足挑战访问树 T 时,按如下方式处理.
z
1. 解析 SK=(z,TK),计算 R = C 0 /C ;
2
2. 从 T 1 中获取记录(R,M i ,s i ),如果该记录不存在,将⊥返回给 A;
3. 如在集合 T 1 中存在 y≠x,使得记录(R,M y ,s y )和(R,M x ,s x ),有 M y ≠M x ,s y =s x ,则 B 终止仿真;
4. 否则,获取从 T 2 中获取记录(R,r),若不存在,B 输出⊥;
5. 对于每个密钥 i,测试 C = 0 R e⋅ (, )g g α i s ,C = 1 M ⊕ i , r C = 2 e ( , )g g α i s / z 是否成立;
6. 通过了上述测试,输出消息 M i ;否则,输出⊥;
*
当密钥 i 满足挑战访问树 T 时,按如下方式处理:
1. 解析 SK=(d,TK),计算 β = C 1/ d ;
2
2. 对于 T 1 中的每个(R i ,M i ,s i ),测试 β = eg i s 是否成立;
(, )g
3. 若都不成立,B 向 A 输出⊥;
4. 若成立的数量大于 1,则 B 终止仿真;
5. 否则,设(R,M,s)唯一成立,从 T 2 中获取记录(R,r),若不存在,则 B 输出⊥;
ds
αs
6. 测试 C 0 =R⋅e(g,g) ,C 1 =M⊕r,C 2 =e(g,g) 是否成立;
7. 当所有测试通过时,输出 M;否则,输出⊥.