版权归原作者所有,如有侵权,请联系我们

[科普中国]-迪菲-赫尔曼密钥交换

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年首次发表。马丁·赫尔曼曾主张这个密钥交换方法,应被称为迪菲-赫尔曼-墨克密钥交换(英语:Diffie–Hellman–Merkle key exchange)。

介绍迪菲-赫尔曼密钥交换(英语:Diffie–Hellman key exchange,缩写为D-H) 是一种安全协议。它可以让双方在完全没有对方任何预先信息的条件下通过不安全信道创建起一个密钥。这个密钥可以在后续的通讯中作为对称密钥来加密通讯内容。公钥交换的概念最早由瑞夫·墨克(Ralph C. Merkle)提出,而这个密钥交换方法,由惠特菲尔德·迪菲(Bailey Whitfield Diffie)和马丁·赫尔曼(Martin Edward Hellman)在1976年首次发表。马丁·赫尔曼曾主张这个密钥交换方法,应被称为迪菲-赫尔曼-墨克密钥交换(英语:Diffie–Hellman–Merkle key exchange)。1

迪菲-赫尔曼密钥交换的同义词包括:

迪菲-赫尔曼密钥协商

迪菲-赫尔曼密钥创建

指数密钥交换

迪菲-赫尔曼协议

虽然迪菲-赫尔曼密钥交换本身是一个匿名(无认证)的密钥交换协议,它却是很多认证协议的基础,并且被用来提供传输层安全协议的短暂模式中的前向安全性。

描述迪菲-赫尔曼通过公共信道交换一个信息,就可以创建一个可以用于在公共信道上安全通信的共享秘密(shared secret)。2

一般的描述:

爱丽丝和鲍伯写上一个有限循环群G和它的一个生成元g。 (这通常在协议开始很久以前就已经规定好;g是公开的,并可以被所有的攻击者看到。)

爱丽丝选择一个随机自然数a并且将发送给鲍伯。

鲍伯选择一个随机自然数b并且将发送给爱丽丝。

爱丽丝 计算

鲍伯 计算

爱丽丝和鲍伯就同时协商出群元素,它可以被用作共享秘密。因为群是乘法交换的。

历史迪菲-赫尔曼密钥交换是在美国密码学家惠特菲尔德·迪菲和马丁·赫尔曼的合作下发明的,发表于1976年。它是第一个实用的在非保护信道中创建共享密钥方法。它受到了瑞夫·墨克的关于公钥分配工作的影响。约翰·吉尔(John Gill)提出了离散对数问题的应用。该方案首先被英国GCHQ的马尔科姆·J·威廉森(Malcolm J. Williamson)在稍早的几年前发明,但是GCHQ直到1997年才决定将其公开,这时在学术界已经没有了研究这个算法的热潮了。

这个方法被发明后不久出现了RSA,另一个进行公钥交换的算法。它使用了非对称加密算法。

2002年,马丁·赫尔曼写到:这个系统...从此被称为“迪菲-赫尔曼密钥交换”。 虽然这个系统首先是在我和迪菲的一篇论文中描述的,但是这却是一个公钥交换系统,是墨克提出的概念,因此如果加上他的名字,这个系统实际上应该称为“Diffie–Hellman–Merkle密钥交换”。我希望这个小小的讲坛可以帮助我们认识到墨对公钥密码学的同等重要的贡献。

描述了这个算法的美国专利 4,200,770,已经于1997年4月29日后过期,专利文件表明了Hellman、Diffie和Merkle是算法的发明者。

安全性在选择了合适的G和g时,这个协议被认为是窃听安全的。偷听者("Eve")可能必须通过求解迪菲-赫尔曼问题来得到g。在当前,这被认为是一个困难问题。如果出现了一个高效的解决离散对数问题的算法,那么可以用它来简化a或者b的计算,那么也就可以用来解决迪菲-赫尔曼问题,使得包括本系统在内的很多公钥密码学系统变得不安全。

G的阶应当是一个素数,或者它有一个足够大的素因子以防止使用Pohlig–Hellman算法来得到a或者b。由于这个原因,一个索菲热尔曼素数q可以用来计算素数p=2q+1,这样的p称为安全素数,因为使用它之后G的阶只能被2和q整除。g有时被选择成G的q阶子群的生成元,而不是G本身的生成元,这样g的勒让德符号将不会显示出a的低位。

如果Alice和Bob使用的随机数生成器不能做到完全随机并且从某种程度上讲是可预测的,那么Eve的工作将简单的多。

秘密的整数a和b在会话结束后会被丢弃。因此,迪菲-赫尔曼密钥交换本身能够天然地达到完备的前向安全性,因为私钥不会存在一个过长的时间而增加泄密的危险。

身份验证在最初的描述中,迪菲-赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务,因此它很容易受到中间人攻击。 一个中间人在信道的中央进行两次迪菲-赫尔曼密钥交换,一次和Alice另一次和Bob,就能够成功的向Alice假装自己是Bob,反之亦然。而攻击者可以解密(读取和存储)任何一个人的信息并重新加密信息,然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。

有很多种安全身份验证解决方案使用到了迪菲-赫尔曼密钥交换。当Alice和Bob共有一个公钥基础设施时,他们可以将他们的返回密钥进行签名,也可以像MQV那样签名g和g;STS以及IPsec协议的IKE组件已经成为了Internet协议的一部分;当Alice和Bob共享一个口令时,他们还可以从迪菲-赫尔曼算法使用口令认证密钥协商,类似于ITU-T的建议X.1035。这已经被用作了G.hn的家庭网络标准。

参见密码学主页

模算术

椭圆曲线迪菲-赫尔曼

公钥密码学

ElGamal加密算法

迪菲-赫尔曼问题

MQV

口令认证密钥协商

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所