网络安全 - 快速指南
网络安全 – 概述
在当今时代,组织极大地依赖计算机网络以高效且富有成效的方式在整个组织内共享信息。组织计算机网络现在变得庞大且无处不在。假设每个员工都有一个专用的工作站,一个大型公司将在网络上拥有数千个工作站和许多服务器。
这些工作站很可能没有集中管理,也没有外围保护。他们可能拥有各种操作系统、硬件、软件和协议,用户的网络意识水平也不同。现在想象一下,公司网络上的这数千个工作站直接连接到互联网。这种不安全的网络成为攻击的目标,其中包含有价值的信息并显示漏洞。
在本章中,我们描述了网络的主要漏洞以及网络安全的意义。在后续章节中,我们将讨论实现相同目标的方法。
物理网络
网络被定义为连接在一起以有效共享资源的两个或多个计算设备。此外,将两个或多个网络连接在一起称为互联网络。因此,互联网只是一个互联网络——互连网络的集合。
为了设置其内部网络,组织有多种选择。它可以使用有线网络或无线网络连接所有工作站。如今,组织大多使用有线和无线网络的组合。
有线和无线网络
在有线网络中,设备通过电缆相互连接。通常,有线网络基于以太网协议,其中设备使用非屏蔽双绞线 (UTP) 电缆连接到不同的交换机。这些交换机还连接到网络路由器以访问互联网。
在无线网络中,设备通过无线电传输连接到接入点。接入点进一步通过电缆连接到交换机/路由器以进行外部网络访问。
无线网络因其提供的移动性而受到欢迎。移动设备无需绑定线缆,可以在无线网络范围内自由漫游。这确保了有效的信息共享并提高了生产力。
漏洞与攻击
有线和无线网络中存在的常见漏洞是对网络的“未经授权的访问”。攻击者可以通过不安全的集线器/交换机端口将其设备连接到网络。在这方面,无线网络被认为不如有线网络安全,因为无线网络无需任何物理连接即可轻松访问。
访问后,攻击者可以利用该漏洞发起如下攻击:
嗅探数据包以窃取有价值的信息。
通过用虚假数据包淹没网络介质来拒绝网络上合法用户的服务。
欺骗合法主机的物理身份 (MAC),然后窃取数据或进一步发起“中间人”攻击。
网络协议
网络协议是一组管理网络上连接的设备之间通信的规则。它们包括建立连接的机制,以及发送和接收消息的数据打包的格式化规则。
已经开发了多种计算机网络协议,每种协议都是针对特定目的而设计的。流行且广泛使用的协议是 TCP/IP 以及相关的高层和低层协议。
TCP/IP协议
传输控制协议(TCP) 和互联网协议(IP) 是两种不同的计算机网络协议,通常一起使用。由于它们的流行和广泛采用,它们内置在网络设备的所有操作系统中。
IP 对应于 OSI 中的网络层(第 3 层),而 TCP 对应于传输层(第 4 层)。TCP/IP 适用于网络通信,其中 TCP 传输用于跨 IP 网络传送数据。
TCP/IP 协议通常与其他协议一起使用,例如应用层的 HTTP、FTP、SSH 和数据链路/物理层的以太网。
TCP/IP 协议套件创建于 1980 年,作为一种网际互联解决方案,很少考虑安全方面的问题。
它是为有限可信网络中的通信而开发的。然而,在一段时间之后,该协议成为不安全互联网通信的事实上的标准。
TCP/IP 协议套件的一些常见安全漏洞是 -
HTTP 是 TCP/IP 套件中的应用层协议,用于从 Web 服务器传输构成网页的文件。这些传输以纯文本形式完成,入侵者可以轻松读取服务器和客户端之间交换的数据包。
另一个 HTTP 漏洞是会话初始化期间客户端和 Web 服务器之间的弱身份验证。此漏洞可能导致会话劫持攻击,攻击者会窃取合法用户的 HTTP 会话。
TCP协议漏洞是建立连接的三向握手。攻击者可以发起拒绝服务攻击“SYN-flooding”来利用此漏洞。他通过不完成握手来建立许多半开放的会话。这会导致服务器过载并最终崩溃。
IP层容易受到许多漏洞的影响。通过修改IP协议头,攻击者可以发起IP欺骗攻击。
除了上述之外,TCP/IP 协议族在设计和实现中还存在许多其他安全漏洞。
顺便说一句,在基于 TCP/IP 的网络通信中,如果一层被黑客攻击,其他层不会意识到黑客攻击,整个通信就会受到损害。因此,需要在每一层采用安全控制以确保万无一失的安全性。
DNS协议
域名系统(DNS) 用于将主机域名解析为 IP 地址。网络用户主要在通过在 Web 浏览器中键入 URL 浏览 Internet 时依赖 DNS 功能。
在对 DNS 的攻击中,攻击者的目标是修改合法的 DNS 记录,以便将其解析为不正确的 IP 地址。它可以将该 IP 的所有流量定向到错误的计算机。攻击者可以利用 DNS 协议漏洞或破坏 DNS 服务器来实施攻击。
DNS 缓存中毒是利用 DNS 协议中发现的漏洞进行的攻击。攻击者可能会通过伪造对解析器发送到权威服务器的递归 DNS 查询的响应来毒害缓存。一旦 DNS 解析器的缓存中毒,主机将被引导至恶意网站,并可能通过与该网站的通信来泄露凭证信息。
ICMP协议
ICMP( Internet Control Management Protocol,互联网控制管理协议)是TCP/IP网络的基本网络管理协议。它用于发送有关联网设备状态的错误和控制消息。
ICMP 是 IP 网络实现的一个组成部分,因此存在于所有网络设置中。ICMP 有其自身的漏洞,可能被滥用对网络发起攻击。
由于 ICMP 漏洞,网络上可能发生的常见攻击是 -
ICMP 允许攻击者执行网络侦察以确定网络拓扑和进入网络的路径。ICMP 扫描涉及发现整个目标网络中活动的所有主机 IP 地址。
跟踪路由是一种流行的 ICMP 实用程序,用于通过实时描述从客户端到远程主机的路径来映射目标网络。
攻击者可以利用ICMP漏洞发起拒绝服务攻击。此攻击涉及向目标设备发送超过 65,535 字节的 IPMP ping 数据包。目标计算机无法正确处理此数据包,可能会导致操作系统崩溃。
其他协议如ARP、DHCP、SMTP等也存在漏洞,攻击者可利用这些漏洞危害网络安全。我们将在后面的章节中讨论其中一些漏洞。
协议设计和实现过程中对安全问题的忽视已经成为威胁网络安全的主要原因。
网络安全的目标
正如前面几节所讨论的,网络中存在大量漏洞。因此,在传输过程中,数据很容易受到攻击。攻击者可以瞄准通信通道、获取数据并读取数据或重新插入虚假消息以实现其邪恶目的。
网络安全不仅仅关注通信链各端计算机的安全;然而,它的目的是确保整个网络的安全。
网络安全需要保护网络和数据的可用性、可靠性、完整性和安全性。有效的网络安全可以抵御进入网络或在网络上传播的各种威胁。
网络安全的主要目标是机密性、完整性和可用性。网络安全的这三个支柱通常用CIA 三角形来表示。
机密性- 机密性的功能是保护宝贵的业务数据免受未经授权的人员的侵害。网络安全的保密部分确保数据仅可供指定人员和授权人员使用。
完整性- 这个目标意味着维护和确保数据的准确性和一致性。完整性的作用是确保数据可靠并且不被未经授权的人更改。
可用性- 网络安全中可用性的功能是确保合法用户在需要时持续可用数据、网络资源/服务。
实现网络安全
确保网络安全看似非常简单。要实现的目标似乎很简单。但实际上,用于实现这些目标的机制非常复杂,理解它们需要合理的推理。
国际电信联盟(ITU)在其关于安全架构X.800的建议中定义了某些机制,以实现网络安全的方法标准化。其中一些机制是 -
加密- 该机制通过将数据转换为未经授权的人不可读的形式来提供数据机密性服务。该机制使用带有密钥的加密解密算法。
数字签名- 此机制相当于电子数据中普通签名的电子形式。它提供了数据的真实性。
访问控制- 该机制用于提供访问控制服务。这些机制可以使用实体的标识和认证来确定和强制执行该实体的访问权限。
开发并确定了实现网络安全的各种安全机制后,必须决定在何处应用它们;物理上(在什么位置)和逻辑上(在 TCP/IP 等体系结构的哪一层)。
网络层的安全机制
已经开发了多种安全机制,使得它们可以在 OSI 网络层模型的特定层上开发。
应用层的安全性- 此层使用的安全措施是特定于应用程序的。不同类型的应用程序需要单独的安全措施。为了保证应用层的安全,需要对应用进行修改。
人们认为,设计一个密码学上健全的应用协议非常困难,正确实现它则更具挑战性。因此,用于保护网络通信的应用层安全机制优选仅是已经使用了一段时间的基于标准的解决方案。
应用层安全协议的一个示例是安全多用途 Internet 邮件扩展 (S/MIME),它通常用于加密电子邮件消息。DNSSEC 是该层的另一个协议,用于安全交换 DNS 查询消息。
传输层的安全性- 该层的安全措施可用于保护两个主机之间的单个通信会话中的数据。传输层安全协议最常见的用途是保护 HTTP 和 FTP 会话流量。传输层安全性 (TLS) 和安全套接字层 (SSL) 是用于此目的的最常用协议。
网络层- 该层的安全措施可以应用于所有应用程序;因此,它们不是特定于应用程序的。两个主机或网络之间的所有网络通信都可以在这一层受到保护,而无需修改任何应用程序。在某些环境中,网络层安全协议(例如 Internet 协议安全 (IPsec))提供了比传输或应用程序层控制更好的解决方案,因为向单个应用程序添加控制很困难。然而,这一层的安全协议提供的通信灵活性较低,而某些应用程序可能需要这种灵活性。
顺便提及,设计用于在较高层操作的安全机制不能为较低层的数据提供保护,因为较低层执行较高层不知道的功能。因此,可能需要部署多种安全机制来增强网络安全。
在本教程的后续章节中,我们将讨论 OSI 网络体系结构不同层所采用的安全机制,以实现网络安全。
网络安全——应用层
现在通过客户端-服务器应用程序在线提供各种商业服务。最流行的形式是网络应用程序和电子邮件。在这两个应用程序中,客户端与指定的服务器通信并获取服务。
在使用任何服务器应用程序的服务时,客户端和服务器会在底层 Intranet 或 Internet 上交换大量信息。我们知道这些信息交易很容易受到各种攻击。
网络安全需要保护数据在网络上传输时免受攻击。为了实现这一目标,人们设计了许多实时安全协议。此类协议至少需要提供以下主要目标 -
- 双方可以交互协商以相互验证。
- 在网络上交换信息之前建立秘密会话密钥。
- 以加密形式交换信息。
有趣的是,这些协议适用于网络模型的不同层。例如,S/MIME协议工作在应用层,SSL协议被开发出来工作在传输层,IPsec协议工作在网络层。
在本章中,我们将讨论实现电子邮件通信安全的不同过程以及相关的安全协议。随后介绍保护 DNS 的方法。在后面的章节中,将描述实现网络安全的协议。
电子邮件安全
如今,电子邮件已经成为非常广泛使用的网络应用。在继续了解电子邮件安全协议之前,让我们先简要讨论一下电子邮件基础结构。
电子邮件基础设施
发送电子邮件的最简单方法是将消息直接从发件人的计算机发送到收件人的计算机。在这种情况下,两台计算机必须同时在网络上运行。然而,这种设置是不切实际的,因为用户可能偶尔会将其计算机连接到网络。
因此,建立电子邮件服务器的概念应运而生。在此设置中,邮件将发送到网络上永久可用的邮件服务器。当收件人的计算机连接到网络时,它会从邮件服务器读取邮件。
一般来说,电子邮件基础设施由邮件服务器(也称为消息传输代理(MTA))网络和运行由用户代理 (UA) 和本地 MTA 组成的电子邮件程序的客户端计算机组成。
通常,电子邮件从其 UA 转发,穿过 MTA 网格,最后到达收件人计算机上的 UA。
用于电子邮件的协议如下 -
用于转发电子邮件的简单邮件传输协议 (SMTP)。
邮局协议 (POP) 和 Internet 消息访问协议 (IMAP) 用于由收件人从服务器检索消息。
哑剧
基本互联网电子邮件标准于 1982 年编写,它描述了在互联网上交换的电子邮件消息的格式。它主要支持以基本罗马字母文本形式编写的电子邮件消息。
到 1992 年,人们感到需要对此进行改进。因此,定义了附加标准多用途互联网邮件扩展(MIME)。它是基本 Internet 电子邮件标准的一组扩展。MIME 提供了使用基本罗马字母以外的字符发送电子邮件的能力,例如西里尔字母(用于俄语)、希腊字母,甚至中文的表意字符。
MIME 满足的另一个需求是发送非文本内容,例如图像或视频剪辑。由于此功能,MIME 标准与 SMTP 一起广泛用于电子邮件通信。
电子邮件安全服务
越来越多地使用电子邮件通信进行重要和关键的交易,需要提供某些基本的安全服务,如下所示 -
保密性- 除预期收件人外,任何人都不得阅读电子邮件消息。
身份验证- 电子邮件收件人可以确定发件人的身份。
完整性- 向收件人保证电子邮件自发件人传输以来没有被更改。
不可否认性- 电子邮件收件人能够向第三方证明发件人确实发送了邮件。
提交证明- 电子邮件发件人获得消息已传递至邮件传送系统的确认。
送达证明- 发件人得到收件人收到消息的确认。
隐私、身份验证、消息完整性和不可否认性等安全服务通常通过使用公钥加密技术来提供。
通常,电子邮件通信存在三种不同的场景。我们将讨论在这些场景下实现上述安全服务的方法。
一对一电子邮件
在这种情况下,发件人仅向一个收件人发送一封电子邮件。通常,通信中涉及的 MTA 不超过两个。
假设发件人想要向收件人发送一封机密电子邮件。在这种情况下,隐私的规定是通过以下方式实现的 -
发送方和接收方的私钥-公钥分别为(SPVT , SPUB )和(RPVT , RPUB )。
发送者生成一个秘密对称密钥 K S用于加密。尽管发送方可以使用 R PUB进行加密,但使用对称密钥来实现更快的加密和解密。
发送者使用密钥 K S加密消息,并且还使用接收者的公钥 R PUB加密 K S。
发送者将加密的消息和加密的K S发送给接收者。
接收者首先通过使用其私钥 R PVT解密编码的 K S 来获得K S。
然后接收者使用对称密钥 K S解密消息。
如果该场景还需要消息完整性、认证、不可否认服务,则在上述流程中添加以下步骤。
发送者生成消息的哈希值并使用他的私钥 S PVT对该哈希值进行数字签名。
发送者将此签名的哈希值与其他组件一起发送给接收者。
接收者使用公钥 S PUB并提取在发送者签名下收到的哈希值。
然后,接收者对解密的消息进行哈希处理,然后比较两个哈希值。如果它们匹配,则认为实现了消息完整性。
此外,接收方确信该消息是由发送方发送的(身份验证)。最后,发送者不能否认他没有发送消息(不可否认)。
一对多收件人电子邮件
在这种情况下,发件人将电子邮件发送给两个或更多收件人。该列表由发件人的电子邮件程序(UA + 本地 MTA)管理。所有收件人都会收到相同的消息。
我们假设,发件人想要将机密电子邮件发送给许多收件人(例如 R1、R2 和 R3)。在这种情况下,隐私的规定是通过以下方式实现的 -
发送者和所有接收者都有自己的私钥-公钥对。
发送方生成一个秘密对称密钥 K s并用该密钥加密消息。
然后发送者用R1、R2和R3的公钥对K S进行多次加密,得到R1 PUB (K S )、R2 PUB (K S )和R3 PUB (K S )。
发送者将加密的消息和相应的加密的K S发送给接收者。例如,接收者 1 (R1) 接收加密消息和 R1 PUB (K S )。
每个接收者首先通过使用其私钥解密编码的 K S来提取密钥 K S 。
然后,每个接收者使用对称密钥 K S解密消息。
为了提供消息完整性、身份验证和不可否认性,要遵循的步骤与上面在一对一电子邮件场景中提到的步骤类似。
一对一分发列表电子邮件
在这种情况下,发件人将电子邮件发送给两个或更多收件人,但收件人列表不是由发件人本地管理的。通常,电子邮件服务器 (MTA) 维护邮件列表。
发件人将邮件发送到管理邮件列表的 MTA,然后 MTA 将邮件分解给列表中的所有收件人。
在这种情况下,当发件人想要向邮件列表的收件人(例如 R1、R2 和 R3)发送机密电子邮件时;隐私保证如下:
发送者和所有接收者都有自己的私钥-公钥对。Exploder Server为其维护的每个邮件列表(List PUB、 List PVT )都有一对私钥-公钥。
发送者生成一个秘密对称密钥 K s,然后用该密钥加密消息。
然后发送方用与该列表关联的公钥对K S进行加密,得到List PUB (K S )。
发送者发送加密消息和列表PUB (K S )。爆炸器MTA使用List PVT解密List PUB (K S )并获得K S。
爆炸器使用与列表中的成员一样多的公钥来加密 K S 。
Exploder将收到的加密消息和相应的加密K S转发给列表中的所有接收者。例如,Exploder 将加密消息和 R1 PUB (K S ) 转发给接收者 1 等等。
为了提供消息完整性、身份验证和不可否认性,要遵循的步骤与一对一电子邮件场景中给出的步骤类似。
有趣的是,采用上述安全方法来保护电子邮件的电子邮件程序预计适用于上述所有可能的情况。大多数上述电子邮件安全机制由两种流行的方案提供:Pretty Good Privacy (PGP) 和 S/MIME。我们将在以下几节中讨论这两个问题。
前列腺素
Pretty Good Privacy (PGP) 是一种电子邮件加密方案。它已成为为电子邮件通信提供安全服务的事实上的标准。
如上所述,它使用公钥密码术、对称密钥密码术、散列函数和数字签名。它提供 -
- 隐私
- 发件人身份验证
- 消息完整性
- 不可否认性
除了这些安全服务之外,它还提供数据压缩和密钥管理支持。PGP 使用现有的加密算法,如 RSA、IDEA、MD5 等,而不是发明新的算法。
PGP 的工作
计算消息的哈希值。(MD5算法)
使用发送者的私钥(RSA 算法)对生成的 128 位哈希进行签名。
数字签名被连接到消息,并且结果被压缩。
生成128 位对称密钥 K S ,并使用 IDEA 来加密压缩消息。
K S使用接收者的公钥通过 RSA 算法进行加密,并将结果附加到加密消息中。
PGP消息的格式如下图所示。ID 指示哪个密钥用于加密 KS 以及哪个密钥用于验证哈希上的签名。
在PGP方案中,消息经过签名和加密,然后在传输之前对MIME进行编码。
PGP证书
PGP 密钥证书通常通过信任链建立。例如,A 的公钥由 B 使用他的公钥签名,B 的公钥由 C 使用他的公钥签名。随着这个过程的继续,它建立了一个信任网。
在 PGP 环境中,任何用户都可以充当认证机构。任何 PGP 用户都可以验证另一个 PGP 用户的公钥。然而,只有当用户将验证者视为可信介绍人时,这样的证书才对另一用户有效。
这种认证方法存在几个问题。可能很难找到从已知且可信的公钥到所需密钥的链。此外,可能存在多个链,这些链可以为所需用户提供不同的密钥。
PGP 还可以使用具有证书颁发机构的 PKI 基础设施,并且公钥可以由 CA 进行认证(X.509 证书)。
S/MIME
S/MIME 代表安全多用途互联网邮件扩展。S/MIME 是一种安全电子邮件标准。它基于一种称为 MIME 的早期非安全电子邮件标准。
S/MIME 的工作
S/MIME 方法与 PGP 类似。它还使用公钥加密、对称密钥加密、哈希函数和数字签名。它为电子邮件通信提供与 PGP 类似的安全服务。
S/MIME 中最常用的对称密码是 RC2 和 TripleDES。通常的公钥方法是RSA,散列算法是SHA-1或MD5。
S/MIME 指定附加的 MIME 类型,例如“application/pkcs7-mime”,用于加密后的数据封装。整个 MIME 实体被加密并打包到一个对象中。S/MIME 具有标准化的加密消息格式(与 PGP 不同)。事实上,MIME 通过一些关键字进行了扩展,以识别消息中的加密和/或签名部分。
S/MIME 依赖 X.509 证书进行公钥分发。它需要自上而下的分层PKI来进行认证支持。
S/MIME 的实用性
由于实施需要来自认证机构的证书,并非所有用户都可以利用 S/MIME,因为有些用户可能希望使用公钥/私钥对来加密消息。例如,无需证书的参与或管理开销。
实际上,尽管大多数电子邮件应用程序都实现 S/MIME,但证书注册过程很复杂。相反,PGP 支持通常需要添加插件,而该插件附带了管理密钥所需的所有功能。信任网并没有真正被使用。人们通过另一种媒介交换公钥。一旦获得,他们就会保留一份通常与之交换电子邮件的人的公钥副本。
PGP 和 S/MIME 方案的网络架构中的实现层如下图所示。这两种方案都为电子邮件通信提供应用程序级别的安全性。
根据环境使用其中一种方案:PGP 或 S/MIME。通过适应 PGP 可以在强制网络中提供安全的电子邮件通信。对于 Internet 上的电子邮件安全(经常与新的未知用户交换邮件),S/MIME 被认为是一个不错的选择。
DNS安全
在第一章中,我们提到攻击者可以利用DNS缓存中毒对目标用户进行攻击。域名系统安全扩展(DNSSEC) 是一种可以阻止此类攻击的互联网标准。
标准 DNS 的漏洞
在标准 DNS 方案中,每当用户想要连接到任何域名时,他的计算机都会联系 DNS 服务器并查找该域名的关联 IP 地址。获得 IP 地址后,计算机就会连接到该 IP 地址。
在这个方案中,根本不涉及验证过程。计算机向其 DNS 服务器询问与网站关联的地址,DNS 服务器以 IP 地址进行响应,您的计算机无疑会接受它作为合法响应并连接到该网站。
DNS 查找实际上分几个阶段进行。例如,当计算机请求“www.tutorialspoint.com”时,DNS 查找会分几个阶段执行 -
计算机首先询问本地DNS服务器(ISP提供)。如果 ISP 的缓存中有此名称,它就会响应,否则会将查询转发到可以找到“.com”的“根区域目录”。和根区回复。
根据回复,计算机然后询问“.com”目录在哪里可以找到“tutorialspoint.com”。
根据收到的信息,计算机查询“tutorialspoint.com”,在其中可以找到 www.tutorialspoint.com。教程点.com。
DNSSEC 定义
当使用 DNSSEC 执行 DNS 查找时,涉及响应实体对答复进行签名。DNSSEC 基于公钥加密。
在 DNSSEC 标准中,每个 DNS 区域都有一个公钥/私钥对。DNS 服务器发送的所有信息均使用原始区域的私钥进行签名,以确保真实性。DNS 客户端需要知道区域的公钥才能检查签名。客户端可以预先配置所有顶级域或根 DNS 的公钥。
使用 DNSSEC,查找过程如下 -
当您的计算机询问根区域在哪里可以找到 .com 时,根区域服务器会对答复进行签名。
计算机检查根区域的签名密钥并确认它是具有真实信息的合法根区域。
在回复中,根区域提供有关 .com 区域服务器的签名密钥及其位置的信息,允许计算机联系 .com 目录并确保其合法。
然后,.com 目录会提供tutorialspoint.com 的签名密钥和信息,使其能够联系 google.com 并验证您是否已连接到真实的tutorialspoint.com,正如上面的区域所确认的那样。
发送的信息采用资源记录集(RRSets)的形式。顶级“.com”服务器中域“tutorialspoint.com”的 RRSet 示例如下表所示。
域名 | 生存时间 | 类型 | 价值 |
---|---|---|---|
教程点.com | 86400 | NS | dns.tutorialspoint.com |
dns.tutorialspoint.com | 86400 | A | 36..1.2.3 |
教程点.com | 86400 | 钥匙 | 3682793A7B73F731029CE2737D... |
教程点.com | 86400 | 特殊兴趣小组 | 86947503A8B848F5272E53930C... |
KEY记录是“tutorialspoint.com”的公钥。
SIG 记录是顶级 .com 服务器对 NS、A 和 KEY 记录字段进行签名的哈希值,用于验证其真实性。其值为 Kcom pvt (H(NS,A,KEY))。
由此可以认为,当DNSSEC全面推出后,用户的计算机能够确认DNS响应的合法性和真实性,避免通过DNS缓存中毒发起DNS攻击。
概括
保护电子邮件的过程可确保通信的端到端安全性。它提供机密性、发送者身份验证、消息完整性和不可否认性等安全服务。
已经为电子邮件安全开发了两种方案:PGP 和 S/MIME。这两种方案都使用秘密密钥和公钥加密技术。
标准 DNS 查找容易受到 DNS 欺骗/缓存中毒等攻击。通过使用采用公钥加密技术的 DNSSEC 可以确保 DNS 查找的安全。
在本章中,我们讨论了应用层使用的为端到端通信提供网络安全的机制。
网络安全——传输层
网络安全需要保护数据在网络上传输时免受攻击。为了实现这一目标,人们设计了许多实时安全协议。实时网络安全协议有一些流行的标准,例如 S/MIME、SSL/TLS、SSH 和 IPsec。如前所述,这些协议在网络模型的不同层工作。
在上一章中,我们讨论了一些旨在提供应用层安全性的流行协议。在本章中,我们将讨论在传输层实现网络安全的过程以及相关的安全协议。
对于基于 TCP/IP 协议的网络,物理层和数据链路层通常在用户终端和网卡硬件中实现。TCP 和IP 层在操作系统中实现。TCP/IP 之上的任何内容都作为用户进程实现。
对传输层安全的需求
让我们讨论一个典型的基于互联网的商业交易。
鲍勃访问爱丽丝的销售商品的网站。在网站上的表格中,鲍勃输入了所需的商品类型和数量、他的地址和支付卡详细信息。鲍勃单击“提交”并等待货物交付,并从他的帐户中扣除价格金额。这一切听起来不错,但在缺乏网络安全的情况下,鲍勃可能会遇到一些意外。
如果交易不使用保密性(加密),攻击者就可以获得他的支付卡信息。然后,攻击者可以以鲍勃的费用进行购买。
如果不使用数据完整性措施,攻击者可以在商品类型或数量方面修改 Bob 的订单。
最后,如果不使用服务器身份验证,服务器可能会显示 Alice 的著名徽标,但该站点可能是由伪装成 Alice 的攻击者维护的恶意站点。接到鲍勃的命令后,他就可以带着鲍勃的钱逃跑了。或者,他可以通过收集鲍勃的姓名和信用卡详细信息来进行身份盗窃。
传输层安全方案可以通过增强基于 TCP/IP 的网络通信的机密性、数据完整性、服务器身份验证和客户端身份验证来解决这些问题。
这一层的安全性主要用于保护网络上基于 HTTP 的 Web 事务。但是,任何通过 TCP 运行的应用程序都可以使用它。
TLS 设计理念
传输层安全 (TLS) 协议在 TCP 层之上运行。这些协议的设计使用流行的 TCP 应用程序接口 (API),称为“套接字”,用于与 TCP 层连接。
应用程序现在连接到传输安全层,而不是直接连接到 TCP。传输安全层提供了一个带有套接字的简单API,这与TCP的API类似。
在上图中,虽然 TLS 在技术上位于应用程序层和传输层之间,但从通用角度来看,它是一种传输协议,充当通过安全服务增强的 TCP 层。
TLS 被设计为在 TCP(可靠的第 4 层协议)上运行(而不是在 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 应用程序。
几乎所有网络浏览器都支持。
方便与新的在线实体开展业务。
主要为网络电子商务而开发。
SSL的架构
SSL 特定于 TCP,不适用于 UDP。SSL 向应用程序提供应用程序编程接口 (API)。C 和 Java SSL 库/类很容易获得。
SSL 协议旨在实现应用程序层和传输层之间的交互,如下图所示 -
SSL 本身并不是如图所示的单层协议;事实上它是由两个子层组成的。
较低子层由 SSL 协议的一个组件组成,称为 SSL 记录协议。该组件提供完整性和机密性服务。
上子层由三个与SSL相关的协议组件和一个应用协议组成。应用程序组件提供客户端/服务器交互之间的信息传输服务。从技术上讲,它也可以在 SSL 层之上运行。三个 SSL 相关协议组件是 -
- SSL 握手协议
- 更改密码规范协议
- 警报协议。
这三个协议管理所有 SSL 消息交换,将在本节后面讨论。
SSL协议各组件的功能
SSL 协议的四个子组件处理各种任务,以确保客户端计算机和服务器之间的安全通信。
记录协议
记录层格式化上层协议消息。
它将数据分段为可管理的块(最大长度 16 KB)。它可以选择压缩数据。
加密数据。
为每条消息提供一个标头,并在末尾提供一个哈希值(消息验证代码 (MAC))。
将格式化后的块交给TCP层进行传输。
SSL 握手协议
它是 SSL 最复杂的部分。它在传输任何应用程序数据之前调用。它在客户端和服务器之间创建 SSL 会话。
会话的建立涉及服务器身份验证、密钥和算法协商、建立密钥和客户端身份验证(可选)。
会话由一组唯一的加密安全参数来标识。
客户端和服务器之间的多个安全 TCP 连接可以共享同一会话。
握手协议的动作分为四个阶段。这些将在下一节中讨论。
更改CipherSpec协议
SSL 协议最简单的部分。它由两个通信实体(客户端和服务器)之间交换的单个消息组成。
当每个实体发送 ChangeCipherSpec 消息时,它会将其连接端更改为商定的安全状态。
密码参数待定状态被复制到当前状态。
交换此消息表明所有未来的数据交换都已加密并且完整性受到保护。
SSL 警报协议
该协议用于报告错误——例如意外消息、错误记录MAC、安全参数协商失败等。
它还用于其他目的——例如通知 TCP 连接关闭、通知收到错误或未知的证书等。
SSL会话的建立
如上所述,SSL 会话建立有四个阶段。这些主要由SSL握手协议来处理。
第 1 阶段- 建立安全能力。
此阶段包括两条消息的交换 – Client_hello和Server_hello。
client_hello包含客户端支持的加密算法列表,按优先级降序排列。
Server_hello包含选定的密码规范 (CipherSpec) 和新的session_id。
CipherSpec 包含以下字段:
密码算法(DES、3DES、RC2 和 RC4)
MAC算法(基于MD5、SHA-1)
公钥算法 (RSA)
两条消息都有“随机数”来防止重放攻击。
第 2 阶段- 服务器身份验证和密钥交换。
服务器发送证书。客户端软件配置有各种“受信任”组织 (CA) 的公钥来检查证书。
服务器发送选择的密码套件。
服务器可能会请求客户端证书。通常它不会完成。
服务器指示Server_hello的结束。
第 3 阶段- 客户端身份验证和密钥交换。
仅当服务器请求时,客户端才会发送证书。
它还发送使用服务器公钥加密的预主密钥 (PMS)。
如果客户端发送了证书,客户端也会发送Certificate_verify消息来证明他拥有与该证书关联的私钥。基本上,客户端对先前消息的哈希进行签名。
第 4 阶段- 完成。
客户端和服务器相互发送Change_cipher_spec消息,以使待处理的密码状态复制到当前状态。
从现在起,所有数据都将被加密并受到完整性保护。
来自每一端的消息“完成”验证密钥交换和身份验证过程是否成功。
上面讨论的所有四个阶段都发生在 TCP 会话的建立过程中。SSL 会话建立在 TCP SYN/SYNACK 之后开始,在 TCP Fin 之前完成。
恢复断开的会话
如果客户端向服务器发送带有加密session_id信息的hello_request ,则可以恢复断开连接的会话(通过警报消息) 。
然后服务器确定session_id是否有效。如果经过验证,它会与客户端交换 ChangeCipherSpec 和完成消息,并恢复安全通信。
这样就避免了会话密码参数的重新计算,节省了服务器端和客户端的计算量。
SSL 会话密钥
我们已经看到,在 SSL 会话建立的第 3 阶段,客户端将预主密钥发送到使用服务器公钥加密的服务器。主密钥和各种会话密钥的生成方式如下 -
主秘密是使用以下命令生成的(通过伪随机数生成器):
预主秘密。
在 client_hello 和 server_hello 消息中交换两个随机数(RA 和 RB)。
然后从这个主秘密中派生出六个秘密值:
与 MAC 一起使用的密钥(用于服务器发送的数据)
与 MAC 一起使用的密钥(用于客户端发送的数据)
用于加密的密钥和 IV(由服务器)
用于加密的密钥和 IV(由客户端)
传输层安全协议
为了提供 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) 输出,而不是 ad-hoc MAC。
TLS 协议中计算会话密钥和初始值 (IV) 的算法与 SSL 协议不同。
警报协议消息 -
TLS 协议支持 SSL 警报协议使用的所有消息,但没有冗余的证书警报消息除外。如果不需要客户端身份验证,客户端会发送空证书。
TLS 协议中包含许多针对其他错误情况的附加警报消息,例如record_overflow、decode_error等。
支持的密码套件- SSL 支持 RSA、Diffie-Hellman 和 Fortezza 密码套件。TLS 协议支持除 Fortezza 之外的所有套装。
客户端证书类型- TLS 定义在certificate_request消息中请求的证书类型。SSLv3 支持所有这些。此外,SSL 支持某些其他类型的证书,例如 Fortezza。
证书验证和完成的消息 -
在SSL中, certificate_verify消息使用复杂的消息过程。使用 TLS,经过验证的信息包含在握手消息本身中,从而避免了这一复杂的过程。
完成的消息在 TLS 和 SSLv3 中以不同的方式计算。
数据填充- 在 SSL 协议中,在加密之前添加到用户数据的填充是使总数据大小等于密码块长度的倍数所需的最小量。在 TLS 中,填充量可以是任意数量,只要数据大小是密码块长度的倍数,最多可达 255 字节。
下表总结了 TLS 和 SSLv3 协议之间的上述差异。
安全浏览 - HTTPS
在本节中,我们将讨论使用 SSL/TLS 协议来执行安全的 Web 浏览。
HTTPS 定义
超文本传输协议(HTTP)协议用于网页浏览。HTTPS的功能与HTTP类似。唯一的区别是 HTTPS 提供“安全”的网页浏览。HTTPS 代表基于 SSL 的 HTTP。该协议用于在客户端 Web 浏览器和网站服务器之间提供加密且经过身份验证的连接。
通过 HTTPS 的安全浏览可确保以下内容被加密 -
- 所请求网页的 URL。
- 服务器向用户客户端提供的网页内容。
- 用户填写的表格内容。
- 双向建立 Cookie。
HTTPS 的工作
HTTPS 应用程序协议通常使用两种流行的传输层安全协议之一 - SSL 或 TLS。安全浏览的过程分以下几点描述。
您可以通过在浏览器地址栏中输入 https:// 后跟 URL 来请求与网页的 HTTPS 连接。
Web 浏览器启动与 Web 服务器的连接。使用 https 会调用 SSL 协议的使用。
应用程序(本例中为浏览器)使用系统端口 443,而不是端口 80(在 http 情况下使用)。
SSL 协议通过握手协议来建立安全会话,如前面部分所述。
该网站最初将其 SSL 数字证书发送到您的浏览器。验证证书后,SSL 握手将继续交换会话的共享机密。
当服务器使用受信任的 SSL 数字证书时,用户可以在浏览器地址栏中看到一个挂锁图标。当网站上安装了扩展验证证书时,地址栏会变成绿色。
一旦建立,该会话将由 Web 服务器和浏览器之间的许多安全连接组成。
HTTPS 的使用
HTTPS 的使用为用户提供了机密性、服务器身份验证和消息完整性。它使电子商务能够在互联网上安全地进行。
防止数据窃听并拒绝身份盗用(这是对 HTTP 的常见攻击)。
当今的 Web 浏览器和 Web 服务器都配备了 HTTPS 支持。然而,使用 HTTPS over HTTP 需要客户端和服务器端有更多的计算能力来进行加密和 SSL 握手。
安全外壳协议 (SSH)
SSH 的显着特点如下:
SSH 是一种运行在 TCP/IP 层之上的网络协议。它旨在取代 TELNET,后者提供了不安全的远程登录工具。
SSH 提供安全的客户端/服务器通信,可用于文件传输和电子邮件等任务。
SSH2 是一种流行的协议,与早期版本 SSH1 相比,它提供了更高的网络通信安全性。
SSH 定义
SSH 由三个子协议组成。
传输层协议- SSH 协议的这一部分提供数据机密性、服务器(主机)身份验证和数据完整性。它还可以选择提供数据压缩。
服务器身份验证- 主机密钥与公钥/私钥一样不对称。服务器使用公钥向客户端证明其身份。客户端根据其维护的数据库验证所联系的服务器是否为“已知”主机。一旦服务器通过身份验证,就会生成会话密钥。
会话密钥建立- 身份验证后,服务器和客户端就使用的密码达成一致。会话密钥由客户端和服务器双方生成。会话密钥在用户身份验证之前生成,以便可以加密发送用户名和密码。这些密钥通常在会话期间定期(例如每小时)更换一次,并在使用后立即销毁。
数据完整性- SSH 使用消息身份验证代码 (MAC) 算法进行数据完整性检查。它是对 SSH1 使用的 32 位 CRC 的改进。
用户身份验证协议- SSH 的这一部分向服务器验证用户身份。服务器验证是否仅向预期用户授予访问权限。目前使用了许多身份验证方法,例如键入密码、Kerberos、公钥身份验证等。
连接协议- 这通过单个底层 SSH 连接提供多个逻辑通道。
SSH 服务
SSH 提供了三种主要服务,可以提供许多安全解决方案。这些服务简要描述如下 -
安全命令外壳(远程登录) - 它允许用户编辑文件、查看目录内容以及访问连接设备上的应用程序。系统管理员可以远程启动/查看/停止服务和进程、创建用户帐户以及更改文件/目录权限等。现在可以使用安全远程登录从远程计算机安全地执行在计算机命令提示符下可行的所有任务。
安全文件传输- SSH 文件传输协议 (SFTP) 被设计为 SSH-2 的扩展,用于安全文件传输。本质上,它是一个独立的协议,位于 Secure Shell 协议之上,用于处理文件传输。SFTP 对用户名/密码和正在传输的文件数据进行加密。它使用与 Secure Shell 服务器相同的端口,即系统端口 22。
端口转发(隧道) - 它允许来自不安全的基于 TCP/IP 的应用程序的数据受到保护。设置端口转发后,Secure Shell 会重新路由来自程序(通常是客户端)的流量,并将其通过加密隧道发送到另一端的程序(通常是服务器)。多个应用程序可以通过单个多路复用安全通道传输数据,从而无需在防火墙或路由器上打开许多端口。
优点和局限性
在传输层采用通信安全的好处和局限性如下:
好处
传输层安全对于应用程序是透明的。
服务器已通过身份验证。
应用层标头被隐藏。
它比第 3 层 (IPsec) 的安全机制更细粒度,因为它工作在传输连接级别。
局限性
仅适用于基于 TCP 的应用程序(不适用于 UDP)。
TCP/IP 标头是清晰的。
适合客户端和服务器之间直接通信。不满足使用服务器链的安全应用程序(例如电子邮件)
SSL 不提供不可否认性,因为客户端身份验证是可选的。
如果需要,客户端身份验证需要在 SSL 之上实现。
概括
过去十年,互联网上涌现了大量的Web应用程序。许多电子政务和电子商务门户网站已上线。这些应用程序要求服务器和客户端之间的会话是安全的,以提供会话的机密性、身份验证和完整性。
减轻用户会话期间潜在攻击的一种方法是使用安全通信协议。本章将讨论其中的两种通信协议:安全套接字层 (SSL) 和传输层安全性 (TLS)。这两个协议都在传输层起作用。
另一种传输层协议是 Secure Shell (SSH),旨在取代 TELNET,提供远程登录设施的安全方法。它能够提供各种服务,例如 Secure Command Shell 和 SFTP。
使用传输层安全有很多好处。然而,在这些层设计的安全协议只能与TCP一起使用。它们不为使用 UDP 实现的通信提供安全性。
网络安全——网络层
网络层安全控制经常用于保护通信安全,特别是在 Internet 等共享网络上,因为它们可以同时为许多应用程序提供保护,而无需修改它们。
在前面的章节中,我们讨论了许多实时安全协议是为了网络安全而发展的,以确保隐私、原始身份验证、消息完整性和不可否认性等基本安全原则。
这些协议中的大多数仍然集中在 OSI 协议栈的较高层,以弥补标准 Internet 协议中固有的安全性缺陷。虽然这些方法很有价值,但不能轻易推广到任何应用程序