Diffie-Hellman密钥交换算法及其优化

上传人:飞*** 文档编号:50959883 上传时间:2018-08-11 格式:PDF 页数:3 大小:395.71KB
返回 下载 相关 举报
Diffie-Hellman密钥交换算法及其优化_第1页
第1页 / 共3页
Diffie-Hellman密钥交换算法及其优化_第2页
第2页 / 共3页
Diffie-Hellman密钥交换算法及其优化_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《Diffie-Hellman密钥交换算法及其优化》由会员分享,可在线阅读,更多相关《Diffie-Hellman密钥交换算法及其优化(3页珍藏版)》请在金锄头文库上搜索。

1、Diffie-Hellman 密钥交换算法及其优化首次发表的公开密钥算法出现在Diffie和 Hellman 的论文中,这篇影响深 远的论文奠定了公开密钥密码编码学。由于该算法本身限于密钥交换的用途,被 许多商用产品用作密钥交换技术,因此该算法通常称之为Diffie-Hellman密钥 交换。这种密钥交换技术的目的在于使得两个用户安全地交换一个秘密密钥以便 用于以后的报文加密。 Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。简言 之,可以如下定义离散对数:首先定义一个素数p 的原根,为其各次幂产生从1 到p-1 的所有整数根,也就是说,如果a是素数p的一个原根,那么

2、数值 a mod p, a2 mod p, ., ap-1mod p 是各不相同的整数,并且以某种排列方式组成了从1 到 p-1 的所有整数。 对于一个整数 b 和素数 p 的一个原根 a,可以找到惟一的指数i ,使得 b = aimod p其中 0 i ( p-1) 指数 i 称为 b 的以 a 为基数的模 p 的离散对数或者指数。该值被记为 inda ,p(b) 。 基于此背景知识,可以定义Diffie-Hellman密钥交换算法。该算法描述如 下: 1、有两个全局公开的参数,一个素数q 和一个整数, 是 q 的一个原根。 2、假设用户 A和 B希望交换一个密钥,用户A选择一个作为私有密钥

3、的随 机数 XAq,并计算公开密钥 YA=XAmod q。A对 XA的值保密存放而使YA能被 B公 开获得。类似地,用户 B选择一个私有的随机数XBq,并计算公开密钥 YB=XBmod q。B对 XB的值保密存放而使YB能被 A公开获得。 3、用户 A产生共享秘密密钥的计算方式是K = (YB)XAmod q。同样,用户 B 产生共享秘密密钥的计算是K = (YA)XBmod q。这两个计算产生相同的结果:K = (YB)XAmod q= (XBmod q)XAmod q= (XB)XAmod q (根据取模运算规 则得到)= XBXAmod q= (XA)XBmod q= (XAmod q)

4、XBmod q= (YA)XBmod q 因此相当于双方已经交换了一个相同的秘密密钥。 4、因为 XA和 XB是保密的,一个敌对方可以利用的参数只有q、 、YA和 YB。 因而敌对方被迫取离散对数来确定密钥。例如,要获取用户 B的秘密密钥, 敌对 方必须先计算XB = ind ,q(YB) 然后再使用用户 B采用的同样方法计算其秘密密钥K。 Diffie-Hellman密钥交换算法的安全性依赖于这样一个事实:虽然计算以 一个素数为模的指数相对容易,但计算离散对数却很困难。 对于大的素数, 计算 出离散对数几乎是不可能的。下面给出例子。密钥交换基于素数q = 97 和 97 的一个原根= 5 。

5、A和 B 分别选择私有密钥XA = 36 和 XB = 58 。每人计算其公开密钥YA = 36 = 50 mod 97 YB = 58 = 44 mod 97 在他们相互获取了公开密钥之后, 各自通过计算得到双方共享的秘密密钥如 下:K = (YB)XAmod 97 = 4436 = 75 mod 97 K = (YA)XBmod 97 = 5058 = 75 mod 97 从|50 ,44| 出发,攻击者要计算出75 很不容易。 下图给出了一个利用Diffie-Hellman计算的简单协议。假设用户 A 希望与用户 B建立一个连接,并用一个共享的秘密密钥加密在该 连接上传输的报文。用户A产

6、生一个一次性的私有密钥XA ,并计算出公开密钥 YA并将其发送给用户B。用户 B产生一个私有密钥XB ,计算出公开密钥YB并将它 发送给用户 A作为响应。必要的公开数值q 和 都需要提前知道。另一种方法是 用户 A选择 q 和 的值,并将这些数值包含在第一个报文中。 下面再举一个使用Diffie-Hellman算法的例子。假设有一组用户(例如一 个局域网上的所有用户),每个人都产生一个长期的私有密钥XA ,并计算一个 公开密钥 YA。这些公开密钥数值,连同全局公开数值q 和 都存储在某个中央目 录中。在任何时刻,用户B都可以访问用户 A 的公开数值,计算一个秘密密钥, 并使用这个密钥发送一个加

7、密报文给A。如果中央目录是可信任的,那么这种形 式的通信就提供了保密性和一定程度的鉴别功能。因为只有 A和 B可以确定这个 密钥,其它用户都无法解读报文(保密性)。接收方A知道只有用户 B才能使用 此密钥生成这个报文(鉴别)。 Diffie-Hellman算法具有两个吸引力的特征: 1、仅当需要时才生成密钥,减小了将密钥存储很长一段时间而致使遭受攻 击的机会。 2、除对全局参数的约定外,密钥交换不需要事先存在的基础结构。 然而,该技术也存在许多不足: 1、没有提供双方身份的任何信息。2、它是计算密集性的, 因此容易遭受阻塞性攻击, 即对手请求大量的密钥。 受攻击者花费了相对多的计算资源来求解无

8、用的幂系数而不是在做真正的工作。 3、没办法防止重演攻击。 4、容易遭受中间人的攻击。第三方C在和 A 通信时扮演 B;和 B通信时扮 演 A。A和 B都与 C协商了一个密钥,然后C就可以监听和传递通信量。中间人 的攻击按如下进行: (1)B在给 A的报文中发送他的公开密钥。 (2)C截获并解析该报文。 C将 B的公开密钥保存下来并给A发送报文, 该 报文具有 B的用户 ID 但使用 C的公开密钥 YC,仍按照好像是来自B的样子被发 送出去。 A收到 C的报文后,将 YC和 B的用户 ID 存储在一块。类似地, C使用 YC向 B发送好像来自 A的报文。 (3)B基于私有密钥 XB和 YC计算

9、秘密密钥 K1。A基于私有密钥 XA和 YC计算 秘密密钥 K2。C使用私有密钥 XC和 YB计算 K1,并使用 XC和 YA计算 K2。 (4) 从现在开始, C就可以转发 A发给 B的报文或转发 B发给 A的报文, 在途中根据需要修改它们的密文。使得A和 B都不知道他们在和 C共享通信。 Oakley 算法是对 Diffie-Hellman密钥交换算法的优化, 它保留了后者的优 点,同时克服了其弱点。 Oakley 算法具有五个重要特征: 1、它采用称为 cookie 程序的机制来对抗阻塞攻击。 2、它使得双方能够协商一个全局参数集合。 3、它使用了现时来保证抵抗重演攻击。 4、它能够交换 Diffie-Hellman公开密钥。 5、它对 Diffie-Hellman交换进行鉴别以对抗中间人的攻击。 Oakley 可以使用三个不同的鉴别方法: 1、数字签名:通过签署一个相互可以获得的散列代码来对交换进行鉴别; 每一方都使用自己的私钥对散列代码加密。散列代码是在一些重要参数上生成 的,如用户 ID 和现时。 2、公开密钥加密: 通过使用发送者的私钥对诸如ID 和现时等参数进行加密 来鉴别交换。 3、对称密钥加密:通过使用某种共享密钥对交换参数进行对称加密,实现 交换的鉴别。(杨献春编撰 )

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号