在机器之间进行协商时,难以简单地捕获密钥吗?为什么SSL被认为是安全的?
比方说,我连接到我的银行网站。浏览器将向银行服务器发送请求。银行服务器将向我发送其SSL证书副本。如果有效,浏览器将发送签名确认。难道当时不能简单地捕获私钥吗?
在机器之间进行协商时,难以简单地捕获密钥吗?为什么SSL被认为是安全的?
比方说,我连接到我的银行网站。浏览器将向银行服务器发送请求。银行服务器将向我发送其SSL证书副本。如果有效,浏览器将发送签名确认。难道当时不能简单地捕获私钥吗?
您的私钥(以及银行也不会)通过网络发送。该银行的public密钥是它发送到浏览器的X509证书的一部分。如果银行使用其私钥签署了任何内容,并且您的浏览器使用银行的公钥(从证书中)验证签名。整个SSL会话使用对称密码加密(出于性能原因)。为了能够做到这一点,双方需要交换会话密钥(对于每个连接都不相同,并在定义的时间间隔后重新协商)。该交换使用Diffie-Hellman算法完成。在此交换过程中,密钥不通过网络发送,它由双方独立计算。
只有公共密钥是共享的。银行不需要分享私人账户。
那么我的机器将如何解密信息? – AccurateEstimate 2012-03-16 04:39:49
我希望不要惹别人的东西,但我认为它是这样工作的:你的机器用服务器公钥加密,只有服务器的私钥可以解密它。所以我认为你也应该有一个密钥对,所以服务器可以加密消息发送给你。 – 2012-03-16 04:44:29
你已经登陆了一个有趣的问题 - 实际上有两个不同版本的SSL(现在实际上是TLS)。最常用的是“非互相”SSL。在这里,你有一个来自银行的经过认证的公钥,但是银行没有你。因此,您可以将保密的数据发送给银行,但银行无法向您发送数据。另一个是Mutual SSL,你可以在这里阅读它的相关问题:http://en.wikipedia。组织/维基/ Mutual_authentication。关键是大多数网络应用程序的设计只需要单向安全性。 – mfrankli 2012-03-16 04:44:52
私钥不共享并且不存储在证书中。
是不是可以在机器之间协商的 之间简单捕获密钥?
不,因为它永远不会被发送,它是独立计算的。您需要服务器的私有密钥来重复导致会话密钥的独立计算。所以它是安全的。
您可以告诉我们它是如何完成的,从点服务器发送证书到协商密钥的点,即建立SSL连接。 – AccurateEstimate 2012-03-16 05:38:37
不,我不能,它需要几页RFC 2246. – EJP 2012-03-16 05:41:45
@EndofFile:也有各种教程描述如何SSL/TLS的工作,例如[这里](http://docs.oracle.com/javase/7 /docs/technotes/guides/security/jsse/JSSERefGuide.html#SSLOverview)和[here](http://technet.microsoft.com/en-us/library/cc783349%28v=ws.10%29.aspx) 。 – Bruno 2012-03-16 10:52:05
应该这个也许是在IT安全栈交换中得到更好的答案? – mfrankli 2012-03-16 04:39:23
SSL基于非对称加密;公钥是用于解密的公钥。私人钥匙不是通过网络发送或以任何方式披露的;这就是它的私密性。 – bellpeace 2012-03-16 04:40:52
那么为什么其他机器不能使用相同的公钥解密信息呢? – AccurateEstimate 2012-03-16 04:43:05