选择性地解密SSL/TLS通信的方法和装置与流程

文档序号:32205122发布日期:2022-11-16 04:25阅读:145来源:国知局
选择性地解密SSL/TLS通信的方法和装置与流程
选择性地解密ssl/tls通信的方法和装置
1.本技术是申请日为2018年7月24日,申请号为201880055475.7,发明名称为“选择性地解密ssl/tls通信的方法和装置”(原名称为“高效ssl/tls代理”)的申请的分案申请。
2.相关申请的交叉引用
3.本技术要求于2018年7月19日提交的美国专利申请序列第16/039,896号和2017年7月24日提交的美国专利申请序列第62/536,254号的优先权,其全部内容通过引用整体并入本文以用于所有目的。
技术领域
4.本文描述的方面总体涉及计算机硬件和软件以及网络安全性。特别地,本公开的一个或多个方面总体涉及用于选择性地解密加密的通信的计算机硬件和软件。


背景技术:

5.随着信息时代的不断发展,网络安全正变得越来越重要。在tcp/ip网络中,可以通过使用传输层安全性(tls)协议或通过使用tls的前身——安全套接字层(ssl)协议,来保护端点之间的传输中通信。tls提供了隐私、身份验证和通信的完整性。例如,通常用于保护web通信安全的安全超文本传输协议(https)协议由通过tls或ssl加密的连接内的通过超文本传输协议(http)进行的通信组成。通常,可能需要使用内联ssl/tls代理来拦截和解密传输中的tls通信,以便检查通信的明文,然后基于该明文内容采取某些动作。通常,ssl/tls代理会对通过它的所有受ssl/tls保护的通信进行解密;但是由于例如计算资源问题、网络性能问题、管理复杂性问题和/或隐私保护问题,这可能是不期望的并且效率低下。因此,需要方法和逻辑,通过该方法和逻辑ssl/tls代理可以选择性地解密ssl/tls通信。


技术实现要素:

6.以下给出了简要概述,以便提供对本公开的一些方面的基本理解。其既不旨在确认本公开的关键或重要要素,也不旨在勾画本公开的范围。以下概述仅以简化形式给出本公开的一些构思,作为以下描述的序言。
7.本公开的方面涉及一种选择性地解密ssl/tls通信的高效ssl/tls代理。然后,可以将附加的逻辑应用于解密的通信的内容,这可能导致某些动作;例如,终止通信,或记录和存储组成通信的明文数据包,以用于后续的内容检查和分析。根据本公开的实施例,一种高效ssl/tls代理可以接收指示哪些ssl/tls通信将被解密的数据;另选地,该数据可以指示哪些ssl/tls通信将不被解密。除此之外或另选地,该高效ssl/tls代理可以接收混合列表,该混合列表指示ssl/tls通信中将被解密的一部分和ssl/tls通信中将不被解密的另一部分。指示ssl/tls通信的数据可以包括应用程序级(第7层)信息,以标识一组或多组ssl/tls通信。在一些实施例中,标识数据可以包括统一资源标识符(uri),其包含与通信相关联的统一资源标识符(uri)。在其他实施例中,标识数据可以包括完全合格域名(fqdn)。在其他实施例中,标识数据可以包括互联网协议(ip)地址。在某些情况下,用于ssl/tls通信的
标识数据可以嵌入在加密的数据包中,因此无法用于作为明文进行检查。对于https通信以及使用uri、fqdn作为主机名和域名进行寻址并由ssl/tls保护的其他协议,诸如安全文件传输协议(ftps)),情况可能就是如此。在这样的情况下,该高效ssl/tls代理可以检查tls握手协议中包含的信息和/或检查与连接相关联的其他信息。基于检查和通信标识列表的比较,该高效ssl/tls代理可以确定是否解密加密的通信。如果或当该高效ssl/tls代理确定将要解密加密的通信时,该高效ssl/tls代理可以对通信进行解密,以便可以检查明文内容。该高效ssl/tls代理可以包括附加的逻辑,以在明文内容被解密后对其进行检查。在一些实施例中,该高效ssl/tls代理可以基于明文内容采取附加动作。可以采取这些附加动作来产生更高级别的应用程序或策略,诸如网络安全,例如保护网络及其资产不受恶意行为者的攻击;或者诸如与执法相关的窃听,其中只有特定的通信可以解密以供观察;或者诸如保护个人医疗和医疗保险信息的隐私。如果或当该高效ssl/tls代理确定将不对加密的通信进行解密时,这也可能会影响一些更高级别的应用程序或策略,诸如隐私保护以及对隐私法律和政策的遵守。
8.本技术提供了以下内容:
9.1)一种方法,其包括:
10.由计算设备生成标识数据的列表和要对与对应标识数据相关联的加密的通信流执行的对应动作;
11.由所述计算设备接收发起加密的通信流的一个或多个数据包;
12.由所述计算设备识别与所述加密的通信流相关联的流标识数据;
13.由所述计算装置将所述识别出的流标识数据与所述标识数据的列表进行比较;以及
14.由所述计算设备并基于比较来执行对所述加密的通信流的对应动作。
15.2)根据1)所述的方法,其中所述生成所述标识数据的所述列表包括:
16.由所述计算设备从安全应用程序接收一个或多个网络地址和/或域名的列表;和
17.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
18.3)根据1)所述的方法,其中所述生成所述标识数据的所述列表包括:
19.由所述计算设备并通过订阅服务,从一个或多个网络威胁情报提供者接收网络地址和/或域名的至少一个列表;和
20.基于所述接收到的网络地址和/或域名的至少一个列表创建所述标识数据的所述列表。
21.4)根据1)所述的方法,其中所述生成所述标识数据的所述列表包括:
22.由所述计算设备从隐私保护应用程序接收一个或多个网络地址和/或域名的列表;和
23.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
24.5)根据1)所述的方法,其中所述生成所述标识数据的所述列表包括:
25.由所述计算设备从执法窃听应用程序接收一个或多个网络地址和/或域名的列表;和
26.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
27.6)根据1)所述的方法,其中所述执行所述对应动作包括:
28.由所述计算设备将与特定的加密的通信流相关联的多个数据包转发到它们的预期目的地,其中在转发之前不对所述多个数据包进行解密。
29.7)根据1)所述的方法,其中所述生成所述标识数据的所述列表包括:
30.由所述计算设备接收一个或多个网络地址和/或域名的第一列表,其中一个或多个网络地址和/或域名的所述第一列表指示其对应的加密的通信流将被解密的网络地址和/或域名;
31.由所述计算设备接收一个或多个网络地址和/或域名的第二列表,其中一个或多个网络地址和/或域名的所述第二列表指示其对应的加密的通信流将不被解密的网络地址和/或域名;
32.为一个或多个网络地址和/或域名的所述第一列表分配第一优先级,为一个或多个网络地址和/或域名的所述第二列表分配第二优先级,其中所述第一优先级不同于所述第二优先级;以及
33.基于所述第一优先级和所述第二优先级,由一个或多个网络地址和/或域名的所述第一列表和一个或多个网络地址和/或域名的所述第二列表创建标识数据的排序列表。
34.8)根据1)所述的方法,
35.其中,所述标识数据的所述列表指示要对所述列表包括的所述标识数据执行的特定动作;
36.其中,将所述识别出的流标识数据与所述标识数据的所述列表进行比较确定所述标识数据的所述列表中并不包括所述识别出的流标识数据;以及
37.其中执行所述对应动作包括执行除了由所述标识数据的所述列表指示的所述特定动作之外的动作。
38.9)根据8)所述的方法,其中除了由所述列表指示的所述特定动作之外的所述动作包括终止所述加密的通信流。
39.10)根据8)所述的方法,其中除了由所述列表指示的所述特定动作之外的所述动作包括:
40.记录与所述加密的通信流相关联的数据包以进行后续分析;和
41.将与所述加密的通信流相关联的数据包转发到它们相应的预期目的地。
42.11)一种装置,其包括:
43.至少一个处理器;和
44.存储指令的存储器,所述指令在由所述至少一个处理器执行时促使所述装置:
45.生成标识数据的列表和要对与每个对应标识数据相关联的加密的通信流执行的对应动作;
46.接收发起加密的通信流的一个或多个数据包;
47.识别与所述加密的通信流相关联的流标识数据;
48.将识所述别出的流标识数据与所述标识数据的所述列表进行比较;以及
49.基于将所述识别出的流标识数据与所述标识数据的所述列表进行比较,对所述加
密的通信流执行对应动作。
50.12)根据11)所述的装置,其中所述指令在由所述至少一个处理器执行时,进一步促使所述装置:
51.从安全应用程序接收一个或多个网络地址和/或域名的列表;和
52.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
53.13)根据11)所述的装置,其中在由所述至少一个处理器执行时促使所述装置生成所述标识数据的所述列表的所述指令进一步促使所述装置:
54.通过订阅服务从一个或多个网络威胁情报提供者接收网络地址和/或域名的至少一个列表;和
55.基于所述接收到的网络地址和/或域名的至少一个列表创建所述标识数据的所述列表。
56.14)根据11)所述的装置,其中在由所述至少一个处理器执行时促使所述装置生成所述标识数据的所述列表的所述指令进一步促使所述装置:
57.从隐私保护应用程序接收一个或多个网络地址和/或域名的列表;和
58.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
59.15)根据11)所述的装置,其中在由所述至少一个处理器执行时促使所述装置生成所述标识数据的所述列表的所述指令进一步促使所述装置:
60.从执法窃听应用程序接收一个或多个网络地址和/或域名的列表;和
61.基于所述接收到的所述一个或多个网络地址和/或域名的列表,创建所述标识数据的所述列表。
62.16)根据11)所述的装置,其中在由所述至少一个处理器执行时促使所述装置执行所述对应动作的所述指令进一步促使所述装置:
63.将与特定的加密的通信流相关联的多个数据包转发到它们的预期目的地,其中在转发之前不对所述多个数据包进行解密。
64.17)根据11)所述的装置,其中在由所述至少一个处理器执行时促使所述装置生成所述标识数据的所述指令进一步促使所述装置:
65.接收一个或多个网络地址和/或域名的第一列表,其中一个或多个网络地址和/或域名的所述第一列表指示其对应的加密的通信流将被解密的网络地址和/或域名;
66.接收一个或多个网络地址和/或域名的第二列表,其中一个或多个网络地址和/或域名的所述第二列表指示其对应的加密的通信流将不被解密的网络地址和/或域名;
67.为一个或多个网络地址和/或域名的所述第一列表分配第一优先级,为一个或多个网络地址和/或域名的所述第二列表分配第二优先级,其中所述第一优先级不同于所述第二优先级;以及
68.基于所述第一优先级和所述第二优先级,由一个或多个网络地址和/或域名的所述第一列表和一个或多个网络地址和/或域名的所述第二列表创建标识数据的排序列表。
69.18)根据11)所述的装置,
70.其中,所述标识数据的所述列表指示要对所述列表包括的所述标识数据执行的特
定动作;
71.其中,将所述识别出的流标识数据与所述标识数据的所述列表进行比较确定所述标识数据的所述列表中并不包括所述识别出的流标识数据;以及
72.其中在由所述至少一个处理器执行时促使所述装置执行所述对应动作的所述指令进一步促使所述装置执行由所述标识数据的所述列表指示的所述特定动作之外的动作。
73.19)根据18)所述的装置,其中除了由所述标识数据的所述列表指示的所述特定动作之外的所述动作包括终止所述加密的通信流。
74.20)根据18)所述的装置,其中除了由所述列表指示的所述特定动作之外的所述动作进一步促使所述装置:
75.记录与所述加密的通信流相关联的数据包以进行后续分析;和
76.将与所述加密的通信流相关联的所述数据包转发到它们相应的预期目的地。
附图说明
77.在所附权利要求中特别指出了本公开。通过在整体上回顾本公开(包括随其一起提供的附图),本公开的特征将变得更加明显。
78.在附图的各图中,通过示例而非限制的方式示出了本文中的一些特征,其中类似的附图标记指代相似的元件,并且其中:
79.图1示出了高效ssl/tls代理的操作的流程图;
80.图2示出了根据本公开的一个或多个方面的用于选择性地解密加密的通信的高效ssl/tls代理的例示性环境;
81.图3示出了根据本公开的一个或多个方面的用于选择性解密加密的通信的例示性高效ssl/tls代理;
82.图4a、图4b、图5a、图5b、图5c和图6示出了示例性的事件序列,这些事件序列例示了根据本文所述的一个或多个例示性方面的用于选择性地解密受tls保护的通信的方法;
83.图4a和图4b示出了其中高效ssl/tls代理基于https服务器的域名确定不解密https会话的进程;
84.图5a、图5b和图5c示出了其中高效ssl/tls代理可以基于https服务器的域名来确定解密https会话的进程;
85.图6示出了类似于图5a-5c的进程,除了会话的uri与uri-decrypt-list中的任何元素都不匹配之外。
具体实施方式
86.在各种例示性实施例的以下描述中,参考了附图,这些附图形成了本说明书的一部分,并且在附图中通过例示说明的方式示出了可以实践本公开各方面的各种实施例。应当理解,在不脱离本公开的范围的情况下,可以利用其他实施例,并且可以进行结构和功能上的修改。此外,参考了其中可以实践本公开各方面的特定应用、协议和实施例。应当理解,在不脱离本公开的范围的情况下,可以利用其他应用、协议和实施例,并且可以进行结构和功能上的修改。
87.在以下描述中讨论了元件之间的各种连接。这些连接是一般性的,并且除非另外
指明,其可以是直接或间接的、有线或无线的、物理或逻辑的。就这一点而言,本说明书并非旨在进行限制。
88.为了简化描述,假设tls隧道协议是http、https服务器的端口是443和tcp,且ip版本是ipv4。这些假设和相关规范并不旨在以任何方式进行限制。该描述可以容易地适用于涵盖除http之外的其他应用程序级协议、除443之外的其他端口、除tcp之外的其他传输协议(例如,udp、sctp等),以及其他ip版本,例如ipv6。
89.许多tcp/ip网络通信以明文形式传输,因此观察者可以通过点击承载通信的链接(有线的、无线的、虚拟的等)来读取通信。这样的观察可能并非所期望的。例如,网络犯罪分子可能会观察金融交易或收集其他敏感数据;后者,可能会侵犯个人隐私。传输层安全性(tls)协议或其前身——安全套接字层(ssl)协议,可以用于通过加密来保护传输中的网络通信,从而防止通信的明文被观察到。为了保护通信,两个端点可以首先使用tls握手协议建立tls隧道,然后通过该隧道发送通信。隧道可以通过加密提供隐私;通过x.509证书和相关联的公钥加密进行身份验证;以及通过消息身份验证编码实现通信完整性。
90.由于历史原因,“ssl”和“tls”标签通常被互换地使用,尽管tls已经很大程度取代和置换了ssl,ssl为tls的前身,并且由于安全性缺陷已经被互联网工程任务组(ietf)弃用/禁用。本文采用的一种标记约定是使用标记“ssl/tls”来指示任一种或两种协议。在例示性示例、实施例和附图中,除非另有说明,否则使用tls协议,但这并非相对于ssl以任何方式限制范围,因为ssl和tls之间的差别在本公开的背景下无关紧要。
91.ssl/tls的一种流行用法是在跨网络传输时保护http(web)通信的安全。这种配置被称为https协议。使用https来保护合法电子商务通信的安全性已变得普遍。网络犯罪分子和其他恶意行为者对https的使用也已经变得普遍,其动机是https能掩盖其恶意活动,并且与http介导的恶意活动相比,检测和缓解此类恶意活动通常更加困难且成本更高。
92.一种保护网络免受网络犯罪分子和网络攻击的方法可以是:(a)在恶意行为者所操作/控制的端点的网络地址上收集网络威胁情报;(b)过滤与该网络地址进行通信的所有网络流量——tcp/ip数据包;(c)如果在cti中的网络地址和网络通信之间找到匹配或对应关系,则采取一定动作;例如,阻止通讯;或监视、记录和捕获构成通信的数据包;(d)针对攻击严重性、资产损失、缓解动作、补救动作等对通信进行分析。
93.来自cti的网络地址可以包括以下形式的标识数据中的一种或多种:网络层(第3层)互联网协议(ip)地址和协议标识符,传输层(第4层)端口以及应用程序层(第7层))域名(例如“cybersite.net”),主机fqdn(例如,“www.cybersite.net”),uri(例如,“http://www.cybersite.net/path-segment-1/path-segment-2/resource-id”)以及ip地址(例如,包含在http报头扩展中以标识原始源)。如果或当通信由http介导时,由于网络地址信息并未被加密,可以直接针对cti过滤用于通信的网络地址信息。然而,如果或当通信由https介导时,http消息中包括的主机fqdn或uri地址可能被加密,因此可能无法直接针对cti进行过滤。对于正在搜索网络威胁和攻击的网络分析人员来说,这可能是个问题,因为采用uri形式的cti通常被认为是最高保真性的威胁指示符。相反,这可能对网络犯罪分子有利,他们可以通过使用https来向他们控制的ure寻址资源传输敏感信息来逃避常规的网络安全控制。
94.查看受https保护的通信的明文的常规解决方案可以是利用内联ssl/tls代理。当
do-not-decrypt-list中,则代理程序可以使用domain-name-do-not-decrypt-list代替domain-name-decrypt-list,以选择性地不解密https会话。或者,可以同时使用两种类型的列表,其中给予一个列表高于另一列表的优先级。当不同的应用程序或策略生成列表时可能会出现这种情况,例如,domain-name-decrypt-list可能由网络安全应用程序和策略生成,而domain-name-do-not-decrypt-list可能会由隐私保护应用程序和策略生成。
105.图2示出了根据本公开的一个或多个方面的用于选择性地解密加密的通信的高效ssl/tls代理的例示性环境。参考图2,环境100可以包括网络a 102和网络b 104,它们可以通过提供互联网络访问/互连的网络链路106连接。网络a 102可以包括与一个或多个个体或实体(例如,政府、公司、服务提供者或其他组织机构)相关联的一个或多个网络(例如,局域网(lan)、广域网(wan)、虚拟专用网网络(vpn)、软件定义网络(sdn)或其组合)。网络b 104可以包括使网络a 102与一个或多个其他网络(未示出)交互的一个或多个网络(例如,lan、wan、vpn、sdn或其组合)。例如,网络b 104可以包括互联网或类似的网络或其部分。
106.环境100还可以包含一个或多个主机,诸如计算设备或网络设备(例如,服务器、台式计算机、膝上型计算机、平板电脑、移动设备、智能电话、路由器、网关、代理、防火墙、交换机、接入点等)。例如,网络102可以包含:主机110、112和114,它们可以被配置为用作客户端;代理设备120;而网络104可以包含主机130、132和134,它们可以被配置为用作服务器。如本文所使用的,“主机”(或多个“主机”)是指任何类型的网络设备(或节点)或计算设备;尽管此类设备可以被分配(或被配置为分配)一个或多个网络层地址,但是术语“主机”(或“主机”)并不意味着此类设备必须被分配(或被配置为分配)一个或多个网络层地址。
107.代理120可以位于网络102和104之间的网络边界和网络链路106处或附近,并且可以使网络102或位于其中的一个或多个主机与网络104或位于其中的一个或多个主机交互。例如,网络104可以包含主机130、132和134,它们可以托管联网的应用程序服务器(例如,网络服务器);而网络102可以包含主机110、112和114,它们可以托管联网的应用程序客户端(例如,web浏览器)。代理120可以用作联网的应用程序客户端和服务器的中介代理程序,例如,在web客户端和web服务器之间中介http会话的web代理,或在web客户端和web服务器之间中介https会话的ssl/tls代理。
108.图3示出了根据本公开内容的一个或多个方面的用于选择性解密受tls保护的通信的例示性高效ssl/tls代理e-proxy 120。参考图3,代理120可以内联地位于连接网络102和网络104的网络链路106上。代理120可以包括一个或多个tcp代理程序(例如,tcp-agt1 121和tcp-agt2 122)、一个或多个tls代理程序(例如,tls-agt1123和tls-agt2 124)、“中间人”(mitm)中介mitm 125、证书颁发机构ca 126、列表管理器lst-mgr 128、存储器store 129、网络接口ntkw i/f 127以及将代理的组件互连的数据总线data-bus 140。代理120可以通过网络接口127与网络链路106内联交互。因此,包括连接到网络102和网络104的端点之间的受tls保护的通信的ip数据包可以通过代理120。tcp代理程序121和122可以终止tcp连接、维持tcp会话状态并欺骗ip网络端点。tcp代理程序121和122还可以被配置为计算(本地唯一的)流标识符,维护流状态信息,向/从其他代理组件发送/接收消息,以及将消息路由/交换到其他代理组件。tcp代理程序121和122可以通过存储器store 129存储和检索状态信息以及其他信息。tls代理程序tls-agt1 123和tls-agt2 124可以终止tls隧道、维护tls会话状态并欺骗tls客户端和服务器。tls代理程序123和124还可以被配置为维护tls会
话状态信息,向/从其他代理组件发送/接收消息,以及将消息路由/交换到其他代理组件。tcp代理程序123和124可以通过存储器store 129存储和检索状态信息以及其他信息。根据本公开的一个或多个方面,tls代理程序123和124可以根据需要与证书颁发机构ca 126交互以生成数字证书,例如,x.509证书。
[0109]“中间人”(mitm)中介代理mitm 125可以被配置为实现作用于已经由tls代理程序123和124解密的数据包中的信息的更高级别的应用程序,诸如网络安全应用程序、执法应用程序和隐私保护应用程序;例如,根据正在代理120中执行的更高级别应用程序的一个或多个要求,mitm代理程序125可以复制数据包并将其存储在存储器store 129中,可以记录数据包并可以将日志存储在存储器store 129中,等等。根据本公开的一个或多个方面,mitm代理程序125还可以被配置为在代理组件之间发信号通知消息路由,以使代理有效地操作。通过将与通过代理的通信相关联的ip地址、域名和uri与由列表管理器128创建和维护的ip地址、域名和uri的列表进行比较,mitm代理程序125可以基于从列表管理器lst-mgr 128接收到的信息,在代理组件之间做出并发信号通知消息路由决策。
[0110]
图3示出了可以使用的系统架构的一个示例,并且在某些情况下,在不脱离本公开的范围的情况下,所使用的特定系统架构和计算设备可以变化,并且对它们所提供的功能来说是次要的。例如,计算设备中的一个或多个可以跨网络分布,即,数据总线data-bus 140的部分可以是网络。作为另一个示例,一些组件可以在逻辑上包含在其他组件中,例如,tcp代理程序和tls代理程序可以集成到单个组件中。作为又另一示例,存储器store 129可以由多个子组件构成,它们可以由多个计算设备共享或专用于单个计算设备。
[0111]
图4a-4b、图5a-5c和图6示出了根据本公开的一个或多个方面的用于选择性地解密加密的通信的高效ssl/tls代理的例示性事件序列。所示步骤仅是例示性的,并且可以按照与所示的顺序不同的顺序省略、组合或执行;步骤的编号仅是为了便于参考,并不意味着任何特定的顺序是必需的或优选的。所示的tls握手进程是基本握手;其他握手消息序列也是可能的,但是这些并不影响本公开的范围。图4a-4b、图5a-5c和图6示出了一示例性实施例,其中在端口443上使用了https协议,并且ssl/tls代理在网络层3处是透明的。换句话说,代理组件没有ip地址,代理组件也没有更改第3层/ip层源和目的地ip地址以及协议类型,它们也没有改变第4层/传输层源和目的地端口。然而,这些约束、实例和假设是示例性的且并不限制本公开的范围,其可以应用于除https之外的其他受tls保护的协议,并且可以应用于其他类似实施例中的非透明代理。
[0112]
同样地,为了简化描述,当参考在组件x和y之间发送的tls握手消息时,诸如clienthello,这是对“包含tls消息clienthello的一个或多个ip数据包是从组件x发送到组件y”的简写表示。同样地,对于http消息,诸如get方法,每个http消息可以包含在组件之间发送的一个或多个ip数据包中。
[0113]
图4a和图4b示出了一实施例,其中高效ssl/tls代理基于https服务器的域名确定不解密https会话。参考图4a,在步骤4-1,由列表管理器lst-mgr 128生成包含域名的domain-name-decrypt-list。除其他外,可以通过接受域名、主机的fqdn等作为输入的用户界面,或通过从威胁情报提供者通过订阅服务所提供的uri中提取主机的fqdn,或通过由威胁情报提供者通过订阅服务提供的域名,或通过隐私保护数据和策略等来执行列表生成。在步骤4-2,列表管理器lst-mgr 128可以将domain-name-decrypt-list传送到mitm 125。
agt1 123可以向mitm 125发送查询,以检查www.srv1.net是否在domain-name-decrypt-list中。在步骤4-10,响应于接收到步骤4-9的查询请求,mitm 125可以搜索domain-name-decrypt-list,并且基于该搜索,可以确定www.srv1.net不在该列表中,因此会话不应被解密,并且可以以未找到所请求域的指示来响应查询,从而可以向tls-agt1 123发信号通知www.srv1.net不在domain-name-decrypt-list中,因此代理不应解密相关联的https会话。
[0119]
参考图4b,在步骤4-11,tls-agt1 123可以向两个tcp代理程序(例如,tcp-agt1 121和tcp-agt2 122)发信号,以直接向彼此发送与流标识符“flow-1234”相对应的所有(定向)代理内数据包,即绕过代理功能。通过避免不必要的通信解密和重新加密,这一步骤具有增加代理的效率和减少代理上的处理负荷和资源负荷的优点。在步骤4-12,tls-agt1 123可以向tcp-agt2 122发送clienthello消息。在步骤4-13,tcp-agt2 122可以将clienthello消息发送到其目的地,即web服务器srv1 130。在步骤4-14,srv1 130可以用tls serverhello消息来响应clienthello消息,该消息可以被tcp-agt2 122拦截。tcp-agt2 122可以计算数据包的流标识符“flow-1234”,并可以在store 129(参考图3)中查找该数据包以进行代理内数据包转发动作,该动作为将数据包直接发送到tcp-agt1 121,即绕过代理功能。在步骤4-15,tcp-agt2 122可以将serverhello消息直接发送到tcp-agt1 121。在步骤4-16,tcp-agt1 121可以将serverhello消息发送到host1 110。
[0120]
在步骤4-17,在主机host1 110和web服务器srv1 130之间发送后续tls握手消息(certificate、serverkeyexchange,...,finished等)的多个子步骤在host1 110和srv1 130之间建立tls隧道,其中tcp-agt1 121和tcp-agt2 122中介,总的来说被显示为host1 110、tcp-agt1 121、tcp-agt 122和srv1 130之间的双向箭头。以上参考的tls消息可以绕过代理功能,因为此https会话将不被解密,这由domain-name-decrypt-list(其不包含www.srv1.net)确定。
[0121]
现在已经创建了tls隧道,其中终端点位于host1 110和srv1 130处,host1 110和srv1 130可以进行http会话,但是每个http消息在进入tls隧道时都被加密,而在离开隧道时被解密,即其为https会话。步骤4-18总体上示出了host1 110和srv1 130之间的https会话,其中tcp-agt1 121和tcp-agt2 122中介。如果或当https会话结束时,则可以通过典型的tcp信号序列(例如,fin、ack轮流)来断开host1 110和srv1 130之间的tcp连接。这总体上在步骤4-19中表示,其中tcp-agt1 121和tcp-agt2 122中介。
[0122]
图5a、图5b和图5c示出了其中高效ssl/tls代理可以基于https服务器的域名来确定解密https会话的实施例。在解密时,可能会发现会话的uri与mitm 125管理的uri列表匹配,因此,根据利用高效代理的一些高级别应用程序(例如,网络安全应用程序)的逻辑,通过使这些数据包通过mitm 125,可以对组成https会话的加密数据包进行进一步的处理。
[0123]
对于图5a,步骤5-1至5-8与图4a中的相应步骤4-1至4-8类似,除了目标https服务器是web服务器srv2 132而不是srv1 130。图5a中的步骤5-1和5-2与图4a中的步骤4-1和4-2相同。
[0124]
参考图5a,主机host1 110可以通过将浏览器指向uri https://www.srv2.net/index.html来通过网络浏览器(web/http客户端)发起与具有域名www.srv2.net的网络服务器srv2 132的https会话。主机110通过检查本地dns缓存或查询域名系统(dns)等(图5a中未示出)将域名www.srv2.net解析为ip地址,例如5.6.7.8。
[0125]
为了发起与web服务器srv2 132www.srv2.net的https会话通信,在步骤5-3,host1 110首先通过发布tcp syn消息(其由tcp-agt1 121拦截)来发起与web服务器srv2 132端口443的tcp连接。tcp-agt1 121在本地计算(并记录在查找表中)该tcp连接的(双向)流标识符“flow-5678”,例如,数据包的源和目的地ip地址、源和目的地端口以及ip协议类型的哈希,以及与此https会话相关联的数据包的当前或初始默认的代理内数据包转发动作。对于在客户端到服务器方向上传输的数据包,诸如发起新会话的此tcp syn数据包,初始默认的代理内数据包转发动作是将数据包从tcp-agt1 121直接转发到tcp-agt2 122,而这在步骤5-4处由tcp-agt1 121执行。类似地,tcp-agt2计算并记录流标识符“flow-5678”和初始默认的代理内数据包转发动作(即,将在服务器到客户端方向上传输的数据包从tcp-agt2 122直接转发到tcp-agt1 121)。在步骤5-5,tcp-agt2 122向其web服务器srv2 132的目的地转发tcp syn数据包。
[0126]
在步骤5-6,tcp数据包传输的多个子步骤建立了host1 110和srv2 132之间的tcp连接,其中tcp-agt1 121和tcp-agt2 122中介,总的来说被显示为host1 110、tcp-agt1 121、tcp-agt 122和srv2 132之间的双向箭头。
[0127]
接下来的几个步骤在host1 110和srv2 132之间建立由ssl/tls代理中介的tls隧道,在此期间对domain-name-decrypt-list进行搜索。在步骤5-7,主机host1 110可以向web服务器srv2 132发送tls clienthello消息,该消息被tcp-agt1 121拦截。在接收到tls clienthello消息(其发起tls握手/隧道设置进程)后,tcp-agt1 121可以配置为设置其代理内数据包转发动作以将客户端到服务器的数据包转发到tls-agt1 123。在步骤5-8,tcp-agt1 121可以将包含tls clienthello消息的数据包发送到tls-agt1 123。
[0128]
在接收到带有clienthello消息的数据包后,tls-agt1 123计算并记录流标识符值“flow-5678”和初始默认的代理内数据包转发动作,该动作可以是将clienthello消息直接转发到tls-agt2 124。但是,首先,tls-agt1 123从clienthello消息(其为www.srv2.net)中提取服务器名称指示(sni)值。在步骤5-9,tls-agt1 123向mitm 125发送查询,以检查www.srv2.net是否在domain-name-decrypt-list中。mitm 125搜索domain-name-decrypt-list,并确定www.srv2.net在该列表中,因此后续https会话应由代理解密。在步骤5-10,mitm 125通过发信号通知tls-agt1 123www.srv2.net在domain-name-decrypt-list中来对查询做出“真”响应,因此,相关联的https会话将由代理解密。
[0129]
参考图5b,在步骤5-11,tls-agt1 123向tcp代理程序tcp-agt1 121和tcp-agt2 122分别发送信号,以将所有具有流标识符“flow-5678”的代理内数据包分别发送到tls-agt1 123和tls-agt2 124,以便使代理解密后续的https会话。在步骤5-12,tls-agt1 123向tls-agt2 124发送clienthello消息。在接收到clienthello消息后,tls-agt2 124计算并在本地记录流标识符值“flow-5678”和初始默认的代理内数据包转发动作,该动作为将数据包直接转发到tls-agt1 123。在步骤5-13,tls-agt2 124向tcp-agt2 122发送clienthello消息,后者将clienthello发送到目的地srv2 132。在步骤5-14,srv2 132以serverhello消息进行响应,该消息被tcp-agt2 122拦截,tcp-agt2 122将该serverhello消息发送到tls-agt2 124,tls-agt2 124将serverhello消息发送到tls-agt1 123,tls-agt1 123将serverhello消息发送到tcp-agt1 121,tcp-agt1 121将serverhello消息发送到host1 110。
[0130]
在步骤5-15至5-21中,可以在tls-agt2 124和srv2 132之间以及在tls-agt1 123和host1 110之间建立tls隧道。在该实施例中,tls-agt2 124可以欺骗host1 110,使得可能在srv2 132看来,其既作为ip可寻址的端点又作为host1 110和srv2 132之间的tls隧道的远端终端点直接与host1 110交互;并且类似地,tls-agt1 123可以欺骗srv2 132,使得可能在host1 110看来,其既作为ip可寻址的端点又作为host1 110和srv2 132之间的tls隧道的远端终端点直接与srv2 132交互。host1 110和srv2 132都不会(分别)知道它们实际上在与代理组件tls-agt1 123和tls-agt2 124(分别)交互。为了简化描述,以下描述的步骤5-15至5-21可以使用自签名证书;然而,在常见做法中,服务器证书可能不是自签名的(应用程序通常将自签名证书视为安全风险),而是由创建服务器证书的证书颁发机构签名;并且用于对服务器证书进行签名的证书颁发机构的证书连同服务器证书将被包含在certificate消息中,以形成信任链。就这一点而言,这些假设、简化以及相关联的规范并非旨在进行限制。
[0131]
在步骤5-15,srv2 132可以发送包含srv2 132的服务器证书的certificate消息,该消息可以被tcp-agt2 122拦截,其可以将certificate消息发送到tls-agt2 124。为了简化描述,服务器证书可以是自签名的,并且处理任何自签名证书的代理程序(例如,主机110上的web浏览器、tls代理程序123和124、mitm 125)可以不拒绝它们或以其他方式请求其他代理程序或用户的干预。进一步假设,尽管在实践中,实施方式可能会从服务器证书中提取服务器名称(www.srv2.net)并将其与sni值进行比较,或者以其他方式应用作用于此会话的服务器名称的逻辑(因为certificate中包含的服务器名称是可靠的),诸如让mitm检查服务器名称是否在domain-name-decrypt-list中,为了简化描述,此处将不再描述这些步骤。这并不限制本公开的范围。
[0132]
在接收到certificate消息后,tls-agt2 124可以在欺骗host1 110的同时(通过使用host1 110的ip地址作为tls-agt2 124生成的数据包的ip报头中的源ip地址),与srv2 132建立tls隧道,其中tcp-agt2 122进行中介。在步骤5-16,tls-agt2 124和srv2 132可以建立tls隧道。在许多实施例之一中,可以使用以下子步骤来建立tls隧道:srv2 132可以将serverkeyexchange消息发送到tls-agt2 124;srv2 132可以将serverhellodone消息发送到tls-agt2 124;tls-agt2 124可以将clientkeyexchange消息发送到srv2 132;tls-agt2 124可以将changecipherspec消息发送到srv2 132;tls-agt2 124可以将finished消息发送到srv2 132;srv2 132可以将changecipherspec消息发送到tls-agt2 124;以及srv2 132可以将finished消息发送到tls-agt2 124(消息序列详细信息未在图5b中示出)。
[0133]
随后,可以在tls-agt1 123和host1 110之间建立tls隧道,为此tls-agt1 123欺骗了srv2 132,即host1 110认为它正在直接与srv2 132交互以建立tls隧道,但实际上正在与tls-agt1 123进行交互。然而,首先,代理需要为srv2 132生成新的服务器证书,tls-agt1 123使用该新证书来与host1 110建立tls隧道,这是ssl/tls代理的标准操作。(由srv2 132提供的服务器证书可能无法简单地复制和重复使用;一个原因是,只有srv2 132知道的私钥与其用于解密和加密消息的服务器证书相关联。如果没有此密钥,则tls-agt1 123在使用srv2 132的服务器证书时可能无法与host1110建立tls隧道。)
[0134]
在步骤5-17,tls-agt2 124可以将服务器证书的副本发送到mitm 125。在步骤5-18,mitm 125将服务器证书发送到证书颁发机构ca 126,并请求欺骗srv2 132服务器证书
的新证书。在步骤5-19,ca 126将新的欺骗的服务器证书和其他必要信息(例如,证书的私钥)发送到mitm 125。在步骤5-20,mitm 125将欺骗的服务器证书和相关联的信息,连同用来与host1 110建立tls信道的指令,发送到tls-agt1 123。在步骤5-21,在类似于步骤5-16的进程中,tls-agt1 123继续与host1 110建立tls隧道,同时欺骗srv2 132(通过使用srv2 132的ip地址作为tls-agt1 123生成的数据包的ip报头中的源ip地址,并通过使用由ca 126生成的欺骗的服务器证书),其中tcp-agt1 121进行中介。
[0135]
现在,host1 110发起与srv2 132的http会话。所有http消息将通过两个tls隧道发送,其中代理进行中介。参考图5c,在步骤5-22,host1 110将具有请求行“get https://www.srv2.net/path1/resource1 http/1.1”的http请求消息发送到tls隧道中,该tls隧道在隧道进入时对该请求加密,在隧道离开时对http请求消息进行解密,此时其由tls-agt1 123接收(其中tcp-agt1 121进行中介)。
[0136]
在步骤5-23,tls-agt1 123从(明文)http请求消息中提取uri https://www.srv2.net/path1/resource1,并将其发送到mitm 125。回想一下,在图5a的步骤5-2,mitm 125存储uri列表“uri-decrypt-list”,以与https会话中使用的uri进行比较,如可以在网络安全应用程序、或隐私保护应用程序、或执法窃听应用程序、或具有作用于https会话的uri值的逻辑的其他应用程序中所做的那样。mitm 125将uri https://www.srv2.net/path1/resource1与uri-decrypt-list中的条目进行比较。如果存在匹配项或充分的对应关系,则mitm 125可以发信号通知正在使用高效ssl/tls代理的高级别应用程序(图5c中未示出)。然后,高级别应用程序可以执行附加的逻辑。例如,网络安全应用程序或执法窃听应用程序可以向mitm 125发信号,以记录和捕获构成https会话的解密数据包,以供随后由网络分析应用程序使用,该网络分析应用程序可以评估host1 110和uri https://www.srv2.net/path1/resource1之间的通信造成的威胁的严重性。因此,会话的其余部分将使所有解密的数据包通过mitm 125。相应地,在步骤5-24a,mitm 125向tls-agt1 123发信号以将代理内数据包发送到mitm 125;而在步骤5-24b,mitm 125向tls-agt2 124发信号,以将代理内数据包发送到mitm 125。在步骤5-25,tls-agt1 123将(明文)http请求消息发送到mitm 125,后者可以使用高效代理根据高级别应用将逻辑应用于数据包。在步骤5-26,mitm 125将http请求消息发送到tls-agt2 124,后者将消息发送到tls隧道中;然后,(加密的)消息将通过tcp-agt2 122穿越隧道,并在目的地端点srv2 132处离开隧道。在步骤5-27,srv2 132生成对http请求的响应,并通过tcp-agt2 122、tls-agt2 124、mitm 125、tls-agt1 123和tcp-agt1 121将其发送到朝向host1 110的隧道中。在步骤5-28,可以使用典型的tcp信号序列(例如,fin、ack轮流)通过断开host1 110和srv1 132之间的tcp连接来终止https会话,该会话由代理的tcp-agt1 121和tcp-agt2 122透明地中介。
[0137]
图6示出了类似于图5a-5c的另一个实施例,除了会话的uri与uri-decrypt-list中的任何元素都不匹配,因此会话的其余部分并不通过mitm 125,这带来了一定程度的效率。参考图6,除了uri是https://www.srv2.net/path2/resource2而不是https://www.srv2.net/path1/resource1之外,步骤6-1至6-21与图5a-5b中的步骤5-1至5-21相同。在步骤6-22,host1 110将具有请求行“get https://www.srv2.net/path2/resource2 http/1.1”的http请求消息发送到tls隧道中,该tls隧道在隧道进入时对该请求加密,在隧道离开时对http请求消息进行解密,此时其由tls-agt1 123接收(其中tcp-agt1 121进行
中介)。
[0138]
在步骤6-23,tls-agt1 123从(明文)http请求消息中提取uri https://www.srv2.net/path2/resource2,并将其发送到mitm 125。回想一下,在图5a的步骤5-2,其对应于图6的步骤6-2,mitm 125存储uri列表“uri-decrypt-list”以与https会话中使用的uri进行比较,如可以在网络安全应用程序、或隐私保护应用程序、或具有作用于https会话的uri值的逻辑的其他应用程序中所做的那样。mitm 125将uri https://www.srv2.net/path2/resource2与uri-decrypt-list中的条目进行比较。mitm 125确定不存在匹配项或充分的对应关系;因此,在步骤6-24a,mitm 125发信号通知tls-agt1 123直接向tls-agt2 124发送代理内数据包(即绕过mitm 125,因为使用代理的更高级别的应用程序对处理此会话不感兴趣)。类似地,在步骤6-24b,mitm 125发信号通知tls-agt2 124直接向tls-agt1 123发送代理内数据包(即绕过mitm 125,因为使用代理的更高级别的应用程序对处理此会话不感兴趣)。在步骤6-25,tls-agt1 123将http请求消息直接发送到tls-agt2 124(绕过mitm 125);然后tls-agt2 124将http请求消息发送到朝向srv2 132的tls隧道中;然后,消息通过tcp-agt2 122穿越隧道,并在目的地端点srv2 132处离开隧道。在步骤6-26,srv2 132生成对http请求的响应,并通过tcp-agt2 122、tls-agt2 124、tls-agt1 123以及tcp-agt1 121(再次绕过mitm 125)将其朝向host1 110发送。在步骤6-27,可以使用典型的tcp信号序列(例如,fin、ack轮流)通过断开host1 110和srv1 132之间的tcp连接来终止https会话,该会话由代理的tcp-agt1 121和tcp-agt2 122透明地中介。
[0139]
对于以上图4a-4b、图5a-5c和图6存在可以扩大本公开的范围的变型。分别在图4a、图5a和图6的步骤4-1、5-1和6-1中,创建包含域名的“domain-name-decrypt-list”,并最终用于在会话的域名与“domain-name-decrypt-list”中的域名匹配的情况下,发信号通知高效代理以潜在地解密会话中的数据包。作为替代或补充,使用“domain-name-do-not-decrypt-list”,如果会话的域名与该列表中的域名相匹配,则其可以发信号通知高效代理不对会话中的数据包进行解密。这可能与隐私应用程序更为相关,在隐私应用程序中,某些通信在传输过程中应保持为加密。或者,可以同时使用两种类型的列表,其中一种列表优先于另一种。
[0140]
以上图5a的另一变型是,当在uri-decrypt-list中的uri与会话的uri之间发现匹配项时,mitm可以发信号通知结束会话,例如,以防止传送敏感信息。这可以通过例如生成tcp rst信号并将其发送到host1 110或srv2 132或两者以终止tcp连接来实现。
[0141]
图4a-4b的另一变型是使用ip地址的列表“ip-address-decrypt-list”来确定是否要解密给定的受tls保护的通信。参考图4a,在步骤4-1,由列表管理器128生成包含ip地址的ip-address-decrypt-list。列表生成可以通过接受ip地址作为输入的用户界面,或者通过使用dns解析域名,或者通过由威胁情报提供者通过订阅服务提供的ip地址,或者通过隐私保护数据和策略等。在步骤4-2,列表管理器lst-mgr 128将ip-address-decrypt-list传送给mitm 125。步骤4-3至4-8与以上的步骤相同(尽管在步骤4-8,可以省略对clienthello消息中包含的sni值的提取)。在步骤4-9,tls-agt1 123从包含clienthello消息的ip数据包的报头中提取源ip地址和/或目的地ip地址,然后向mitm 125发送查询以检查ip地址是否在ip-address-decrypt-list中。mitm 125搜索ip-address-decrypt-list,并确定ip地址不在列表中,因此该会话不应被解密。在步骤4-10,mitm 125对查询响应“假”,其发信号通知tls-agt1 123该ip地址不在ip-address-decrypt-list中,因此相关联的https会话不应由代理进行解密。参考图4b,步骤4-11至4-19如上所述进行,即,会话绕过代理解密。
[0142]
作为紧接以上变型的变型,如果在图4a的步骤4-9中mitm 125搜索ip-address-decrypt-list并且确定ip地址在该列表中,则会话将被解密。在这种情况下,进程类似于图5a-5c中的步骤5-10至5-28进行。
[0143]
本文描述的功能和步骤可以体现在由一个或多个计算机或用来执行本文所述一个或多个功能的其他设备执行的计算机可用数据或计算机可执行指令中,诸如在一个或多个程序模块中。通常,程序模块包含例程、程序、对象、组件、数据结构等,它们在由计算机或其他数据处理设备中的一个或多个处理器执行时执行特定任务或实现特定抽象数据类型。计算机可执行指令可以存储在诸如硬盘、光盘、可移动存储介质、固态存储器、ram等的计算机可读介质上。应当理解,可以根据需要组合和分配程序模块的功能。另外,功能可以全部或部分地体现在固件或硬件等效物中,诸如集成电路、专用集成电路(asic)、现场可编程门阵列(fpga)等。特定的数据结构可以被用于更有效地实现本公开的一个或多个方面,并且此类数据结构被认为在本文描述的计算机可执行指令和计算机可用数据的范围内。
[0144]
尽管不是必需的,但是本领域的普通技术人员将理解,本文描述的各个方面可以体现为一种方法、系统、装置或体现为一种或多种存储计算机可执行指令的计算机可读介质。因此,各方面可以采取完全硬件实施例、完全软件实施例、完全固件实施例,或以任何组合结合软件、硬件和固件方面的实施例的形式。
[0145]
如本文所述,各种方法和动作可以在一个或多个计算设备和网络上操作。功能可以以任何方式分布,或者可以位于单个计算设备(例如,服务器、客户端计算机等)中。
[0146]
本公开的各方面已经根据其例示性实施例进行了描述。通过阅读本公开,本领域普通技术人员可以想到所附权利要求的范围和精神内的许多其他实施例、修改和变化。例如,本领域的普通技术人员将理解,例示性附图中示出的步骤可以以不同于所列举的顺序来执行,并且示出的一个或多个步骤可以是任选的。所附权利要求中的任何和所有特征可以以任何可能的方式组合或重新布置。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1