Encrypted Key Exchange: Password-Based Protocols Secure Against Dictionary Attacks
作者:Steven M. Bellovin Michael Merritt
发表:IEEE Symposium on Research in Security and Provacy, Oakland, May 1992
一、古典密钥协商
(一)基本协议
预先共享password P,打算协商会话密钥R,T代表终端类型。用会话密钥加密返回一个终端类型表示会话密钥协商成功
(二)攻击协议
攻击者利用①消息进行解密
R ′ = P ′ − 1 ( P ( R ) ) R'=P'^{-1}(P(R)) R′=P′−1(P(R))
再利用R’去测试②的消息
T ′ = R ′ − 1 ( R ( T ) ) T'=R'^{-1}(R(T)) T′=R′−1(R(T))
由于T代表了终端类型,所以T本身是有含义的,攻击者即可通过观察T’是否具有代表终端类型的含义即可判断解密是否成功。
由此我们可以看出攻击者的主要攻击思想,由于password本身的搜索空间要小,所以攻击者可以通过穷举进行破解,然后利用一些验证性的文本来确定其破解是否正确。
二、基于公钥的EKE
(一)基本协议
其中EA代表公钥,DA代表私钥。
-
优点:
- R被公钥保护了起来,变得难以被破解(默认公钥系统是安全的)
- 即使破解P,EA本身是随机数,不能通过观察辨认出解密出的结果是否为公钥,所以也就不存在验证P的文本。
- 关键点在于,公钥是非对称的,所以只用公钥加密的文本和公钥本身,是无法解密文本的。
-
缺点:
缺少新鲜性验证
(二)加入随机数挑战
其中NA、NB是两个随机数,A代表左侧小绿的身份是A
- 解析:如果不加随机数挑战的话,攻击者可以通过截获以前的带有会话密钥的信息,然后迫使用户使用旧的会话密钥。
三、具体实现
(一)利用RSA实现EKE
用RSA实现重点在于关注公钥<e, n>,对于e和n来分别讨论。
首先,讨论n的注意细节。
- n是不能够被P加密后进行发送的,只能通过明文发送。因为n本身要求是具有两个大素数因子,这个信息将成为用于验证的信息。攻击者解密P(n)得到的n’如果有小因子就可以说明P的猜测是错误的,这样攻击者就可以快速进行筛选。
- 如果n没被加密可能会被密码分析。
然后,讨论e的注意细节。
- e要随机加1再进行加密,因为e一定是奇数,所以攻击者可以利用这个信息作为验证信息去进行筛选,只要e以1/2的几率加1,那么正常的接收方接到e后如果是偶数则减1即可,而攻击者则不知道这个解密出来的偶数结果本身就是错的,还是是正确的奇数加1。
- e本身不会泄露信息,e只要与(p-1)(q-1)互素即可,而一般在选择p和q的时候,都要求(p-1)/2和(q-1)/2是素数,所以e的候选范围很大,不会暴露P的信息。
如果e和n都是以明文发送的话,则可能会被仿冒攻击。
-
攻击者构造好e和n,其中e不满足与(p-1)(q-1)互素,则会导致整个的搜索空间坍缩。攻击者可以对消息②进行猜测P解密,然后得到密文
M ′ = E A ( R ) = R e (