Page 444 - 《软件学报》2026年第3期
P. 444
张明川 等: 支持索引动态更新的高效可搜索属性加密方案 1407
E 0 ,E 1 ,E 2 ,E 3 ,E 4 }.
模拟器 B 根据属性密钥 UK Y 对密文 CT δ m 执行外包解密算法 Decrypt 1 (·): 对叶子节点 x 计算 D leaf = e(K 1 ,E 1 )·
e(K 2 ,E 2 )/e(K 3 ,E 3 ) = e(g,g) c·r·q x(0) /z ∗ .
( ) ∆ k,Kn (0)
∏ c·r·q parent(x) index(x k ) /z c·r·q n(0) /z ∗
对内部节点计算 D n = e(g,g) = e(g,g) , 递归到根节点时得 D r = e(g,g) c·r·r ′ /z ∗ . 最后模
x∈n x
拟器 B 将中间密文 CT m = {E m ,D r , M} 发送给敌手 A 2 .
∗ ∗ ∗ B. 模拟
挑战阶段: 敌手 A 2 将两个相同长度的明文消息 m 0 , m 1 和一个属性集合 Y , 其中 Y ⊨ Λ 提交给模拟器
用挑战
器 B 对属性集合 Y 执行 KeyGen(·) 算法, 生成相应的属性密钥 UK Y ∗ , 而后随机选取一个明文消息
m ς ,ς∈{0,1}
c r r ′
,
元组 (g,g ,g ,g ,T µ ) 执行加密算法 Encrypt(·). 选取一个安全的对称密钥 CK 计算: M ς = Enc CK (m ς ) E mς = CK ·T µ ,
r
b·r
,
,
, = H 3 (m ς ,h) → Z FileMatch = g H mς , E 0 = g E 1 = g , , ϑ x 有: E 2 =
∗
p
h = H 2 (B id ) → G H m ς ϑ = H 1 (B id ) E 4 = g , 对属性节点
δ
g b·r·q x(0) , E 3 = g α x ·r , 得到密文 CT δ mς = {Λ, M,E m ς ,FileMatch}, 接着使用属性密钥 UK Y 对密文 CT mς 执行外包解密算法
Decrypt 1 (·) 得到 D r = e(g,g) c·r·r ′ /z . 最后, 模拟器 B 将挑战中间密文 CT mς = {E mς ,D r , M ς } 返回给敌手 A 2 .
询问阶段 2: 与询问阶段 1 相同, 但不允许对明文 m 和属性集合 Y 进行重复询问.
′ ′
猜测阶段: 敌手 A 2 输出对 ς 的猜测结果 ς ∈ {0,1}, 若 ς = ς 则判定敌手 A 2 赢得上述游戏.
m ς 的任何信息, 只能随机猜测
当 µ = 0 时, 挑战中间密文 CT mς 在群 G T 上具有随机性. 敌手 A 2 无法得到关于
′ ′ δ 是由 实例进行的有效加密. 相较于
ς 的值, 因而赢得游戏的概率为 Pr[ς = ς|ς = 0] = 1/2. 当 µ = 1 时, CT mς DBDH
ς
ε
′
随机猜测, 敌手 A 2 能更加准确地猜测出 的值, 将这个优势设为 , 则敌手 A 2 赢得游戏的概率为 Pr[ς = ς|ς =
′ c r r ′
1] = ε+1/2. 此时模拟器 B 可以利用敌手 A 2 的输出 ς 对挑战元组 (g,g ,g ,g ,T ς ) 中的 ς 进行判断, 从而以 Adv B =
Pr[ς = ς′]−1/2 = 1/2·(1/2)+1/2·(1/2+ε)−1/2 = ε/2 的优势在概率多项式时间内解决 DBDH 困难问题. 由于在
概率多项式时间内不存在有效的判定算法验证 DBDH 假设成立, 故而不存在概率多项式时间的敌手 A 2 能以不可
忽略的优势破坏上述方案的安全性, 即本文方案的中间密文在选择明文攻击下具有不可区分安全性.
5.3 更新令牌的不可伪造性
δ
′ UT = {{KW i } i∈I ,{RW i } i∈I ,FileMatch ,E } 后, 需要对
′
当云服务器收到数据所有者上传的对明文 m 的更新令牌
m ′
ϑ
δ
UT 中的 BLS 签名组件 E = g H m ′ ·ϑ 和云端加密数据的组件 FileMatch = g H m 和 E 4 = g 进行双线性配对运算, 完成
m ′
?
δ
e(g,E )=e(FileMatch,E 4 ). 将 BLS δ CDH 困难问
对数据所有者更新权限的验证 签名组件 E m ′ 的不可伪造性归约到
m ′
′ δ B 以
题上: 若存在一个概率多项式时间的敌手 A 3 能以概率 ε 伪造出 m 的签名组件 E , 则可以构造出一个模拟器
m ′
ε/qH 的概率解决 CDH 问题.
初始化: 选择满足双线性映射 e : G×G = G T , 阶为素数 p 的乘法循环群 G, 生成元 g ∈ G, 将一个 CDH 问题实例
a b a b A 3 , 将主私钥设
(g,g ,g ) ∈ G 发送给模拟器 . 模拟器 B 将主公钥 MPK{G,G T ,e,g, p,H 1 ,H 2 ,H 3 ,g ,g } 发送给敌手
B
为 MSK = ϑ = a 自己保存.
哈希询问阶段: 敌手 A 3 在该阶段最多进行 qH 次询问, 模拟器 B 随机选择 k ∈ {1,2,...,qH} 作为对敌手 A 3 伪
造更新令牌中签名组件的猜测值. 构造一个初始为空的询问列表 Q list 存放敌手 A 3 的询问实例及结果, 将敌手 A 3
,
的第 i 次询问的消息实例记为 m i . 当 i , k 时, 计算 h = H 2 (Aid) → G H m i = H 3 (m i ,h), 得到组件 FileMatch(i) = g H m i 回
复给敌手 A 3 , 并将 (i,m i ,H m i ,FileMatch(i),{DW d i d i ∈D ) 添加到询问列表 Q list 中, 其中 Aid 为敌手 A 3 的标识号. 当 i = k
}
b
时, 计算得到 FileMatch(k) = g H m k ·g 回复给敌手 A 3 .
更新令牌请求阶段: 敌手 A 3 在该阶段对选定的消息 m i 请求生成相应的更新令牌, 若 i = k 则算法终止. 当 i , k
,FileMatch(i),{KW r } r∈R ,{RW r } r∈R ), 得到相应的更新令牌
时, 模拟器 B 从询问列表 Q list 中取出 m i 对应的 (i,m i ,H m i
· ϑ
δ
a H m i = g
UT(i) = {FileMatch(i),E = (g ) H m i ,{KW r } r∈R ,{RW r } r∈R } 返回给敌手 A 3 .
m i
m j 进行更新令牌的伪造, 当
更新令牌伪造阶段: 敌手 A 3 选择一个上个阶段中未向模拟器 B 查询过的消息
a H m k ,{KW r } r∈R ,{RW r } r∈R }. 此时模
δ
+b a
ϑ
j , k 时算法终止, 否则 UT( j) = {FileMatch( j),E = FileMatch(k) = (g H m k ) = (g ) +b
m j
δ
a·b
a H m j 得到
拟器 B 可以通过敌手 A 3 的伪造更新令牌组件 E δ 计算 E /(g ) g , 从而解决 CDH 困难问题. 这与 CDH
m j m j

