ToB企服应用市场:ToB评测及商务社交产业平台

标题: TLS握手以及协议详解 [打印本页]

作者: 用多少眼泪才能让你相信    时间: 2022-10-20 03:37
标题: TLS握手以及协议详解
TLS

传输层安全 (Transport Layer Security) 对通过 Internet 发送的数据进行加密,以确保窃听者和黑客无法看到您传输的内容,这对于密码、信用卡号和个人通信等私人和敏感信息特别有用。本章解释了 TLS 是什么、它是如何工作的以及为什么要部署它。
未受保护的数据由应用层提供给TLS
Datagram Transport Layer Security (DTLS)

TLS 是一种加密协议,可为通过 Internet 在应用程序之间发送的数据提供端到端的安全性。用户最熟悉的是它在安全网络浏览中的使用,尤其是在建立安全会话时出现在网络浏览器中的挂锁图标。但是,它也可以而且确实应该用于其他应用程序,例如电子邮件、文件传输、视频/音频会议、即时消息和 IP 语音,以及 DNS 和 NTP 等 Internet 服务。
TLS握手


TLS握手和SSL握手


SSL 或 Secure Sockets Layer是为HTTP开发的原始安全协议。不久前,SSL 被 TLS 或传输层安全性取代。SSL 握手现在称为 TLS 握手,尽管“SSL”名称仍在广泛使用。
什么时候发生TLS握手

每当用户通过 HTTPS 导航到网站并且浏览器首先开始查询网站的源服务器时,就会发生 TLS 握手。每当任何其他通信使用 HTTPS(包括API 调用基于 HTTPS 的 DNS查询)时,也会发生 TLS 握手。
TLS 握手发生在通过 TCP 握手打开TCP连接之后。

TLS握手步骤

TLS 握手是由客户端和服务器交换的一系列数据报或消息。TLS 握手涉及多个步骤,因为客户端和服务器交换完成握手所需的信息并使进一步的对话成为可能。
TLS 握手中的确切步骤将根据所使用的密钥交换算法的种类和双方支持的密码套件而有所不同。RSA 密钥交换算法虽然现在被认为不安全,但在 1.3 之前的 TLS 版本中使用。大致如下:
协议说明

较低层堆叠在TCP之上,因为它是面向连接且可靠的传输层协议。这一层基本上由TLS 记录协议组成。简而言之,记录协议首先将高层协议数据分片成 214 字节或更小的块;然后可选地压缩数据,添加消息验证码,最后根据密码规范(协商时)加密数据,添加 SSL 记录头。需要注意的一点是,每个块都被打包到一个不保留客户端消息边界的结构中,这意味着同一类型的多个消息可以合并到一个结构中。
下图描述了构建 SSL 记录的过程。

高层堆叠在SSL记录协议之上,包含四个子协议。这些协议中的每一个都有一个非常特定的目的,并在通信的不同阶段使用:
多个消息可以连接成一个记录层消息,但这些消息必须属于同一个子协议。因此,这四个协议中的每一个都必须是自定界的(即必须包括其自己的长度字段)。
这里主要讲一下握手协议
这是 TLS 中最复杂的子协议。该规范主要关注这一点,因为它处理建立安全连接所需的所有机制。下图显示了握手协议消息的一般结构。TLS 规范中有 10 种握手消息类型(不包括扩展),因此下面将分别介绍每种的具体格式。

演示链接
TLS 数据传输

握手和数据包都在TLS记录中。
区别是什么?

用TLS记录协议发送数据流程:


警告协议

如果连接或安全变得不稳定、受损或发生严重错误,警报协议允许发送方通知对方。这些消息有两种类型,警告或致命。警告消息表明会话不稳定,并允许接收者确定是否应继续会话。
一条致命消息告诉收件人连接已被破坏或发生了严重错误。发送者在发送消息后应关闭连接。警报协议还包含有关导致特定连接问题的原因的信息。这可能包括解密失败、未知的证书颁发机构、非法参数等等
警报协议也相当简单。它定义了两个字段:严重性级别和警报描述。第一个字段指示警报的严重性(1 表示警告,2 表示致命),而第二个字段编码确切的条件。支持的警报描述取决于 SSL/TLS 版本。
  1.                            |
  2.                            |
  3.                            |
  4.          Record Layer      |  Alert Layer
  5.                            |
  6.                            |
  7.   +----+----+----+----+----+----+----+
  8.   | 21 |    |    |    |    |    |    |
  9.   |0x15|    |    |  0 |  2 |    |    |
  10.   +----+----+----+----+----+----+----+
  11.     /               /      |
  12.    /               /       |
  13.   type: 21        /        |
  14.                  /
  15.                 /
  16.            length: 2
  17.   Alert severity               dec     hex
  18.   ----------------------------------------
  19.   WARNING                        1    0x01
  20.   FATAL                          2    0x02
  21.   TLS 1.0 Alert descriptions   dec     hex
  22.   ----------------------------------------
  23.   CLOSE_NOTIFY                   0    0x00
  24.   UNEXPECTED_MESSAGE            10    0x0A
  25.   BAD_RECORD_MAC                20    0x14
  26.   DECRYPTION_FAILED             21    0x15
  27.   RECORD_OVERFLOW               22    0x16
  28.   DECOMPRESSION_FAILURE         30    0x1E
  29.   HANDSHAKE_FAILURE             40    0x28
  30.   NO_CERTIFICATE                41    0x29
  31.   BAD_CERTIFICATE               42    0x2A
  32.   UNSUPPORTED_CERTIFICATE       43    0x2B
  33.   CERTIFICATE_REVOKED           44    0x2C
  34.   CERTIFICATE_EXPIRED           45    0x2D
  35.   CERTIFICATE_UNKNOWN           46    0x2E
  36.   ILLEGAL_PARAMETER             47    0x2F
  37.   UNKNOWN_CA                    48    0x30
  38.   ACCESS_DENIED                 49    0x31
  39.   DECODE_ERROR                  50    0x32
  40.   DECRYPT_ERROR                 51    0x33
  41.   EXPORT_RESTRICTION            60    0x3C
  42.   PROTOCOL_VERSION              70    0x46
  43.   INSUFFICIENT_SECURITY         71    0x47
  44.   INTERNAL_ERROR                80    0x50
  45.   USER_CANCELLED                90    0x5A
  46.   NO_RENEGOTIATION             100    0x64
复制代码
记录格式协议

TLS 记录标头包含三个字段,这些字段是允许在其上构建更高层所必需的:
  1.          record type (1 byte)
  2.           /
  3.          /    version (1 byte major, 1 byte minor)
  4.         /    /
  5.        /    /         length (2 bytes)
  6.       /    /         /
  7.    +----+----+----+----+----+
  8.    |    |    |    |    |    |
  9.    |    |    |    |    |    | TLS Record header
  10.    +----+----+----+----+----+
  11.    Record Type Values       dec      hex
  12.    -------------------------------------
  13.    CHANGE_CIPHER_SPEC        20     0x14
  14.    ALERT                     21     0x15
  15.    HANDSHAKE                 22     0x16
  16.    APPLICATION_DATA          23     0x17
  17.    Version Values            dec     hex
  18.    -------------------------------------
  19.    SSL 3.0                   3,0  0x0300
  20.    TLS 1.0                   3,1  0x0301
  21.    TLS 1.1                   3,2  0x0302
  22.    TLS 1.2                   3,3  0x0303
复制代码
TLS会话和连接

TLS协议是一种非对称协议,用于区分客户端和服务器。
区分两个对等体之间的会话和连接:
最初,两个对等方在它们之间建立TLS会话(六个状态,主要是CipherSpec和主密钥),然后在它们之间创建TLS连接(另外十个状态,大部分是密钥和IV)。
稍后,两个对等方可以从同一会话建立另一个连接,即会话重用(另一组密钥和IV)
TLS六个会话状态:
TLS五个连接状态

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4