Answers:
每当Alice和Bob希望就同一私钥达成一致时,最流行的方法是使用Diffie-Hellman。其工作方式如下:
首先选择两个公共值,假设和。(这些通常是非常大的素数,使用该协议的每个人都知道)。克= 17
爱丽丝(Alice)选择一个私人价值,鲍勃(Bob)选择一个私人价值。这些是他们自己的私密。b = 7
爱丽丝计算:,鲍勃计算:,在这种情况下,和,它们彼此交换值(可能是通过聊天),即每个人都知道 和的值。
爱丽丝计算:,鲍勃计算:,在这种情况下,。
现在,爱丽丝和鲍勃都同意将值作为其键。请注意,由于值和以及非常大的质数,窃听者几乎不可能分解它们并自己计算密钥。
私钥密码学中的一个问题是中间人攻击,这是选择公钥密码学而不是私钥密码学的主要原因之一。
首先,一个术语要点:您所描述的是对称加密,参与者之间共享的密钥通常称为秘密密钥;“私钥”通常是指只有一个参与者知道的公钥加密中的一部分密钥。
分发密钥的方式有两种:可以以某种物理上安全的方式进行传输,也可以使用其他形式的加密(通常为公钥加密)进行传输。
有一些交换密钥的方法,这些方法不需要秘密的通信通道。最受欢迎的是Diffie-Hellman密钥交换协议。Diffie-Hellman的原理是,每个参与者都生成自己的密钥对,并且存在一种数学运算,该运算从一个公共密钥和一个私有密钥构造出大量数字。这种数学运算具有一个非常有趣的属性:大量数字可以由Alice的私钥和Bob的公钥构造而成,也可以由Bob的私钥和Alice的公钥构造而成。无论哪种方式,您都会得到相同的数字。因此,爱丽丝(Alice)和鲍勃(Bob)交换了他们的公钥,并且双方都知道了大数字,然后可以将其用作秘密密钥。窃听者可以找出两个公钥,但是不可能仅从公钥中找到大量公钥。
Diffie-Hellman密钥交换允许两方交换秘密,而不管是谁在听。但是,它不会向Bob验证Alice的身份,反之亦然。因此,它很容易受到中间人攻击:Mallory与Alice(认为她正在与Bob交谈)执行密钥交换,并分别与Bob(认为他正在与Alice进行交谈)交换密钥,因此可以决定或最不知道秘密。
当攻击者可以拦截和注入消息时,参与者需要更多的密码来相互认证。(被动攻击者实际上意味着基础传输协议提供了身份验证。)一种简单的方法是让每个参与者都已经知道彼此的公钥。如果爱丽丝知道鲍勃的公钥:
有许多变体在一个方向上使用这些方法中的一种(或另一种变体),而在另一方向上使用相同或不同的方法,或者仅在一个方向上进行身份验证。例如,SSL / TLS(许多-s协议(例如HTTPS,SMTPS,IMAPS等)的加密层)可以使用几种不同的密码组合,通常对客户端进行服务器身份验证,但也可以选择对客户端进行身份验证。对于这个应用程序,Diffie-Hellman既缓慢又麻烦;具有公钥分发的最广泛的算法是RSA。
当然,Alice和Bob可能事先不知道彼此的公钥。因此,他们而是依靠信任链:Bob向Alice发送他的公钥,以及第三方的签名声明,确认该密钥确实是Bob的公钥。此签名的语句称为证书,而第三方是证书颁发机构。Bob可能知道第三方,或者第三方可以确认其身份,依此类推。最终,这种信任链(……为Dominique担保为Bob担保的Dominique担保)必须到达Bob已经信任的Ron,这意味着Bob拥有Ron的公钥,并且信任Ron仅签署有效证书。
有些协议不依赖于公钥加密。尤其是,Kerberos协议在基于unix的网络和基于Windows的网络中均用于在客户端和服务器之间建立连接。Kerberos使用称为密钥分发中心(KDC)的中央身份验证服务器。KDC必须将用户的密码存储在数据库中,并且客户端通常会提示用户输入密码。为了避免暴露密码,该协议不直接使用密码,而是使用密码哈希或更普遍的方式将密码应用于密钥。
使用此共享机密,客户端和KDC建立安全通道,KDC向客户端发送“票证”。该票证包含一个会话密钥(即,新生成的秘密密钥),以及该密钥的副本,该副本已用在KDC和客户端要联系的服务器之间共享的另一个对称密钥进行了加密。然后,客户端将此加密的副本转发到服务器。服务器解密该消息以获取会话密钥,并生成一个随机数,该随机数将使用会话密钥进行加密并发送回客户端。然后,客户端启动与服务器的安全通道,并使用会话密钥对其进行加密,并首先显示它可以解密随机数:这将向服务器验证客户端的身份。Kerberos会话建立是Needham-Schroeder协议的一种变体。
¹ 从某种意义上讲,密码学家已经尽了很大努力,但是他们找到的最佳方法需要无法实现的计算能力。
一种可能的方法是首先使用公共密钥密码术来交换私钥。但是,在不可能的情况下,有一些特定的密钥交换协议,可能最著名的是Diffie-Hellman协议。
总有一个简单的解决方案:用户会面并交换密钥。在许多情况下,这不是很实际,但有可能。
除了Diffie-Hellman(DH)密钥交换协议外,还存在量子密钥分发协议。Bennett-Brassard协议BB84是最著名的QKD协议之一。
BB84优于DH的优点在于,只有在离散对数无法有效完成的情况下,DH才是安全的(请参阅离散对数假设以及相关的DDH假设)。但是,BB84 从理论上讲是安全的。也就是说,即使,BB84仍将是安全的(但DH不会)。
另一方面,对于BB84来说,MITM攻击也是一个问题,必须假设用户使用经过身份验证的渠道来克服此问题(但这通常要求他们预共享身份验证密钥,我们回到第一个问题中)。