解密是增强安全性和监控的关键
在讨论如何针对加密流量进行安全分析或性能监控时,我们经常会被问到以下问题:“解密是如何工作的?”“为什么我们能够拦截加密通信并解密它?”“如果我能简单地监听网络上的通信并解密,这难道不是违背了加密的目的吗?”。
以下内容解释了传输层安全(TLS)加密是如何工作的,nDA如何能够解密网络流量,以及为什么即使在网络上内联了解密设备,TLS仍然是安全的。
加密基础知识
加密有两大类:对称加密和非对称加密。对称加密使用通信双方都需要的一个密钥,它的密钥大小相对较小,速度较快,资源利用率较低。非对称加密需要两个单独的密钥—一个是任何人都可以使用的公钥,另一个是私钥,它保留在创建公钥/私钥对的个人或系统中。对于非对称加密,密钥的大小要大得多,同时它也慢得多,需要更多的资源。
对称加密由于速度快,通常用于大的数据加密,算法包括DES (Data Encryption Standard)和AES (Advanced Encryption Standard)。另一方面,非对称加密用于RSA等应用程序的安全消息传输,因为使用非对称加密可以使用多个密钥(例如,A的公钥和B的私钥)对同一个事务进行加密。
对称加密的主要问题是双方需要有相同的密钥。如何在不可信的媒体(如互联网)上交换需要保持私有的密钥?您要么需要提前私下交换密钥,要么使用其他机制来交换密钥。非对称加密的主要问题是速度和资源利用率。非对称加密是安全的,因为它具有私钥/公钥的特性,但对于加密大量数据可能无法使用。因此,一个主要的用例是将两者一起使用,创建一个非对称会话来交换对称密钥,然后使用对称密钥来传输需要安全交换的大量数据。这就是TLS的工作原理。
TLS加密
以下是TLS如何工作的高层视图,我们重点关注TLS 1.2和TLS 1.3,这两个版本都依赖于一个证书颁发机构(CA)。CA是一个实体,它验证服务器的所有者并验证服务器的身份。这个过程从服务器的所有者将其信息连同服务器的公钥和身份一起发送给CA开始。一旦CA对服务器进行了身份验证,它就用它的私钥对该信息进行签名,并将该信息(称为证书)返回给服务器。然后,服务器在所有TLS通信中使用此证书。
这个过程的第一件事是服务器需要一个由受信任的CA(您的浏览器信任许多开箱即用的CA)签名的服务器证书。为此,服务器生成一个公钥/私钥对,生成一个证书签名请求(CSR),用私钥进行签名,并将其发送给CA。CA使用这些细节构建服务器证书,并返回一个用私钥签名的服务器证书。
当客户端向服务器发送请求时,服务器将使用其签名的证书和公钥进行响应。客户端通过使用CA的公钥解密该证书来验证该证书,这使得客户端知道服务器就是它所要通信的系统。然后,客户端使用服务器上的这个公钥发送一条消息,与该服务器建立一个会话密钥——只有该服务器可以用它的私钥解密这个密钥——然后使用该会话密钥继续通信。
TLS 1.2 会话
让我们看看TLS 1.2连接的初始状态。客户端拥有CA证书和CA公钥。客户端通常会有很多这样的证书,但重要的是它有签署服务器证书的CA的CA证书和公钥(CA也有自己的证书、公钥和私钥)。服务器拥有由CA签名的服务器证书以及它自己的公钥和私钥。
为了完成TLS 1.2握手,最终目标是交换一个客户端和服务器都知道的对称密钥。首先,客户端发送一个Hello消息,其中包括它支持的密码套件列表。服务器用Hello消息响应,选择一个密码套件,并包括它的服务器证书和它的公钥。客户端通过使用CA公钥解密该服务器证书来验证该证书。假设这是可行的,然后客户端生成一个预主密钥(premaster secret),使用服务器公钥对其加密,并将其发送给服务器。它还从刚刚发送到服务器的premaster密钥生成会话密钥。服务器用它的私钥解密此消息(它是唯一拥有此密钥的机器,因此也是唯一能够解密此消息的机器),这将恢复premaster密钥。然后,服务器使用这个premaster密钥生成会话密钥,并向客户机发送加密的握手消息,客户机应该能够对该消息进行解密。此时,客户端和服务器都拥有相同的会话密钥(对称密钥),并将其用于会话期间的其余通信。
TLS 1.3 会话
TLS 1.3在很多方面对TLS 1.2进行了改进。TLS 1.2存在已知的安全问题,包括可能对该标准的某些实现进行的攻击。TLS 1.2有37种不同的密码套件可用。由于这样或那样的原因,其中许多已不再被认为是安全的。而TLS 1.3仅支持5个密码套件。
另一个改进是连接的速度。TLS 1.2在传输数据之前总共需要两个往返连接。这需要更多的时间来建立连接,而且明显比建立TLS 1.3会话所需的1次或有时为0次的往返时间要慢。
TLS 1.3的往返时间为0?是的,这是可能的。如果之前建立了会话,则可以恢复TLS 1.3会话,这使会话建立速度更快。
TLS 1.3的最后一个改进是只使用临时密钥。这意味着,如果某个会话密钥由于某种原因被泄露,那么它只会对客户端和服务器之间的一小部分流量有影响,而不会泄露整个会话。
TLS 解密
在上面我们介绍了一些加密的基础知识,讨论了TLS 1.2,并概述了TLS 1.3提供的改进。接下来,我们将更进一步研究对TLS 1.2和1.3版本的TLS解密。
要解密TLS会话,有几个要求。其中一个选项是在客户端或服务器上,客户端和服务器必须能够在某个时刻解密会话以使用该信息。对于某些场景,这可能就是所需要的全部内容,但不幸的是,这并不能很好地扩展。
另一种选项是拥有一个服务器私钥的副本,并使用它侦听通过网络的通信。这在某些场景中可以工作,并允许将所有解密的通信流量发送到安全或监控工具以进行分析。这个解决方案存在两个问题:首先,它只有在您控制服务器的情况下才能工作,它将永远不会对内部客户端到互联网的通信解密。第二,它将不能用于TLS 1.3,即使您有服务器的秘密密钥。TLS 1.3使用临时密钥,因此您不能通过被动地侦听解密它。
为了解密来自多个客户端到多个服务器的会话,需要一个中间人(person-in-the-middle),以便在客户端和服务器之间修改通信。在这种情况下,TLS 1.2会话的初始状态略有不同。NETSCOUT nGenius加解密设备(nGenius Encryption Appliance,简称nDA)需要能够看到客户端和服务器之间的所有通信。客户端需要一个证书颁发机构(CA)证书和公钥,但是现在这个证书需要由nDA生成。服务器初始状态保持不变。nDA拥有自己的自创建CA证书和公钥和私钥,CA的证书和公钥,以及自己的服务器公钥和私钥。
TLS 1.2 解密
那么,解密TLS 1.2会话的过程是什么呢?这个TLS会话的开始是相同的:客户端发送一个Hello消息,其中包括它支持的密码套件的列表。服务器用Hello消息响应,选择一个密码套件,并包括它的服务器证书和它的公钥。此消息被nDA截获。nDA使用自己的CA私钥替换服务器公钥并重新签署。这是客户端信任的密钥,因此它将执行与之前相同的步骤:客户端通过使用CA公钥解密来验证此服务器证书。然后生成一个premaster密钥,使用服务器公钥对其进行加密,并将其发送到服务器。此消息也被nDA截获。它使用自己的私钥对该消息进行解密,恢复premaster密钥,然后能够从premaster密钥生成会话密钥。
nDA接下来又做两件事:首先,它处理服务器Hello消息,验证服务器,加密premaster密钥,就像客户端所做的那样,然后将其发送给服务器。它还用一条加密的握手消息响应客户机,这将建立TLS会话1。服务器对接收到的消息进行解密,从premaster密钥生成会话密钥,并发送握手消息。nDA收到此消息并知道TLS会话2也处于活动状态。现在客户机、nDA和服务器都有相同的会话密钥,而且nDA将能够解密客户机和服务器之间的所有消息。
TLS 1.3解密的总体过程与此类似,但总体步骤更少,因为上面的几个步骤是结合在一起的。nDA同时充当客户端和服务器,适当地修改密钥,使nDA最终得到两个TLS会话密钥(每端一个)。
为什么TLS仍是安全的?
因此,在了解了TLS如何被解密后,您可能想知道是否应该关注您的TLS会话正在被解密,或者是否任何TLS会话可以被解密。以下是一些需要记住的要点和提示,以确定您的流量是否可以(或正在)解密。
客户端和服务器总是可以解密会话。这必须在两个端点都是可能的,否则,端点将无法处理两个系统之间的信息。如果您对自己的通信流进行此操作感兴趣,那么可以直接在本地系统上捕获会话密钥,并将这些密钥加载到可以解密数据包的程序中。大多数浏览器支持将加密密钥保存到计算机上的特定文件夹中,可以将这些密钥加载到一个程序中,以解密捕获的网络通信。
您可以通过单击浏览器中的锁图标来验证HTTPS会话中的连接,找到服务器发送给您的证书并检查它。以NETSCOUT为例,它是这样的:
NETSCOUT的证书信息
一个自签名的证书看起来像下面这样:
自签名的证书
此外,当使用nDA来解密通信时,最终用户仍然可以看到正在发生的情况。看看下面的证书:
由解密设备颁发的证书
如您所见,www.google.com是由nDA Demo签名的。这使得最终用户看到即使证书是有效的,它也不是由谷歌颁发的。
任何拥有服务器私钥的人都可以解密该消息。这对于被动监控自己的服务器非常有用。您可以将私钥复制到被动监控工具的系统中,并将TLS解密。该方法支持到TLS1.2,但TLS 1.3无法通过此方法解密。这样做的原因是Diffie-Hellman密钥交换,它确保只有客户端和服务器可以解密消息。
如何正确处理解密流量?
如果您已经对一些流量进行了解密,那么在处理它时需要注意哪些事项呢?正确地处理这些通信是极其重要的,因为您加密它一定是基于某种原因的。
处理解密通信的最佳方法是将其直接发送到将要分析通信的设备。这可以通过NETSCOUT的PFS数据包流交换机来完成。这样做的好处是可以将多个副本发送到不同的设备。一次解密,多种工具可以同时进行分析。
注:不要通过未加密的IP网络发送流量。
如果您计划存储流量,则可能会遇到遵从性问题。如果一个设备要存储流量,那么最好使用可以掩码信用卡和身份证件号码信息的工具。
结论
nDA允许以多种方式解密TLS会话,并且当与PFS数据包流交换机结合使用时,允许多个设备同时分析解密的流量。这是一种很好的方法,可以安全地分析网络上的流量,以实现安全和应用性能监控。
要了解更多信息,请关注武汉恒景科技有限公司微信公众号,或留言联系我们。
邮箱 y.k@whpermanent.com
电话 027-87569272
地址 湖北省武汉市洪山区文化大道555号融创智谷A10-5
关注恒景
获取最新案例及解决方案
Copyright 2021 武汉恒景 All Rights Reserved. 鄂ICP备09021583号-1