Page 266 - 《软件学报》2020年第10期
P. 266

3242                                  Journal of Software  软件学报 Vol.31, No.10, October 2020

                                   1 i
                                        2 i
             ●  TestPair (U 1 1 i  ,U 2 2 i  ) : 如果 U 和 U 没有生成相同的会话密钥,则返回⊥;否则,抛掷一枚均匀的硬币 b∈
                                   1
                                        2
                              2 i
                         1 i
         {0,1}.若 b=1,输出U 和U 共享的会话密钥;若 b=0,输出与会话密钥等长度的随机比特串.
                              2
                         1
             最终,A输出一个比特 b′作为 TestPair 中的随机比特 b 的猜测,若 b′=b,则认为攻击者攻击成功,并记为
         Succkp.相应地定义攻击者A的优势为 Adv         kp  () =  A  2Pr[Succ  ] 1.−  若对所有的 PPT 攻击者A,其优势是安全参数
                                           , PD         kp
         的可忽略函数,则称协议 P 相对于诚实但好奇的服务器能够保证会话密钥的私密性.
         3    一个基于验证元的 3PAKE 协议的安全缺陷
             本节我们首先回顾杨等人         [29] 提出的基于验证元的三方 PAKE 协议(简记为 Yang-V3PAKE 协议)的详细步
         骤,然后提出了针对 Yang-V3PAKE 协议的离线字典攻击.
         3.1   杨等人提出的协议
             Yang-V3PAKE 协议采用了文献[24]中给出的口令哈希机制的具体构造,其中,参数生成算法 PSetup 输出为
         (p,G,g,h),G 是阶为素数 p 的循环群,g、h 是其中两个独立生成元.预哈希值生成算法 PPreHash 的输出为
          P =  g  P s π⋅  , 哈希算法 PHash 的输出为 H =  (H H 2 ) =  (g  P s  ,P h⋅  s H  ).
                                            ,
                                            1
             假设用户 A 和用户 B 想要在服务器 S 的协助下进行安全的密钥交换,其中,A 和 B 分别拥有口令 π A 和 π B ,
         服务器 S 拥有相应验证元 (s      H  A ,H 1A ,H 2 A ) 和 (s H  B ,H 1B ,H 2B ), 则 Yang-V3PAKE 协议的具体步骤如下.
                                                                                              *
             (1)  服务器 S 选择两个 随机数 ss ∈ Z           p , 分别 计算 T =  A  h  A s  ,T =  A *  T A (H h − s H A  ) 和 T =  h  B s  , T =
                                            ,
                                                                            2 A
                                                                                      B
                                                                                              B
                                             B
                                           A
                                                R
                                  *
                                                        *
                                                         ,
         TH h   − s H B  ), 然后发送消息 (TH 1A ) 给用户 A,发送消息 (TH 1B  ) 给用户 B;
           (
                                  ,
             2B
                                 A
          B
                                                        B
                                 *
                                                                                                ,
             (2)  用户 A 收到消息 (TH     1A ) 后,运行平滑投射哈希密钥生成算法 HashKG,生成哈希密钥 hk =               (,η η
                                  ,
                                                                                             1
                                                                                               2
                                 A
                                           π
                                 π μ
                               μ
           ,, ), 计算 ω
         θ μγ        A  h  ,ω =  * A  =  h H 1A A ,T =  A  T A *  / H 1A A  ,ω  AS  =  T A μ  , 并利用 ω AS  计算 MAC 认证值 σ AS  =  MAC ω AS  (||A B  || ||S
                                            π
                                                                                               *
                                                                   *
         ω * A ), 然后选择随机数 r ∈ Z 计算 e =  h H 1A A  并向服务器发送消息 (,e ωσ   AS ); 类似地,用户 B 收到消息 (,T
                                          A r
                                                                   ,
                                p
                                                                   A
                                                                                               B
                              R
                           A
                                     ′′
                                        ,, ,)μ γ
          H 1B ) 后,选择随机哈希密钥 hk′ =   ( ,η ηθ ′ ′ ′ 和随机数 r ∈ Z  p , 计算 ωω * B ,T B ,ω BS ,σ BS , ,e′ 并向服务器发送
                                                                     ,
                                       2
                                     1
                                                                    B
                                                        B
                                                          R
               ′
         消息 (,e ωσ  BS ).
                 *
                  ,
                 B
                                              ′
                                     *
             (3)  服务器 S 接收到消息 (,e ωσ    AS ) 和 (,e ωσ BS ) 后,首先计算 ω  A  ω =  * A  /(Hh − s H A  ), ω AS  =ω A A s  和 ω = ω B *  /
                                                *
                                      ,
                                                 ,
                                                B
                                                                                           B
                                     A
                                                                         2 A
          (Hh − s H B  ),ω  BS  =ω  B B s  , 然后验证 σ AS  ,σ BS  的有效性.当验证都通过时,服务器计算 e AS  =  [/ (e  Hh −  s H A  )] ⋅  B s  Hh −  s H B  ,
                                                                                2A
                                                                                           2B
            2B
          e BS  =  [/ (e′  H h −  s  H B  )] ⋅  A s  H h −  s H A  ,生成 MAC 值 λ AS  =  MAC ω AS  (|| || ||A B S e AS  ), λ BS  =  MAC ω BS  (||A B  || ||S   e BS  ), 接着
                             2 A
                   2B
         向用户 A 和 B 分别发送消息 (e      AS ,e BS ,λ AS  ) 和 (e BS ,e AS  ,λ BS ).
                                                                                           θγ
                                                                                         1 η
             (4)  用户 A 收到消息 (e  AS ,e BS  ,λ AS  ) 后,首先验证 MAC 值 λ AS  是否有效.验证通过后,计算 hp =  g g c ω AS  ,
                                                                                           2
                                                                                     1
                                                                                        1
               η
          hp =  g d γ , l =  (, ,A B hp ),u =  1  g 1 A r  ,u =  2  g  2 A r  ,v =  (cd ξ ) ,ξ =  A r  H  k  ( , ,l u e AS ), 然后,用户 A 给用户 B 发送消息 hp =  (hp
                                                                                                ,
                2
               1
           2
                                                                                               1
          hp  ), C  =  (,u u  ,e  , )v ;类似地,用户 B 收到消息 (e  ,e  ,λ  ) 且 λ 验证通过后,相应的计算并发送消息 hp′ =
           2   AS   1  2  AS                      BS  AS  BS  BS
                        ′′
          (hp hp′ , ′  ), C  =  (,u u  ,e  , )v′ 给用户 A.
            1  2   BS   1  2  BS
                                                                                           A r
             (5)  用户 A 和 B 收到对方发送的消息后,分别计算 sk =              ()u′  1 η  ξ +  ′ η  2 ( ) (u′  θ  e  / H π  A μ  ) ( ) (v′  γ  hp hp′  ′  ξ  ) ,sk =
                                                           A   1      2  BS  1A       1  2    B
                                    B r
          u  1 η  ξ′  η  2 ′ +⋅  u  θ  (e  / H π  B μ ′  ) v γ  ′  (hp hp  ξ ′  ′  ) , 根据平滑投射哈希函数的性质可以保证 sk A =sk B .
          1     2  AS  1B      1  2
             文献[29]声称,Yang-V3PAKE 协议能够提供会话密钥的语义安全性、前向安全性、针对服务器的密钥私密
         性,还能够抵抗不可测在线字典攻击和服务器泄露攻击.根据安全模型的定义,协议满足语义安全性是指攻击者
                              β
         成功的优势至多为 (O q     s  / 2 ) negl+  ( ),k 其中,q s 为攻击者进行在线字典攻击的次数,这意味着攻击者不能针对协
         议实施离线字典攻击.
         3.2   对Yang-V3PAKE协议的攻击和分析
             本小节首先给出对 Yang-V3PAKE 协议的离线字典攻击.我们注意到,文献[29]中假设攻击者 A 完全控制着
   261   262   263   264   265   266   267   268   269   270   271