是什么让SSL安全?

Ove*_*erv 2 security ssl https

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

让我先从SSL的核心思想开始.它用于加密HTTP连接,但是对于客户端和服务器与加密数据通信,肯定需要共享加密密钥.如果有人在窃听您的连接,他们是否只能抓住此密钥并在解密数据时继续收听?如果我们谈论的是长期连接,我可以想象这种技术会起作用,但HTTP请求通常会在半秒内完成.

让我们假设这是以某种方式照顾的.SSL的另一个用途是验证服务器是否与它所说的完全一致.是什么阻止了恶意服务器伪造由根证书提供者签名的证书?在我读过的所有描述中,浏览器实际上都联系了其中一个权限来验证证书.我们假设证书是由根证书颁发机构用私钥加密的,浏览器如何在不知道解密密钥的情况下验证此证书中的数据?或者解密密钥与加密密钥不同?

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

感谢您提前解释.

Bru*_*uno 9

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

  • 这取决于一对钥匙.一个是公钥(可以分发); 另一个是私钥,旨在保密.
  • 您可以使用公钥加密数据,私钥可以解密/解密.
  • 您可以登录使用私钥数据,而这个签名可以验证使用公共密钥.

要确保您与正确的实体进行通信,您需要将标识绑定到密钥对.这是证书进入的地方.公钥证书是包含主题标识(名称)和主题公钥的签名文档.例如,证书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密码套件.这种情况不常见我所知道的.)