Page 287 - 《软件学报》2021年第11期
P. 287
王利朋 等:应用区块链的多接收者多消息签密方案 3613
i
的密文信息均不相同.依次对每一个接收者 ID i R (1≤ ≤ ) ρ 执行如下步骤.
ρ
① 发送者 ID S 计算得到索引 J i R = F index (ID i R ) ,此时,1≤ J ≤ i R ; ρ
i R
② 计算 h = 1 i R H 1 (ID i R ,U i R ), X i R = α s (P h + U i R ),K = i R H 3 (ID i R , X i R ) 和η i R γ = s + α s h 1 i R ;
pub
1
③ 计算 c = i R (m i R ||η i R ) ⊕ K ,并将其存于集合 C 中位置为 J 处,即 [CJ i R ] ← c i R ;
i R
i R
④ 计算 d = H (ID ID ,c , A ),t = H (ID ID ,c , X );
,
,
i R 2 s i R i R s i R 2 s i R i R i R
⑤ 计算V = d γ + α t ,并将其存储于集合 V 中位置为 J 处,即 [VJ ] ← V .
i R i R s s i R i R i R i R
3.2.4 解签密(UnSignCrypt)
接收者收到密文信息φ={A s ,C,V}后,首先计算得到 J = F ρ (ID ), 并从集合 C 中获得 c′ , 从集合 V 中获得
i R index i R J R i
V′ , 其中,1≤ J ≤ . ρ
J R i i R
• 校验接收者身份
接收者 ID (1≤ ≤ ) ρ 首先要校验接收者的身份信息,其步骤如下.
i
J R i
① 计算 d′ H (ID ID ,c′ = , A h = ), s H (ID ,U ), X ′ = A γ 以及 t′ = H (ID ID ,c′ , X ′ );
,
,
J R i 2 s J R i J R i s 1 1 s s i R s i R J R i 2 s J R i J R i i R
② 校验VP t′ ′ − A = d′ (P h + s U ) 是否成立:如果不成立,则拒绝解密该信息.
J R i J R i s J R i pub 1 s
• 解密密文
① 计算 K′ J H 3 (ID J , X ′ = );
R i R i i R
② 计算得到 m′ J ||η′ J c′ = J K′ ⊕ J , 进而得到明文 m′ 和参数η′ J .
J
R i R i R i R i R i R i
3.2.5 校验消息(VerifySign)
① 计算 h J R i = H (ID ,U );
1 1 J R i J R i
② 校验η′ P = A h J R i + U + P h 是否成立:如果失败,则拒绝接收该消息.
s
J R i s 1 s pub 1
3.2.6 KGC 密钥更新(UpdateKey)
对于每一个 KS i (i∈[1,n]),首先重新选择一个 t−1 阶的多项式 f i (x)=b i,1 x+b i,2 x +…+b i,t−1 x ,其中, b ∈ Z (1≤
2
*
t−1
, ij p
j≤t−1).KS i 计算{b i,j P|1≤j≤t−1},并将其公布出去.然后,KS i 计算{f i (j)|1≤j≤n},并将{f i (j)|1≤j≤n,j≠i}依次发送
t− 1
至对应的 KS j .KS j 对收到的 f i (j)进行校验,其校验公式是 f i ()jP = ∑ ( j ξ (b P )). 如果校验成功,则接收 f i (j).KS j 对接
, i ξ
ξ = 1
n
收到的 n 项 f i (j)全部校验成功后,重新计算其对应的子秘密 s′ = j s + j ∑ f ξ ().j
ξ = 1
4 正确性分析
t i
定理 1. KGC 生成用户 i 对应的私钥信息 γ w δ = ξξ + ∑ u = id sh + 1 id u 成立.
id
ξ 1 i =
n n
( ) ,由于 g i (x)=a i,0 +a i,1 x+…+a i,t−1 x , s = ∑
证明:设G ()x = ∑ gx t−1 j g ξ (),j 可知:
ξ
ξ = 1 ξ = 1
⎧ gx a + a x + ...a x t− 1 s = ⎧ g (1) + g (1) ... g (1) s = ⎧ G
+
() =
+
(1)
⎪ 1 1,0 1,1 1, 1t− t− 1 ⎪ 1 1 2 n ⎪ 1
+
+
() =
(2)
⎪ gx a 2,0 + a x + 2,1 ...a 2, 1t− x ⇒ ⎨ s = ⎪ 2 g 1 (2) + g 2 (2) ... g n (2) ⇒ ⎨ ⎨ s = ⎪ 2 G .
2
⎪ ... ⎪ ... ⎪ ...
⎪ gx a + a x + ...a x t− 1 s ⎪ = g () n + g n + ( ) ... g n s ⎪ =G
() =
+
() n
( )
⎩ n n ,0 n ,1 n , 1t− ⎩ n 1 2 n ⎩ n
由于G(x)最大为 t−1 次多项式,故最多只需要 t 对{(i,G(i))|1≤i≤n}即可求解G(x).根据拉格朗日插值定理,
可以得到: