什么使SSL安全?

我一直在阅读互联网上的几个关于SSL如何工作的网站,但我不明白它是如何确保安全的。 可能因为我不完全理解它是如何工作的。

让我从SSL的核心思想开始。 它用于加密HTTP连接,但为了客户端和服务器与加密数据进行通信,当然需要共享加密密钥。 如果有人窃听你的连接,他们是不是可以抓住这个密钥并在解密数据的同时继续收听? 如果我们谈论的是长期连接,我可以想象这种技术会起作用,但HTTP请求通常在半秒内完成。

我们假设这有点关注。 SSL的另一个用途是验证服务器是否与其说的完全一样。 什么能够防止恶意服务器伪造由根证书提供者签名的证书? 在我读过的所有描述中,浏览器实际上都联系了其中一个权威机构来与他们核实证书。 假设证书由根证书颁发机构用私钥加密,浏览器如何在不知道解密密钥的情况下验证此证书中的数据? 或者解密密钥与加密密钥不同?

我可以想象,解决这些问题的一个解决方案是证书和密钥只发送一次,并与域和IP地址一起存储在浏览器中。

感谢您提前解释。


首先,关于公钥密码学的一些基本概念:

  • 这依赖于一对钥匙。 一个是公钥(可以分发); 另一个是私钥,旨在保密。
  • 您可以使用公钥加密数据,私钥可以解密/解密。
  • 您可以使用私钥对数据进行签名,并且可以使用公钥验证此签名。
  • 为确保您与正确的实体进行通信,您需要将身份绑定到密钥对。 这是证书进入的地方。公钥证书是包含主题身份(名称)和主题公钥的签名文档。 例如, www.google.com的证书包含其公钥和名称www.google.com 。 它已经使用认证中心的私钥(在这种情况下是Thawte)进行签名。 在X.509术语(用于HTTPS的证书的通用标准)中,CA是证书的颁发者,它也将证书的名称与主题的名称,主题的公钥(以及其他属性)一起放入证书中, 。 发行人是为了验证他们签发证书的身份。

    您不一定会看到您的浏览器从CA获取信息的原因是许多商业(或政府)CA证书与您的浏览器或操作系统捆绑在一起。 您默认信任它们。 这可以被认为是“信仰的飞跃”,但任何信任机制都需要这种起点。

    您可能想了解有关TLS握手的更多信息,但总之:

  • 客户端通过查看其证书来获取服务器的公钥。
  • 客户端使用该公钥对秘密进行加密并将其发送到服务器。 这些细节取决于密码套件(可能是基于Diffie-Hellman的),但其结果应该是共享加密密钥列表(使用对称密码学,而不是公钥密码学)。
  • 这些共享密钥仅为客户端和服务器所知,并且用于加密/解密。
  • 要使SSL / TLS安全,至少需要3分:

  • 一个合适的密码套件,以及成功的握手。
  • 验证客户端是否信任服务器证书(通常是通过PKI模型中的已知CA)。
  • 验证证书是否属于客户机要联系的服务器(主机名验证)。
  • (SSL / TLS(尤其是HTTPS)的绝大多数用法都是这种情况,但也可以使用除TLS之外的X.509证书之外的其他机制,例如OpenPGP证书或Kerberos密码套件。我所知道的。)


    为了加密连接,你必须同意一些共享的秘密。 这可以用diffie-hellman完成。 为了防止中间人攻击,所以你还需要一个证书机制。

    对于加密或签名(证书),您可以使用异步密钥。 这意味着你有两个不同的密钥(公钥和私钥)进行加密/解密。 通常你用公钥加密你的数据,并且有人可以用他的私钥解密。 签名使用您的私钥完成,其他人可以使用公钥检查。

    所以你看,伪造证书并不容易,因为你没有根证书提供者的私钥。


    当然一个加密密钥需要共享。 如果有人窃听你的连接,他们是不是可以抓住这个键

    不可以。钥匙从不传输。 它在两端通过密钥协议算法独立计算。

    什么能够防止恶意服务器伪造由根证书提供者签名的证书?

    证书将随私钥生成的数字签名一起发送,并由对端通过证书自己的公钥进行验证。 服务器需要它伪装的服务器的私钥。

    链接地址: http://www.djcxy.com/p/21789.html

    上一篇: What makes SSL secure?

    下一篇: How trusted CA certificate can be installed on my device?