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) 在TCP/IP传输协议之上增加了一层安全。它利用对称加密公钥加密 来安全地传送私人数据,并增加了额外的安全特性,如身份验证和信息篡改警告(TLS以前被称作SSL,这两个术语其实可以交替使用)。
TLS比起TCP/IP多了许多步骤,因此网络更容易延迟。不过,安全总是比延迟好。

完整传输过程

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

TCP握手协议

既然TLS是建立在TCP/IP基础之上的,客户端必须先与服务器完成 3次握手协议
两台电脑的箭头图。右侧的电脑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”。

证书核实

服务器有数字凭证就如同它在说“我就是你所认为的那个人”。如果客户端不认为该证书合法,就会中断连接,不愿将私有数据发送给假冒者。
不然,客户端会核实证书,继续进行它的下一步。

生成共享密钥

现在客户端知道了服务器的公钥,那么理论上就可以用公钥加密来加密数据,然后服务器用对应的私钥解密。
但是,由于运算更加复杂,公钥加密比对称加密用的时间 更多 。如果可能的话,计算机偏向用对称加密以节约时间。
幸运的是,它们可以! 计算机可以 用公钥加密私有地生成一个共享密钥,接着 对之后的消息使用该密钥的对称加密。
客户端向服务器发送带有"pre-master"密钥的消息来启动该程序,该密钥被服务器的公钥加密。
客户端会基于pre-master密钥用数学运算计算共享密钥,这会比直接传输共享密钥更安全。
客户端也会发送消息“Finished”,它的内容会被共享密钥加密。

服务器确认共享密钥

现在服务器可以基于pre-master密钥计算共享密钥,并用其解密消息“Finished”。如果失败了,就会中断连接。
只要服务器能成功地用共享密钥解密客户端的消息,它就会发送一个确认消息和加密过的“Finished”。

第三步:发送安全数据

最后,客户端使用对称加密和共享密钥,安全地向服务器发送私人数据。
通常,同一个客户端需要多次向服务器发送数据,比如用户在一个网站的多个页面上填写表单。 在这种情况下,计算机可以用一个简短的过程来建立安全会话。
测验你的理解
如你所见,两台计算机必须经过TLS的这么多步骤才能建立安全连接。
排列下列步骤的先后顺序:
1

证书核实

在上面的TLS进程中,客户端在收到 核实服务器发送的数字凭证之前,都没有向其发送过数据。核实证书的步骤是让TLS如此安全的关键。
为什么呢?网络犯罪分子有很多方法来拦截互联网上一台电脑向另一台电脑所发送的请求,比如 DNS欺骗。他们可以将 TLS 请求转移到自己的服务器上,并使用其服务器的公钥来进行响应。
如果客户端没有正确地验证证书的可靠性,那么它就会完成 TLS 握手协议并将私有数据发送到网络犯罪分子的服务器,然后这服务器就会愉快地解密数据了。
客户端确实防止了网上其他人看到自己的数据,但它们直接把秘密送到敌人的手中!
客户端依靠 证书授权中心 来核实证书(和公钥)是否属于特定的域。
任何希望通过 TLS 进行安全通信的服务器都要与证书授权中心签约。证书授权中心会验证它们对域的所有权,用它们自己的名称和公钥对证书签名,并将签名的证书返回给服务器。
当客户端检查证书,它可以看到证书授权中心为公钥真实性做担保。但它仍然要做出决定:是否信任证书授权中心?
客户端通常与一系列受信任的证书授权中心捆绑在一起。比如,一台运行IOS10的苹果手机信任的是这一长串证书授权中心
苹果用户就不得不相信苹果会持续监控这个列表上的机构,以确保每个证书授权中心会正确地验证域名。
你可以想象一下从用户到服务器的信任链:
信任可能在任何一点崩溃。如果用户不信任客户端,他们可以覆盖客户端的证书授权中心的默认列表。如果客户端不再信任某个证书授权中心,就会将其从列表移除。如果证书授权中心认为某个服务器形迹可疑,可以撤回对它的授权。

无处不在的TLS

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

想加入讨论吗?

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