美文网首页
传输层安全协定 SSL/TLS

传输层安全协定 SSL/TLS

作者: 极客收藏夹 | 来源:发表于2018-09-02 20:19 被阅读27次

传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种 安全协议,目的是为网际网路通信,提供安全及数据完整性保障。

网景在1994年推出首版网页浏览器时,推出HTTPS协定,以SSL进行加密,这是SSL的起源。IETF将SSL进行标准化,1999年公布第一版TLS标准文件。随后又公布 RFC 5246(2008年8月)与 RFC 6176(2011年3月)。

SSL

安全套接字层利用数据加密技术,可确保数据在网络上之传输过程中不会被截取。当前版本为3.0。它已被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。

TLS

传输层安全协议,用于两个应用程序之间提供保密性和数据完整性。
TLS 1.0是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议,它建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。

该协议由两层组成: TLS 记录协议(TLS Record)和 TLS 握手协议(TLS Handshake)。较低的层为 TLS 记录协议,位于某个可靠的传输协议(例如 TCP)上面。

  • TLS记录协议(TLS Record),对数据进行压缩、加密等;
  • TLS握手协议(TLS Handshake),在实际传输数据之前进行身份认证、协商加密算法和交换密钥;

握手简明过程

      Client                                               Server

      ClientHello                  -------->
                                                      ServerHello
                                                     Certificate*
                                               ServerKeyExchange*
                                              CertificateRequest*
                                   <--------      ServerHelloDone
      Certificate*
      ClientKeyExchange
      CertificateVerify*
      [ChangeCipherSpec]
      Finished                     -------->
                                               [ChangeCipherSpec]
                                   <--------             Finished
      Application Data             <------->     Application Data

             Figure 1.  Message flow for a full handshake

   * Indicates optional or situation-dependent messages that are not
   always sent.
image
  1. 客户端发送 ClientHello(包含支持的协议版本、加密算法和 随机数A (Client random))到服务端
  2. 服务端返回 ServerHello、公钥、证书、随机数B (Server random) 到客户端
  3. 客户端使用CA证书验证返回证书无误后。生成 随机数C (Premaster secret),用公钥对其加密,发送到服务端
  4. 服务端用 私钥 解密得到 随机数C (Premaster secret),随后根据得到的 随机数ABC生成对称密钥 对需要发送的数据进行对称加密
  5. 客户端使用对称密钥(客户端也用随机数ABC生成对称密钥)对数据进行解密。
  6. 双方手持对称密钥使用对称加密算法通讯

详细通讯过程

客户端Hello(Client Hello)

image image

客户端主要向服务器提供以下信息:

  • 支持的协议版本,比如TLS 1.0版
  • 一个客户端生成的随机数,稍后用于生成"对话密钥"
  • 支持的加密方法,比如RSA公钥加密
  • 支持的压缩方法

服务端Hello(Server Hello)

image
image
image
image

服务器的回应包含以下内容:

  • 确认使用的加密通信协议版本,比如TLS 1.0版本。如果浏览器与服务器支持的版本不一致,服务器关闭加密通信
  • 一个服务器生成的随机数,稍后用于生成"对话密钥"
  • 确认使用的加密方法,比如RSA公钥加密
  • 服务器证书

客户端发送ClientKeyExchange,ChangeCipherSpec

ChangeCipherSpec是一个独立的协议,体现在数据包中就是一个字节的数据,用于告知服务端,客户端已经切换到之前协商好的加密套件(Cipher Suite)的状态,准备使用之前协商好的加密套件加密数据并传输了。

在ChangecipherSpec传输完毕之后,客户端会使用之前协商好的加密套件和Session Secret加密一段 Finish 的数据传送给服务端,此数据是为了在正式传输应用数据之前对刚刚握手建立起来的加解密通道进行验证。

服务端回应ChangeCipherSpec,Sever Finish

服务端在接收到客户端传过来的 PreMaster 加密数据之后,使用私钥对这段加密数据进行解密,并对数据进行验证,也会使用跟客户端同样的方式生成 Session Secret,一切准备好之后,会给客户端发送一个 ChangeCipherSpec,告知客户端已经切换到协商过的加密套件状态,准备使用加密套件和 Session Secret加密数据了。之后,服务端也会使用 Session Secret 加密一段 Finish 消息发送给客户端,以验证之前通过握手建立起来的加解密通道是否成功。

根据之前的握手信息,如果客户端和服务端都能对Finish信息进行正常加解密且消息正确的被验证,则说明握手通道已经建立成功,接下来,双方可以使用上面产生的Session Secret对数据进行加密传输了。


Reference

https://tools.ietf.org/html/rfc5246
https://www.wikiwand.com/en/Transport_Layer_Security
https://www.wikiwand.com/zh-hans/证书颁发机构
http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
https://segmentfault.com/a/1190000002554673
https://www.cnblogs.com/snowater/p/7804889.html

相关文章

  • 证书、CA、证书信任链

    TLS 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(...

  • 传输层安全协定 SSL/TLS

    传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secu...

  • 传输层安全协定 SSL/TLS

    传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secu...

  • Https[证书生成]

    TLS:(Transport Layer Security)为安全传输层协议,所以属于传输层;SSL与TLS的区别...

  • SSL/TCL

    概念 安全套接层SSL(Secure Sockets Layer )或传输层安全TLS(Transport Lay...

  • 初识Https

    HTTPS = HTTP (应用层) + SSL/TLS(传输层) 那什么是SSL/TLS呢? SSL = Sec...

  • DB2 SSL 配置

    一、TLS和SSL介绍 应用程序和网站用来保护其传输数据的最常用方法是传输层安全(TLS)。TLS的前身是安全套接...

  • SSL/TLS是什么

    TLS(Transport Layer Security) 传输层安全性协议SSL(Secure Socket L...

  • Go socket服务器使用TLS

    TLS(以前称为SSL)最著名的功能是启用HTTPS,HTTP的安全版本。然而,正如TLS的名字(传输层安全)所暗...

  • Python网络编程笔记(五):TLS和SSL

    传输层安全协议(TLS),前身是安全套接层SSL TLS无法保护的信息 能保护的信息包括:与请求URL之间的HTT...

网友评论

      本文标题:传输层安全协定 SSL/TLS

      本文链接:https://www.haomeiwen.com/subject/qcufwftx.html