【发布时间】:2010-12-10 14:55:42
【问题描述】:
是否可以使用 Diffie-Hellman 密钥交换算法来加密网页上的客户端-服务器通信来代替 SSL?如果可以,有什么缺点(即为什么标准使用需要证书颁发机构的 SSL)?我的理解是,Diffie-Hellman 可用于秘密建立共享密钥,然后可用于加密任何进一步的通信。
【问题讨论】:
标签: encryption ssl diffie-hellman
是否可以使用 Diffie-Hellman 密钥交换算法来加密网页上的客户端-服务器通信来代替 SSL?如果可以,有什么缺点(即为什么标准使用需要证书颁发机构的 SSL)?我的理解是,Diffie-Hellman 可用于秘密建立共享密钥,然后可用于加密任何进一步的通信。
【问题讨论】:
标签: encryption ssl diffie-hellman
实际上 Diffie-Hellman 是 SSL 的一部分。 但是一个部分不能代替其他部分。
来自here SSL Diffie-Helman 用于:
这是一个 Diffie-Hellman 密钥交换 哪个服务器的证书 包含 Diffie-Hellman 公众 证书签名的参数 权威(CA)。那就是 公钥证书包含 Diffie-Hellman 公钥参数。 客户提供其 Diffie-Hellman 公钥参数在一个 证书,如果客户端身份验证 是必需的,或在密钥交换中 信息。这种方法导致 两个对等方之间的固定密钥, 基于 Diffie-Hellman 使用固定公共计算 键。
【讨论】:
两者没有可比性。 DH 是一种密钥交换算法,不多也不少。 SSL 尝试确定您要连接的服务器确实是它所说的那个服务器。为此,它使用可以追溯到您(应该能够)信任的人的证书。
DH 本身只会阻止其他人读取传输的数据。 SSL 的目的远不止于此(但可以使用 DH 来阻止其他人读取流)。
举一个明显的例子,使用 DH(单独)中间人攻击是相当简单的。如果我可以让您连接到我的服务器而不是您想要的服务器,我可以使用 DH 与您建立“安全”会话。然后我连接到您最初打算连接的服务器。我从你那里得到的每个数据包,我都会解密,用我用来连接到该服务器的密钥重新加密,然后发送到该服务器。我对它的所有响应数据包都做同样的事情。对您而言,一切看起来都像是直接来自原始服务器,并且您所做的购买(例如)就像平常一样工作。唯一不同的是,我还存储了您的信用卡号,当您第二天尝试为汽车加油时,收费被拒绝,因为在此期间我已经用光了您的所有信用卡。
SSL 中的身份验证至少旨在防止这种情况发生。如果您的浏览器尝试连接到(例如)www.amazon.com,如果我的 SSL 证书没有指定它是发给 www.amazon.com 的,它应该会向您发出警告——并且 CA 不应该发出除了亚马逊之外,任何人都有这样的证书。
DH 本身并不能保证我上面所说的大部分内容。就其本身而言,DH 只是一种交换密钥的方式(或者,也许可以将其表述为“交换双方创建相同密钥所需的信息,而无需明文交换密钥本身”)。在双方拥有密钥后,他们可以(并且可能会)使用它来加密/解密数据——但加密实际上与 DH 本身是分开的。
【讨论】:
您可以将匿名 Diffie-Hellman 密钥协议与 SSL 结合使用。这提供了频道的隐私,但没有身份验证。
当然,没有身份验证,你真的不能拥有隐私,因为你的私人频道可能会连接到“中间人”。这就是不鼓励使用匿名 DH 密码套件的原因。
如果缺少证书导致您无法在真正需要的地方使用 SSL,请从 startcom.org. 获取免费证书
【讨论】:
Diffie-Hellman 密钥交换仅用于密钥交换。它不会为您提供身份验证(您正在与谁交谈),您需要证书和 PKI。
所以是的,你可以进行加密,但你不知道你在和谁说话
【讨论】:
DH 密钥交换本身不能进行加密。它用于建立会话密钥,但不用于加密。所以,在这个层面上,这个问题是错误陈述的,或者表明缺乏精确度或缺乏理解(我怀疑这次精确度是问题所在)。
问题是:
如前所述,SSL 使用 DH 密钥交换来建立会话密钥。但是,它还确保另一端的程序是您信任的人(直接或间接)。如果您不需要担心对方是否值得信赖,您可以使用简单的 DH 密钥交换,然后发送加密数据而不需要证书。但是,除非您对其进行验证,否则您将无法确定与谁交谈 - SSL 等使用的证书有助于验证。
【讨论】: