现代密码学(二)——DH密钥协商协议

  DH密钥协商协议即Diffie-Hellman密钥协商算法,DH密钥协商算法在1976年在Whitfield Diffie和Martin Hellman两人合著的论文New Directions in Cryptography(Section Ⅲ PUBLIC KEY CRYPTOGRAPHY)中被作为一种公开秘钥分发系统(public key distribution system)被提出来。并不是用来加密的,而是解决密钥配送的问题,双方就某次通信达成密钥的统一。

一、DH密钥协商协议的流程

  以Alice和Bob为通信双方角色,述阐DH算法的流程。

1)首先Alice与Bob共享一个素数p以及该素数p的本原根g(geneator),当然这里有2⩽g⩽p−1。这两个数是可以不经过加密地由一方发送到另一方,至于谁发送的并不重要,其结果只要保证双方都得知p和g即可。

 2)然后Alice产生一个私有的随机数A,满足1⩽A⩽p−1,然后计算g^A mod p = Y_a ,将结果Ya通过公网发送给Bob;与此同时,Bob也产生一个私有的随机数B,满足1⩽B⩽p−1,计算g^B mod p = Y_b,将结果Yb通过公网发送给Alice。

 3)此时Alice知道的信息有p,g,A,Y_a,其中数字A是Alice私有的,只有她自己知道,别人不可能知道,其他三个信息都是别人有可能知道的;Bob知道的信息有p,g,B,Y_b,其中数字B是Bob私有的,只有他自己知道,别人不可能知道,其他都是别人有可能知道的。

到目前为止,Alice和Bob之间的秘钥协商结束。

Alice通过计算K_a =(Y_b)^A mod p得到秘钥K_a,同理,Bob通过计算K_b = (Y_a)^B mod p得到秘钥K_b,此时可以证明,必然满足

K_a = K_b。因此双方经过协商后得到了相同的秘钥,达成秘钥协商的目的。

 证明:

对于Alice有:

K_{a}=(Y_b)^A mod p=(g^B mod p)^A mod p=g^{B×A} mod p

对于Bob有:

K_b=(Y_a)^Bmodp=(g^Amodp)^Bmodp=g^{A×B}modp

可见,Alice和Bob生成秘钥时其实是进行相同的运算过程,因此必然有K_a = K_b。"相同的运算过程"是双方能够进行秘钥协商的本质原因,类似的利用椭圆曲线进行秘钥协商也是与之相同的原理。

更严密地考虑,A和B不应该选择p−1,也就是说只能在集合 {1,2,3,...,p−2} 中选择。这是因为如果选择p−1,那么由费马小定理可知,情况就退化成了 g^{p-1}=1modp的情况,对秘钥协商的机密性构成威胁。

那么窃听者Eve能否破解秘钥呢?首先要知道Eve能够得知哪些信息,显然Eve能够窃听到的信息只能有p,g,Y_a,Y_b,现在的问题是Eve能够通过以上信息计算出K_a或者K_b吗?要计算K_a或者K_b需要知道A或者B。

以计算A为例,Eve能根据条件g^A mod p = Y_a计算出A吗?实际上当p是大质数的时候,这是相当困难的,这就是离散对数问题。实际上在论文发表的当时,计算该问题的最有效的算法的时间复杂度大约是O(\sqrt{p})。也正是求解该问题在计算上的困难程度保证了DH算法的安全性。如果能够找到对数时间复杂度的算法,那么该算法即容易被攻破。

二:举个例子

1)假设Alice和Bob共享的p和g分别是p = 17,g = 3,显然这里g = 3是p = 17的一个本原根,实际上3,5,6,7,10,11,12,14都是17的本原根。

2)然后Alice选定一个私有数字,假设A=15,计算Y_a = 3^{15} mod 17 = 14348907 mod 17 = 6,将6发送给Bob;同时Bob也选定一个私有的数字,假设B=13 ,计算Y_b = 3^{13} mod 17 = 1594323 mod 17 = 12,将12发送给Alice。

3)Alice计算秘钥K_a = 12^{15} mod 17 = 2147483647 mod 17 = 8,Bob计算秘钥K_b = 6^{13} mod 17 = 2147483647 mod 17 = 8 。双方经过协商后,8最终成为双方的协商的秘钥。

三、存在的问题

是否DH秘钥协商算法就一定安全呢?应该说也不是,因为存在一种称为中间人攻击,能够对这种秘钥协商算法构成威胁。假设秘钥协商过程中,在Alice和Bob中间有一个称为Mallory的主动攻击者,他能够截获Alice和Bob的消息并伪造假消息,考虑如下情况。

1)Alice和Bob已经共享一个素数p及其该素数p的本原根g,当然Mallory监听到报文也得知了这两个消息。

2)此时Alice计算Y_a = g^A mod p,然而在将Y_a发送给Bob的过程中被Mallory拦截,Mallory自己选定一个随机数S,计算

Y_{sb} = g^S mod p ,然后将Y_{sb}发送给了Bob。

 3)同时Bob计算Y_b = g^B mod p,然而在将Yb发送给Alice的过程中被Mallory拦截,Mallory自己选定一个随机数T,计算

Y_{ta} = g^T mod p,然后将Y_{ta}发送给了Alice。

  由于通讯消息被替换,Alice计算出的秘钥实际上是Alice和Mallory之间协商秘钥:K_{am} = g^{A×T} mod p;Bob计算出的秘钥实际上是Bob与Mallory之间协商的秘钥:K_{bm} = g^{BS} mod p。如果之后Alice和Bob用他们计算出的秘钥加密任何信息,Mallory截获之后都能够解密得到明文,而且Mallory完全可以伪装成Alice或者Bob给对方发消息。

  • 6
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
现代密码学:原理与协议》是一本关于密码学的教材,作者是郭川多和欧阳明高。这本书系统地介绍了现代密码学的基本原理和常见的密码协议。 密码学是研究如何保护通信和信息安全的学科。在信息社会中,保护个人和机构的信息安全至关重要。密码学通过使用密码算法和协议来加密和解密信息,从而确保信息的机密性、完整性和可用性。 《现代密码学:原理与协议》主要涵盖了对称密码学、非对称密码学和散列函数等基本概念的讲解。对称密码学是一种加密方式,发送和接收方使用相同的密钥来加密和解密信息。非对称密码学使用两个密钥,一个用于加密,另一个用于解密。散列函数则用于将任意长度的消息转化为固定长度的哈希值,以验证信息的完整性。 除了基本原理,该书还介绍了一些具体的密码协议,如DES、AES和RSA等。这些协议经过多年的研究和实践,被广泛应用于各个领域。例如,DES是一种对称密码算法,常用于电子商务和金融领域。RSA是一种非对称密码算法,常用于数字签名和密钥交换。 本书旨在帮助读者深入理解现代密码学的原理和应用。每个章节都配有实例和练习题,以帮助读者加深对密码学的理解。此外,该书还介绍了一些密码学的发展趋势和挑战,如量子密码学和侧信道攻击等。 总的来说,《现代密码学:原理与协议》是一本介绍密码学基本知识和应用的权威教材,适合密码学领域的学生和从业人员阅读和学习。读者通过阅读本书可以了解密码学的原理和应用,为信息安全做出贡献。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值