一种基于口令的三方密钥交换方法 【技术领域】
本发明涉及通信安全领域, 具体涉及一种基于口令的三方密钥交换协议。背景技术 当通信双方需要在公开信道上安全通信时, 为了保证通信内容的保密性, 他们需 要在通信前协商一个会话密钥来对将要传输的数据进行加密。 由于基于口令的密钥交换协 议只需要通信双方共享一个简单易记的口令, 因此这种协议得到了更广泛的应用。但是由 于口令的低熵性, 使得这种协议更容易字典攻击。字典攻击可分为以下三类 :
1. 在线可检测字典攻击 : 攻击者尝试猜测客户的口令并进行在线通信来验证他 猜测的口令的正确性, 一旦攻击者口令猜测失败很容易被发现。
2. 在线不可检测字典攻击 : 攻击者尝试猜测客户的口令并进行在线通信来验证 他猜测的口令的正确性, 攻击者口令猜测失败也不会被发现。因此这种情况下攻击者可以 实施多次的猜测攻击。
3. 离线字典攻击 : 攻击者猜测客户的口令并在离线的情况下验证猜测口令的正 确性。
安全的基于口令的密钥交换协议应该能有效的抵御在线不可检测字典攻击和离 线字典攻击。
1992 年, 发明人 Bellovin 和 Merritt 首先提出了一个基于口令的双方密钥交换 (2PAKE) 协议, 通过通信双方共享的口令, 该协议成功实现了通信双方的相互认证和密钥交 换。此后, 人们又提出了大量的 2PAKE。
但是由于双方的密钥交换协议适合 “客户 -- 服务器” 模式的系统, 却不适合于像 P2P 这样有大量客户需要互相通信的系统。1995 年, 发明人 Steiner 提出了一个基于口令 的三方密钥交换 (3PAKE) 协议, 但是工程技术人员 Ding 和 Horster 指出该协议不能抵御在 线不可检测字典攻击, 同时工程技术人员 Lin 指出该协议同样不能抵御离线字典攻击, 并 提出了一个基于公钥技术的改进协议。2001 年, 发明人 Lin 提出了一个新的不需要公钥技 术的 3PAKE 协议, 但是该协议要比他前面提出的基于公钥的改进协议多执行两轮。2003 年 发明人 Sun 提出了一个新的 3PAKE, 但工程技术人员 Nam 很快指出该协议容易遭受中间人 攻击。2004 年, 发明人 Lee 提出了一个新的 3PAKE 协议并声称该协议能抵御各种攻击, 并 提供完美的前向安全性。2007 年, 发明人 Lu 和 Cao 基于 CCDH 假设提出了一个简单高效的 3PAKE 协议, 并声称该协议能抵御各种攻击。 但随后人们分析发现该协议不能抵御中间人攻 击, 在线不可检测字典攻击, 冒充攻击, 以及离线字典攻击。
发明内容
本发明所要解决的问题是 : 如何提供一种基于口令的三方密钥交换建立方法, 这 种新 3PAKE 协议能够抵御现有的各种攻击, 并在交换轮数和通信时间上同现有的协议相比 有所改进。本发明所提出的技术问题是这样解决的 : 提供一种基于口令的三方密钥交换方 法, 其特征在于, 包括以下步骤 :
S 验证 A 发送的 VAS : 若 h(gax, A, B, S) 与 的后半部分相等, 且 S 验证 B 发送 的 VBS : 若 h(gbx, A, B, S) 与 gy 分别采用
的后半部分相等, h(gax, A, B, S) 和 h(gby, A, B, S) 中 gx, 的前半部分, 则将 VSA 发送给 A、 VSB 发送给 B ; 包含 gx, 且 B 验证 S 发送的 VSA : 若 包含 gy, 则和A 验证 S 发送的 VSA : 若A, B 分别计算共同建立双方统一的会话钥匙 gxy = (gy)x = (gx)y ;
其 中: A、 B 是 会 话 双 方, S 是 第 三 方 服 务 器; 函数 EK(M) 是表示用密钥 K 对 M 进行对称加密, pwA 是 A 与 S 共享的口令, pwB 是 B 与 S 共享的口令, Zp 是模 p 剩余 类集合, g 是 Zp 的生成元, p 是一个大素数, 函数 h() 是一个 {0, 1}* → Zp-1 的哈希函数 ; 函 * 数 DK(M) 是表示用密钥 K 对 M 进行对称解密 ; 算式 n ∈ RZp 是表示 n 从模 p 乘法群中随机 * * 选取, a, b ∈ RZp 是 S 产生的随机数, x ∈ RZp 是 A 产生的随机数, y ∈ RZp* 是 B 产生的随机 数。
按照本发明所提供的三方密钥交换方法, 其特征在于, 还包括 :
S 产生随机数 a 计算发送给 A, 并产生随机数 b 计算发送给B;
A 收到 SA、 产生随机数 x 再计算并发送 VAS, B 收到 SB、 产生随机数 y 再计算并发送VBS。 按照本发明所提供的三方密钥交换建立方法, 其特征在于, S 这样获取 A 和 B, 包括 以下四种方式 :
( 一 )A 发送 A 和 B 给 S ;
( 二 )B 发送 A 和 B 给 S ;
( 三 )A 发送 B 给 S, S 识别发送方 A ;
( 四 )B 发送 A 给 S, S 识别发送方 B。
本发明有益效果在于 : 以 Sun 的协议和 Lee 的协议为基础, 提出一个新的 3PAKE 协 议, 该协议不仅能有效的抵御各种攻击, 提供完美的前向安全性, 而且在交换轮数和通信时 间上都有所改进。较现有技术主要具有以下特征 : 1. 实现了每个客户 A, B 与第三方服务器 S 的相互认证 ; 2. 该协议能够抵御现有的各种攻击 ; 3. 该协议在交换轮数和通信时间上同 现有的协议相比有所改进。
附图说明
图 1 是本发明基于口令的三方密钥交换方法流程示意图。 具体实施方式
下面, 结合附图对本发明方法进行详细说明, 其中采用符号 :
A, B 代表协议中需要协商密钥的两个客户
S 代表可信第三方服务器
pwA 表示 A 与 S 共享的口令pwB 表示 B 与 S 共享的口令
Zp 表示模 p 剩余类集合
a ∈ RZp* 表示 a 从模 p 乘法群中随机选取
(G, g, p) 表示有限循环群 G, g 为 Zp 的生成元, p 是一个大素数 *
h() 是一个 {0, 1} → Zp-1 的哈希函数
EK(M), DK(M) 分别表示用密钥 K 对 M 进行对称加密和对称解密
为了简便起见, 在协议描述中省略了 “mod p”
本发明基于口令的三方密钥交换方法以 Sun 和 Lee 的 3PAKE 协议为基础, 并结合 对称加密, 提出了一个新的三方密钥交换协议。 协议开始前 A, B 分别和 S 共享口令 pwA, pwB。 新协议的具体步骤如图 1 所示, 包括以下步骤 :
101)A 发送 A, B 给 S, 表明 A 想通过 S 与 B 协商一个会话密钥。
102)S 收到 A, B 后, 首先 S 产生随机数 a, b ∈ RZp*, 计算 103)A, B 分别收到 SA, SB 后, 利用自己的口令 pwA, pwB 解密 SA, SB 得到 然 后 A, B 分 别 产 生 随 机 数 x, y ∈ RZp*, 并计算 最后分别将 VAS, VBS 发送然后将 SA, SB 分别发送给 A, B。
x给 S。 104)S 收到 A, B 发送的 VAS, VBS 后, 分别计算y ax by得到解密后的前半 然后分别部分 g , g, 然后利用自己保存的 a, b 计算 h(g , A, B, S), h(g , A, B, S), 并验证是否与解 密后的后半部分相等, 若相等, S 分别计算 将 VSA, VSB 发送给 A, B。
105)A, B 收到 VSA, VSB 后, 分别利用保存的 gax, gby 对它们解密, 计算A 验证解密后的消息中是否含有 gx, B 验证解密后的消息中是否含有 gy。若验证都含有, 则 y x x y xy A, B 计算 KAB = (g ) , KAB = (g ) 。A, B 双方的会话密钥 K = KAB = KBA = g 。
进一步, 对本发明方法进行安全和效率分析 :
( 一 ) 安全性分析
假设攻击者具有窃听, 重放, 冒充, 伪造等手段对协议进行攻击。我们从现有的协 议常遭受的几种攻击来分析新协议的安全性。
(1) 假设攻击者截获了 A, B, SA, SB, VAS, VBS, VSA, VSB, 除了身份外其他消息都进行了 对称加密, 攻击者无法在不知道密钥的情况下得到任何其他有用的信息。
(2) 假设攻击者试图冒充 A, B, 但是在协议执行第二步中 S 用 pwA, pwB 分别加密了 a b g, g 产生了 SA, SB, 攻击者在不知道口令的情况下无法对 SA, SB 解密, 所以无法得到 ga, gb, 所以攻击者无法产生用于冒充的消息 VAS, VBS。
(3) 假设攻击者试图冒充 S, 但是在协议执行第三步中 A, B 分别用 pwA, pwB 分别加 x y 密了 g , g 产生了 SAS, SBS, 攻击者在不知道口令的情况下无法对 VAS, VBS 解密, 所以无法得到 x y g, g, 所以攻击者无法产生用于冒充的消息 VSA, VSB。
(4) 假设攻击者试图进行在线不可检测猜测攻击, 攻击者可以选择可能的口令 pw′ A, pw′ B, 但是 A, B 能在验证 VSA, VSB 时发现这种口令猜测攻击, S 能在验证 VAS, VBS 时 发现这种口令猜测攻击。(5) 假设攻击者得到了口令 pwA 或 pwB, 攻击者无法计算出以前的会话密钥 K, 因为 攻击者想要得到以前的会话密钥就必须解一个离散对数问题, 而这个问题是现在公认的难 解问题。所以该协议具有完美的前向安全性。
( 二 ) 效率分析
与 Sun 协议和 Lee 协议进行效率对比, 对比结果如表 1。对比内容包括随机数个 数, 指数运算次数, 非对称加密 / 解密次数, 交换轮数和执行时间。因为对称加密和哈希函 数的计算量很小, 相较于非对称加密 / 解密和指数运算可以忽略不计, 所以我们这里也不 做考虑。通常我们认为非对称加密 / 解密和指数运算的计算量相当, 通过对它们的对比可 以看出新协议的计算量与 Lee 协议和 Sun 协议相当, 但随机数个数少于 Sun 协议。在新协 x y 议中 SA, SB, g, g 可以预先计算出 ( 其他两个协议也做同样考虑 ), 所以在执行新协议时只 需要 3 次指数运算 ( 用 3E 表示, E 表示非对称加密 / 解密次数和指数运算次数 ) 的时间就 能完成, 优于 Sun 协议和 Lee 协议。并且新协议只需要执行 4 次信息交换, 在交换轮数上要 优于 Sun 协议和 Lee 协议。
表1
最后, 本发明协议可以用采用软件以及硬件实现, 每个用户在协议执行过程中选 择的随机数在协议结束后必须安全删除, 避免泄露的可能。