原文教材 与 参考资料:
Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].
该书项目地址(可以免费获取):http://toc.cryptobook.us/
博客为对该书的学习笔记,并非原创知识,帮助理解,整理思路。
21.11 Password authenticated key exchange
口令可认证密钥交换协议的设计目的是为了抵抗“钓鱼攻击”。钓鱼攻击,即为敌手伪造一个与官方一模一样的登录界面,诱骗诚实参与者输入登录信息,从中获取一些关键的隐私信息。
为了抵抗上述“钓鱼攻击”,一种新的密钥交换协议被提了出来"password based key exchange", PAKE协议,任何参与方在已经存在一个分享完成的口令下,建立一个共享会话密钥。此处没有进一步的假设,没有CA,没有任何形式的TTP。PAKE协议的安全性与AKE的安全性定义基本相同,特别要主要的就是弱密钥导致的(线上/线下)字典攻击。
下图描述了一个基本的PAKE0协议:
然而,这个PAKE0协议依然存在问题:1.当口令pw是一个弱口令时,那么窃听敌手很容易的发起一个线下字典攻击,一旦这个密钥与字典存在相关的关系,那么敌手很容易窃听到r,s。并容易通过计算得到密钥k。
为了改进上述协议的不安全情况,进一步改进协议PAKE0得到新协议PAKE1,描述如下:
此处将H当做随机谕言机,我们可以将敌手调用去解决CDH问题,如果该敌手真的能够破解该方案,当然,这只能针对消极的窃听敌手,如果是参与协议的积极敌手,那么该敌手是非常容易获得w的,最终依然可以发动字典攻击。
为了解决积极敌手带来的威胁,我们考虑PAKE2协议,描述如下:
该协议在下述引理下被证明是能够抵抗active adversary的:
该引理依赖于CDH困难问题的困难性。
考虑一下的一种情况,协议的执行往往是在客户端与服务器端之间,如果预先共享的密钥是在服务器有副本的。如果服务器被盗用,那么我们将如何保证协议的安全性?PAKE2是不能满足该安全性的,我们考虑以下的协议PAKE2+:
PAKE2和PAKE2+的区别在于,新加入的d的计算来源,服务器的与客户端的d并不能分别独立的计算出来,这个思想是非常朴素的,既然一方无法保密,那就两方联合生成,在CDH安全性下保证该协议是安全的。