什么使SSL安全?
我一直在阅读互联网上的几个关于SSL如何工作的网站,但我不明白它是如何确保安全的。 可能因为我不完全理解它是如何工作的。
让我从SSL的核心思想开始。 它用于加密HTTP连接,但为了客户端和服务器与加密数据进行通信,当然需要共享加密密钥。 如果有人窃听你的连接,他们是不是可以抓住这个密钥并在解密数据的同时继续收听? 如果我们谈论的是长期连接,我可以想象这种技术会起作用,但HTTP请求通常在半秒内完成。
我们假设这有点关注。 SSL的另一个用途是验证服务器是否与其说的完全一样。 什么能够防止恶意服务器伪造由根证书提供者签名的证书? 在我读过的所有描述中,浏览器实际上都联系了其中一个权威机构来与他们核实证书。 假设证书由根证书颁发机构用私钥加密,浏览器如何在不知道解密密钥的情况下验证此证书中的数据? 或者解密密钥与加密密钥不同?
我可以想象,解决这些问题的一个解决方案是证书和密钥只发送一次,并与域和IP地址一起存储在浏览器中。
感谢您提前解释。
首先,关于公钥密码学的一些基本概念:
为确保您与正确的实体进行通信,您需要将身份绑定到密钥对。 这是证书进入的地方。公钥证书是包含主题身份(名称)和主题公钥的签名文档。 例如, www.google.com
的证书包含其公钥和名称www.google.com
。 它已经使用认证中心的私钥(在这种情况下是Thawte)进行签名。 在X.509术语(用于HTTPS的证书的通用标准)中,CA是证书的颁发者,它也将证书的名称与主题的名称,主题的公钥(以及其他属性)一起放入证书中, 。 发行人是为了验证他们签发证书的身份。
您不一定会看到您的浏览器从CA获取信息的原因是许多商业(或政府)CA证书与您的浏览器或操作系统捆绑在一起。 您默认信任它们。 这可以被认为是“信仰的飞跃”,但任何信任机制都需要这种起点。
您可能想了解有关TLS握手的更多信息,但总之:
要使SSL / TLS安全,至少需要3分:
(SSL / TLS(尤其是HTTPS)的绝大多数用法都是这种情况,但也可以使用除TLS之外的X.509证书之外的其他机制,例如OpenPGP证书或Kerberos密码套件。我所知道的。)
为了加密连接,你必须同意一些共享的秘密。 这可以用diffie-hellman完成。 为了防止中间人攻击,所以你还需要一个证书机制。
对于加密或签名(证书),您可以使用异步密钥。 这意味着你有两个不同的密钥(公钥和私钥)进行加密/解密。 通常你用公钥加密你的数据,并且有人可以用他的私钥解密。 签名使用您的私钥完成,其他人可以使用公钥检查。
所以你看,伪造证书并不容易,因为你没有根证书提供者的私钥。
当然一个加密密钥需要共享。 如果有人窃听你的连接,他们是不是可以抓住这个键
不可以。钥匙从不传输。 它在两端通过密钥协议算法独立计算。
什么能够防止恶意服务器伪造由根证书提供者签名的证书?
证书将随私钥生成的数字签名一起发送,并由对端通过证书自己的公钥进行验证。 服务器需要它伪装的服务器的私钥。
链接地址: http://www.djcxy.com/p/21789.html下一篇: How trusted CA certificate can be installed on my device?