CN112929359B - 一种代理解密的方法及装置、终端、存储介质 - Google Patents

一种代理解密的方法及装置、终端、存储介质 Download PDF

Info

Publication number
CN112929359B
CN112929359B CN202110139721.0A CN202110139721A CN112929359B CN 112929359 B CN112929359 B CN 112929359B CN 202110139721 A CN202110139721 A CN 202110139721A CN 112929359 B CN112929359 B CN 112929359B
Authority
CN
China
Prior art keywords
socket
target
session
address
decryption
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110139721.0A
Other languages
English (en)
Other versions
CN112929359A (zh
Inventor
张志良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sangfor Technologies Co Ltd
Original Assignee
Sangfor Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sangfor Technologies Co Ltd filed Critical Sangfor Technologies Co Ltd
Priority to CN202110139721.0A priority Critical patent/CN112929359B/zh
Publication of CN112929359A publication Critical patent/CN112929359A/zh
Application granted granted Critical
Publication of CN112929359B publication Critical patent/CN112929359B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • H04L67/025Protocols based on web technology, e.g. hypertext transfer protocol [HTTP] for remote control or remote monitoring of applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
    • H04L69/162Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms

Abstract

本申请实施例公开了一种代理解密的方法及装置、终端、存储介质,其中,该方法包括:接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;在所述Socket会话满足所述解密条件的情况下,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。

Description

一种代理解密的方法及装置、终端、存储介质
技术领域
本申请实施例涉及但不限于电子技术,尤其涉及一种代理解密的方法及装置、终端、存储介质。
背景技术
相关技术中,使用代理自动配置(Proxy auto-config,PAC)脚本进行https代理具有兼容性,通过浏览器自带的PAC可以通过自定义的PAC脚本实现https代理。然而,使用PAC脚本进行https代理存在以下几个问题:1)通过PAC将浏览器产生的会话代理到终端的https proxy的方法不具有强制性。终端用户可以更改代理配置,因此,在一些强制要求用户会话必须被解密的场景缺陷明显。2)使用PAC脚本进行https代理的方法适用于对浏览器的应用场景,而对于一些待解密对象的应用场景有局限性。至于对应的待解密对象是否支持浏览器指定的PAC脚本代理,取决于待解密对象在软件上的支持程度。这就导致PAC脚本的https代理方案主要适用于针对浏览器场景,而不适用于待解密对象场景,导致使用PAC脚本进行https代理解密的方法应用范围受限。
发明内容
有鉴于此,本申请实施例为解决相关技术中存在的至少一个问题而提供一种代理解密的方法及装置、终端、存储介质。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种代理解密的方法,应用于终端,所述方法包括:
接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;
在所述Socket会话满足所述解密条件的情况下,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。
又一方面,本申请实施例提供一种代理解密的装置,所述装置包括:
接收模块,用于接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
劫持模块,用于劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;
调用模块,用于在所述Socket会话满足所述解密条件的情况下,调用所述httpsproxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。
再一方面,本申请实施例提供一种终端,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
还一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
在本申请实施例中,接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括目标IP地址。这样,可以通过接收安全网关发送的配置信息,得到Socket会话的预设解密条件,解决了相关技术中通过PAC将浏览器产生的会话代理到终端的https proxy的方法不具有强制性的问题,能够适用于一些强制要求用户会话必须被解密的场景,能够防止用户在终端上主动修改配置而导致的代理失效。进一步地,通过劫持待解密对象创建的Socket会话,可以解决使用PAC脚本进行https代理的方法仅适用于对浏览器的应用场景的问题,能够适用于对一些待解密对象进行https代理的应用场景。
本申请实施例中提供的方法应用于终端,与相关技术中在安全网关设备上做https proxy解密的方案相比,能够将满足预设解密条件的Socket会话在终端上进行httpsproxy代理,降低了对安全网关的性能消耗。
附图说明
图1A为本申请实施例代理解密方法的实现流程示意图;
图1B为本申请实施例代理解密方法的实现流程示意图;
图2A为本申请实施例代理解密方法的实现流程示意图;
图2B为本申请实施例回调函数的结构示意图;
图3为本申请实施例代理解密方法的实现流程示意图;
图4A为本申请实施例代理解密方法的应用场景示意图;
图4B为本申请实施例代理解密方法的应用场景示意图;
图4C为本申请实施例代理解密方法的实现流程示意图;
图4D为本申请实施例代理解密方法的实现流程示意图;
图4E为本申请实施例代理解密方法的实现流程示意图;
图4F为本申请实施例代理解密方法的实现流程示意图;
图5A为本申请实施例代理解密方法的应用场景示意图;
图5B为本申请实施例代理解密方法的应用场景示意图;
图6为本申请实施例代理解密的装置的组成结构示意图;
图7为本申请实施例中终端的一种硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
下面结合附图和实施例对本申请的技术方案进一步详细阐述。
本申请实施例提供一种代理解密的方法,图1A为本申请实施例代理解密方法的实现流程示意图,如图1A所示,该方法包括:
步骤S101,接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
这里,在所述安全网关(Access Controller,AC)上,可以在用户界面配置待解密对象,其中,所述待解密对象可以为应用程序,或者,可以为要解密的域名。这里,在所述安全网关(Access Controller,AC)上,也可以在用户界面配置解密条件,其中,所述解密条件可以包括:需要解密的目标服务器IP地址。终端在获取到对应SSL解密条件后,即开始在终端上进行https proxy代理(https代理)。
在一些实施例中,所述预设的解密条件可以在所述安全网关上进行设置,并在设置后,通过所述终端的客户端接收所述安全网关发送的所述解密条件,其中,所述客户端可以为用于同步安全网关信息的应用程序,所述解密条件的类型可以为以下之一:对一个所述终端设置一种解密条件和对一个所述终端设置至少两种解密条件。
步骤S102,劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括目标IP地址;
这里,所述待解密对象可以包括浏览器,也可以包括客户端。例如,网盘客户端,或者,聊天软件客户端等。
这里,所述Socket会话可以为基于传输控制协议(Transmission ControlProtocol,TCP)的Socket通信,也可以为基于用户数据报协议(User Datagram Protocol,UDP)的Socket通信,例如,基于快速UDP互联网连接(Quick UDP Internet Connections,QUIC)通信协议的Socket通信。
在一些实施例中,在劫持待解密对象创建的Socket会话之前,需要创建Socket会话,并在创建过程中指定目标IP地址。例如,指定目标IP地址为172.16.2.54,创建Socket会话可以通过Socket socket=new Socket("172.16.2.54",12345)实现,其中,Socket为数据类型,Socket为实例化所述类型的对象。
步骤S103,在所述Socket会话满足所述解密条件的情况下,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。
这里,建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接即实现HTTP下加入的SSL层,通过建立SSL连接建立以安全为目标的HTTP通道(Hyper TextTransfer Protocol over Secure Socket Layer,HTTPS),用以保证客户端和服务器之间传输数据的安全性。
这里,所述Socket会话的密钥在https proxy与服务器的SSL连接过程中,由httpsproxy与服务器双方协商确定。
在一些实施例中,所述Socket会话还包括:目标端口,所方法还包括:根据所述Socket会话中的目标IP地址和目标端口,判断所述Socket会话是否满足预设的解密条件;
这里,预设的解密条件可以为:(IP||进程||域名)&&端口在解密范围内,可以通过判断所述Socket会话中是否满足(IP||进程||域名)&&端口在解密范围内,判断所述Socket会话是否满足预设的解密条件。
在一些实施例中,判断所述Socket会话是否满足预设的解密条件也可以通过判断所述Socket会话是否由HTTPs代理发出实现。这里,所述Socket会话由HTTPs代理(HTTPsproxy代理,https proxy)发出时,由HTTPs proxy代理程序发出用于Socket会话的数据包,在所述Socket会话由HTTPs代理发出的情况下,可以判断所述Socket会话不满足预设的解密条件,将对所述Socket会话放通,让所述Socket会话最终能通过网卡发出。
在一些实施例中,所述步骤S103,包括:
步骤S1031,在所述Socket会话满足所述解密条件的情况下,将所述目标IP地址修改为发起所述Socket会话的终端对应的IP地址,并将所述目标端口修改为所述终端上https proxy监听的端口;
举例说明,将Socket的目标IP地址修改为本机回环地址127.0.0.1,目标端口修改为https proxy本机监听的端口P2。修改为本机回环地址127.0.0.1后,该Socket的目标IP地址和目标端口被指向了本机https proxy。所以,后续该Socket发出的数据包都将发送给https proxy。
步骤S1032,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关。
在本申请实施例中,接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括目标IP地址。这样,可以通过接收安全网关发送的配置信息,得到Socket会话的预设解密条件,解决了相关技术中通过PAC将浏览器产生的会话代理到终端的https proxy的方法不具有强制性的问题,能够适用于一些强制要求用户会话必须被解密的场景,能够防止用户在终端上主动修改配置而导致的代理失效。进一步地,通过劫持待解密对象创建的Socket会话,可以解决使用PAC脚本进行https代理的方法仅适用于对浏览器的应用场景的问题,能够适用于对一些待解密对象进行https代理的应用场景。
本申请实施例中提供的方法应用于终端,与相关技术中在安全网关设备上做https proxy解密的方案相比,能够将满足预设解密条件的Socket会话在终端上进行httpsproxy代理,降低了对安全网关的性能消耗。
本申请实施例提供一种代理解密的方法,图1B为本申请实施例代理解密方法的实现流程示意图,如图1B所示,该方法包括:
步骤S110,劫持待解密对象创建的Socket会话;所述Socket会话包括至少以下之一:目标IP地址、目标端口;
步骤S120,根据所述Socket会话中的目标IP地址和目标端口,判断所述Socket会话是否满足预设的解密条件;所述预设的解密条件通过同步安全网关上的配置信息获取;
步骤S130,在所述Socket会话不满足所述解密条件的情况下,建立所述待解密对象与所述目标IP地址对应的服务器的通信连接,以实现与所述服务器的无代理通信。
在一些实施例中,所述Socket会话不满足所述解密条件的情况可以为以下之一:所述会话信息的进程名称、目标IP地址、目标端口不属于预设的解密条件、目标IP地址为本机回环地址和所述Socket会话由HTTPs proxy代理发出。
在实施过程中,在所述Socket会话不满足所述解密条件的情况下,不需要进行终端代理,可以通过待解密对象与所服务器进行直接通信。
在本申请实施例中,在所述Socket会话不满足所述解密条件的情况下,建立所述待解密对象与所述目标IP地址对应的服务器的通信连接,以实现与所述服务器的无代理通信。这样,可以避免对不满足解密条件的Socket会话进行代理,提高了代理通信的效率。
本申请实施例提供一种代理解密的方法,图2A为本申请实施例代理解密方法的实现流程示意图,如图2A所示,该方法包括:
步骤S210,创建所述Socket会话的Socket过滤器;
这里,所述Socket过滤器(Socket Filter)是终端提供的一种与Socket相关的内核扩展过滤机制,采用所述过滤机制开发的内核扩展可以过滤Socket。例如,可以过滤Socket上的出站和入站流量。这里,所述内核扩展是一种加载到终端操作系统中的应用软件,可以用于提供功能和硬件支持。
Socket Filter机制提供了对IPv4、IPv6的Socket进行hook(劫持)的机制,可以对不同的协议进行hook,包括具有对TCP、UDP、ICMP进行hook的能力。以基于TCP的https hook为例,需要注册对TCP协议特定阶段的回调。Socket Filter规定对于一个Socket可以按照图2B中定义的结构来定义对于socket不同阶段、不同事件的回调。
如图2B所示,其中,sf_attach_func在创建socket的时候被回调,此回调中允许用户分配用于特定用途的内存空间;sf_detach_func分离的时候调用,在这里可以释放sf_attach_func调用中分配的内存空间;sf_connect_out_func在socket与外网建立连接时被回调,比如,connect系统调用会触发该回调;sf_notify_func处理socket从创建到销毁过程中的各种事件,在本申请实施例中处理socket连接建立成功的事件sock_evt_connected。
步骤S220,劫持待解密对象创建的Socket会话;所述Socket会话包括至少以下之一:目标IP地址、目标端口;
在一些实施例中,劫持待解密对象创建的Socket会话可以通过Socket Filter实现。
步骤S230,根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件;
在实施过程中,可以调用所述Socket过滤器中的回调函数,判断所述Socket会话是否满足所述预设的解密条件。
步骤S240,在所述Socket会话满足所述解密条件的情况下,将所述目标IP地址修改为发起所述Socket会话的终端对应的IP地址,并将所述目标端口修改为所述终端上https proxy监听的端口;
步骤S250,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。
在一些实施例中,所述步骤S230,根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件,包括:
步骤S231,根据所述Socket会话的源端口查询进程名称;
在一些实施例中,可以通过所述源端口,查询所述源端口发出的Socket会话的进程名称,确定与所述Socket会话一一对应的进程名称。
步骤S232,调用所述Socket过滤器中的连接回调函数;
这里,所述连接回调函数用于在监听到浏览器Socket调用connect函数建立连接时,进入连接回调函数过程。
在一些实施例中,所述连接回调函数可以为sf_connect_out_func,用于在Socket向外网产生连接时被回调,比如,connect时会触发该回调函数。
步骤S233,根据所述连接回调函数,确定所述进程名称、所述目标IP地址和所述目标端口是否满足所述预设的解密条件。
在一些实施例中,所述解密条件为预设的进程名称范围、预设的IP地址范围和预设的端口范围,所述步骤S233,根据所述连接回调函数,确定所述进程名称、所述目标IP地址和所述目标端口是否满足所述预设的解密条件,包括:
步骤S2331,根据所述连接回调函数,判断预先设定的条件是否满足,且所述目标端口是否位于所述预设的端口范围内,其中,所述预先设定的条件至少为以下之一:所述进程名称是否位于所述预设的进程名称范围内、所述目标IP地址是否位于所述预设的IP地址范围内;
在一些实施例中,还可以根据所述连接回调函数,判断所述Scoket会话的进程编号(Pid)是否位于所述预设的进程编号范围内。
步骤S2332,在满足所述预先设定的条件,且所述目标端口位于所述预设的端口范围内的情况下,确定所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件。
举例说明,目标IP地址为220.181.111.148、目标端口=80,预设的目标端口范围为(0,100)、和预设的IP地址范围为(220.181.111.147,220.181.112.143)、判断出所述目标IP地址为220.181.111.148,属于预设的IP地址范围(220.181.111.147,220.181.112.143)范围内且所述目标端口为80,属于预设的目标端口范围(0,100)内,此时,确定所述目标端口与所述目标IP地址满足条件。
在一些实施例中,所述方法还包括:在所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件的情况下,将所述目标IP地址和所述目标端口存储在内存空间中。
这里,所述内存空间为:监听到待解密对象Socket创建时调用回调sf_attach_func,该回调函数中分配一个内存空间S,用于保存Socket目标服务器的IP地址和目标端口。这样,将所述目标IP地址和所述目标端口存储在内存空间中,能够避免在修改了Socket中的目标IP地址和所述目标端口之后,无法找到原始的目标IP地址和目标端口。
在本申请实施例中,根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件。这样,能够利用基于内核扩展开发的Socket过滤器的稳定性和解密条件的灵活性,通过更改预设的解密条件,过滤掉不满足解密条件的Socket会话,使所述代理解密方法适用于不同的应用场景。
本申请实施例提供一种代理解密的方法,图3为本申请实施例代理解密方法的实现流程示意图,如图3所示,该方法包括:
步骤S301,创建所述Socket会话的Socket过滤器;
步骤S302,劫持待解密对象创建的Socket会话;所述Socket会话包括至少以下之一:目标IP地址、目标端口;
步骤S303,根据所述Socket会话的源端口查询进程名称;
步骤S304,调用所述Socket过滤器中的连接回调函数;
步骤S305,根据所述连接回调函数,判断所述进程名称是否位于预设的进程名称范围内,所述目标IP地址是否位于预设的IP地址范围内,且所述目标端口是否位于预设的端口范围内;
步骤S306,在所述进程名称位于所述预设的进程名称范围内,所述目标IP地址位于所述预设的IP地址范围内,且所述目标端口位于所述预设的端口范围内的情况下,确定所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件;
步骤S307,在所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件的情况下,将所述目标IP地址和所述目标端口存储在内存空间中;
步骤S308,将所述目标IP地址修改为发起所述Socket会话的终端对应的IP地址,并将所述目标端口修改为所述终端上https proxy监听的端口;
在一些实施例中,在步骤S308之后,所述待解密对象创建的Socket会话与httpsproxy完成TCP握手,建立连接,产生连接成功事件。
步骤S309,调用所述https proxy建立所述待解密对象与所述https proxy之间的第一SSL连接;
这里,可以通过SSL握手建立待解密对象与https proxy之间的第一SSL连接。在一些实施例中,可以将第一SSL连接标记为C1。
由于对Socket中的目标IP地址和目标端口进行了修改,并修改为了本机回环地址127.0.0.1,https proxy监听的端口P2,所以SSL握手是待解密对象与https proxy建立的。
步骤S310,解析所述第一SSL连接的握手信号,得到所述服务器的域名;
举例说明,在SSL握手过程中,https proxy可以从待解密对象发送的clienthello数据包中取出其中的服务器名称(server name)的扩展字段,得到连接的服务器域名。
步骤S311,在所述服务器域名与所述解密条件中的域名相同的情况下,对所述Socket对应的会话添加所述会话标记;
举例说明,https proxy可以从client hello数据包中取出其中的server name扩展字段,即S连接的服务器域名,拿此域名和管理员下发的https解密条件中的域名进行比较,如果满足https解密条件,则对该会话添加会话标记K。
步骤S312,根据所述内存空间中的目标IP地址和目标端口,调用所述https proxy建立所述https proxy与所述目标IP地址对应的服务器之间的第二SSL连接;
在一些实施例中,将所述内存空间中的目标IP地址和目标端口发送给所述httpsproxy,包括;步骤S1,将所述内存空间中的目标IP地址和目标端口进行打包,得到通信数据包;步骤S2,将所述通信数据包注入Socket会话,以通过所述Socket会话将所述数据包发送给所述https proxy。
在一些实施例中,监听到所述Socket会话的连接成功事件之后,进行通信数据包的传输。
在一些实施例中,https proxy收到所述数据包之后,解析所述https proxy中的通信数据包,得到所述目标IP地址和目标端口;
在实施过程中,https proxy收到该数据包之后,从数据包中解析出目标IP地址A和目标端口P1并保存,拥有了待解密对象原始要连接的目标服务器IP地址和目标端口。
步骤S313,在检测到所述第二SSL连接中的会话具有会话标记的情况下,将所述会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密。
在一些实施例中,所述安全网关可以以串联的方式部署在网络中。如图5A所示,所述安全网关获取密钥K后,解密对应会话并进行安全检查和审计。
在一些实施例中,所述安全网关可以以旁路的方式部署在网络上。如图5B所示,所述安全网关获取密钥K后,解密对应镜像会话并做安全检查和审计。
在本申请实施例中,在所述服务器域名与所述解密条件中的域名相同的情况下,对所述Socket对应的会话添加所述会话标记;在检测到所述第二SSL连接中的会话具有会话标记的情况下,将所述会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密。这样,通过对满足解密条件的会话添加会话标记,在检测到具有会话标记的情况下,发送密钥给安全网关。如此,能够保证会话中数据传输的安全性,从而保证通信安全。
以终端为Mac操作系统(Operation System,OS)终端为例,相关技术中,Mac OS终端的https代理通过设置PAC,并在PAC脚本中设置代理域名和目标IP地址实现。
相关技术中,使用PAC脚本进行https代理具有兼容性,通过浏览器自带的PAC可以通过自定义的PAC脚本实现https代理。相关技术中存在以下几个问题:1)通过PAC将浏览器产生的会话代理到终端的https proxy的方法不具有强制性。终端用户可以更改代理配置,因此,在一些强制要求用户会话必须被解密的场景缺陷明显。2)使用PAC脚本进行https代理的方法适用于对浏览器的应用场景,而对于一些待解密对象的应用场景有局限性。至于对应的待解密对象是否支持浏览器指定的PAC脚本代理,取决于待解密对象在软件上的支持程度。这就导致PAC脚本的https代理方案主要适用于针对浏览器场景,而不适用于待解密对象场景,导致使用PAC脚本进行https代理解密的方法应用范围受限。
为解决上述问题,本申请实施例提供一种代理解密的方法,该方法能够解决终端代理解密的问题,即,在Mac OS终端上进行https proxy代理解密的问题。https proxy代理是实现对会话进行解密、审计和管控的方法,https proxy代理之后可以获得解密后的会话,从而可以对解密后的会话进行审计和管控。因为https proxy代理需要跟终端以及终端用户欲访问的服务器两边进行SSL通信,所以将https proxy代理设置在安全网关中,对安全网关的性能要求高,由此可见,将https proxy代理放在Mac OS终端上,可以减轻安全网关进行https proxy代理产生的安全网关性能消耗问题。即,采用在Mac OS端上进行httpsproxy代理方式取代相关技术中在安全网关上进行https proxy代理,可以解决相关技术中,在安全网关上进行代理产生的安全网关性能消耗问题。
本申请实施例提供一种代理解密的方法,该方法采用Mac OS提供的Socket过滤器(filter)内核扩展机制,通过劫持(hook)Socket创建、Socket connect调用、以及监听Socket上的sock_evt_connected事件来实现将一个Socket会话的目标IP地址和目标端口修改为到终端(本机)的https proxy代理,代理过程中根据安全网关的解密条件检查当前Socket是否属于https proxy代理的范围,比如Socket对应的进程名称、Socket访问的服务器域名、Socket访问的目标IP地址、Socket访问的目标端口是否在对应解密条件范围内,如果在所述解密条件的范围内,则对该会话进行https proxy代理,否则直接对该会话进行无https proxy代理。
Socket Filter:Socket Filter是Mac OS终端提供的一种和特定Socket相关的内核扩展过滤机制,采用该机制开发的Mac OS终端的内核扩展可以过滤Socket。例如,可以过滤Socket上的出站和入站流量。
Socket Filter机制提供了对IPv4、IPv6的Socket进行hook(劫持)的机制,可以对不同的协议进行hook,包括具有对TCP、UDP、ICMP进行hook的能力。以基于TCP的https hook为例,需要注册对TCP协议特定阶段的回调。Socket Filter规定对于一个Socket可以按照图2B中定义的结构来定义对于socket不同阶段、不同事件的回调。
如图2B所示,其中,sf_attach_func在创建socket的时候被回调,此回调中允许用户分配用于特定用途的内存空间;sf_detach_func分离的时候调用,在这里可以释放
sf_attach_func调用中分配的内存空间;sf_connect_out_func在socket与外网建立连接时被回调,比如,connect系统调用会触发该回调;sf_notify_func处理socket从创建到销毁过程中的各种事件,在本申请实施例中处理socket连接建立成功的事件sock_evt_connected。
图4A和图4B为本申请实施例代理解密方法的应用场景示意图,如图4A和图4B所示,在安全网关上,可以开启SSL解密条件(解密策略41),选择准入客户端代理解密方案(终端代理解密)42,然后界面43中选择要解密的域名、应用,Mac OS终端在获取到对应SSL解密策略后,即开始在Mac OS终端上进行https proxy代理(https代理)。此处的配置也可以根据实际需要,填写需要解密的目标服务器IP和目标服务器端口。
本申请实施例提供了一种代理解密的方法,以TCP 443端口、浏览器进程产生的会话进行HTTPs代理为例,如图4C所示,步骤S411,监听到浏览器tcp socket创建时回调sf_attach_func;步骤S412,在当前Socket上分配一个内存空间S,用于保存Socket目标服务器的IP地址和目标端口。
如图4D所示,当监听到浏览器tcp socket调用connect函数建立连接时,进入sf_connect_out_func回调过程。
步骤S421,判断Socket会话的目标服务器的IP地址是否为本机回环地址;
在一些实施例中,在所述IP地址非本机回环地址的情况下,执行步骤S422。
步骤S422,判断所述Socket会话是否由HTTPs代理发出;
这里,所述Socket会话由HTTPs代理(HTTPs proxy代理,https proxy)发出时,由HTTPs proxy代理程序发出用于Socket会话的数据包。
在一些实施例中,在所述Socket会话由HTTPs代理发出的情况下,对该Socket不做处理;在所述Socket会话非HTTPs代理发出的情况下,执行步骤S423。
在一些实施例中,由于https proxy发出的连接也会被Socket filter机制控制,为防止对会话的判断形成环路,需要在此处对https proxy产生的连接放通,使得由HTTPs代理发出的所述Socket会话能通过网卡发出。
步骤S423,判断所述socket的会话信息是否属于预设的代理会话范围;
在一些实施例中,根据socket的会话信息,判断所述socket是否属于预设的代理会话范围可以通过检查所述会话信息的进程名称、目标IP地址、目标端口是否属于预设的https proxy解密范围(预设的解密条件)来实现。在所述进程名称和目标端口属于预设的https proxy解密范围的情况下,或者,在所述目标IP地址和目标端口属于预设的httpsproxy解密范围的情况下,执行步骤S424。
步骤S424,将socket会话上的目标IP地址和目标端口保存到socket分配的内存空间S上;
步骤S425,将socket的目标IP地址修改为本机回环地址127.0.0.1,目标端口修改为https proxy本机监听的端口P2。
在一些实施例中,该socket的目标IP地址和目标端口被指向了本机https proxy。所以,后续该socket发出的数据包都将发送给https proxy。
本申请实施例提供了一种代理解密的方法,如图4E所示,在Socket对应的连接调用connect成功的情况下,产生sock_evt_connected事件,连接事件产生时,待解密对象还没有在Socket上发送任何数据。
步骤S431,判断事件类型是否为sock_evt_connected事件;
在一些实施例中,事件类型非sock_evt_connected事件,结束回调函数,这里,所述回调函数用于处理socket从创建到销毁过程中的各种事件。
在一些实施例中,事件类型为sock_evt_connected事件,执行步骤S432。
步骤S432,将socket内存S上保存的目标IP地址和目标端口封装为数据包,通过回调函数将数据包注入socket并发送给HTTPs代理。
在一些实施例中,在发送给HTTPs代理之后,满足终端代理解密的解密条件的socket被全部重定向至mac上的本机代理程序https proxy。并且,通过回调将该socket原始的目标IP地址和目标端口发送给了https proxy,由此,https proxy拿到socket原始的目标IP地址和目标端口之后,可以发起跟该目标IP地址和目标端口的https连接,从而实现https proxy代理。
在一些实施例中,sf_detach_func在socket与socket filter分离的时候调用,比如socket close系统调用时产生回调,在该回调中释放sf_attach_func当中分配的内存S。
以一个https会话被https proxy代理的过程为例,如图4F所示,本申请实施例提供了一种代理解密的方法,所述方法包括:
步骤S400,创建socket会话;所述socket会话中至少包括以下之一:目标IP地址、目标端口;
步骤S401,创建所述Socket的Socket filter(Socket过滤器)。
这里,所述Socket filter位于socket层和网络层之间,有利于实现对特定httpssocket会话进行代理。所述Socket filter提供了对ipv4、ipv6 socket进行hook的机制,可以对不同的协议进行劫持,包括具有对tcp、udp、icmp进行hook的能力。Socket Filter规定对于一个socket可以按照图定义的结构来定义对于socket不同阶段、不同事件的回调。例如,sf_attach_func在创建socket的时候被回调,此回调中允许用户分配用于特定用途的内存空间;sf_detach_func在socket与socket filter分离的时候调用,在这里可以释放sf_attach_func调用中分配的内存空间;sf_connect_out_func在socket向外网产生连接时被回调,典型的比如connect系统调用会触发该回调;sf_notify_func处理socket从创建到销毁过程中的各种事件,在本申请实施例中处理socket连接建立成功的事件sock_evt_connected。
这里,可以通过socket filter机制的回调函数实现终端代理解密。
步骤S402,在所述socket会话建立连接的情况下,调用所述Socket过滤器中的连接回调函数;
这里,所述连接回调函数用于:获取Socket对应的进程名称、目标IP地址、目标端口信息;判断所述进程名称、目标IP地址、目标端口信息判断是否满足解密条件;在所述进程名称、目标IP地址、目标端口信息满足所述解密条件的情况下,进行终端代理解密。这里,根据所述Socket会话的源端口查询进程名称。
这里,可以将安全网关上配置的所述解密条件发送给终端。所述安全网关上配置了对不同用户的不同解密条件,例如,用户1;Mac终端管控,又例如,配置了对浏览器和网盘客户端的tcp 443端口进行https的解密条件。
在一些实施例中,所述在所述进程名称、目标IP地址、目标端口信息满足
所述解密条件的情况下,进行终端代理解密,包括:将所述目标IP地址、目标端口存储在内存空间中;将Socket中的目标IP地址修改为127.0.0.1,并将Socket的目标端口修改为https proxy监听的端口P2。
在一些实施例中,根据所述连接回调函数判断所述进程名称、目标IP地址、目标端口是否满足解密条件。
在一些实施例中,在所述进程名称、目标IP地址、目标端口信息满足所述解密条件的情况下,将所述目标IP地址、目标端口存储在内存空间中。
在一些实施例中,将Socket中的目标IP地址修改为127.0.0.1,并将Socket中的目标端口修改为https代理监听的端口,以使得Socket和https proxy之间进行通信。
举例说明,将Socket中的目标IP地址修改为127.0.0.1,并将Socket的目标端口修改为https proxy监听的端口P2。
步骤S403,建立所述Socket和https proxy之间的通信连接;
举例说明,可以通过所述Socket和https proxy完成TCP握手建立所述Socket和https proxy之间的通信连接。
步骤S404,将通信数据包注入Socket,以通过所述Socket将所述数据包发送给https proxy,其中,所述通信数据包包括目标IP地址和目标端口;
在一些实施例中,将所述内存空间中的目标IP地址和目标端口进行打包,得到通信数据包。
步骤S405,建立待解密对象与https proxy之间的第一SSL连接;
这里,可以通过SSL握手建立待解密对象与https proxy之间的第一SSL连接。在一些实施例中,可以将第一SSL连接标记为C1。
由于对Socket中的目标IP地址和目标端口进行了修改,并修改为了本机回环地址127.0.0.1,https proxy监听的端口P2,所以SSL握手是待解密对象与https proxy建立的。例如,可以为浏览器或网盘客户端发起的SSL握手。
在一些实施例中,在SSL握手过程中,https proxy可以从待解密对象发送的client hello数据包中取出其中的服务器名称(server name)的扩展字段,得到连接的服务器域名,拿服务器域名和解密条件中的域名进行比较,如果满足解密条件,则对所述Socket会话添加会话标记K。
步骤S406,建立https proxy与目标IP地址对应的服务器之间的第二SSL连接;
举例说明,https proxy解析通信数据包中保存目标IP地址和目标端口,并与和目标IP地址对应的服务器进行SSL握手,建立https proxy与目标IP地址对应的服务器之间的第二SSL连接。这里,可以将第二SSL连接标记为C2。如果该会话有会话标记K,说明该会话满足解密条件,则https proxy将第二SSL连接C2的会话密钥发送给安全网关AC,由安全网关AC使用此密钥对https proxy和目标IP地址A端口P1建立的会话C2进行解密。
在一些实施例中,在第二SSL连接过程中,由https proxy与服务器双方协商确定密钥。
本申请实施例提供一种安全网关进行解密的方法,如图5A所示,所述方法包括:
步骤S501,https proxy获取密钥发送给安全网关;
这里,所述安全网关串联在网络中。
在一些实施例中,https proxy安装在Mac终端上,所述Mac终端上同时安装了相应的内核扩展。https proxy作为代理,分别与Mac上的待解密对象以及位于网络上的服务器分别建立SSL连接。
举例说明,待解密对象在请求搜索引擎资源的场景中,待解密对象和https proxy建立了第一SSL连接C1,https proxy和搜索引擎建立了第二SSL连接C2。
步骤S502,安全网关接收密钥并解密对应的会话。
这里,解密所述会话后可以进行安全检查和审计。
本申请实施例提供一种安全网关进行解密的方法,如图5B所示,所述方法包括:
步骤S510,https proxy获取密钥发送给安全网关;
这里,所述安全网关可以以旁路的方式部署在网络上。
步骤S520,安全网关接收密钥并解密对应的镜像会话。
这里,解密所述会话后可以进行安全检查和审计。
基于前述的实施例,本申请实施例提供一种代理解密的装置,该装置包括所包括的各模块、以及各模块所包括的各子模块,以及各子模块包括的各单元,可以通过终端中的处理器来实现;当然也可通过具体的逻辑电路实现;在实施的过程中,处理器可以为中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)等。
图6为本申请实施例代理解密的装置的组成结构示意图,如图6所示,所述装置600包括接收模块601、劫持模块602和调用模块603,其中:
接收模块601,用于接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
劫持模块602,用于劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;
调用模块603,用于在所述Socket会话满足所述解密条件的情况下,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取。
在一些实施例中,所述装置600还包括:判断模块,用于根据所述Socket会话中的目标IP地址和目标端口,判断所述Socket会话是否满足预设的解密条件。
在一些实施例中,所述调用模块603包括:
更改子模块,用于在所述Socket会话满足所述解密条件的情况下,将所述目标IP地址修改为发起所述Socket会话的终端对应的IP地址,并将所述目标端口修改为所述终端上https proxy监听的端口;
调用模块,用于调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关。
在一些实施例中,所述装置还包括通信模块,其中:通信模块,用于在所述Socket会话不满足所述解密条件的情况下,建立所述待解密对象与所述目标IP地址对应的服务器的通信连接,以实现与所述服务器的无代理通信。
在一些实施例中,所述装置还包括创建模块,其中:创建模块,用于创建所述Socket会话的Socket过滤器;所述判断模块,还用于根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件。
在一些实施例中,所述判断模块包括查询子模块、调用子模块和确定子模块,其中:查询子模块,用于根据所述Socket会话的源端口查询进程名称;调用子模块,用于调用所述Socket过滤器中的连接回调函数;确定子模块,用于根据所述连接回调函数,确定所述进程名称、所述目标IP地址和所述目标端口是否满足所述预设的解密条件。
在一些实施例中,所述解密条件为预设的进程名称范围、预设的IP地址范围和预设的端口范围,所述确定子模块包括判断单元和确定单元,其中:判断单元,用于根据所述连接回调函数,判断预先设定的条件是否满足,且所述目标端口是否位于所述预设的端口范围内,其中,所述预先设定的条件至少为以下之一:所述进程名称是否位于所述预设的进程名称范围内、所述目标IP地址是否位于所述预设的IP地址范围内;确定单元,用于在满足所述预先设定的条件,且所述目标端口位于所述预设的端口范围内的情况下,确定所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件。
在一些实施例中,所述装置还包括存储模块,其中:存储模块,用于在所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件的情况下,将所述目标IP地址和所述目标端口存储在内存空间中。
在一些实施例中,所述调用模块603包括第一通信子模块、第二通信子模块和发送子模块,其中:第一通信子模块,用于调用所述https proxy建立所述待解密对象与所述https proxy之间的第一SSL连接;第二通信子模块,用于根据所述内存空间中的目标IP地址和目标端口,调用所述https proxy建立所述https proxy与所述目标IP地址对应的服务器之间的第二SSL连接;发送子模块,用于在检测到所述第二SSL连接中的会话具有会话标记的情况下,将所述会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密。
在一些实施例中,所述装置还包括解析模块和标记模块,其中:解析模块,用于解析所述第一SSL连接的握手信号,得到所述服务器的域名;标记模块,用于在所述服务器域名与所述解密条件中的域名相同的情况下,对所述Socket对应的会话添加所述会话标记。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的代理解密的方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端(计算机设备、笔记本等其他的电子设备)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种终端,包括存储器和处理器所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。
这里需要指出的是:以上存储介质和终端实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质和终端实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图7为本申请实施例中终端的一种硬件实体示意图,如图7所示,该终端700的硬件实体包括:处理器701、通信接口702和存储器703,其中
处理器701通常控制终端700的总体操作。
通信接口702可以使终端通过网络与其他终端或服务器通信。
存储器703配置为存储由处理器701可执行的指令和应用,还可以缓存待处理器701以及终端700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random Access Memory,RAM)实现。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端和方法,可以通过其它的方式实现。以上所描述的终端实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (12)

1.一种代理解密的方法,其特征在于,应用于终端,所述方法包括:
接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;
在所述Socket会话满足所述解密条件的情况下,调用https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取;所述安全网关用于对解密后的所述Socket会话进行安全检查和审计。
2.根据权利要求1所述的方法,其特征在于,所述Socket会话还包括:目标端口;所方法还包括:
根据所述Socket会话中的目标IP地址和目标端口,判断所述Socket会话是否满足预设的解密条件。
3.根据权利要求1或2所述的方法,其特征在于,所述在所述Socket会话满足所述解密条件的情况下,调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,包括:
在所述Socket会话满足所述解密条件的情况下,将所述目标IP地址修改为发起所述Socket会话的终端对应的IP地址,并将目标端口修改为所述终端上https proxy监听的端口;
调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述Socket会话不满足所述解密条件的情况下,建立所述待解密对象与所述目标IP地址对应的服务器的通信连接,以实现与所述服务器的无代理通信。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
创建所述Socket会话的Socket过滤器;
对应地,所述根据所述Socket会话中的目标IP地址和目标端口,判断所述Socket会话是否满足预设的解密条件,包括:
根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件。
6.根据权利要求5所述的方法,其特征在于,所述根据所述Socket会话中的目的IP地址和目标端口,通过所述Socket过滤器判断所述Socket会话是否满足所述预设的解密条件,包括:
根据所述Socket会话的源端口查询进程名称;
调用所述Socket过滤器中的连接回调函数;
根据所述连接回调函数,确定所述进程名称、所述目标IP地址和所述目标端口是否满足所述预设的解密条件。
7.根据权利要求6所述的方法,其特征在于,所述解密条件为预设的进程名称范围、预设的IP地址范围和预设的端口范围,
所述根据所述连接回调函数,确定所述进程名称、所述目标IP地址和所述目标端口是否满足所述预设的解密条件,包括:
根据所述连接回调函数,判断预先设定的条件是否满足且所述目标端口是否位于所述预设的端口范围内,其中,所述预先设定的条件至少为以下之一:所述进程名称是否位于所述预设的进程名称范围内、所述目标IP地址是否位于所述预设的IP地址范围内;
在满足所述预先设定的条件,且所述目标端口位于所述预设的端口范围内的情况下,确定所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件;
对应地,所述方法还包括:在所述进程名称、所述目标IP地址和所述目标端口满足所述解密条件的情况下,将所述目标IP地址和所述目标端口存储在内存空间中。
8.根据权利要求7所述的方法,其特征在于,所述调用所述https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,包括:
调用所述https proxy建立所述待解密对象与所述https proxy之间的第一SSL连接;
根据所述内存空间中的目标IP地址和目标端口,调用所述https proxy建立所述httpsproxy与所述目标IP地址对应的服务器之间的第二SSL连接;
在检测到所述第二SSL连接中的会话具有会话标记的情况下,将所述会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
解析所述第一SSL连接的握手信号,得到所述服务器的域名;
在所述服务器域名与所述解密条件中的域名相同的情况下,对所述Socket对应的会话添加所述会话标记。
10.一种代理解密的装置,其特征在于,所述装置包括:
接收模块,用于接收安全网关发送的配置信息,所述配置信息至少包括在所述安全网关上的用户界面配置的至少一个待解密对象和预设的解密条件;
劫持模块,用于劫持所述待解密对象创建的Socket会话;所述Socket会话至少包括:目标IP地址;
调用模块,用于在所述Socket会话满足所述解密条件的情况下,调用https proxy建立所述待解密对象与所述目标IP地址对应的服务器之间的SSL连接,并将所述Socket会话的密钥发送给所述安全网关,以通过所述安全网关对所述Socket会话进行解密;其中,所述Socket会话的密钥通过与所述服务器建立SSL连接的过程中获取;所述安全网关用于对解密后的所述Socket会话进行安全检查和审计。
11.一种终端,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至9任一项所述方法中的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至9任一项所述方法中的步骤。
CN202110139721.0A 2021-02-01 2021-02-01 一种代理解密的方法及装置、终端、存储介质 Active CN112929359B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110139721.0A CN112929359B (zh) 2021-02-01 2021-02-01 一种代理解密的方法及装置、终端、存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110139721.0A CN112929359B (zh) 2021-02-01 2021-02-01 一种代理解密的方法及装置、终端、存储介质

Publications (2)

Publication Number Publication Date
CN112929359A CN112929359A (zh) 2021-06-08
CN112929359B true CN112929359B (zh) 2023-05-16

Family

ID=76169313

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110139721.0A Active CN112929359B (zh) 2021-02-01 2021-02-01 一种代理解密的方法及装置、终端、存储介质

Country Status (1)

Country Link
CN (1) CN112929359B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102035904A (zh) * 2010-12-10 2011-04-27 北京中科大洋科技发展股份有限公司 一种将tcp网络通信服务端转换为客户端的方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9961103B2 (en) * 2014-10-28 2018-05-01 International Business Machines Corporation Intercepting, decrypting and inspecting traffic over an encrypted channel
CN105915342A (zh) * 2016-07-01 2016-08-31 广州爱九游信息技术有限公司 一种应用程序通信处理系统、设备、装置及方法
CN106941401B (zh) * 2017-03-23 2021-06-04 深信服科技股份有限公司 加速设备以及基于加速设备获取会话秘钥的方法
CN109818910B (zh) * 2017-11-21 2022-07-01 中移(杭州)信息技术有限公司 一种数据传输方法、装置和介质
CN109413201B (zh) * 2018-11-27 2021-06-29 东软集团股份有限公司 Ssl通信方法、装置及存储介质
CN111224995B (zh) * 2020-01-15 2022-06-14 成都安舟信息技术有限公司 基于内存分析的ssl/tls网络加密通信信息实时解密方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102035904A (zh) * 2010-12-10 2011-04-27 北京中科大洋科技发展股份有限公司 一种将tcp网络通信服务端转换为客户端的方法

Also Published As

Publication number Publication date
CN112929359A (zh) 2021-06-08

Similar Documents

Publication Publication Date Title
EP4213577A1 (en) Address information sending method and apparatus, address information obtaining method and apparatus, device, and medium
JP4575980B2 (ja) コンピュータシステムにおける通信のための方法、システム、及びコンピュータプログラム
EP3837867B1 (en) Network slice-based security in mobile networks
US11689502B2 (en) Securing control and user plane separation in mobile networks
CN110831092B (zh) Pdu会话管理、节点关联和upf发现的方法及设备
EP4011055A1 (en) Methods, apparatuses and computer readable medium for subscriber management with a stateless network architecture in a fifth generation (5g) network
CN112566164B (zh) 一种通信系统及服务质量控制方法
CN115037551B (zh) 连接权限控制方法、装置、电子设备及存储介质
CN114501593B (zh) 网络切片接入方法、装置、系统和存储介质
CN116471586A (zh) 一种数据处理方法、装置以及可读存储介质
JP2008172489A (ja) 端末装置を認証する装置、方法、プログラム、端末装置、および端末装置の通信を中継する装置
CN114629912B (zh) 基于mec的通信传输方法及装置
CN107483593B (zh) 双向透明代理方法及系统
CN112929359B (zh) 一种代理解密的方法及装置、终端、存储介质
US11323868B2 (en) Serverless core network architecture
CN115834684A (zh) 数据处理方法、云桌面系统、设备及存储介质
JP2019109891A (ja) クラスタ化されたアプリケーションの負荷分散のためのロング・ポーリング
CN112383617A (zh) 进行长连接的方法、装置、终端设备以及介质
US20230269575A1 (en) Base station device and method for operating base station device
CN110213249A (zh) 基于请求粒度的证书动态加载方法、装置和服务器
EP3149902B1 (fr) Technique d'obtention d'une politique de routage de requêtes émises par un module logiciel s'exécutant sur un dispositif client
CN118042088A (zh) 基于tcp消息代理的通用摄像头监控方法、设备及介质
CN111181904B (zh) 网络访问方法、装置及介质
CN114978643B (zh) 一种通信方法、网络设备及存储介质
CN117155904A (zh) 一种服务注册方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant