
_START_ARTICLE_
迪菲-赫爾曼密鑰交換
_START_SECTION_
该协议的历史
_START_PARAGRAPH_
迪菲－赫尔曼密钥交换是在美国密码学家惠特菲尔德·迪菲和马丁·赫尔曼的合作下发明的，发表于1976年。它是第一个实用的在非保护信道中创建共享密钥方法。它受到了瑞夫·墨克的关于公钥分配工作的影响。约翰·吉尔（John Gill）提出了离散对数问题的应用。该方案首先被英国GCHQ的马尔科姆·J·威廉森（Malcolm J. Williamson）在稍早的几年前发明，但是GCHQ直到1997年才决定将其公开，这时在学术界已经没有了研究这个算法的热潮了。_NEWLINE_这个方法被发明后不久出现了RSA，另一个进行公钥交换的算法。它使用了非对称加密算法。_NEWLINE_2002年，马丁·赫尔曼写到：_NEWLINE_这个系统...从此被称为“迪菲－赫尔曼密钥交换”。 虽然这个系统首先是在我和迪菲的一篇论文中描述的，但是这却是一个公钥交换系统，是墨克提出的概念，因此如果加上他的名字，这个系统实际上应该称为“Diffie–Hellman–Merkle密钥交换”。我希望这个小小的讲坛可以帮助我们认识到墨克对公钥密码学的同等重要的贡献。_NEWLINE_The system...has since become known as Diffie–Hellman key exchange.  While that system was first described in a paper by Diffie and me, it is a public key distribution system, a concept developed by Merkle, and hence should be called 'Diffie–Hellman–Merkle key exchange' if names are to be associated with it.  I hope this small pulpit might help in that endeavor to recognize Merkle's equal contribution to the invention of public key cryptography. _NEWLINE_描述了这个算法的美国专利4,200,770，已经于1997年4月29日后过期，专利文件表明了Hellman、Diffie和Merkle是算法的发明者。
_START_SECTION_
安全性
_START_PARAGRAPH_
在选择了合适的G和g时，这个协议被认为是窃听安全的。偷听者（"Eve"）可能必须通过求解迪菲－赫尔曼问题来得到gᵃᵇ。在当前，这被认为是一个困难问题。如果出现了一个高效的解决离散对数问题的算法，那么可以用它来简化a或者b的计算，那么也就可以用来解决迪菲－赫尔曼问题，使得包括本系统在内的很多公钥密码学系统变得不安全。_NEWLINE_G的阶应当是一个素数，或者它有一个足够大的素因子以防止使用Pohlig–Hellman算法来得到a或者b。由于这个原因，一个索菲热尔曼素数 q可以用来计算素数p=2q+1，这样的p称为安全素数，因为使用它之后G的阶只能被2和q整除。g有时被选择成G的q阶子群的生成元，而不是G本身的生成元，这样gᵃ的勒让德符号将不会显示出a的低位。_NEWLINE_如果Alice和Bob使用的随机数生成器不能做到完全随机并且从某种程度上讲是可预测的，那么Eve的工作将简单的多。_NEWLINE_秘密的整数a和b在会话结束后会被丢弃。因此，迪菲－赫尔曼密钥交换本身能够天然地达到完备的前向安全性，因为私钥不会存在一个过长的时间而增加泄密的危险。
_START_SECTION_
身份验证
_START_PARAGRAPH_
在最初的描述中，迪菲－赫尔曼密钥交换本身并没有提供通讯双方的身份验证服务，因此它很容易受到中间人攻击。 一个中间人在信道的中央进行两次迪菲－赫尔曼密钥交换，一次和Alice另一次和Bob，就能够成功的向Alice假装自己是Bob，反之亦然。而攻击者可以解密（读取和存储）任何一个人的信息并重新加密信息，然后传递给另一个人。因此通常都需要一个能够验证通讯双方身份的机制来防止这类攻击。_NEWLINE_有很多种安全身份验证解决方案使用到了迪菲－赫尔曼密钥交换。当Alice和Bob共有一个公钥基础设施时，他们可以将他们的返回密钥进行签名，也可以像MQV那样签名gᵃ和gᵇ；STS以及IPsec协议的IKE组件已经成为了Internet协议的一部分；当Alice和Bob共享一个口令时，他们还可以从迪菲－赫尔曼算法使用口令认证密钥协商，类似于ITU-T的建议X.1035。这已经被用作了G.hn的家庭网络标准。