If you're seeing this message, it means we're having trouble loading external resources on our website.

如果你被网页过滤器挡住,请确保域名*.kastatic.org*.kasandbox.org 没有被阻止.

主要内容

安全传输层协议(TLS)

计算机在互联网上传输数据包。这些数据包就像是装在信封里的信件:人们很容易读到里面的数据。如果这些数据是像新闻报道一样的公共信息,就没有多大问题。但如果是密码,信用卡号或者是机密邮件,那么让任何人看到这些数据都是非常危险的。
运输层安全 协议在 TCP/IP 运输协议之外增加了一层保障。 TLS使用对称加密公用钥匙加密安全地发送私人数据。 并添加额外的安全功能,例如身份验证和消息篡改检测。
TLS比起TCP/IP多了许多步骤,因此它在网络交流中增加了
。不过,这些多的延迟让我们赚到了更好的安全性。
(请注意,TLS 取代了一个叫做SSL的旧协议,所以TLS 和 SSL 的术语常常被互换使用。)

从开始到结束

我们将逐步熟悉用TLS将数据从一台电脑传输到另一台的过程。让我们把发送数据的电脑称作 客户端, 接收数据的电脑称作 服务器

TCP握手协议

由于TLS是基于TCP/IP的,客户端必须首先与服务器完成3向TCP握手
两台电脑的箭头图。右侧的电脑IP地址为khanacademy.org的服务器。一个单箭头从笔记本电脑指向服务器,上方的方框写着“ClientHello, ProtocolVersion: TLS 1.3, CipherSuites: TLS_RSA_WITH_RC4_128_SHA”。
  • 标有“SYN”从笔记本指向服务器的箭头。
  • 标有“ACK SYN”从服务器指向笔记本的箭头。
  • 标有“ACK”从笔记本指向服务器的箭头。

启动TLS

客户端一定会通知服务器它需要一个TLS连接而不是一个标准的不安全连接,因此它会发送一条消息,描述它希望用到的TLS协议版本和加密技术。
两台电脑的箭头图。左侧的电脑是一台笔记本电脑,显示的是khanacademy.org的登录界面。右侧的电脑是IP地址为khanacademy.org的服务器。一个单箭头从笔记本指向服务器,上方的方框写着“ClientHello, ProtocolVersion: TLS 1.3, CipherSuites: TLS_RSA_WITH_RC4_128_SHA”。

服务器确认协议

如果服务器无法提供客户端所需技术,连接就会中断。这可能会发生在现在的客户端试图连接旧版本的服务器的时候。
只要服务器能支持所需的TLS协议版本和其他选项,就会回复确认,并附加一个包含其公钥的数字凭证。
两台计算机之间的箭头图。 左边的电脑是一台笔记本电脑,显示的是khanacademy.org的登录界面。右侧的电脑是IP地址为khanacademy.org的服务器。 一个单箭头从笔记本指向服务器,上方的方框写着“ServerHello,ProtocolVersion: TLS 1.3,CipherSuite: TLS rsa with rc4128 sha,Certificate,ServerHelloDone”。

证书核实

服务器有数字凭证就如同它在说“我就是你所认为的那个人”。如果客户端不认为该证书合法,就会中断连接,不愿将私有数据发送给假冒者。
不然,客户端会核实证书,继续进行它的下一步。
客户端核实图。笔记本电脑的气泡框写着“Certificate = khanacademy.org?”。

生成共享密钥

现在客户端知道了服务器的公钥,那么理论上就可以用公钥加密来加密数据,然后服务器用对应的私钥解密。
但是,由于运算更加复杂,公钥加密比对称加密用的时间 更多 。如果可能的话,计算机偏向用对称加密以节约时间。
幸运的是,它们可以! 计算机可以 用公钥加密私有地生成一个共享密钥,接着 对之后的消息使用该密钥的对称加密。
客户端通过向服务器发送一条消息,使用预先掌握的密钥,加密到服务器的公用密匙。 客户端根据这个主密钥计算共享密钥(这比沿实际共享密钥发送更安全)并将共享密钥留给本地保存。
客户端也会发送消息“Finished”,它的内容会被共享密钥加密。
两台电脑间的箭头图。左侧的电脑是一台笔记本电脑,显示的是khanacademy.org的登录界面。右侧的电脑是IP地址为khanacademy.org的服务器。一个单箭头从笔记本指向服务器,上方的方框写着“ClientKeyExchange (PreMasterSecret: c3ac534fd919a0e92b966795e), ChangeCipherSpec, Finished (21c124d28a548559f0f8abd4b)”。

服务器确认共享密钥

现在服务器可以基于pre-master密钥计算共享密钥,并用其解密消息“Finished”。如果失败了,就会中断连接。
只要服务器能成功地用共享密钥解密客户端的消息,它就会发送一个确认消息和加密过的“Finished”。
两台电脑的箭头图。左侧的电脑是一台笔记本电脑,显示的是khanacademy.org的登录界面。右侧的电脑是IP地址为khanacademy.org的服务器。一个单箭头从服务器指向笔记本,上方的方框写着“ChangeCipherSpec, Finished (c49fe482d338760807c3c278f)”。

发送安全数据

最后,客户端使用对称加密和共享密钥,安全地向服务器发送私人数据。
两台电脑间的箭头图。左侧的电脑是一台笔记本电脑,显示的是khanacademy.org的登录界面。右侧的电脑是IP地址为khanacademy.org的服务器。一个单箭头从笔记本指向服务器,上方的方框写着“ClientKeyExchange (PreMasterSecret: c3ac534fd919a0e92b966795e), ChangeCipherSpec, Finished (21c124d28a548559f0f8abd4b)”。
通常,同一个客户端需要多次向服务器发送数据,比如用户在一个网站的多个页面上填写表单。 在这种情况下,计算机可以用一个简短的过程来建立安全会话。
测验你的理解
如你所见,两台计算机必须经过TLS的这么多步骤才能建立安全连接。
完成下列步骤:
  1. 客户端和服务器完成TCP握手协议
  2. 客户端发送经过共享密钥加密的数据

无处不在的TLS

互联网上各种安全通信都有用到TLS,比如邮件发送和文件上传。不过,最有名的莫过于其在安全网站浏览HTTPS中的应用。
感谢TLS同时使用公钥和对称加密技术,它在 TCP/IP 协议之上提供了一个安全层,我们越来越需要保护在互联网上传输的私有数据了。

🙋🏽🙋🏻‍♀️🙋🏿‍♂️您对此主题有任何疑问吗? 我们很乐意回答-只需在下面的问题区域中提问即可!

想加入讨论吗?

尚无帖子。
你会英语吗?单击此处查看更多可汗学院英文版的讨论.