网络安全 – 传输层



网络安全是指在数据在网络上传输过程中保护数据免受攻击。为了实现这一目标,已经设计了许多实时安全协议。实时网络安全协议有一些流行的标准,例如 S/MIME、SSL/TLS、SSH 和 IPsec。如前所述,这些协议在网络模型的不同层工作。

在上一章中,我们讨论了一些旨在提供应用层安全性的流行协议。在本章中,我们将讨论在传输层实现网络安全的过程以及相关的安全协议。

对于基于 TCP/IP 协议的网络,物理层和数据链路层通常在用户终端和网卡硬件中实现。TCP 和 IP 层在操作系统中实现。TCP/IP 上面的任何内容都作为用户进程实现。

传输层安全的需求

让我们讨论一个典型的基于互联网的商业交易。

Bob 访问 Alice 的商品销售网站。在网站上的表单中,Bob 输入所需的商品类型和数量、他的地址和支付卡详细信息。Bob 点击提交并等待商品交付,同时从他的账户中扣除价格金额。这一切听起来都很好,但在没有网络安全的情况下,Bob 可能会遇到一些意外。

  • 如果交易未使用机密性(加密),攻击者可以获取他的支付卡信息。然后,攻击者可以以 Bob 的名义进行购买。

  • 如果未使用数据完整性措施,攻击者可以修改 Bob 的订单,包括商品类型或数量。

  • 最后,如果未使用服务器身份验证,服务器可能会显示 Alice 的著名徽标,但该站点可能是由伪装成 Alice 的攻击者维护的恶意站点。在收到 Bob 的订单后,他可能会拿走 Bob 的钱并逃跑。或者他可以通过收集 Bob 的姓名和信用卡详细信息来进行身份盗窃。

传输层安全方案可以通过增强基于 TCP/IP 的网络通信的机密性、数据完整性、服务器身份验证和客户端身份验证来解决这些问题。

此层面的安全性主要用于保护网络上的基于 HTTP 的 Web 交易。但是,任何通过 TCP 运行的应用程序都可以使用它。

TLS 设计理念

传输层安全 (TLS) 协议在 TCP 层之上运行。这些协议的设计使用流行的应用程序编程接口 (API) 到 TCP,称为“套接字”,用于与 TCP 层交互。

应用程序现在与传输安全层而不是直接与 TCP 交互。传输安全层提供了一个简单的 API 与套接字,它类似于 TCP 的 API。

Philosophy of TLS Design

在上图中,尽管 TLS 在技术上位于应用程序和传输层之间,但从常见角度来看,它是一个传输协议,充当增强了安全服务的 TCP 层。

TLS 旨在在可靠的第 4 层协议 TCP(而不是 UDP 协议)上运行,这使得 TLS 的设计变得简单得多,因为它不必担心“超时”和“重传丢失的数据”。TCP 层照常继续这样做,满足了 TLS 的需求。

为什么 TLS 受欢迎?

在传输层使用安全性的受欢迎程度的原因是其简单性。在这一层设计和部署安全不需要对在操作系统中实现的 TCP/IP 协议进行任何更改。只需要设计/修改用户进程和应用程序,这不太复杂。

安全套接字层 (SSL)

在本节中,我们讨论为 TLS 设计的协议族。该族包括 SSL 版本 2 和 3 以及 TLS 协议。SSLv2 现已被 SSLv3 取代,因此我们将重点关注 SSL v3 和 TLS。

SSL 的简史

1995 年,Netscape 开发了 SSLv2 并将其用于 Netscape Navigator 1.1。SSL 版本 1 从未发布和使用。后来,微软改进了 SSLv2 并引入了另一个类似的协议,称为私有通信技术 (PCT)。

Netscape 在各种安全问题上大幅改进了 SSLv2,并在 1999 年部署了 SSLv3。随后,互联网工程任务组 (IETF) 引入了一个类似的 TLS(传输层安全)协议作为开放标准。TLS 协议与 SSLv3 不兼容。

TLS 修改了用于密钥扩展和身份验证的加密算法。此外,TLS 建议使用开放的加密 Diffie-Hellman (DH) 和数字签名标准 (DSS) 来代替 SSL 中使用的专利 RSA 加密。但由于 RSA 专利于 2000 年到期,因此用户没有充分的理由从广泛部署的 SSLv3 迁移到 TLS。

SSL 的主要特点

SSL 协议的主要特点如下:

  • SSL 通过以下方式提供网络连接安全性:

    • 机密性 - 信息以加密形式交换。

    • 身份验证 - 通信实体通过使用数字证书相互识别。Web 服务器身份验证是强制性的,而客户端身份验证是可选的。

    • 可靠性 - 保持消息完整性检查。

  • SSL 可用于所有 TCP 应用程序。

  • 几乎所有 Web 浏览器都支持。

  • 方便与新的在线实体开展业务。

  • 主要为 Web 电子商务而开发。

SSL 的架构

SSL 特定于 TCP,它不适用于 UDP。SSL 为应用程序提供应用程序编程接口 (API)。C 和 Java SSL 库/类随时可用。

SSL 协议旨在在应用程序和传输层之间互操作,如下面的图像所示:

SSL Architecture

SSL 本身不是图像中所示的单层协议;事实上,它由两个子层组成。

  • 下层子层包含 SSL 协议的一个组件,称为 SSL 记录协议。此组件提供完整性和机密性服务。

  • 上层子层包含三个与 SSL 相关的协议组件和一个应用程序协议。应用程序组件提供客户端/服务器交互之间的信息传输服务。从技术上讲,它也可以在 SSL 层之上运行。三个与 SSL 相关的协议组件是:

    • SSL 握手协议
    • 更改密码规范协议
    • 警报协议。
  • 这三个协议管理所有 SSL 消息交换,并在本节后面进行讨论。

SSL Protocol Architecture

SSL 协议组件的功能

SSL 协议的四个子组件处理客户端计算机和服务器之间安全通信的各种任务。

  • 记录协议

    • 记录层格式化上层协议消息。

    • 它将数据分成可管理的块(最大长度 16 KB)。它可以选择性地压缩数据。

    • 加密数据。

    • 为每条消息提供标题并在末尾提供哈希值(消息身份验证代码 (MAC))。

    • 将格式化的块传递给 TCP 层进行传输。

SSL Protocol Functions
  • SSL 握手协议

    • 它是 SSL 中最复杂的部分。在传输任何应用程序数据之前都会调用它。它在客户端和服务器之间创建 SSL 会话。

    • 会话的建立涉及服务器身份验证、密钥和算法协商、建立密钥和客户端身份验证(可选)。

    • 会话由一组唯一的加密安全参数标识。

    • 客户端和服务器之间的多个安全 TCP 连接可以共享同一个会话。

    • 握手协议通过四个阶段进行操作。这些将在下一节中讨论。

  • ChangeCipherSpec 协议

    • SSL 协议中最简单的一部分。它包含在两个通信实体(客户端和服务器)之间交换的单个消息。

    • 当每个实体发送 ChangeCipherSpec 消息时,它会将其连接端更改为已商定的安全状态。

    • 挂起状态的密码参数被复制到当前状态。

    • 此消息的交换表示所有将来的数据交换都已加密并受到完整性保护。

  • SSL 警报协议

    • 此协议用于报告错误 - 例如意外消息、错误的记录 MAC、安全参数协商失败等。

    • 它也用于其他目的 - 例如通知关闭 TCP 连接、通知收到错误或未知证书等。

SSL 会话的建立

如上所述,SSL 会话建立有四个阶段。这些主要由 SSL 握手协议处理。

阶段 1 - 建立安全功能。

  • 此阶段包括交换两条消息 - Client_helloServer_hello

SSL Session Establishment Phase1
  • Client_hello 包含客户端支持的加密算法列表,按优先级递减排序。

  • Server_hello 包含所选的密码规范 (CipherSpec) 和新的 session_id

  • CipherSpec 包含以下字段:

    • 密码算法 (DES、3DES、RC2 和 RC4)

    • MAC 算法(基于 MD5、SHA-1)

    • 公钥算法 (RSA)

    • 两条消息都具有“随机数”,以防止重放攻击。

阶段 2 - 服务器身份验证和密钥交换。

SSL Session Establishment Phase2
  • 服务器发送证书。客户端软件配置了各种“受信任”组织 (CA) 的公钥以检查证书。

  • 服务器发送所选的密码套件。

  • 服务器可能会请求客户端证书。通常不会这样做。

  • 服务器指示 Server_hello 结束。

阶段 3 - 客户端身份验证和密钥交换。

SSL Session Establishment Phase3
  • 客户端发送证书,仅当服务器请求时。

  • 它还发送使用服务器的公钥加密的主密钥前身 (PMS)。

  • 如果客户端发送证书,它还会发送 Certificate_verify 消息以证明它拥有与此证书关联的私钥。基本上,客户端对之前的消息的哈希值进行签名。

阶段 4 - 完成。

SSL Session Establishment Phase4
  • 客户端和服务器相互发送 Change_cipher_spec 消息,以将挂起的密码状态复制到当前状态。

  • 从现在开始,所有数据都已加密并受到完整性保护。

  • 来自每一端的“Finished”消息验证密钥交换和身份验证过程是否成功。

上述所有四个阶段都发生在 TCP 会话建立期间。SSL 会话建立在 TCP SYN/SYNACK 之后开始,在 TCP Fin 之前结束。

恢复断开的会话

  • 如果客户端使用加密的 session_id 信息向服务器发送 hello_request,则可以恢复断开的会话(通过 Alert 消息)。

  • 然后,服务器确定 session_id 是否有效。如果验证有效,它会与客户端交换 ChangeCipherSpec 和 finished 消息,并恢复安全通信。

  • 这避免了重新计算会话密码参数,并节省了服务器和客户端端的计算量。

SSL 会话密钥

我们已经看到,在 SSL 会话建立的第 3 阶段,客户端会发送主密钥前身,使用服务器的公钥加密。主密钥和各种会话密钥的生成方式如下:

  • 主密钥是使用以下方法生成的(通过伪随机数生成器):

    • 主密钥前身。

    • 客户端 hello 和服务器 hello 消息中交换了两个随机数(RA 和 RB)。

  • 然后从这个主密钥派生出六个秘密值,如下所示:

    • 用于 MAC 的密钥(用于服务器发送的数据)

    • 用于 MAC 的密钥(用于客户端发送的数据)

    • 用于加密的密钥和 IV(由服务器使用)

    • 用于加密的密钥和 IV(由客户端使用)

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

TLS 协议

为了提供一个开放的互联网标准的 SSL,IETF 于 1999 年 1 月发布了传输层安全 (TLS) 协议。TLS 在 RFC 5246 中被定义为一个提议的互联网标准。

主要特点

  • TLS 协议与 SSL 具有相同的目标。

  • 它使客户端/服务器应用程序能够以安全的方式进行通信,方法是进行身份验证、防止窃听并抵御消息修改。

  • TLS 协议位于网络层堆栈中可靠的面向连接的传输 TCP 层之上。

  • TLS 协议的架构类似于 SSLv3 协议。它有两个子协议:TLS 记录协议和 TLS 握手协议。

  • 虽然 SSLv3 和 TLS 协议具有相似的架构,但在架构和功能上,特别是对于握手协议,进行了一些更改。

TLS 和 SSL 协议的比较

TLS 和 SSLv3 协议之间主要有八个区别。如下所示:

  • 协议版本 - TLS 协议段的头部携带版本号 3.1,以区别于 SSL 协议段头部携带的 3 号。

  • 消息认证 - TLS 使用带密钥的散列消息认证码 (H-MAC)。好处是 H-MAC 可以与任何散列函数一起使用,而不仅仅是 MD5 或 SHA,正如 SSL 协议明确规定的那样。

  • 会话密钥生成 - TLS 和 SSL 协议在密钥材料生成方面有两个区别。

    • 计算预主密钥和主密钥的方法是相似的。但在 TLS 协议中,主密钥的计算使用 HMAC 标准和伪随机函数 (PRF) 输出,而不是临时 MAC。

    • 计算会话密钥和初始化向量 (IV) 的算法在 TLS 中与 SSL 协议不同。

  • 警报协议消息 -

    • TLS 协议支持 SSL 的警报协议使用所有消息,除了无证书警报消息被认为是冗余的。如果不需要客户端身份验证,则客户端发送空证书。

    • TLS 协议中包含了许多其他警报消息,用于其他错误条件,例如record_overflow、decode_error 等。

  • 支持的密码套件 - SSL 支持 RSA、Diffie-Hellman 和 Fortezza 密码套件。TLS 协议支持所有套件,除了 Fortezza。

  • 客户端证书类型 - TLS 定义了在certificate_request 消息中请求的证书类型。SSLv3 支持所有这些。此外,SSL 还支持某些其他类型的证书,例如 Fortezza。

  • CertificateVerify 和 Finished 消息 -

    • 在 SSL 中,certificate_verify 消息使用复杂的消息过程。使用 TLS,已验证的信息包含在握手消息本身中,从而避免了这种复杂的过程。

    • Finished 消息在 TLS 和 SSLv3 中以不同的方式计算。

  • 数据的填充 - 在 SSL 协议中,在加密之前添加到用户数据中的填充是使总数据大小等于密码块长度的倍数所需的最小量。在 TLS 中,填充可以是任何导致数据大小为密码块长度倍数的量,最多 255 字节。

TLS 和 SSLv3 协议之间的上述差异在以下表格中进行了总结。

TLS Vs SSLv3

安全浏览 - HTTPS

在本节中,我们将讨论使用 SSL/TLS 协议执行安全 Web 浏览。

HTTPS 定义

超文本传输协议 (HTTP) 协议用于 Web 浏览。HTTPS 的功能类似于 HTTP。唯一的区别是 HTTPS 提供“安全”的 Web 浏览。HTTPS 代表 HTTP over SSL。此协议用于在客户端 Web 浏览器和网站服务器之间提供加密和身份验证的连接。

HTTPS Defined

通过 HTTPS 进行的安全浏览确保以下内容已加密:

  • 请求的网页的 URL。
  • 服务器提供给用户客户端的网页内容。
  • 用户填写的表单内容。
  • 在两个方向上建立的 Cookie。

HTTPS 的工作原理

HTTPS 应用协议通常使用两种流行的传输层安全协议之一 - SSL 或 TLS。安全浏览过程在以下几点中进行了描述。

  • 您通过在浏览器地址栏中输入 https:// 后跟 URL 来请求到网页的 HTTPS 连接。

  • Web 浏览器启动到 Web 服务器的连接。https 的使用会调用 SSL 协议的使用。

  • 应用程序(在本例中为浏览器)使用系统端口 443 而不是端口 80(在 http 的情况下使用)。

  • SSL 协议会经历一个握手协议以建立安全会话,如前面各节所述。

  • 网站最初会将其 SSL 数字证书发送到您的浏览器。在验证证书后,SSL 握手将继续交换会话的共享秘密。

  • 当服务器使用受信任的 SSL 数字证书时,用户会在浏览器地址栏中看到一个挂锁图标。当在网站上安装扩展验证证书时,地址栏会变成绿色。

HTTPS Working
  • 一旦建立,此会话将包含 Web 服务器和浏览器之间许多安全连接。

HTTPS 的用途

  • HTTPS 的使用为用户提供机密性、服务器身份验证和消息完整性。它能够在互联网上安全地进行电子商务。

  • 防止数据被窃听并拒绝身份盗窃,这是 HTTP 上常见的攻击。

当今的 Web 浏览器和 Web 服务器都配备了 HTTPS 支持。但是,与 HTTP 相比,使用 HTTPS 需要客户端和服务器端更多的计算能力来执行加密和 SSL 握手。

安全外壳协议 (SSH)

SSH 的主要特点如下:

  • SSH 是一种在 TCP/IP 层之上运行的网络协议。它旨在取代提供不安全远程登录功能的 TELNET。

  • SSH 提供安全客户端/服务器通信,可用于文件传输和电子邮件等任务。

  • SSH2 是一种流行的协议,它提供了比早期版本 SSH1 更好的网络通信安全性。

SSH 定义

SSH 组织为三个子协议。

SSH Defined
  • 传输层协议 - SSH 协议的这部分提供数据机密性、服务器(主机)身份验证和数据完整性。它还可以选择提供数据压缩。

    • 服务器身份验证 - 主机密钥是不对称的,如公钥/私钥。服务器使用公钥向客户端证明其身份。客户端验证联系的服务器是否来自其维护的数据库中的“已知”主机。一旦服务器通过身份验证,就会生成会话密钥。

    • 会话密钥建立 - 身份验证后,服务器和客户端就将使用的密码达成一致。会话密钥由客户端和服务器生成。会话密钥在用户身份验证之前生成,以便可以加密发送用户名和密码。这些密钥通常在会话期间定期更换(例如,每小时一次),并在使用后立即销毁。

    • 数据完整性 - SSH 使用消息认证码 (MAC) 算法进行数据完整性检查。这是对 SSH1 使用的 32 位 CRC 的改进。

  • 用户身份验证协议 - SSH 的这部分将用户身份验证到服务器。服务器验证是否仅授予预期用户访问权限。目前使用多种身份验证方法,例如键入密码、Kerberos、公钥身份验证等。

  • 连接协议 - 这在单个底层 SSH 连接上提供多个逻辑通道。

SSH 服务

SSH 提供三种主要服务,这些服务能够提供许多安全解决方案。这些服务简要描述如下:

  • 安全命令外壳(远程登录) - 它允许用户编辑文件、查看目录内容和访问连接设备上的应用程序。系统管理员可以远程启动/查看/停止服务和进程、创建用户帐户以及更改文件/目录权限等。使用安全远程登录,现在可以从远程计算机安全地执行机器命令提示符下可行的所有任务。

  • 安全文件传输 - SSH 文件传输协议 (SFTP) 旨在作为 SSH-2 的扩展,用于安全文件传输。从本质上讲,它是在安全外壳协议之上分层的一个单独协议,用于处理文件传输。SFTP 加密正在传输的用户名/密码和文件数据。它使用与安全外壳服务器相同的端口,即系统端口号 22。

  • 端口转发(隧道) - 它允许来自不安全的基于 TCP/IP 的应用程序的数据得到保护。设置端口转发后,安全外壳会重定向来自程序(通常是客户端)的流量,并将其通过加密隧道发送到另一侧的程序(通常是服务器)。多个应用程序可以通过单个多路复用安全通道传输数据,从而无需在防火墙或路由器上打开多个端口。

SSH Services

优点和局限性

在传输层采用通信安全性的优点和局限性如下:

  • 优点

    • 传输层安全性对应用程序是透明的。

    • 服务器已通过身份验证。

    • 应用程序层标头被隐藏。

    • 它比第 3 层 (IPsec) 的安全机制更细粒度,因为它在传输连接级别工作。

  • 局限性

    • 仅适用于基于 TCP 的应用程序(不适用于 UDP)。

    • TCP/IP 标头是明文的。

    • 适用于客户端和服务器之间的直接通信。不适用于使用服务器链的安全应用程序(例如电子邮件)

    • SSL 不提供不可否认性,因为客户端身份验证是可选的。

    • 如果需要,需要在 SSL 之上实现客户端身份验证。

总结

在过去的十年中,互联网上出现了大量的 Web 应用程序。许多电子政务和电子商务门户网站已上线。这些应用程序要求服务器和客户端之间的会话是安全的,提供会话的机密性、身份验证和完整性。

在用户会话期间减轻潜在攻击的一种方法是使用安全通信协议。本章讨论了两种此类通信协议,即安全套接字层 (SSL) 和传输层安全 (TLS)。这两种协议都位于传输层。

另一种传输层协议,安全外壳 (SSH),旨在取代 TELNET,提供安全的远程登录功能。它能够提供各种服务,例如安全命令外壳和 SFTP。

使用传输层安全性有很多好处。但是,在这些层设计的安全协议只能与 TCP 一起使用。它们不为使用 UDP 实现的通信提供安全性。

广告