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).根据拉格朗日插值定理,
                 可以得到:
   282   283   284   285   286   287   288   289   290   291   292