Page 286 - 《软件学报》2021年第11期
P. 286

3612                                Journal of Software  软件学报 Vol.32, No.11, November 2021

                                                                                                *
                                                             *
                 其中,L l 为用户 ID 的长度,L m 为明文 m 的长度, | Z   *  | 为 Z 中整数的长度.定义索引函数 F       ρ  (ID →  Z ,对于ρ个
                                                                                            )
                                                        p    p                        index     p
                 用户,ID∈{ID 1 ,ID 1 ,…,ID ρ }.该函数是将用户 ID 均匀映射到{1,2,…,ρ},以用于消息发送者和接收者从消息集合
                                                                       *
                                               *
                 中定位自己的位置坐标.定义⊕为{0,1} 的异或运算,对于∀M,N∈{0,1} ,满足 M⊕N⊕M=N.
                    对于 i={1,2,…,n}个服务器 KS i ,输入系统参数 k,各个 KS i 随机生成一个 t−1 次的多项式 g i (x)=a i,0 +a i,1 x+…+
                 a i,t−1 x ,其中, a ∈  t−1  Z *  (0≤≤ t −  1) .当 x=0 时,可以得到 g i (0)=a i,0 ,其中,a i,0 为 KS i 的子秘密.KS i 计算{a i,ξ P|0≤ξ≤
                                      j
                             , ij  p
                 t−1},并将其发送至其他 n−1 个 KS j (j≠i)服务器.然后,KS i 计算{g i (j)|1≤j≤n},并将每个 g i (j)通过秘密渠道依次发
                                                                                      t−
                 送至对应的 KS j (j≠i)服务器.收到上述 g i (j)消息后,KS j 对其进行校验,校验公式为 g        i ()jP = ∑ 1  ( j ξ (a P .如果校验
                                                                                              ))
                                                                                            , i ξ
                                                                                      ξ = 0
                 失败,则拒绝接收该项数据.KS j 对接收到的 n−1 项 g i (j)全部校验成功后,加上在本地计算得到的 g i (i)消息,此时,
                 KS j 得到元素个数为 n 的{g i (j)|1≤i≤n}.
                                   n                                      n                     n
                    KS j 的私钥为 s = ∑ g ξ ()j ,其对应的公钥为 k j =s j P.系统主私钥为 s = ∑ a ξ ,0  ,系统主公钥为 P pub ∑ a P ,并
                                                                                              =
                                j
                                                                                                  ξ
                                                                                                   ,0
                                  ξ = 1                                   ξ = 1                ξ = 1
                                                     ρ
                 公开参数 Params =  { , , , ,G p k P P pub ,H H H F index , ,||}⊕  .初始化流程如图 2 所示.
                                                   ,
                                                 ,
                                              ,
                                                   3
                                                2
                                             1
                                     j
                                                     i g  ()x =  i a ,0 +  ... a+  i −  t− 1
                                                                , 1t x
                                                              , 1t P
                                                     i aP  , i ξ  ,...,a i −
                                                     ,0 ,a P
                                                                     ξ
                                                     ξ
                                              {aP | 0≤≤ t − 1}  {aP | 0≤≤ t − 1}
                                                                , i ξ
                                               , i ξ
                                                                     υ
                                                    ξ
                                             {aP | 0≤≤ t − 1}  {aP  | 0≤≤ t − 1}
                                              1,ξ
                                                                , n υ
                                                     i g  (1),..., ( ),..., ( )gj  i g n
                                                          i
                                                  i g  (1)          i g  ()n
                                                 g 1 ()i  t− 1      n g  ()i
                                                     g 1 ()iP = ∑ ( (i ξ  1, a P ))
                                                                ξ
                                                          ξ = 0
                                                           t− 1
                                                             ξ
                                                                , n P
                                                      n g  () iP = ∑  ( (a ξ  ))
                                                             i
                                                          ξ = 0
                                                        n
                                                           (), i k = ∑
                                                     i s =  gi  i s P
                                                          ξ
                                                       ξ = 1
                                                    Fig.2   System setup
                                                     图 2   系统初始化
                 3.2.2    用户密钥生成(KeyGen)
                    用户 ID 随机选择 u ∈     Z ,并计算得到 U id =u id P,然后将 U id 公布出去;然后,用户将自己的 ID 信息发送至 n
                                        *
                                    id  p
                 个密钥服务器.当 KS i 收到用户的 ID 信息后,首先要对用户身份信息按照一定准入原则进行判定,才允许其加入,
                 这里不再对准入原则进行赘述.然后,KS i 计算得到 h =             H 1 (ID ,U id  ) ,并得到 w =  s h ,并将 w i 通过秘密通道发送
                                                         id
                                                                                 id
                                                         1
                                                                                 1
                                                                               i
                                                                            i
                 给用户 ID.
                                                                id
                    用户 ID 收到 w i 后,对其进行校验,校验公式为 wP =          k h .校验通过后,用户接收 w i .当用户收到 t 份 w i 后,
                                                                1
                                                               i
                                                          i
                 构成集合W =    {w w  ,...,w ,其中,索引集合为 I={i 1 ,i 2 ,…,i t }.
                                      }
                              ,
                              1 i  2 i  t i
                                       t i                     j
                    用户进而计算得到 γ           w δ =  ξξ + ∑  u ,其中, δ = ∏  .用户私钥信息为γ,用户公钥信息为κ=U id .
                                               id
                                                      ξ
                                                           j
                                      ξ  1 i =           1 i ≤≤ t i j ξ−
                                                         j ξ ∈ ≠  , j I
                 3.2.3    签密(SignCrypt)
                    设定接收者共有ρ个,待签密消息集合为 M={m 1 ,m 1 ,…,m ρ },接收者身份集合为 ID =              {ID  ,ID  ,...,ID  }, 发
                                                                                    R     1 R  R 2  R ρ
                                                         *
                 送者的身份为 ID S .首先,发送者 ID S 随机选择 α ∈      Z ,并计算得到 A s =α s P,α s 用于保证对于相同的消息每次生成
                                                     s   p
   281   282   283   284   285   286   287   288   289   290   291