一、TLS与SSL
数字证书允许在其他不受信任的网络上安全交换公共加密密钥。运输加密技术,如运输层安全(Transport Layer Security)或TLS,使用这些数字证书来促进公共网络上的安全交流。如下是两个系统想要建立一个受TLS保护的加密会话的过程:
-
首先,客户端向服务器发送一个请求,要求服务器启动一个安全会话。这个请求包括一个客户端所支持的密码套件(Cipher suites) 的列表。现在,重要的是要理解,TLS只是使用其他加密算法的协议。TLS本身不是一种加密算法,因此我们不能用TLS来加密什么。我们可以使用TLS来应用其他加密算法。客户端发送至服务器的密码套件列表是一份加密算法、哈希函数和其他客户理解的加密细节的详细列表。通过选择一个弱的或不安全的密码套件,有可能以不安全的方式使用TLS。
-
一旦服务器收到来自客户端的请求,它将分析客户端提出的密码套件列表,并将其与服务器支持的算法列表进行比较。然后,它向客户发送一个带有两个信息的消息。首先,服务器告诉客户,它想在通信中使用哪种密码套件。其次,服务器向客户端发送服务器的数字证书,其中包含服务器的公共加密密钥。
-
当客户端收到服务器的数字证书时,它会检查哪个证书机构颁发了该证书,并使用CA的公钥来验证证书上的数字签名。它还会验证证书上的服务器名称是否与服务器的DNS名称相匹配,以及该证书是否已经过期或被撤销。如果所有这些东西都检查无误,客户就知道它有正确的服务器的公钥。
-
一旦客户端对服务器的身份感到满意,客户端就会创建一个随机的加密密钥,称为会话密钥(Seesion key)。这是一个对称的加密密钥,将用于客户端和服务器之间的这个通信会话。然后,客户端使用服务器的公钥来加密会话密钥,并将加密后的密钥发送给服务器。当服务器收到加密的密钥时,它使用自己的私钥来解密该会话密钥。然后,这两个系统可以使用会话密钥进行通信,只要他们愿意。一旦他们关闭连接,会话密钥就会被销毁,TLS握手就会在两个系统希望进行通信时重新开始。注意,会话密钥也被称为ephemeral key。
我们可能还听说过一种被称为SSL的加密技术,SSL是TLS的前身,它的工作方式非常相似。然而,SSL存在着已知的安全缺陷,所以它不应再被使用。但是,现在许多人在真正谈论TLS时,将SSL作为一个通用术语。并且,由于TLS最流行的实现是一个叫做OpenSSL的开源包,因此这种命名上的混乱变得更加复杂。OpenSSL几乎适用于每一个操作系统,它被嵌入到各种各样的设备和软件包中。如果想尝试使用OpenSSL,可以从OpenSSL项目的网站上下载一个副本就像大多数其他第三方软件包一样,OpenSSL也有自己的漏洞历史。2014年,安全研究人员发现了Heartbleed漏洞。这个漏洞允许攻击者从易受攻击的服务器上检索其他用户通过加密的TLS连接发送的信息。幸运的是,OpenSSL有补丁可用。因此,如果我们使用的是当前的版本,就不会受到Heartbleed漏洞的影响。
从网络安全的角度来看,使用加密通信会导致问题。具体来说,网络安全工具会失去对网络上发生的活动性质的洞察力。当客户使用端到端加密时,会阻止安全工具检查网络流量。SSL检查技术(SSL Inspection) 解决了这个问题,它有效地对组织自己的用户进行中间人攻击,将自己注入到连接中,允许安全工具检查网络流量的内容。
二、IPsec
当现代网络技术的开发者创建TCP/IP协议套件时,他们并没有对安全问题给予太多关注。但是现在,这给网络安全专业人员带来了两难选择。我们有一套设计时没有考虑到安全问题的协议。而我们现在需要对这些协议进行改造,以增加安全功能。
IPsec框架是一套旨在为TCP/IP增加安全功能的协议。与TLS不同,IPsec深入到协议栈中,为加密通信的整个有效载荷提供安全保障。IPsec使用两个协议来保护信息。
- 封装安全有效载荷(Encapsulating Security Payload)或ESP协议为数据包的有效载荷提供保密性和完整性保护;
- 验证头(Authentication Headers)或AH协议使用一个完整性检查值为IP数据包提供防篡改功能。AH确保当数据包在网络上传输时,数据包的头或有效载荷不会被改变。
一个单一的通信可以结合ESP和AH来实现数据包有效载荷的保密性,同时对整个数据包(包括头)进行完整性验证。IPsec使用一个被称为安全联盟(Security Association),即SA,允许系统相互交流它们所支持的密码套件。参与IPsec的每个系统都会提供一个它被配置为支持的加密协议和哈希函数的列表。希望相互通信的系统比较它们的SA列表,以找到它们都有的最强的SA。然后,他们使用这些算法进行通信。IPsec可以通过两种不同的方式来支持VPN。
- 首先,管理员可以创建IPsec隧道,将两个不同的站点连接在一起。在这种方法中,从用户的角度来看,这种连接对终端用户是透明的,两个网络只是相互连接在一起。然而,当流量在两个网络之间移动时,它通过IPsec隧道,该隧道对流量进行加密,使其可以安全地在公共网络上移动。这种对IPsec的使用被称为隧道模式(Tunnel mode)。
- 第二,终端用户可以使用IPsec VPN客户端将个人计算机连接到远程网络。这种对IPsec的使用被称为传输模式(Transport mode)。使用传输模式的IPsec VPN曾经相当普遍,但现在已经不再使用,而是采用更容易使用的基于TLS的VPN。
三、确保通用协议的安全
正如TCP/IP在建立时没有考虑到安全问题一样,我们今天所依赖的许多普通协议都没有内置的加密功能,它们需要修改以支持加密技术。在标准协议中加入加密技术的最常见的例子是用于保障网络通信的安全。
1.HTTP和HTTPS
HTTP协议,它被用来在互联网上向浏览器传递网站,但它没有加密,任何能够窃听我们的网络连接的人都能看到我们在这个网站上做什么。HTTPS协议与HTTP协议几乎相同,只是增加了一个变化。HTTPS在这个过程中增加了TLS。因此,当我们去访问网站时,我们的计算机首先对应网站的Web服务器上检索数字证书,验证其身份,然后创建一个会话密钥,对我们的计算机和Web服务器之间来回发送的所有通信进行加密,为整个通信会话提供安全。
2.Telnet和SSH
Linux系统的管理员经常需要使用命令行远程连接到他们的系统。早期版本的Linux和Unix提供了一个叫做Telnet的工具来允许这些通信。Telnet只是在远程服务器上给用户一个提示,允许他们执行命令。但Telnet是一个极其不安全的协议,因为在客户端和服务器之间来回发送的所有数据都是未加密的,包括用来建立连接的用户名和密码。任何窃听Telnet会话的人都可以窃取用户的密码。现在,SSH协议通过提供与Telnet相同的功能和额外的加密功能解决了这个问题。SSH通过TCP 22端口运行,并使用公钥加密技术,以与TLS相同的方式交换一个会话密钥。
3.FTP
文件传输协议(FTP)允许两个系统之间的文件传输会话,它也没有对会话进行加密,造成了一个重要的安全漏洞。需要在两个系统之间安全地传输文件的用户有几个选择:
- FTPS协议将传输层安全添加到标准的FTP协议中以提供加密;
- SFTP协议使用SSH协议建立连接,然后通过该连接传输文件;
- SCP协议也使用SSH,使其很容易从命令行安全地传输文件。
注意,有另一个版本的FTP被称为TFTP。这个协议也是不安全的,但它不是很常用。
4.RTP和SRTP
对于使用RTP的IP语音通信,我们应该使用加密的安全RTP协议,即SRTP。
5.NTP和NTPsec
由于系统管理员长期以来一直使用网络时间协议(Network Time Protocol,即NTP,来同步服务器时钟。在一连串的安全漏洞使NTP服务器被用于DDos之后,一群开发者创建了一个更安全的NTP版本,叫做NTPsec。
6.Email Protocols
目前有许多用于电子邮件通信的协议的加密版本。不要使用110端口的未加密的POP协议,而使用995端口的加密POP协议。代替143端口的未加密IMAP,使用993端口的加密版本,代替25端口的不安全SMTP,使用465端口的加密SMTP。除了在网络层确保电子邮件协议的安全外,我们还可以通过使用S/MIME协议在应用层对信息和附件进行加密。
7.DNS和DNSSEC
网络通信依赖于域名解析,攻击者可能试图在中间的DNS服务器中插入虚假的DNS记录,试图欺骗客户访问虚假网站。DNSSEC协议为DNS增加了数字签名,允许客户验证他们收到的DNS记录是否真实。
8.DHCP
网络设备通过使用动态主机配置协议或DHCP动态地获得IP地址。该协议的运行无需验证,但在Windows环境下,我们可以限制允许运行DHCP服务的服务器,以防止网络上出现恶意DHCP服务器。
9.LDAP和LDAPS
最后,许多网络依赖轻量级目录访问协议(LDAP)进行目录服务通信。我们应该知道,有一个加密的LDAP版本,即LDAPS,它提供加密的通信。
整理资料来源:
https://www.linkedin.com/learning/paths/become-a-comptia-security-plus-certified-security-professional-sy0-601