Page 440 - 《软件学报》2026年第3期
P. 440
张明川 等: 支持索引动态更新的高效可搜索属性加密方案 1403
}
给敌手 A 3 并将 (i,m i ,H m i ,{DW d i d i ∈D ) 添加到询问列表 Q list 中, 若 i = k 则将 H m k 回复给敌手 A 3 .
更新令牌请求阶段: 敌手 A 3 在该阶段对选定的消息 m i 请求生成相应的更新令牌, 若 i = k 则算法终止. 当 i , k
时, 模拟器 B 从询问列表 Q list 中取出 m i 对应的 (i,m i ,H m i ,{DW d i d i ∈D ), 计算得到更新令牌 DK(i) = {FileMatch(i),
}
δ
}
E ,{DW d i d i ∈D } 返回给敌手 A 3 .
m i
j , k 时算法
更新令牌伪造阶段: 敌手 A 3 选择一个在上个阶段中未查询过的消息 m j 进行更新令牌的伪造, 当
δ
}
终止, 当 j = k 时计算相应伪造的更新令牌 DK( j) = {FileMatch( j),E ,{DW d j d j ∈D }.
m j
定义 3. 对于任意概率多项式时间内的敌手 A 3 , 若 A 3 输出合法更新令牌的概率是可忽略的, 则称方案的更新
令牌不可伪造性.
4 算法设计及安全性分析
4.1 方案具体设计
(1) Setup(1 ,U,V) → (MSK,MPK): 初始化算法
λ
V
U
输入系统安全参数 λ, 属性域 , 伪属性域 . 输出双线性映射群 e : G×G = G T , 其中 G, G T 为 p 阶乘法循环群,
,
∗
生成元 g ∈ G p 为大素数. 对真实属性域中的每个属性 u ∈ U 选取 α u ∈ R Z , 对伪属性域中的每个伪属性 v ∈ V 选取
p
∗
,
∗
∗
∗
∗ H 1 : {0,1} → Z , H 2 : {0,1} → G H 3 : {0,1} ×G → Z , 一组相互独立的抗碰撞的哈
∗
β v ∈ R Z . 选取抗碰撞的哈希函数
p p p
∗
希函数 H = {h 1 ,h 2 ,...,h ι }, 密码安全的哈希函数 H 1 , 均匀的散列哈希函数 H 2 . 选取 b, c∈ R Z , 计算系统主公钥 MPK =
p
b c α u β v
{G,G T ,e : G×G = G T ,g, p,H 1 ,H 2 ,H 3 ,H,H 1 ,H 2 ,g ,e(g,g) ,{g } u∈U ,{g } v∈V } 和系统主私钥 MSK = {b,c,α u ,β v } u∈U,v∈V .
(2) KeyGen(Y,DU id ,MPK,MSK) → (UK,TK): 数据访问者的密钥生成算法
∗ , ′ ∗
设数据访问者的属性集合为 y ∈ Y , 唯一标识号 DU id ∈ {0,1} . 权威中心随机选取 h∈ R G z ∈ R Z , 计算 K 0 =
p
z ′
b·z ′
,
H 3 (DU id ,h) = z K 1 = g α y ·z ′ , K 2 = g c/(b·z) , K 3 = g , K 4 = g , 通过函数集合 H = {h 1 ,h 2 ,...,h ι } 将属性集合 Y 映射到布隆
y∈Y
过滤器的位数组中得到 K 5 = BF Y . 最后将属性密钥 UK = {K 1 ,K 2 ,K 3 ,K 4 ,K 5 } 和解密私钥 TK = K 0 通过安全信道返回
给数据访问者.
DO
(3) SPGen(Λ sub ,DO id ,MPK) → (SP ,SP CSP ): 复用策略生成算法
Tag Tag
∗ J
数据所有者计算 ϑ = H 1 (DO id ) → Z , 其中 DO id 为数据所有者的唯一标识号. 对复用策略 Λ sub 进行析取得到
p
个满足复用策略的真子句, 将真子句的属性映射到布隆过滤器的位数组中得到 BF j,j∈J . 对每个真子句计算 l i,j =
g ϑ·(α 1, j +α 2,j +...+α i,j ) , i ∈ I 为每个真子句中包含的属性数量. 随后从系统主公钥 MPK 中随机选取一个伪属性值 g β χ 计算
T tag = g ·g b·ϑ·FR v , FR v 的初始值为 1, 仅当数据访问者的复用策略验证通过时, 将 FR v 的值置为 0. 最后, 数据所有者
β χ
β χ
将复用策略标识符 SP CSP = {BF j ,l i,j } i∈I,j∈J 上传至云服务器, 将 SP DO = {T tag ,g } 存储在本地.
Tag
Tag
DO
δ
(4) Encrypt(m,MPK,Λ,SP ) → (CT ,{KW k } k∈K ): 加密算法
Tag
m
数据所有者首先对明文数据 m 提取关键词集合 {kw k } k∈K , 计算 {KW k = H 1 (kw k )} k∈K . 设访问结构树 Λ 的叶子节
点集合为 x ∈ X, 包含根节点在内的非叶子节点为阈值节点 n ∈ N. 根据 Λ 中是否需要包含复用策略, 将加密过程分
为两种情况.
① 不包含复用策略
q υ 的门限值. 选取根节点
对访问结构树中的每个节点 υ 选取一个阶数为 o υ = k υ −1 的随机多项式 , 其中 k υ 为
q υ
r
′ ∗ ′ ′ index(υ) ,
秘密值 r ∈ R Z , 即 q r(0) = r . 对访问结构树自上而下分发根节点秘密值 , 节点 υ 对应的秘密值为 q υ(0) = q parent(υ)
p
∗
∗ m ∈ {0,1} , 随机选取一个安全的对称
其中 index(υ) 为节点 υ 在其父节点 parent(υ) 处的位序. 选取 r∈ R Z , 输入消息
p
r
,
,
∗
H m
密钥 CK 计算: M = Enc CK (m) E m = CK ·e(g,g) c·r·r ′ , h = H 2 (DO id ) → G H m = H 3 (m,h) → Z , FileMatch = g , E 0 = g ,
p
δ
ϑ
E 1 = g , E 4 = g , 对 ∀x ∈ X 有: E 2 = g b·r·q x(0) , E 3 = g α x ·r . 得到密文: CT = {Λ, M,E m ,FileMatch,E 0 ,E 1 ,E 2 ,E 3 ,E 4 }. 并将
b·r
m
CT δ 和 {KW k } k∈K 发送给云服务器.
m
② 包含复用策略
若需要包含的复用策略未定义则执行算法 STGen(·).

