解密方法、终端设备及计算机可读存储介质与流程

文档序号:26792825发布日期:2021-09-28 23:59阅读:68来源:国知局
1.本发明涉及计算机安全领域,尤其涉及一种解密方法、终端设备及计算机可读存储介质。
背景技术
::2.在一些计算机通信场景中,比如在公司中,往往需要对公司中每台终端设备使用网络进行传输的内容进行识别或者审计,以便于监控每台终端设备的上网流量,为此,可以通过一种中间网络设备对每台终端设备的流量进行审计,其实现方式是通过将中间网络设备设置为中间人,对使用安全套接字传输的连接进行中间人代理,在进行中间人代理时,中间网络设备需要处理每台终端设备与其对应的服务器建立单独的通信连接。3.对于采用超文本传输安全协议的通信连接,中间网络设备需要采用加解密技术对终端设备发送的数据进行解密,其非常耗费中间网络设备的计算处理资源,会大大降低中间网络设备的性能。技术实现要素:4.本发明的主要目的在于提供一种解密方法、终端设备及计算机可读存储介质,旨在解决对终端设备发送的数据进行解密,其非常耗费中间网络设备的计算处理资源,会大大降低中间网络设备的性能的技术问题。5.为实现上述目的,本发明提供一种解密方法,所述解密方法应用于终端设备,所述终端设备包括目标应用,所述解密方法包括:6.建立所述目标应用与服务器的第一通信连接,以及所述终端设备与中间网络设备的第二通信连接,其中,所述第一通信连接为中间人代理连接,所述第二通信连接为直接连接;7.获取所述目标应用待发送的目标数据;8.根据对称密钥对所述目标数据进行对称加密,所述对称密钥为根据非对称加密协商得到的对称加密密钥;9.基于所述第一通信连接将对称加密后的所述目标数据发送至所述中间网络设备,以使所述中间网络设备基于所述第一通信连接将所述目标数据转发至所述服务器;10.基于所述第二通信连接将所述对称密钥发送至所述中间网络设备,以使所述中间网络设备根据所述对称密钥解密所述目标数据。11.可选地,所述建立所述目标应用与服务器的第一通信连接的步骤包括:12.与所述目标应用进行安全套接层协议握手操作,以获取所述目标应用的第一握手信息;13.在检测到与所述目标应用进行握手操作成功时,根据所述第一握手信息与所述服务器进行握手操作,以得到所述服务器返回的第二握手信息;14.在检测到与所述服务器进行握手操作成功时,根据所述第二握手信息与所述目标应用进行握手操作,其中,在根据所述第二握手信息与所述目标应用进行握手操作成功时,所述第一通信连接建立完成。15.可选地,所述根据所述第一握手信息与所述服务器进行握手操作,以得到所述服务器返回的第二握手信息的步骤包括:16.根据非对称加密密钥对所述第一握手信息加密;17.向所述服务器发送加密后的所述第一握手信息;18.接收所述服务器根据所述第一握手信息返回的加密后的所述第二握手信息,其中,所述服务器基于预设非对称解密密钥对所述第一握手信息进行解密,并基于所述非对称加密密钥对所述第二握手信息进行加密。19.可选地,所述与所述目标应用进行握手操作,以获取所述目标应用的第一握手信息的步骤之后,还包括:20.根据所述第一握手信息,生成第三握手信息,其中,所述第一握手信息的协议版本高于所述第三握手信息的协议版本;21.将所述第三握手信息作为所述第一握手信息,执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。22.可选地,所述向所述服务器发送加密后的所述第一握手信息的步骤之后,还包括:23.在检测到所述服务器返回的协议版本错误的提示信息时,根据所述第三握手信息,重新生成所述第一握手信息,返回执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。24.可选地,所述与所述目标应用进行握手操作,以获取所述目标应用的第一握手信息的步骤之后,还包括:25.提取所述第一握手信息中的识别信息,所述识别信息包括网络地址以及进程信息;26.检测所述识别信息与预设识别信息是否匹配;27.在检测到所述识别信息与所述预设识别信息不匹配时,执行所述根据非对称加密密钥对所述第一握手信息加密的步骤;28.在检测到所述识别信息与所述预设识别信息匹配时,通过第三通信连接向所述服务器发送所述目标数据,所述第三通信连接为所述目标应用与所述服务器的直接连接。29.可选地,所述基于所述第一通信连接将加密后的所述目标数据发送至所述服务器的步骤包括:30.提取并保存所述目标数据中的原始传输信息,所述原始传输信息包括源网际协议地址、源端口、目的端口、目的网际协议地址以及传输协议;31.将所述目的网际协议地址修改为预设代理地址,将所述目的端口修改为预设代理端口,所述预设代理地址为预设代理程序的网际协议地址,所述预设代理端口为所述预设代理程序的端口,所述预设代理程序为实现所述中间人代理的程序;32.通过所述目的端口、所述目的网际协议地址、所述传输协议、所述预设代理地址以及所述预设代理端口,将加密后的所述目标数据传输至所述中间网络设备。33.可选地,所述基于所述第二通信连接将所述对称密钥发送至所述中间网络设备的步骤之后,还包括:34.获取所述中间网络设备根据所述目标数据返回的重定向数据;35.向所述目标应用发送所述重定向数据,以使所述目标应用根据重定向数据进行重定向。36.可选地,所述获取所述中间网络设备根据所述目标数据返回的重定向数据的步骤之后,还包括:37.确定所述重定向数据的超文本传输协议的版本类型;38.在所述版本类型为第一类型时,执行所述向所述目标应用发送所述重定向数据的步骤;39.在所述版本类型为第二类型时,对所述重定向数据进行封装处理,其中,所述封装处理包括头部编码、生成头部帧以及生成负载帧;40.向所述目标应用发送封装处理后的所述重定向数据,以使所述目标应用根据封装处理后的所述重定向数据进行重定向。41.此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括:42.建立模块,所述建立模块用于建立目标应用与服务器的第一通信连接,以及所述终端设备与中间网络设备的第二通信连接,其中,所述第一通信连接为中间人代理连接,所述第二通信连接为直接连接;43.获取模块,所述获取模块用于获取所述目标应用待发送的目标数据;44.加密模块,所述加密模块用于根据对称密钥对所述目标数据进行对称加密,所述对称密钥为根据非对称加密协商得到的对称加密密钥;45.发送模块,所述发送模块用于基于所述第一通信连接将加密后的所述目标数据发送至所述中间网络设备,以使所述中间网络设备基于所述第一通信连接将所述目标数据转发至所述服务器;以及基于所述第二通信连接将所述对称密钥发送至所述中间网络设备,以使所述中间网络设备根据所述对称密钥解密所述目标数据。46.此外,为实现上述目的,本发明还提供一种终端设备,所述终端设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的解密程序,所述解密程序被所述处理器执行时实现上述任一项所述的解密方法的步骤。47.此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有解密程序,所述解密程序被处理器执行时实现上述任一项所述的解密方法的步骤。48.本发明实施例提出的一种解密方法、终端设备及计算机可读存储介质,通过建立目标应用与服务器的第一通信连接,以及终端设备与中间网络设备的第二通信连接,从而能够将终端设备自身作为代理设备进行中间人代理,并在目标应用与服务器之间建立中间人代理连接,在终端设备与中间网络设备之间建立直接连接,由于中间人代理比较耗费性能,而中间网络设备不需要进行中间人代理连接,因此避免了中间人代理连接的建立过程所导致的性能下降的问题,此外,终端设备获取目标应用待发送的目标数据,根据对称密钥对目标数据进行对称加密,基于第一通信连接将对称加密后的目标数据发送至中间网络设备,并基于第二通信连接将对称密钥发送至中间网络设备,中间网络设备在进行解密时,是根据从终端设备获取到的对称密钥对目标数据进行解密,并且对称密钥由终端设备根据非对称加密协商得到,不需要中间网络设备进行协商,避免该协商过程消耗中间网络设备的性能,此外本发明从终端设备侧实现了中间人代理,可以由终端设备实现非对称加解密,从而在实现中间人代理的基础上,避免了中间网络设备在对终端设备发送的目标数据进行解密时,所存在的解密操作导致中间网络设备性能降低的技术问题,能够在对终端设备发送的目标数据解密时,提升中间网络设备的性能。附图说明49.图1是本发明实施例方案涉及的终端设备的结构示意图;50.图2为本发明解密方法一种实施例的流程示意图;51.图3与图4为本发明解密方法另一种实施例的流程示意图;52.图5为本发明解密方法另一种实施例的流程示意图;53.图6为本发明解密方法另一种实施例的流程示意图;54.图7为本发明解密方法另一种实施例的流程示意图;55.图8为本发明解密方法另一种实施例的流程示意图;56.图9本发明终端设备一实施例的功能模块示意图;57.图10为本发明实施例涉及的配置解密方式的界面示意图;58.图11为本发明实施例涉及的设置白名单的界面示意图;59.图12为本发明实施例涉及的终端设备、中间网络设备与服务器之间进行通信交互的示意图;60.图13为本发明实施例涉及的代理改包驱动的示意图;61.图14为本发明实施例涉及的数据包从目标应用传输到服务器的示意图;62.图15为本发明实施例涉及的数据包从服务器传输至目标应用的示意图63.图16为本发明实施例涉及的进行中间人代理的时序图;64.图17为本发明实施例涉及的协议调整的示意图;65.图18为本发明实施例涉及的降级失败时的处理逻辑示意图;66.图19为本发明实施例涉及的实现重定向的示意图;67.图20为本发明实施例涉及的应用场景示意图。68.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。具体实施方式69.应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。70.如图1所示,图1是本发明实施例方案涉及的终端设备的结构示意图。71.本发明实施例终端设备可以是pc,也可以是智能手机、平板电脑、便携计算机等计算机设备。72.如图1所示,该终端设备可以包括:处理器1001,例如cpu,通信接口1002,存储器1003,通信总线1004。其中,通信总线1004用于实现这些组件之间的连接通信。存储器1003可以是高速ram存储器,也可以是稳定的存储器(non‑volatilememory),例如磁盘存储器。存储器1003可选的还可以是独立于前述处理器1001的存储装置。73.本领域技术人员可以理解,图1中示出的终端设备的结构并不构成对终端设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。74.如图1所示,作为一种计算机存储介质的存储器1003中可以包括操作系统、通信模块以及解密程序。75.在图1所示的终端中,通信接口1002主要用于连接服务器以及中间网络设备,与服务器以及中间网络设备进行数据通信;而处理器1001可以用于调用存储器1003中存储的解密程序,并执行以下操作:76.建立所述目标应用与服务器的第一通信连接,以及所述终端设备与中间网络设备的第二通信连接,其中,所述第一通信连接为中间人代理连接,所述第二通信连接为直接连接;77.根据对称密钥对所述目标数据进行对称加密,所述对称密钥为根据非对称加密协商得到的对称加密密钥;78.基于所述第一通信连接将对称加密后的所述目标数据发送至所述中间网络设备,以使所述中间网络设备基于所述第一通信连接将所述目标数据转发至所述服务器;79.基于所述第二通信连接将所述对称密钥发送至所述中间网络设备,以使所述中间网络设备根据所述对称密钥解密所述目标数据。80.进一步地,处理器1001可以调用存储器1003中存储的解密程序,还执行以下操作:81.与所述目标应用进行安全套接层协议握手操作,以获取所述目标应用的第一握手信息;82.在检测到与所述目标应用进行握手操作成功时,根据所述第一握手信息与所述服务器进行握手操作,以得到所述服务器返回的第二握手信息;83.在检测到与所述服务器进行握手操作成功时,根据所述第二握手信息与所述目标应用进行握手操作,其中,在根据所述第二握手信息与所述目标应用进行握手操作成功时,所述第一通信连接建立完成。84.进一步地,处理器1001可以调用存储器1003中存储的解密程序,还执行以下操作:85.根据非对称加密密钥对所述第一握手信息加密;86.向所述服务器发送加密后的所述第一握手信息;87.接收所述服务器根据所述第一握手信息返回的加密后的所述第二握手信息,其中,所述服务器基于预设非对称解密密钥对所述第一握手信息进行解密,并基于所述非对称加密密钥对所述第二握手信息进行加密。88.进一步地,处理器1001可以调用存储器1003中存储的解密程序,还执行以下操作:89.根据所述第一握手信息,生成第三握手信息,其中,所述第一握手信息的协议版本高于所述第三握手信息的协议版本;90.将所述第三握手信息作为所述第一握手信息,执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。91.进一步地,处理器1001可以调用存储器1003中存储的解密程序,还执行以下操作:92.在检测到所述服务器返回的协议版本错误的提示信息时,根据所述第三握手信息,重新生成所述第一握手信息,返回执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。93.进一步地,处理器1001可以调用存储器1003中存储的解密程序,还执行以下操作:94.提取所述第一握手信息中的识别信息,所述识别信息包括网络地址以及进程信socketslayer,ssl),因此https也称作httpoverssl,https也可称作httpovertls,由于https加入了ssl以保障数据的安全性,使得在进行网络通信时,通过加密技术对数据进行加密后传输,为了获取这种加密传输过程中的数据,本实施例在终端设备上进行中间人代理(man‑in‑the‑middleattack,mitm),终端设备通过进行中间人代理,与目标应用以及服务器分别建立独立的通信联系,并交换其接收到的数据,而目标应用以及服务器仍将与对方的通信过程视作私密的通信连接,在进行中间人代理时,需要进行ssl握手,在进行ssl握手时,需要进行非对称加密以及非对称解密,由于非对称加密以及非对称解密比较耗费性能,需要消耗时间资源以及中央处理器(centralprocessingunit,cpu)资源,本实施例通过在终端设备进行中间人代理,从而能够将所消耗的这部分时间资源以及中央处理器资源转移到终端设备中,避免消耗中间网络设备的这部分资源,从而提升中间网络设备的性能;此外,相较于采用在中间网络设备中增加硬件解密卡的解密方式,本实施例还能够降低解密的成本,避免增加额外的硬件成本,同时相较于减少中间网络设备的解密数据的解密方式,本实施例不需要减少解密数据,能够提升对多场景支持的灵活性。113.第一通信连接是目标应用与服务器通过中间网络设备建立的中间人代理连接,中间人代理连接是基于中间人代理技术在目标应用与服务器之间建立的通信连接,其中,由终端设备进行中间人代理,具体而言,进行中间人代理的是终端设备中的特定应用程序,比如代理程序,代理程序可以设置图形界面以与用户交互,也可以后台运行,代理程序可以通过中间网络设备进行安装,换言之,本实施例的步骤可以通过终端设备的代理程序执行,目标应用是终端设备上需要与服务器进行通信的应用程序,目标应用包括各类浏览器、网盘软件以及其他应用软件,第二通信连接为终端设备与中间网络设备的直接连接,第二通信连接具体可以是代理程序与中间网络设备的直接连接,直接连接的含义是终端设备与中间网络设备不建立任何的中间人代理连接,直接进行通信。114.此外,还可以在终端设备上设置中间人解密条件,以判断终端设备的管理员是否需要在终端设备中进行中间人代理的解密,在根据解密条件检测到需要在终端设备进行中间人代理解密时,执行本实施例的各个步骤;其中,还可以提示管理员选择需要进行解密的目标应用或者解密的网址的类别。115.终端设备包括操作系统,操作系统例如windows操作系统、linux操作系统以及mac操作系统,在实现中间人代理时,还可以基于openssl实现,其中,openssl是开放源代码的软件库包,通过openssl可以进行实现加密功能,并实现ssl协议与tls协议。116.步骤s20,获取所述目标应用待发送的目标数据;117.终端设备在建立第一通信连接之后,可以获取目标应用待发送的目标数据,目标数据是由目标应用发出的各类数据,获取目标数据可以通过终端设备的代理程序执行,代理程序可以包括代理应用层以及代理改包驱动层,其中,代理应用层可以用于实现ssl中间人代理技术,代理改包驱动层实现与目标应用的通信连接,并获取目标应用待发送的目标数据,代理改包驱动层具体可以通过修改目标数据的头部信息实现网络地址转换,并实现获取目标数据的目的。118.步骤s30,根据对称密钥对所述目标数据进行对称加密,所述对称密钥为根据非对称加密协商得到的对称加密密钥;119.终端设备在建立第一通信连接以及获取到目标数据之后,需要将目标数据发送至服务器,为了提升目标数据传输的安全性,在发送目标数据之前对目标数据进行加密,加密采用对称密钥实现,对称密钥基于对称加密算法生成,相对于非对称加密技术,对称加密以及对称解密的性能消耗较低,因此,在中间网络设备基于对称密钥实现解密时,对中间网络设备的性能消耗较低;对称密钥根据非对称加密协商得到;对称密钥可以通过openssl的提供的接口生成,在生成对称密钥时,可以首先获取代理程序与服务器这一端的ssl连接对应的主密钥(master_key),并根据主密钥转换得到对称密钥,根据对称密钥进行对称加密。120.步骤s40,基于所述第一通信连接将对称加密后的所述目标数据发送至所述中间网络设备,以使所述中间网络设备基于所述第一通信连接将所述目标数据转发至所述服务器;121.终端设备在对目标数据进行对称加密之后,将对称加密后的目标数据发送至中间网络设备,中间网络设备会将加密后的目标数据转发至服务器,服务器在接收到目标数据之后,进行对目标数据进行解密,并返回目标数据对应的数据,终端设备接收到对应的数据之后,基于第一通信连接将对应的数据发送至目标应用;如图20所示,中间网络设备作为终端设备与服务器的通信连接的中介,在终端设备与服务器之间转发数据。122.步骤s50,基于所述第二通信连接将所述对称密钥发送至所述中间网络设备,以使所述中间网络设备根据所述对称密钥解密所述目标数据。123.终端设备将对称密钥发送至中间网络设备,中间网络设备在获取到对称密钥之后,通过该对称密钥解密此前获取到的目标数据,在解密后可对解密后的目标数据进行识别、审计和控制,中间网络设备还可以通过向终端设备发送重定向数据,对目标应用进行重定向;此外,经过实际测定,基于本实施例进行解密,相对于直接在中间网络设备中进行中间人代理的方式,能够将中间网络设备的性能提升六倍以上。124.在具体应用中,可以首先在终端设备显示配置中间人代理的界面,并在检测到用户选择了配置中间人代理的操作之后,执行本实施例的各个步骤,参照图10,图10为配置解密方式的界面示意图,该示意图中包含ssl中间人解密以及准入客户端代理解密两种解密方式,在检测到选择ssl中间人解密的情况下,执行本实施例涉及的方法步骤,在该界面中,还显示了内容识别的配置功能,可以查看以及设置所需要进行ssl内容检查的域名,内容识别部分界面在实际实施本发明时,可以根据实际需要修改。125.在本实施例中,通过建立目标应用与服务器的第一通信连接,以及终端设备与中间网络设备的第二通信连接,从而能够将终端设备自身作为代理设备进行中间人代理,并在目标应用与服务器之间建立中间人代理连接,在终端设备与中间网络设备之间建立直接连接,由于中间网络设备不需要进行中间人代理连接,因此避免了中间人代理连接的建立过程所导致的性能下降的问题,此外,终端设备获取目标应用待发送的目标数据,根据对称密钥对目标数据进行对称加密,基于第一通信连接将对称加密后的目标数据发送至中间网络设备,并基于第二通信连接将对称密钥发送至中间网络设备,中间网络设备在进行解密时,是根据从终端设备获取到的对称密钥解密目标数据,并且对称密钥由终端设备根据非对称加密协商得到,不需要中间网络设备进行协商,避免该协商过程消耗中间网络设备的性能,并且从终端设备侧实现了中间人代理,即由终端设备实现非对称加解密,从而在实现中间人代理的基础上,避免了中间网络设备在对终端设备发送的目标数据进行解密时,所存在的解密操作导致中间网络设备性能降低的技术问题,能够在对终端设备发送的目标数据解密时,提升中间网络设备的性能。126.参照图3以及图4,本发明第二实施例提供一种解密方法,基于上述图2所示的第一实施例,所述步骤s10包括:127.步骤s11,与所述目标应用进行安全套接层协议握手操作,以获取所述目标应用的第一握手信息;128.第一握手信息为目标应用发送的握手信息,第一握手信息包括但不限于扩展字段信息,扩展字段信息包括但不限于支持的协议、服务器名称指示(servernameindication,sni)、应用层协议协商信息(application‑layerprotocolnegotiation,alpn),第一握手信息还可以包括密钥套件、签名算法、客户端随机数。129.终端设备在建立目标应用与服务器的第一通信连接时,需要与目标应用与服务器进行握手操作,在进行握手操作时,本实施例基于openssl提供的bio实现本实施例涉及的读写操作,基于bio实现的目的在于将握手与传输控制协议(transmissioncontrolprotocol,tcp)分离开,从而使得握手失败时不会干扰tcp连接,然而,也可以采用其他方式实现具体的握手操作;本实施例涉及的握手操作为ssl的握手操作,在进行ssl握手操作时,基于连接状态划分,包括初始化阶段、服务器握手阶段以及目标应用握手阶段,在ssl握手完成后即可建立第一通信连接,并基于第一通信连接实现数据转发;请参照图16,图16为进行中间人代理的时序图,其中,目标应用向代理程序发送clienthello的过程,为初始化阶段,代理程序与服务器之间传输clienthello、serverhello、clientkeyhello、serverkeyhello的过程为服务器握手阶段,代理程序与目标应用之间传输serverhello、clientkeyhello、serverkeyhello的过程为客户端握手阶段,目标应用、代理程序与服务器之间传输appdata的过程为数据转发阶段。130.ssl握手由终端设备的代理程序实现,具体可以通过代理程序的代理应用层实现ssl握手,在初始化阶段,代理程序首先初始化ssl的相关结构,具体指设定ssl的相关结构的各项参数,并创建ssl节点,通过ssl节点保存当前连接的全部信息,此外,通过创建一个ssl句柄与目标应用进行握手,在握手失败的情况下,可能表明目标应用支持的协议版本过低,此时可以通过协议调整进一步实现握手,在握手成功的情况下,代理程序可以获取目标应用的第一握手信息,具体可以从ssl句柄中获取目标应用发送的第一握手信息,在获取到第一握手信息之后,还可以判断是否需要进一步握手,若需要进一步握手,则初始化服务器的ssl结构,根据服务器支持的协议以及alpn等信息与服务器进行握手,还可以根据服务器支持的协议判断是否需要对握手信息进行更改,在不需要进行更改时,设置服务器握手状态,并进入服务器握手阶段。131.步骤s12,在检测到与所述目标应用进行握手操作成功时,根据所述第一握手信息与所述服务器进行握手操作,以得到所述服务器返回的第二握手信息;132.在与目标应用握手操作成功时,终端设备的代理程序根据第一握手信息与服务器进行握手操作,得到服务器返回的第二握手信息,第二握手信息为服务器发送的握手信息,第二握手信息包括但不限于随机数(random)、节点号(sessionid)、版本号(version)。133.终端设备的代理程序在根据第一握手信息与服务器进行握手时,向服务器发送第一握手信息,服务器根据第一握手信息返回第二握手信息,此外,在与服务器进行握手操作时,代理程序基于非对称加解密对握手信息进行加密以及解密。134.参照图4,所述步骤s12包括:135.步骤s121,根据非对称加密密钥对所述第一握手信息加密;136.代理程序在想服务器发送第一握手信息之前,首先基于非对称加密密钥对第一握手信息进行加密,其中,具体可以采用rsa非对称加密算法、椭圆加密算法(ellipticcurvecryptography,ecc),此外,也可以采用其他非对称加密算法。137.步骤s122,向所述服务器发送加密后的所述第一握手信息;138.步骤s123,接收所述服务器根据所述第一握手信息返回的加密后的所述第二握手信息,其中,所述服务器基于预设非对称解密密钥对所述第一握手信息进行解密,并基于所述非对称加密密钥对所述第二握手信息进行加密。139.在服务器获取到加密后的第一握手信息之后,服务器根据非对称解密密钥对加密后的第一握手信息进行解密,得到解密后的第一握手信息,并根据解密后的第一握手信息生成第二握手信息,随后基于相同的非对称加密密钥对第二握手信息进行加密后返回终端设备的代理程序。140.此外,在服务器握手阶段,代理程序在检测到第一握手信息时,可以先将第一握手信息缓存至存储器中,在检测到第二握手信息时,检测是否握与服务器手失败,如果与服务器握手失败则需要断开连接,并检测是否需要重新连接,如果需要重新连接,则再次与服务器建立连接,并进行握手,在握手成功的情况下,初始化目标应用层的ssl相关结构,比如构造证书、选择协议,此后与目标应用进行握手。141.步骤s13,在检测到与所述服务器进行握手操作成功时,根据所述第二握手信息与所述目标应用进行握手操作,其中,在根据所述第二握手信息与所述目标应用进行握手操作成功时,所述第一通信连接建立完成。142.在检测到与服务器握手成功的情况下,与目标应用进行握手,向目标应用发送第二握手信息,并获取目标应用返回的握手信息,其中,代理程序在与目标应用进行握手操作时,基于非对称加密密钥对传输的握手信息进行加密,并基于非对称解密密钥对传输的握手信息进行解密。143.在与目标应用进行握手的过程中,在检测到与目标应用的握手操作失败的情况下断开连接,并在需要重连时,重新连接进行握手操作,在握手成功的情况下,进入到数据转发状态,此外,代理程序在与服务器以及目标应用均握手成功的情况下,表示第一通信连接建立完成,此后可以通过第一通信连接进行数据转发。144.此外,代理程序还可以安装与自身唯一关联的根证书、并定时更新根证书,使得终端设备用于与自身唯一关联的根证书,避免私钥泄漏的风险,提升安全性。145.在本实施例中,通过与目标应用进行握手操作,从而获取到目标应用的第一握手信息,在检测到与目标应用进行握手操作成功时,根据第一握手信息与服务器进行握手操作,以得到服务器返回的第二握手信息,在检测到与服务器握手成功时,根据第二握手新与目标应用进行握手操作,在根据第二握手信息与目标应用进行握手操作成功时,第一通信连接建立完成,从而实现了第一通信连接的建立,其中,由于握手过程中涉及的非对称加解密过程由终端设备的代理程序实现,而不需要基于中间网络设备实现,因此能够提升中间网络设备的解密性能。146.参照图5,本发明第三实施例提供一种解密方法,基于第二实施例,所述步骤s11之后,还包括:147.步骤s14,根据所述第一握手信息,生成第三握手信息,其中,所述第一握手信息的协议版本高于所述第三握手信息的协议版本;148.目标应用在基于代理程序与服务器进行通信时,通过特定的通信协议生成第一握手信息,比如目标应用通过http协议生成第一握手信息,在实际应用中,http协议的版本存在多种,比如存在http2.0以及http1.1,若目标应用的http协议版本高于服务器的http协议版本时,比如目标应用的http协议版本为http2.0,而服务器的http协议版本为http1.1,则有可能出现通信不兼容的情况导致通信失败,为了避免通信失败,并支持各种协议版本的服务器,本实施例根据第一握手信息,生成第三握手信息,其中,具体是代理程序中的代理应用层对第一握手信息的协议进行降级,并在降级后得到第三握手信息,例如,第一握手信息的协议版本为http2,第三握手信息的版本为http1.1,则在从http2降级到http1.1时,通过修改alpn列表,去掉其中的h2字段的方式实现降级,同时修改支持版本(supportversion)字段实现降级,此外,由于http2与tls1.3是绑定的状态,此处还可以同时对tls1.3进行降级处理,在对tls1.3进行降级时,去掉tls1.3字段,在进行上述降级时,可以基于openssl实现。如图17所示,图17为协议调整的示意图,该示意图举例了不同的情况下,对不同协议进行降级的方式。149.参照图12,图12为终端设备、中间网络设备与服务器之间进行通信交互的示意图,在图12中,终端设备示出2台,目标应用包括chrome以及网盘,chrome为浏览器,https终端代理为代理程序,ssl解密程序是中间网络设备中用于解密目标数据的程序,http/2转换是协议转换功能模块,图12中箭头指向为数据的传输方向,即chrome以及网盘中的数据传输至https终端代理,https终端代理发出的数据传输至中间网络设备的ssl解密程序,ssl解密程序的数据传输至http/2转换模块,中间网络设备进一步将转换后的数据发送至服务器。150.步骤s15,将所述第三握手信息作为所述第一握手信息,执行步骤s121;151.在得到第三握手信息之后,将第三握手信息作为第一握手信息,执行后续的与服务器的握手操作,从而使得服务器能够基于低协议版本的握手信息进行握手。152.所述步骤s122之后,还包括:153.步骤s16,在检测到所述服务器返回的协议版本错误的提示信息时,根据所述第三握手信息,重新生成所述第一握手信息,返回执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。154.在服务器返回协议版本错误的提示信息时,可能表示降级失败,此时,代理程序会与服务器进行重连,在重连时,需要通过原始协议版本的握手信息进行握手,因此,本实施例还根据第三握手信息,重新生成第一握手信息,并基于第一握手信息进行握手操作,从而能够成功建立第一通信连接;请参照图18,图18为降级失败时的处理逻辑示意图,降级失败的情况下按照图18中流程进行处理。155.在本实施例中,根据第一握手信息,生成第三握手信息,第一握手信息的协议版本高于第三握手信息的协议版本,将第三握手信息作为第一握手信息,进一步根据非对称加密密钥对第一握手信息进行加密,从而能够根据低协议版本的握手信息进行握手,提升了对低协议版本的服务器的兼容性,并在服务器不支持低版本协议时,重新根据未降级的第一握手信息进行握手,从而避免目标应用与服务器由于协议不兼容而无法建立第一通信连接的情况。156.参照图6,本发明第四实施例提供一种解密方法,基于第二实施例,所述步骤s11之后,还包括:157.步骤s17,提取所述第一握手信息中的识别信息,所述识别信息包括网络地址以及进程信息;158.终端设备在进行中间人代理时,并非需要在所有的场景中均进行中间人代理,例如,对于一些受信任的目标应用,或者受信任的目的地址、端口以及进程,则不需要进行中间人代理,为了识别是否需要进行中间人代理,本实施例提取第一握手信息中的识别信息,识别信息适用于识别是否需要进行中间人代理的信息,识别信息包括但不限于网络地址以及进程信息,网络地址包括目标应用访问的目的ip地址,识别信息还可以包括目标应用的名称,从而能够提升识别的信息的丰富性。159.步骤s18,检测所述识别信息与预设识别信息是否匹配;160.预设识别信息是预先设定的用于检测识别信息是否为允许进行中间人代理的信息,预设识别信息可以包括目标应用的名称、进程信息、目的ip地址和端口信息,其中,本实施例中的预设识别信息为白名单,即预设识别信息为不允许中间人代理的识别信息。请参照图11,图11为设置白名单的界面示意图,图11中所显示的排除地址、排除域名以及排除进程参数,均为白名单中所需设置的参数;比如将某网银的交易进程在排除进程一栏输入,那么则不会对网银的交易进程进行中间人代理,以避免降低网银交易的安全性。161.步骤s19,在检测到所述识别信息与所述预设识别信息不匹配时,执行步骤s121;162.在检测到识别信息与预设识别信息不匹配的情况下,表明识别信息为允许进行中间人代理的信息,此时,根据非对称加密密钥对第一握手信息进行加密,并进一步建立第一通信连接。163.步骤s110,在检测到所述识别信息与所述预设识别信息匹配时,通过第三通信连接向所述服务器发送所述目标数据,所述第三通信连接为所述目标应用与所述服务器的直接连接。164.在检测到识别信息与预设识别信息时,表示识别信息为不允许进行中间人代理的识别信息,此时,通过目标应用与服务器之间的直接连接发送目标数据,即不在目标应用与服务器之间进行任何的中间人代理,直接发送目标数据。165.在本实施例中,通过提取第一握手信息中的识别信息,检测识别信息与预设识别信息是否匹配,在检测到识别信息与预设识别信息不匹配时,根据非对称加密密钥对第一握手信息进行加密,在检测到识别信息与预设识别信息匹配时,通过目标应用与服务器的直接连接发送目标数据,从而能够更加灵活地进行中间人代理,避免针对全部的目标应用均进行中间人代理的问题。166.参照图7,本发明第五实施例提供一种解密方法,基于上述任一实施例,所述步骤s40包括:167.步骤s41,提取并保存所述目标数据中的原始传输信息,所述原始传输信息包括源网际协议地址、源端口、目的端口、目的网际协议地址以及传输协议;168.终端设备中的代理程序在将目标数据发送至服务器时,还提取并保存目标数据中的原始传输信息,并通过代理程序的代理改包驱动层实现对目标数据的转发,其中,原始传输信息包括源网际协议地址(源ip地址)、源端口、目的端口、目的网际协议地址(目的ip地址)以及采用的传输协议;具体而言,代理改包驱动技术主要负责把目标应用发出的tcp连接通过网络地址转换(networkaddresstranslation,nat)与代理应用层实现连接。169.步骤s42,将所述目标网际协议地址修改为预设代理地址,将所述目标端口修改为预设代理端口,所述预设代理地址为预设代理程序的网际协议地址,所述预设代理端口为所述预设代理程序的端口,所述预设代理程序为实现所述中间人代理的程序;170.在获取到原始传输信息之后,将源ip地址修改为预设ip地址,将源端口修改为预设代理端口,预设ip地址是计算机的固定ip地址,预设代理端口可以随机生成,只要随机生成的预设ip地址与预设代理端口不与操作系统已有的ip地址以及代理端口冲突即可,预设代理程序为实现中间人代理的程序,预设代理程序可以包括代理改包驱动程序。171.不同的操作系统可以采用不同的改包驱动实现方式,例如,在windows操作系统中,可以使用开源的windivert驱动,在驱动获取到目标应用发起连接的第一个同步序列编号(synchronizesequencenumbers,syn)包时,修改syn包的目的地址为127.0.0.1,端口为代理程序监听的端口;在linux操作系统中,可以基于iptables创建一条nat规则,进一步实现改包驱动。172.步骤s43,通过所述目的端口、所述目的网际协议地址、所述传输协议、所述预设代理地址以及所述预设代理端口,将加密后的所述目标数据传输至所述服务器。173.在得到目的端口、目的ip地址、传输协议、预设代理地址以及预设代理端口之后,基于传输协议,通过预设代理地址以及预设代理端口向目的端口以及目的ip地址发送目标数据,以向服务器发送目标数据。174.例如,目标应用为浏览器,浏览器首先生成要发送的目标数据,目标数据从协议栈生成并被改包驱动层获取,改包驱动层将数据包发送代理应用层,代理应用层保存原始传输信息,继而改包驱动层将目标数据的目标ip地址改为预设代理地址,将目标数据的目标端口改为代理端口,从而实现目的地址转换(destinationnetworkaddresstranslation,dnat),修改后的目标数据重新投递给内核,内核协议栈检测到目标数据的目的ip地址是本终端设备并且目的端口是本终端程序监听的端口,则将目标数据发送至代理应用层,代理应用层此时获取到目标数据,代理应用层根据目的ip地址以及目的端口,实现到服务器的通信连接;服务器在向终端设备返回服务器数据包之后,终端设备的网卡驱动首先获取到服务器数据包,并通过协议栈进行处理,再发送到代理应用层,代理应用层将服务器数据包发送至改包驱动层,代理改包驱动层将目的端口以及目的ip地址修改为源端口以及源ip地址,并将服务器数据包返回至目标应用,从而使得目标应用接收到服务器返回的数据包,实现完整的通信过程。参照图13,图13为代理改包驱动的示意图,在图13中,chrome、edge、网盘为目标应用,目标应用于内核协议栈之间进行数据交换,内核协议栈与终端代理改包驱动之间交换数据,终端代理改包驱动分别与https终端代理程序以及网卡驱动交换数据,百度、新浪以及163指的是网络服务的提供商的服务器。参照图14以及图15,图14为数据包从目标应用传输到服务器的示意图,图15为数据包从服务器传输至目标应用的示意图,在图14中,箭头指向为数据包的传输方向。175.在本实施例中,通过提取并保存目标数据中的原始传输信息,将原始传输信息中的源网际协议地址修改为预设代理地址,将源端口修改为预设代理端口,通过目的端口、目的网际协议地址、传输协议、预设代理地址以及预设代理端口,将加密后的目标数据传输至服务器,从而基于第一通信连接实现了向服务器发送目标数据,不需要借助中间网络设备,能够提升中间网络设备的性能。176.参照图8,本发明第六实施例提供一种解密方法,基于上述任一实施例,所述步骤s50之后,还包括:177.步骤s60,获取所述中间网络设备根据所述目标数据返回的重定向数据;178.重定向指重新指定某个网络请求所欲访问的方向,方向比如网页、域名以及路由选择,比如,某个网络请求所欲访问的域名为www.baidu.com,通过重定向可以将其重定向到某个特定的网页中,或者重定向到某个特定域名,比如重定向至www.sangfor.com.cn,通过获取中间网络设备返回的重定向数据,并向目标应用发送重定向数据,从而实现对目标应用的重定向,实现对目标应用所访问的内容的控制;其中,代理程序在将重定向数据发送至目标应用时,还可以需要根据对称密钥对重定向数据进行加密,而中间网络设备则可以直接发送明文的重定向数据,而不需要进行加密,在中间网络设备不需要加密的情况下,能够避免加密导致重定向的性能下降,能够提升中间网络设备进行重定向的性能。179.终端设备中的代理程序在获取到重定向数据之后,对序号(seq)字段以及确认(ack)字段进行修正,此外,重定向数据的负载头部包括重定向标志位,重定向标志位包括三部分信息,分别为magic(8b)、type(1b)、streamid(4b),代理程序可以根据magic来判断是否是重定向数据,如果是重定向数据,则确定重定向数据的超文本传输协议的版本类型;在版本类型为第一类型时,向目标应用发送重定向数据;在版本类型为第二类型时,对重定向数据进行封装处理,其中,封装处理按照第二类型的规定格式进行封装;向目标应用发送封装处理后的重定向数据,以使目标应用根据封装处理后的重定向数据进行重定向,其中,第一类型可以是http1.1,第二类型可以是http2,在版本类型为http1.1时,不需要经过额外的处理,直接通过目标应用的ssl句柄加密后发送至目标应用即可,在版本类型为http2.0时,则需要进行http2.0数据的封装,首先,需要获取重定向数据中的路径(location),接着通过使用nghttp2deflate解码器进行头部解密,继而根据负载数据长度、streamid生成一个头部frame帧、一个数据负载frame帧,从而整合成一个完整的http2.0格式帧结构,再过目标应用的ssl句柄加密后发送至目标应用。参照图19,图19为实现重定向的示意图。180.步骤s70,向所述目标应用发送所述重定向数据,以使所述目标应用根据重定向数据进行重定向。181.向目标应用发送该重定向数据,以对目标应用进行重定向,在发送重定向数据时,还需要根据对称密钥对重定向数据进行加密。在本实施例中,通过获取中间网络设备根据目标数据返回的重定向数据,向目标应用发送所述重定向数据,以使目标应用根据重定向数据进行重定向,从而实现了对目标应用的重定向,由于是终端设备的代理程序对重定向数据进行加密,不需要中间网络设备进行加密,因此能够提升中间网络设备进行重定向的性能。182.参照图9,图9为本发明终端设备一实施例的功能模块示意图,所述终端设备包括:183.建立模块10,所述建立模块10用于建立目标应用与服务器的第一通信连接,以及所述终端设备与中间网络设备的第二通信连接,其中,所述第一通信连接为中间人代理连接,所述第二通信连接为直接连接;184.获取模块20,所述获取模块20用于获取所述目标应用待发送的目标数据;185.加密模块30,所述加密模块30用于根据对称密钥对所述目标数据进行对称加密,所述对称密钥为根据非对称加密协商得到的对称加密密钥;186.发送模块40,所述发送模块40用于基于所述第一通信连接将加密后的所述目标数据发送至所述中间网络设备,以使所述中间网络设备基于所述第一通信连接将所述目标数据转发至所述服务器;以及,基于所述第二通信连接将所述对称密钥发送至所述中间网络设备,以使所述中间网络设备根据所述对称密钥解密所述目标数据。187.在一实施例中,所述建立模块10,还用于与所述目标应用进行安全套接层协议握手操作,以获取所述目标应用的第一握手信息;188.所述建立模块10,还用于在检测到与所述目标应用进行握手操作成功时,根据所述第一握手信息与所述服务器进行握手操作,以得到所述服务器返回的第二握手信息;189.所述建立模块10,还用于在检测到与所述服务器进行握手操作成功时,根据所述第二握手信息与所述目标应用进行握手操作,其中,在根据所述第二握手信息与所述目标应用进行握手操作成功时,所述第一通信连接建立完成。190.在一实施例中,所述加密模块30,还用于根据非对称加密密钥对所述第一握手信息加密;191.所述发送模块40,还用于向所述服务器发送加密后的所述第一握手信息;192.所述获取模块20,还用于接收所述服务器根据所述第一握手信息返回的加密后的所述第二握手信息,其中,所述服务器基于预设非对称解密密钥对所述第一握手信息进行解密,并基于所述非对称加密密钥对所述第二握手信息进行加密。193.在一实施例中,所述建立模块10,还用于根据所述第一握手信息,生成第三握手信息,其中,所述第一握手信息的协议版本高于所述第三握手信息的协议版本;194.所述建立模块10,还用于将所述第三握手信息作为所述第一握手信息,执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。195.在一实施例中,所述建立模块10,还用于在检测到所述服务器返回的协议版本错误的提示信息时,根据所述第三握手信息,重新生成所述第一握手信息,返回执行所述根据非对称加密密钥对所述第一握手信息加密的步骤。196.在一实施例中,所述建立模块10,还用于提取所述第一握手信息中的识别信息,所述识别信息包括网络地址以及进程信息;197.所述建立模块10,还用于检测所述识别信息与预设识别信息是否匹配;198.所述建立模块10,还用于在检测到所述识别信息与所述预设识别信息不匹配时,执行所述根据非对称加密密钥对所述第一握手信息加密的步骤;199.所述建立模块10,还用于在检测到所述识别信息与所述预设识别信息匹配时,通过第三通信连接向所述服务器发送所述目标数据,所述第三通信连接为所述目标应用与所述服务器的直接连接200.在一实施例中,所述发送模块40,还用于提取并保存所述目标数据中的原始传输信息,所述原始传输信息包括源网际协议地址、源端口、目的端口、目的网际协议地址以及传输协议;201.所述发送模块40,还用于将所述源网际协议地址修改为预设代理地址,将所述源端口修改为预设代理端口,所述预设代理地址为预设代理程序的网际协议地址,所述预设代理端口为所述预设代理程序的端口,所述预设代理程序为实现所述中间人代理的程序;202.所述发送模块40,还用于通过所述目的端口、所述目的网际协议地址、所述传输协议、所述预设代理地址以及所述预设代理端口,将加密后的所述目标数据传输至所述服务器。203.在一实施例中,所述获取模块20,还用于获取所述中间网络设备根据所述目标数据返回的重定向数据;204.所述获取模块20,还用于向所述目标应用发送所述重定向数据,以使所述目标应用根据重定向数据进行重定向。205.在一实施例中,所述发送模块40,还用于确定所述重定向数据的超文本传输协议的版本类型;206.所述发送模块40,还用于在所述版本类型为第一类型时,执行所述向所述目标应用发送所述重定向数据的步骤;207.所述发送模块40,还用于在所述版本类型为第二类型时,对所述重定向数据进行封装处理,其中,所述封装处理包括头部编码、生成头部帧以及生成负载帧;208.所述发送模块40,还用于向所述目标应用发送封装处理后的所述重定向数据,以使所述目标应用根据封装处理后的所述重定向数据进行重定向。209.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。210.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。211.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是智能手机、桌面电脑以及其他各类计算机)执行本发明各个实施例所述的方法。212.以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的
技术领域
:,均同理包括在本发明的专利保护范围内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1