掌桥专利:专业的专利平台
掌桥专利
首页

加密隧道的部分分组加密

文献发布时间:2023-06-19 19:28:50


加密隧道的部分分组加密

相关申请的交叉引用

本申请要求于2020年8月25日提交的第17/002,170号美国专利申请的优先权,其全部内容通过引用并入本文。

技术领域

本公开总体上涉及对分组进行加密以通过诸如虚拟私用网(VPN)网络之类的加密隧道进行传输。更具体而言,这些技术涉及可选地对通过加密隧道传输的分组进行加密。

背景技术

出于各种原因,计算设备的用户常常期望跨网络传输各种类型的信息。例如,计算设备的用户使用网络来浏览网站、访问在线服务或应用程序、远程访问VPN等。虽然执行这些类型的活动肯定是所期望的,但用于传输信息的许多网络都是公共网络,例如互联网。这些公共网络常常是不安全的环境,在这些环境中,用户数据通信的隐私可能受到损害。

为了保护计算设备的用户跨网络传输数据的机密性和隐私,通常对正在传输的数据进行加密,以混淆数据,防止潜在的恶意实体获得数据。例如,VPN使用称为“隧道(tunneling)”的过程,在公共网络(例如,互联网)上扩展私用网络。隧道的过程涉及:在发送设备发送数据之前,数据被加密,以便经加密的数据在网络上传输时被混淆,然后数据在VPN处的接收设备处被解密,以便对数据采取动作。

诸如VPN隧道之类的加密隧道已经变得很普遍,并且有许多用途和优势。然而,为通过隧道传输数据而对该数据进行加密的过程是耗时的并且是计算密集的。此外,通过加密隧道传送的一些类型的数据分组可能已根据用于创建要传输的数据分组的协议进行了加密。因此,当数据分组已被加密时,为通过加密隧道传输而对数据分组进行加密可能是冗余的。

附图说明

下面参考附图进行详细描述。在图中,附图标记最左边的(一个或多个)数字标识附图标记首次出现的图。在不同图中使用相同的附图标记指示相似或相同的项目。附图中描绘的系统不是按比例绘制的,并且图中的组件可能被描绘为不是彼此按比例绘制的。

图1A示出了环境的系统架构图,在该环境中,客户端设备与头端设备建立了加密连接。客户端设备确定分组将经由加密隧道传输到头端设备,确定分组的第一部分被加密,并且根据加密隧道的加密协议加密分组的第二部分。

图1B示出了环境的系统架构图,在该环境中,客户端设备向头端设备发送加密分组,并且头端设备确定第一部分是使用初始加密协议加密的,并且第二部分是使用加密隧道的加密协议加密的。然后头端设备使用加密协议解密第二部分,并且使用初始加密协议解密第一部分。

图2示出了数据分组的示例,该数据分组使用初始加密协议进行加密,然后使用与加密隧道相关联的加密协议进行加密,以生成加密隧道数据分组。

图3示出了用于第一设备的示例方法的流程图,该示例方法确定分组的第一部分是被加密的,并且分组的第二部分是未被加密的,使用加密隧道的加密协议加密分组的第二部分,并且通过网络并经由加密隧道将分组发送到第二设备。

图4示出了用于第一设备的示例方法的流程图,该示例方法用于从第二设备接收经由加密隧道发送的分组,确定分组的第一部分使用第一加密协议进行加密,并且分组的第二部分使用加密隧道的第二加密协议进行加密,并且根据两个加密协议对分组进行解密。

图5是计算机架构图,该计算机架构图显示了用于实现服务器设备的说明性计算机硬件架构,该服务器设备可以用于实施本文呈现的各种技术的方面。

具体实施方式

概述

本发明的各方面在独立权利要求中阐述,并且优选特征在从属权利要求中阐述。一个方面的特征可以单独地或与其他方面组合地应用于任何方面。

本公开总体上涉及对分组进行加密以通过加密隧道传输,例如虚拟私用网(VPN)网络。更具体而言,这些技术涉及选择性地对通过加密隧道发送的分组的部分进行加密,使得至少部分地避免对分组的双重加密。

执行本文所述的技术的一种方法可以包括通过网络在第一设备和第二设备之间创建加密隧道以通过网络传送加密数据,以及确定通过网络将分组在加密隧道中发送到第二设备。此外,这些技术包括确定分组的第一部分被加密,以及确定分组的第二部分未被加密。另外,这些技术包括使用与加密隧道相关联的加密协议来对分组的第二部分进行加密,以及使用加密隧道通过网络将分组发送到第二设备。

执行本文所述的技术的另一方法可以包括通过网络创建与源设备的加密隧道以通过网络传送加密数据,以及通过网络在加密隧道中接收从源设备发送的分组。此外,该方法还可以包括确定分组的第一部分是使用与加密隧道相关联的第一加密协议进行加密的,以及根据第一加密协议对分组的第一部分进行解密。另外,该方法可以包括确定分组的第二部分是使用第二加密协议进行加密的,以及根据第二加密协议对分组的第二部分进行解密。

另外,本文所述的技术可以由具有非暂时性计算机可读介质的系统和/或设备执行,非暂时性计算机可读介质存储计算机可执行指令,计算机可执行指令在由一个或多个处理器执行时,执行上述方法。

示例实施例

加密隧道在社会上已经变得很普遍,出于各种原因,设备的用户经常使用加密隧道在各种类型的非安全网络(例如,互联网)中安全地传输数据。加密隧道的一种普遍用途是在VPN中,其中,流量由设备在私用网络中加密,并在互联网上传输到各个目的地,使得即使在非安全网络上传输,加密数据也是安全的。加密隧道允许用户执行许多活动,以允许用户在其办公室远程办公,这些活动例如:私下浏览互联网、访问存储在另一位置的私用或敏感数据(例如,银行账户信息、健康信息等)、以及访问存储在雇主的私用网络中的机密商业信息。

如上所述,加密隧道已成为我们日常生活中的必需品,并且加密隧道的使用范围继续扩大和多样化。然而,用于为这些加密隧道加密数据的加密协议非常耗时,并且还需要消耗设备和任何卸载硬件芯片的大量计算资源。因此,在可能的情况下避免加密数据可能是有利的,但在必要时仍然加密数据以保护私用数据。

在一些情况下,要通过加密隧道传输的数据可能已经使用另一加密协议进行了加密,例如根据超文本安全传输协议(HTTPS)、安全外壳(SSH)协议等加密的数据分组。然而,用于加密隧道的加密协议可能会重新加密所有的分组,尽管这些分组已经使用另一协议进行了加密并因此对于非授权方来说已经被混淆了。这种对分组的双重加密是不利的,因为不必要地重新加密已被加密的数据会有不必要的时间延迟以及计算资源消耗。因此,当这些数据分组已经被加密时,避免重新加密要通过加密隧道发送的数据分组将是有利的。

为了解决这个问题,计算设备可以尝试执行分割隧道,其中VPN的用户可以通过加密的VPN隧道路由来自特定应用程序或设备的流量,而来自其他应用程序或设备的流量可以通过非加密的隧道或甚至通过默认最短路径优先(SPF)路由协议传输。然而,加密流量(例如,HTTPS、SSH等)仍然暴露了与加密隧道所隐藏的流中的数据分组有关的一些信息,例如流量的目的地地址在主体加密的分组(例如,传输控制协议(TCP)数据流或快速UDP互联网连接(QUIC)数据流的一部分)中是可见的。因此,简单地通过非加密隧道路由加密流量(例如,HTTPS、SSH等)可能会暴露有关数据流的私用或敏感信息,但是通过加密隧道路由加密流量可能会导致对分组的双重加密,而这种双重加密是耗时的,并且具有高CPU消耗。

本公开描述了技术和机制,用于减少对使用加密隧道传输的分组的双重加密。这些技术包括确定分组的部分已被加密,识别分组的未被加密的部分,以及选择性地加密分组的未被加密的部分以通过加密隧道传输。以这种方式,未加密的分组中潜在的私用或敏感数据(例如,分组报头中的信息)将使用加密隧道的加密协议进行加密,但是已被加密的分组的数据(例如,有效载荷)可以不被双重加密。通过减少或消除数据分组中的双重加密数据量,可以减少针对加密隧道的加密流量所花费的时间以及所消耗的计算资源。

根据本文所述的技术,计算设备可以与另一计算设备建立加密连接,以用于通过一个或多个网络来回传送加密流量,这些网络可以是公共网络或非安全网络,例如互联网。在一些情况下,设备可以是客户端设备,该客户端设备与使用加密协议的头端设备建立加密隧道,例如VPN。客户端设备可能正在运行一个或多个应用程序,这些应用程序试图使用各种类型的流量与头端设备进行通信。在一些示例中,应用程序(或其他程序)可能只是希望使用加密隧道传送未加密的流量(例如,HTTP流量),该流量是未被加密的,这样,所有的数据都是使用加密隧道的加密协议进行加密的。

然而,在一些情况下,在客户端设备上运行的应用程序或程序可能希望使用加密数据的通信协议(例如,HTTPS、SSH等)来传送数据流。当VPN客户端(或管理加密隧道的检测程序)接收到被加密的数据分组,但要通过VPN隧道传输时,VPN客户端可以确定数据流中至少有一部分数据分组是被加密的。例如,检测程序可以基于分组的报头确定分组是与对分组的数据进行加密的HTTPS、SSH或另一协议相关联的特定类型。在一些情况下,检测程序可以分析分组并且识别分组的被加密的部分和未被加密的部分。

检测程序可以确定分组的未被加密部分的大小,例如字节数。例如,如果分组的有效载荷被加密,并且分组的报头未被加密,则检测程序可以确定报头中有多少字节是未被加密的。检测程序可以仅基于分组类型的预定义格式(例如,HTTPS报头具有预定义大小)来确定未被加密部分的大小。检测程序可以确定分组的未被加密的部分,并且客户端设备(例如,VPN代理或其他程序)可以选择性地使用加密隧道的加密协议对分组的未被加密部分进行加密,同时避免对分组的已被加密部分进行加密。然后分组可以通过加密隧道传输,从而私用数据被混淆,不被未经授权的各方发现,但是减少了对分组的数据的双重加密。

在一些情况下,可以使用加密隧道的加密协议仅对分组的未被加密部分进行加密。然而,在一些情况下,加密协议可以根据预定义的块大小来加密数据块。在这样的情况下,不是将随机数数据(nonce data)填充或添加到分组中,而是VPN客户端可以加密足够的数据块,从而使未被加密的数据被加密,并且由于块大小的倍数大于未被加密数据的总大小,加密数据的相对较小部分也可能被使用加密隧道的隧道协议进行加密。

尽管本文所述的技术是关于在客户端设备和头端设备之间建立的加密隧道,但是这些技术同样适用于以任何方式利用加密隧道的任何类型的一个或多个设备。此外,这些技术通常适用于任何类型的隧道协议,例如互联网协议安全(IPsec)、WireGuard、点对点隧道协议(PPTP)、OpenVPN、SSTP、互联网密钥交换版本1(IKEv1)、IKEv2和/或任何其他加密隧道协议。此外,这些技术适用于在通过加密隧道传输之前可以至少部分加密的任何类型的数据,例如HTTPS、SSH和/或任何其他通信协议。

现在将在下文中参考附图更全面地描述本公开的特定实施方式和实施例,在附图中显示了各个方面。然而,各个方面可以以许多不同的形式来实施,并且不应被解释为局限于本文阐述的实施方式。如本文所述,本公开涵盖实施例的变体。类似的数字始终指代类似的元素。

图1A示出了环境100的系统架构图,在该环境中,客户端设备106与头端设备108建立加密连接。客户端设备106确定分组将经由加密隧道传输到头端设备108,确定分组的第一部分是被加密的,并且根据加密隧道的加密协议对分组的第二部分进行加密。

在一些示例中,客户端设备106可以与头端设备108通信,以便访问由服务网络102管理的一些后端服务或应用程序。服务网络102通常可以包括、管理或以其他方式与由客户端设备106的用户使用的一个或多个应用程序或服务相关联。服务网络102可以提供任何类型的应用程序或服务以供客户端设备106的用户使用。然而,在其他情况下,头端设备108可以与任何类型的计算设备相关联并用于任何目的。

在一些示例中,环境100可以包括服务网络102,该服务网络102包括安置于或位于一个或多个数据中心104中的设备。服务网络102可以包括由任何可行的通信技术实施的一个或多个网络,例如有线和/或无线方式和/或技术。服务网络102可以包括以下项的任意组合:个域网(PAN)、局域网(LAN)、校园网(CAN)、城域网(MAN)、外联网、内联网、互联网、短程无线通信网络(例如,ZigBee、蓝牙等)广域网(WAN)(集中式和/或分布式)和/或其任何组合、排列和/或聚合。服务网络102可以包括通过计算机网络中的节点将分组从一个网络区段中继到另一网络区段的设备、虚拟资源或其他节点。服务网络102可以包括多个设备,这些设备利用OSI模型中的网络层(和/或会话层、传输层等)进行分组转发和/或利用其他层。

一个或多个数据中心104可以是跨地理区域的物理设施或建筑物,其指定用于存储作为服务网络102的一部分的联网设备。数据中心104可以包括各种联网设备、以及用于电源、数据通信连接、环境控制和各种安全设备的冗余或备份组件和基础设施。在一些示例中,数据中心104可以包括一个或多个虚拟数据中心,这些虚拟数据中心是专门为企业需求和/或基于云的服务提供商需求而设计的云基础设施资源的池或集合。通常,数据中心104(物理和/或虚拟的)可以提供诸如处理器(CPU)、存储器(RAM)、存储装置(磁盘)和网络(带宽)之类的基本资源。然而,在一些示例中,分组转发网络102中的设备可以不位于明确定义的数据中心104中,而是可以位于其他位置或建筑物中。

在一些情况下,客户端设备106可以期望或请求访问托管在服务器112A、112B至112N(其中“N”是任何整数)上的应用程序114。应用程序114可以包括任何类型的应用程序114,例如基于web的应用程序、由云服务提供商管理的服务、企业网络的数据存储或服务和/或任何其他类型的应用程序114。

客户端设备106和头端设备108可以通过一个或多个网络110建立通信连接。(一个或多个)网络110可以包括任何可行的通信技术,例如有线和/或无线方式和/或技术。网络126可以包括以下项的任何组合:个域网(PAN)、局域网(LAN)、校园网(CAN)、城域网(MAN)、外联网、内联网、互联网、短距离无线通信网络(例如、ZigBee、蓝牙等)广域网(WAN)(集中式和/或分布式)和/或其任何组合、排列和/或聚合。客户端设备106和头端设备108可以使用任何类型的协议(例如,用于管理连接到互联网和通过互联网的传输控制协议/互联网协议(TCP/IP))通过网络110进行通信。

然而,客户端设备106和头端设备108可以在“1”处通过网络110建立加密隧道116以通过网络110发送和接收加密数据。可以通过例如以下项来建立加密隧道116:在客户端设备上运行的VPN客户端、和/或头端设备108。加密隧道116可以使用任何类型的隧道协议来建立,例如(但不限于)互联网协议安全(IPsec)、WireGuard、点对点隧道协议(PPTP)、OpenVPN、SSTP、互联网密钥交换版本2(IKEv2)和/或任何其他加密隧道协议。以这种方式,在客户端设备106和/或头端设备108通过网络110发送之前,可以使用加密隧道116的加密协议对数据进行加密。可以使用本领域已知的任何握手(handshake)或建立技术在客户端设备106和头端设备108之间建立加密隧道116。

在“2”处,客户端设备106可以确定具有被加密的第一部分120的分组118将通过加密隧道发送。例如,在客户端设备106上运行的应用程序或程序可以期望通过加密隧道116传送数据,并且该应用程序或程序可以被配置为使用HTTPS、SSH和/或任何其他安全/加密通信协议来传送数据。

在一些示例中,可以使用一个或多个检测程序来执行对分组118具有用初始加密协议加密的第一部分120的确定。例如,检测程序可以是基于网络的应用程序识别(NetworkBased Application Recognition,NBAR)类型的程序,其可以包括用于协议发现的特征。协议发现提供了一种简单的方法来发现通过客户端设备106和头端设备108的接口传递的应用协议分组118。NBAR程序可以对分组118执行协议发现并且将分组118分类为特定协议。可以在隧道接口以及在其上配置隧道接口的物理接口上启用协议发现,并且可以在两个接口上对指定到隧道接口的分组118进行计数。在物理接口上,可以基于封装对分组118进行分类和计数,并且在隧道接口上,可以基于协议(例如,第7层协议)对分组118进行分类和计数。

在一些情况下,可以通过以下操作来执行对分组118具有用初始加密协议加密的第一部分120的确定:基于分组的端口来推断出协议。例如,检测程序可以识别目的地端口为443的数据分组118,该端口通常用于HTTPS,并确定分组118使用加密协议,该加密协议至少像HTTPS那样保护分组118的主体。作为另一示例,检测程序可以确定分组118的目的地端口为22,该端口通常用于SSH,并确定分组118使用加密协议,该协议至少像SSH一样保护分组118的主体。

通常,第一部分120可以用任何初始加密协议加密,例如安全套接层(SSL)协议、传输层安全(TLS)协议、数据报传输层安全(DTLS)协议和/或任何其他加密协议。因此,可以根据用于特定通信协议的任何加密协议(例如,TLS上的HTTP、SSL上的HTTP等)来加密第一部分120。

因此,在“2”处,在客户端设备106上运行的检测程序可以基于协议类型和/或通过浅分组处理(例如,NBAR)确定分组118具有已用初始加密协议加密的第一部分120。例如,检测程序可以基于对分组118的处理来确定第一部分120已被加密。在另一示例中,检测程序可以简单地确定分组118的协议类型是使得分组118的第一部分120是被加密的(例如,HTTPS、SSH等)。在一些情况下,分组118的第一部分120可以至少包括分组118的主体和/或有效载荷。因此,检测程序可以分析分组118并检测分组的第一部分120是用初始加密协议加密的,和/或可以确定分组118的协议类型并且推断或确定分组118的第一部分120被加密(例如,SSH加密分组118的预定义大小或部分,HTTPS加密分组118的预定义大小或部分等)。

在一些情况下,为了确定数据分组118的已被加密的第一部分120的大小,分组118的创建者可以使用例如附加IP选项报头、差分服务代码点(DSCP)标记或值和/或另一种技术积极地识别已加密的第一部分120的大小,使得客户端设备106可以识别该标记或值以确定第一部分120的大小。

在“3”处,在客户端设备106上运行的检测程序可以识别分组的未被加密的第二部分122。例如,检测程序可以确定分组118的第二部分122(例如,分组118的报头)未被加密。在一些情况下,诸如SSH、HTTPS等的协议可以加密分组118的主体或有效载荷(例如,第一部分120),但可以不加密包括目的地地址、源地址和/或其他字段的报头。然而,使用加密协议加密的分组118(例如,互联网协议(IP)版本4、IPv6等)可能不具有加密的报头和/或其他部分(例如,第二部分122)。因此,客户端设备106可以基于用于加密分组118的第一部分120的协议类型、基于对分组118的处理和/或以任何其他方式确定分组118的第二部分122是未被加密的。

在“4”处,客户端设备106可以使用用于建立加密隧道116的加密隧道协议(例如,IPsec、WireGuard、PPTP、OpenVPN、SSTP、IKEv2等)来加密分组的第二部分122。然而,客户端设备106(例如,VPN网关和/或与加密隧道116相关联的任何其他程序)可以避免对已被加密的第一部分120进行加密,或者至少避免对第一部分120的大部分进行加密。通过这种方式,可以使用加密隧道116协议对未被加密的第二部分122进行加密,以便至少在分组118的报头中混淆可能是敏感或私用数据的信息。然而,不是简单地加密整个分组118因而使第一部分120被双重加密,而是避免对第一部分120(或第一部分120的大部分)进行双重加密,以减少对分组118进行加密所需的时间和计算能力。以这种方式,除了潜在的覆盖报头外,分组118被加密,使得分组118的信息在通过网络110传输时被隐藏。

在一些情况下,客户端设备106可以确定第二部分122的大小,并且确保使用加密隧道116协议来加密第二部分122。例如,检测程序可以分析分组118并且确定第二部分122的大小(例如,字节数),和/或基于分组的协议类型和/或标准(例如,IP分组具有预定义大小的报头,HTTPS/SSH分组具有预定义大小的报头等)确定或推断第二部分122的大小。在一些情况下,加密协议可以根据预定义的块大小来加密第二部分122的数据块。在这样的情况下,不是将随机数数据填充或添加到分组118中,而是VPN客户端可以加密足够的数据块,从而使第二部分122的未被加密数据被加密,并且由于块大小的倍数大于未被加密数据的总大小,第一部分120的相对较小的部分也可能被使用加密隧道116的隧道协议进行加密。

在一些情况下,用于传送分组118的覆盖技术可以被扩展,以指示该覆盖技术选择加密的分组118的多少,例如第二部分122的大小。例如,用于加密隧道116的隧道协议可以在覆盖报头中具有附加字段,并且可以指示分组118(从报头的字节0开始)的已被加密的字节数。以这种方式,头端设备108可以基于覆盖报头的字段中所包括的值来确定在已使用加密隧道协议加密的第二部分122中的分组118的字节数。因此,客户端设备106可以在分组118的覆盖报头的字段中插入值或标记,该值或标记向头端设备108指示已使用加密隧道116加密的分组118的字节数或大小。在“5”处,客户端设备106可以使用加密隧道116通过网络110将分组118发送到头端设备108。

图1B示出了环境100的系统架构图,在该环境中,客户端设备106向头端设备108发送加密的分组118,并且头端设备108确定第一部分120使用初始加密协议加密,并且第二部分122使用加密隧道116的加密协议加密。头端设备106然后使用加密协议解密第二部分122,并且使用初始加密协议解密第一部分120。

在“6”处,头端设备108可以通过网络110在加密隧道116中从客户端设备106接收分组118。在“7”处,头端设备108可以确定已使用加密隧道116协议对分组118进行部分加密。例如,头端设备108可以从覆盖报头的附加字段中识别指示分组118(从报头的字节0开始)的已被加密的字节数的值或标记。以这种方式,头端设备108可以基于覆盖报头的字段中所包括的值来确定已使用加密隧道协议加密的第二部分122中的分组118的字节数。

在“8”处,头端设备108可以解密用加密隧道116的加密隧道协议加密的数据分组118的第二部分122。例如,头端设备108可以从分组118的报头确定使用加密隧道协议加密的分组118的第二部分122的大小,并且使用加密隧道116的加密隧道协议加密该第二部分122。

在“9”处,头端设备108可以将分组118提供到由分组118报头中的目的地地址指示的一个或多个目的地设备(和/或将分组118转发到路径中的下一跳),例如一个或多个服务器112。分组118可以被部分解密,因为分组118的第一部分120仍然可以使用初始加密协议(例如,TLS、DTLS、SSL等)进行加密。

在“10”处,应用程序114可以使用诸如TLS、DTLS、SSL等初始加密协议来解密分组118的第一部分120。然后,应用程序114能够分析数据分组118的有效载荷并基于分组118的内容采取适当的动作。

图2示出了包括数据分组的示例环境200,该数据分组使用初始加密协议进行加密,然后使用与加密隧道相关联的加密协议进行加密,以生成加密隧道数据分组。

如图所示,原始数据分组202可以包括:有效载荷、TCP报头、一个或多个扩展报头、以及内部IP报头。在说明性示例中,原始数据分组202可以具有使用初始加密协议(例如,SSL、TSL、DTSL等)加密的第一加密部分206。然后可以封装原始数据分组202以创建隧道数据分组204。

原始数据分组202可以被封装以创建隧道数据分组204,隧道数据分组204在一些情况下可以是IPsec分组,如图所示,隧道数据分组204可以包括封装安全有效载荷(Encapsulating Security Payload,ESP)尾部和ESP授权器,并且还可以包括ESP报头、扩展报头和外部IP报头。如图所示,隧道数据分组204可以具有第二加密部分208,该第二加密部分208包括ESP报头、内部IP报头和内部扩展报头。然而,第二加密部分208可以不与第一加密部分206重叠(或者可以基本上不重叠),以减少隧道数据分组204的双重加密。在该示例中,第二加密部分208可以使用IPsec进行加密,并且覆盖报头可以是外部IP报头和任何扩展报头。然而,隧道数据分组204仅仅是说明性的,并且隧道数据分组204的任何部分都可以被加密并且可以类似地使用除了IPsec之外的任何其他协议。

如图所示,隧道数据分组204可以包括外部IP报头,该外部IP报头包括第二加密部分的大小的指示符214。该指示符可以在隧道数据分组204的外部IP报头(例如,针对IPsec的覆盖报头)中和/或在隧道数据分组204的扩展报头中。指示符214可以包括指示隧道数据分组204的第二加密部分208的大小的值或标记,以便接收设备能够确定有多少隧道数据分组204需要使用隧道加密协议进行解密。

图3和图4示出示例方法300和示例方法400的流程图,这些示例方法示出了至少部分地由图1A、图1B和图2中描述的设备(例如,客户端设备106、头端设备108等)执行的功能的各方面。本文参考图3和图4所描述的逻辑操作可以被实现为(1)在计算系统上运行的计算机实现的动作的序列或程序模块,和/或(2)计算系统内的互连的机器逻辑电路或电路模块。

本文描述的各种组件的实施方式是一个取决于计算系统的性能和其他要求的选择性问题。因此,本文描述的逻辑操作被不同地称为操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以用软件、固件、专用数字逻辑及其任意组合来实现。还应当理解,可以执行比图3和图4所示以及本文所述更多或更少的操作。这些操作也可以并行执行,或者以与本文描述的顺序不同的顺序来执行。这些操作中的一些或全部也可以由那些具体标识的组件以外的组件来执行。尽管本公开中所描述的技术是参考特定组件的,但在其他示例中,可以通过较少组件、较多组件、不同组件或组件的任何配置来实现这些技术。

图3示出了用于第一设备的示例方法300的流程图,该示例方法300确定分组的第一部分是被加密的,并且分组的第二部分是未被加密的,使用加密隧道的加密协议加密分组的第二部分,并且通过网络经由加密隧道将分组发送到第二设备。在一些情况下,方法300的步骤可以由第一设备(例如,客户端设备106)执行,该第一设备包括一个或多个处理器和一个或多个非暂时性计算机可读介质,一个或多个非暂时性计算机可读介质存储计算机可执行指令,当计算机可执行指令由一个或多个处理器执行时,使一个或多个处理器执行方法300的操作。

在302,第一设备可以通过网络与第二设备创建加密隧道以通过网络传送加密数据。例如,客户端设备106可以通过网络110与头端设备108建立加密隧道116以通过网络110传送加密分组或数据。例如,客户端设备106和头端设备108可以根据加密隧道协议执行握手。

在304,第一设备可以确定要通过网络在加密隧道中向第二设备发送分组。例如,客户端设备106可以生成分组118或接收数据分组,该分组将通过网络110在加密隧道116中发送到头端设备108。

在306,第一设备可以确定分组的第一部分被加密。例如,客户端设备106可以确定分组118的有效载荷被加密。在一些情况下,客户端设备106可以通过从分组118的头部识别指示分组118的被加密的第一部分120的大小的指示符来确定分组118的第一部分120被加密。在一些情况下,客户端设备106可以确定分组118的协议类型(例如,SSH、HTTPS等),并且基于该特定协议类型根据被加密的分组的预定义大小确定分组118的被加密的第一部分120。

在308,第一设备可以确定分组的第二部分未被加密。例如,客户端设备106可以确定分组118的第二部分122未被加密(例如,浅层处理、NBAR等)。在一些情况下,第二部分122可以包括分组118的未被加密的报头。

在310,第一设备可以使用与加密隧道相关联的加密协议加密分组的第二部分。例如,客户端设备106可以使用加密隧道116的加密协议(例如,IPsec、WireGuard、PPTP、OpenVPN、SSTP、IKEv2和/或任何其他加密隧道协议)来加密分组118的第二部分122。在一些情况下,方法300还可以包括确定要避免(使用隧道协议)对分组118的被加密的第一部分120进行加密,和/或避免对分组118的被加密的第一部分120进行加密。

在312,第一设备可以使用加密隧道通过网络将分组发送到第二设备。例如,客户端设备106可以使用加密隧道116通过网络110将分组118发送到头端设备108。

在一些情况下,方法300还可以包括根据覆盖协议将分组118封装在覆盖分组中,并且用分组的第二部分的大小的指示来填充覆盖分组的覆盖报头的字段。在这样的示例中,发送分组包括将覆盖分组发送到第二设备。

尽管这些技术被描述为由客户端设备106执行以将分组118发送到头端设备108,但是这些技术同样适用于头端设备108将分组118发送到客户端设备106(和/或其他本领域已知的用于传送分组的任何设备)。

图4示出了用于第一设备的示例方法400的流程图,该示例方法400用于从第二设备接收经由加密隧道发送的分组、确定分组的第一部分使用第一加密协议进行加密,并且分组的第二部分使用加密隧道的第二加密协议进行加密、并且根据两种加密协议对分组进行解密。在一些情况下,这些技术可以由系统(例如,一个或多个设备)执行,例如头端设备108、服务器、其组合和/或任何其他设备(例如,硬件卸载芯片和/或任何其他设备)。方法400的技术可以由包括一个或多个处理器的系统执行。

在402,系统可以通过网络与源设备创建加密隧道,以通过网络传送加密数据。例如,头端设备108可以通过网络110与客户端设备106建立加密隧道116,以通过网络110传送加密分组或数据。例如,客户端设备106和头端设备108可以根据加密隧道协议执行握手。

在404,系统可以通过网络在加密隧道中接收从源设备发送的分组。例如,系统可以接收从客户端设备106通过网络110在加密隧道116中发送的分组118。

在406,系统可以确定分组的第一部分是使用与加密隧道相关联的第一加密协议进行加密的。例如,头端设备108可以从分组118的覆盖报头识别指示分组118的第一部分122的大小的指示符。

在408,系统可以根据第一加密协议解密分组的第一部分。例如,头端设备108可以使用诸如TLS、DTLS、SSL等加密隧道116的加密协议来解密第二部分122。

在410,系统可以确定分组的第二部分是使用第二加密协议进行加密的,并且在412,系统可以根据第二加密协议对分组的第二部分进行解密。在一些情况下,头端设备108可以解密第一部分(例如,IPsec、Wireguard等),但是不同的设备(例如,运行应用程序114的服务器112)可以解密分组118的第二部分(例如,第一部分120由诸如TLS、DTLS、SSL等的初始加密协议进行加密)。

如上所述,分组118的被加密的两个或更多个部分可以不由同一设备或不在同一设备处解密,而是可以由设备系统中的各种设备解密。即,方法400的步骤可以,也可以不由一个设备执行,但可以,也可以不由系统中的不同设备执行。在一些情况下,头端设备108可以执行方法400的所有步骤,而在其他示例中,至少部分步骤可以由在服务器112上运行的应用程序114执行(例如,步骤410和/或412可以由服务器112和/或另一设备执行)。

图5显示了能够执行程序组件以实施上述功能的设备的示例计算机架构。计算机架构在图5中显示,图5示出了任何类型的计算机500,例如常规服务器计算机、工作站、台式计算机、膝上型计算机、平板计算机、网络设备、电子阅读器、智能手机或其他计算设备,并且可以用于执行本文呈现的任何软件组件。在一些示例中,计算机可以对应于客户端设备106、头端设备108和/或本文所述的任何其他设备,并且可以包括个人设备(例如,智能手机、平板设备、可穿戴设备、膝上型设备等)、网络设备(例如,服务器、交换机、路由器、中枢、网桥、网关、调制解调器、中继器、接入点)、和/或可以运行任何类型的软件和/或虚拟化技术的任何其他类型的计算设备。

计算机500包括基板502(或“母板”),其为印刷电路板,多个组件或设备可以通过系统总线或其他电通信路径连接到上述印刷电路板。在一个说明性配置中,一个或多个中央处理单元(“CPU”)504结合芯片组506操作。CPU 504可以是标准可编程处理器,这些处理器执行计算机500的操作所需的算术和逻辑操作。

CPU 504通过对区分和改变这些状态的开关元件的操纵,从一个离散的物理状态过渡到下一个物理状态来执行操作。开关元件通常包括:维持两个二进制状态之一的电子电路(例如,触发器)、以及基于一个或多个其他开关元件的状态的逻辑组合来提供输出状态的电子电路(例如,逻辑门)。这些基本开关元件可以被组合以创建更复杂的逻辑电路,包括寄存器、加减器、算术逻辑单元、浮点单元等。

芯片组506提供CPU 504与基板502上的其余组件和设备之间的接口。芯片组506可以提供到RAM 508的接口,RAM 508用作计算机500中的主存储器。芯片组506还可以提供到诸如只读存储器(“ROM”)510或非易失性RAM(“NVRAM”)之类的计算机可读存储介质的接口,这些介质用于存储有助于启动计算机500并在各种组件和设备之间传输信息的基本例程。根据本文所述的配置,ROM 510或NVRAM还可以存储计算机500的操作所需的其他软件组件。

计算机500可以通过网络(例如,网络110)使用到远程计算设备和计算机系统的逻辑连接来在联网环境中操作。芯片组506可以包括用于通过NIC 512(例如,千兆以太网适配器)提供网络连接的功能。NIC 512能够通过网络110将计算机500连接到其他计算设备。应当理解,在计算机500中可以存在多个NIC 512,将计算机连接到其他类型的网络和远程计算机系统。

计算机500可以连接到为计算机提供非易失性存储的存储设备518。存储设备518可以存储操作系统520、程序522和数据,本文已经对其进行了更详细的描述。存储设备518可以通过连接到芯片组506的存储控制器514连接到计算机500。存储设备518可以包括一个或多个物理存储单元。存储控制器514可以通过以下接口与物理存储单元相对接:串行连接SCSI(“SAS”)接口、串行高级技术连接(“SATA”)接口、光纤信道(“FC”)接口或用于在计算机和物理存储单元之间进行物理连接和传送数据的其他类型的接口。

计算机500可以通过转换物理存储单元的物理状态以反映所存储的信息来将数据存储在存储设备518上。在本说明书的不同实施例中,物理状态的特定转换可以取决于各种因素。这些因素的示例可以包括但不限于用于实现物理存储单元的技术、存储设备518是否被表征为主存储装置或辅助存储装置等。

例如,计算机500可以通过存储控制器514发出指令来将信息存储到存储设备518,以改变磁盘驱动单元内的特定位置的磁特性、光存储单元中的特定位置的反射或折射特性、或固态存储单元中的特定电容器、晶体管或其他分立组件的电特性。在不脱离本说明书的范围和精神的情况下,物理介质的其他变换也是可能的,提供前述示例仅是为了便于说明。计算机500还可以通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来从存储设备518读取信息。

除了上述大容量存储设备518之外,计算机500还可以访问其他计算机可读存储介质以存储和检索信息,例如程序模块、数据结构或其他数据。本领域技术人员应当理解,计算机可读存储介质是提供数据的非暂时性存储并且可以由计算机500访问的任何可用介质。在一些示例中,由客户端设备106和/或头端设备108和/或其中包括的任何组件执行的操作可以由类似于计算机500的一个或多个设备所支持。换句话说,由客户端设备106和/或头端设备108和/或其中包括的任何组件执行的一些或全部操作可以由一个或多个计算机设备500来执行。

作为示例而非限制,计算机可读存储介质可以包括以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦除可编程ROM(“EPROM”)、电可擦除可编程ROM(“EEPROM”)、闪存或其他固态存储器技术、压缩盘ROM(“CD-ROM”)、数字多功能盘(“DVD”)、高清晰度DVD(“HD-DVD”)、BLU-RAY、或其他光存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或可以用于以非暂时性方式存储所需信息的任何其他介质。

如上所简述的,存储设备518可以存储用于控制计算机500的操作的操作系统520。根据一个实施例,操作系统包括LINUX操作系统。根据另一实施例,操作系统包括来自华盛顿州雷蒙德市的MICROSOFT公司的

在一个实施例中,存储设备518或其他计算机可读存储介质被编码有计算机可执行指令,这些指令在被加载到计算机500中时,将计算机从通用计算系统转换为能够实现本文所述实施例的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 504如何在各状态之间转换来转换计算机500。根据一个实施例,计算机500可访问存储计算机可执行指令的计算机可读存储介质,这些计算机可执行指令在由计算机500执行时,执行以上关于图1-4描述的各种过程。计算机500还可以包括其上存储有指令的计算机可读存储介质,这些指令用于执行本文所述的任何其他计算机实现的操作。

计算机500还可以包括一个或多个输入/输出控制器516,用于接收和处理来自多个输入设备的输入,这些输入设备例如键盘、鼠标、触摸板、触摸屏、电子指示笔、或其他类型的输入设备。类似地,输入/输出控制器516可以向显示器提供输出,显示器例如计算机监视器、平板显示器、数字投影仪、打印机、或其他类型的输出设备。应当理解,计算机500可以不包括图8所示的所有组件,可以包括图5中未明确示出的其他组件,或者可以利用与图5所示完全不同的架构。

如本文所述,计算机500可以包括客户端设备106、头端设备108和/或任何其他设备。计算机500可以包括被配置为执行一个或多个存储的指令的一个或多个硬件处理器504(处理器)。(一个或多个)处理器504可以包括一个或多个核心。此外,计算机500可以包括一个或多个网络接口,这些网络接口被配置为提供计算机500和其他设备之间的通信,例如本文描述的由客户端设备106或头端设备108执行的通信。网络接口可以包括被配置为耦合到个人局域网(PAN)、有线和无线局域网(LAN)、有线和无线广域网(WAN)等的设备。例如,网络接口可以包括与以太网、Wi-Fi

程序522可以包括任何类型的程序或进程,以执行本公开中所述的技术,以用于选择性地加密分组的未被加密的部分以通过加密隧道进行传输,其中,分组至少部分地被加密。例如,程序522可以使计算机500执行用于通信的技术,用于确定分组的已被加密的部分,识别分组的未被加密的部分,以及在通过加密隧道传输之前选择性地加密分组的未被加密的部分。以这种方式,将使用加密隧道的加密协议来加密分组的未被加密的潜在私用或敏感数据(例如,分组报头中的信息),但分组的已被加密的数据(例如,有效载荷)可以避免不必要的双重加密。通过减少(或消除)双重加密的分组的数据量,可以减少计算设备对加密隧道的加密流量所花费的时间,并减少所消耗的计算资源。此外,程序522可以包括使计算机500执行特定技术的指令,该特定技术用于通过加密隧道接收分组并使用不同的加密协议对分组的部分进行解密。

综上所述,减少对使用加密隧道传输的分组进行双重加密的技术和机制。本文所述的技术包括确定分组的已被加密的部分,识别分组的未被加密的部分,以及在通过加密隧道传输之前选择性地加密分组的未被加密的部分。以这种方式,将使用加密隧道的加密协议来加密分组的未被加密的潜在私用或敏感数据(例如,分组报头中的信息),而分组的已被加密的数据(例如,有效载荷)可以避免不必要的双重加密。通过减少(或消除)双重加密的分组的数据量,可以减少计算设备对加密隧道的加密流量所花费的时间,并减少所消耗的计算资源。

虽然本发明是参考具体示例来描述的,但是应当理解,本发明的范围不限于这些具体示例。由于对于本领域的技术人员来说,为适应特定的操作要求和环境而改变的其他修改和变化将是显而易见的,因此本发明不被认为限于出于公开的目的而选择的示例,而是覆盖不构成背离本发明的真实精神和范围的所有变化和修改。

尽管本申请描述了具有特定结构特征和/或方法动作的实施例,但是应当理解,权利要求不一定限于所描述的特定特征或动作。相反,特定特征和动作仅是落在本申请的权利要求的范围内的说明性的一些实施例。

技术分类

06120115928182