TLS 是哪一层?

信息安全 tls
2021-09-01 09:19:29

TLS 代表“传输层安全性”。IP协议编号列表包括“ TLSP ”作为“传输层安全协议”。这两件事让我相信 TLS 是一种传输层协议。

但是,大多数人似乎都在谈论基于 TCP 的 TLS。维基百科将其列为“应用层”协议。由于 TCP 没有协议号之类的东西,这使情况变得更加复杂:它只是打包原始字节,所以您如何解析出您正在获取 TLS 数据包,而不是仅以0x14-0x18或等效开头的数据包?

4个回答

OSI 模型通信协议分类为连续的层,就是这样:一个模型这是一种将物理现实推入定义整齐的标签盒子的尝试。没有人保证它会起作用......

从历史上看,该模型是在 ISO 推动采用自己的网络协议时建立和发布的。他们输了。整个世界更喜欢使用更简单的TCP/IP“模型”在其最初的生态系统消亡后幸存下来,许多人试图将其应用于 TCP/IP。它甚至通常是这样教授的。但是,该模型不能很好地匹配 TCP/IP。有些东西不适合这些层,SSL/TLS 就是其中之一。

如果您查看协议详细信息:

  • SSL/TLS使用提供双向字节流的底层传输介质。这将把它放在第 4 层之上的某个地方。
  • SSL/TLS 将数据组织为记录,其中可能包含特别是握手消息。握手消息看起来像第 5 层。这会将 SSL/TLS 置于第 6 层或第 7 层。
  • 然而,SSL/TLS 传递的是“应用程序数据”,它实际上是一个双向字节流。使用 SSL/TLS 的应用程序真正将其用作传输协议。然后,他们在“应用程序数据”中使用自己的数据表示、消息和语义。因此,在 OSI 模型中,SSL/TLS 不能超出第 4 层。

因此,在 OSI 模型中,SSL/TLS 必须在第 6 层或第 7 层,同时在第 4 层或以下。结论是不可避免的:OSI 模型不适用于 SSL/TLS。TLS 不在任何层中。

(这并不能阻止某些人在层中任意推送 TLS。由于它没有实际影响——这只是一个模型——你可以在概念上声明 TLS 是第 2、5 或 17 层;它不会是证明是假的。)

TCP/IP 模型

  1. 链路层
  2. 互联网 (IP) 层
  3. 传输层
  4. 应用

TLS 在传输层和应用层(有点)之间运行。实际上,它只是在传输过程中将应用层流量封装在加密中。

TLS 密钥交换发生在层与层之间。这里并不是真正的传输层,因为端口号和序列号之类的东西已经在传输层到位。它只是发送数据以建立加密协议,以便它可以包装应用程序层。

IPSec 做同样的事情,只是在较早的层。IP 安全保护 IP 层之上的一切。传输安全保护传输层之上的所有内容。两者的密钥交换都在一个奇怪的地方,因为它们只需要发送数据来建立安全层。很像 ICMP 被视为 IP 协议,但它仍然包含 IP 层之后的数据。这是否使它成为传输层?不。

OSI 模型

OSI 模型具有更多的粒度。

  1. 物理层
  2. 数据链路层
  3. 网络层 (IP)
  4. 传输层 (TCP)
  5. 会话层 (TLS)
  6. 表示层
  7. 应用层 (HTTP)

TLS 建立加密会话。在 OSI 模型中,这是 TLS 运行的地方。它设置了它的会话,并为应用层 (HTTP) 添加了一层加密。

一个相关的答案

解析 TLS

传输控制协议头中有一个数据偏移字段。该字段以 32 位字表示 TCP 标头的大小。此值的最小大小为 5(20 字节)。这是从 TCP 标头开始的固定偏移量。使用此值,您将知道 TCP 的大小,并可以使用它来计算 TLS 部分的开始。

TLS 记录总是以内容类型开头,然后是 SSL 版本只有 5 种不同的内容类型,以及 4 个不同的版本需要担心。因此,使用 TCP 标头后面的数据的前 3 个字节,您应该能够确定是否正在使用 SSL/TLS。

我会在你的机器上运行Wireshark(非工作),并过滤“ssl”。然后只需浏览到https://www.google.com您将能够看到整个握手过程。所有图层都为您分解。它将很好地展示如何使用 TLS 构造层,并且您将能够看到每个 TLS 记录。

该答案仅解决了问题的“TLSP”子方面。


IP 协议编号列表包括“TLSP”作为“传输层安全协议”。

我从来没有听说过那个协议。它不是您用来显示 HTTPS 页面的协议。

TLSP 似乎是一个非常晦涩的协议。于 1994-10 年注册这是在我们现在通常称为“TLS”的协议之前。早在那个时候,该协议仍被称为“SSL”。“TLS”的第一个公开草案的日期是两年后的 1996-11-26。

有关时间表的详细信息,请参阅此问题:

IANA 将“Christer_Oberg@bull.se”命名为注册人。那个名字对我来说并没有响起。Bull.se 网站也不再活跃。

事实上,有一个瑞典人 Christer Öberg 的 LinkedIn 页面,他在 1994 年在一家“Bull”公司担任“CTO 安全解决方案”工作我猜那是曾经提交“TLSP”注册的人。(而且他是唯一一个能告诉你“TLSP”到底是什么的人。)

TCP 确实有一个 IP 协议号:0x06

TSL/SSL 是一种应用程序协议,意味着某些程序(而不是操作系统)处理数据包。例如,如果 Web 服务器正在接受 HTTPS 请求,那么处理 TCP 数据包内部的 SSL 数据包的就是 Web 服务器。

TLSP 0x38 协议是 Kryptonet 特定的。多年来没有人使用 Kryptonet 密钥管理。

通信包一般不根据其内容进行处理。服务器从一开始就希望数据包采用正确的协议。例如,如果 SSL 服务器正在侦听套接字并接收到非 SSL 数据包,它将忽略它。