用于握手期间中间节点发现的方法和装置与流程

文档序号:13234609阅读:142来源:国知局
技术领域本公开涉及当中间节点布置在客户端和服务器之间时用于执行服务器和客户端之间的呼叫建立的方法、中间节点、服务器和客户端。

背景技术:
中间节点或代理在例如超文本传输协议(HTTP)、超文本传输协议安全(HTTPS)、消息会话中继协议(MSRP)、会话发起协议(SIP)、约束应用协议(COAP)等的各种应用层协议的许多部署中是重要和必要的。最重要的使用情况之一是在例如企业、运营商网络、酒店和机场中普遍部署的HTTP代理。另一示例是在MSRP部署中大量的MSRP代理。中间节点,其可以备选地被称为中介节点,执行例如以下服务:在业务优化、缓存、防病毒保护、例如学校中的下行链路内容筛选和过滤、企业中的上行链路内容筛选和过滤、以及在例如MSRP的消息传输协议的情况下的消息存储。例如在WO2010/003713A1中存在针对安全实时传输协议(SRTP)的解决方案。然而,这些已知解决方案不适用于上述场景,原因在于这些解决方案针对其中根本不信任代理访问任何内容的另一信任模型。因此,在这些解决方案中代理将不获得对所需内容的任何访问。其次,上述SRTP解决方案使用具有附加(在我们的情况下是不希望的)开销的隧道中隧道和复用机制。第三,这些类型的解决方案是SRTP专用的并且不与TLS一起工作。如3GPPTS33.828中公开的已知3GPPIMS相关机制(通过其IMS网络可以针对“逐跳”安全添加/替换用于e2e安全的客户端提供)不提供来自端点的任何控制或许可。此外,它们与IMS协议(SIP,STRP)紧密结合并且针对TLS不工作。用传输层安全(TLS)或数据报传输层安全(DTLS)保护许多这些应用层协议,原因在于它们提供强安全性并代表用于保护在大多数客户端和服务器中实现的TCP或UDP业务的“标准”方式。在大多数情况下,在使用应用协议之前建立TLS或DTLS。使用TLS,我们这里表示TLS的全部版本和如DTLS的TLS的衍生物。当不用TLS保护通信时,中间节点可以在大多数情况下将其自身插入通信路径中,即通过插入它本身可以潜在地监听、注入或修改发送方和接收方之间的业务,导致所谓“业务干预”。当使用TLS时,每个中间节点仅具有三种选择,让客户端与服务器端到端建立TLS,破坏TLS安全模型或尝试阻止业务。这三种选项的共同点在于:在大多数情况下,客户端和服务器未知晓通信路径中存在任何中间节点。如果中间节点已经“静默地”破坏了TLS(端到端)安全模型,TLS客户端/服务器如何知晓它们的业务没有经受未授权的访问?此外,通信路径中的一个或更多个“友好的”中间节点仍不能使得TLS客户端或TLS服务器知晓它们的存在,即使TLS客户端或TLS服务器想知晓。由于客户端和服务器均不能知晓中间节点和它们的标识,客户端和服务器均不能在它的通信中包括中间节点和它们的标识,意味着中间节点必须或者求助于阻止业务,即禁用客户端/服务器通信,或者它可以使业务通过,但是然后它不按预期履行服务。尽管以上我们已经参照了TLS客户端和TLS服务器,从下文中将显而易见在不使用或至少初始地不使用TLS的场景中还可以涉及相应的、中间相关的问题。

技术实现要素:
简要描述,提供了客户端、服务器和中间节点,它们被配置为使上述端点当执行客户端和服务器之间的连接建立时能够控制中间节点的参与。根据第一方面,提出了一种由在客户端和服务器之间布置时的中间节点执行的方法,用于参与客户端和服务器之间的连接建立。提出的方法由中间节点截取从客户端发送的以服务器为目的地的第一消息发起,其中所述第一消息请求在所述客户端和所述服务器之间建立连接。在中间节点基于接收到的第一消息的内容识别中间节点期望在请求的连接上执行至少一个功能时,或换言之,中间节点想要参与呼叫建立时,所述中间节点向客户端发送第二消息,其中第二消息包括中间节点的标识,从而使客户端能够接受或拒绝中间节点作为参与请求的连接建立的节点。提出的方法的优点在于:呼叫建立中涉及的端点将能够控制呼叫建立。根据一个实施例,第二消息还可以包括认证信息,从而使客户端能够授权中间节点。认证信息可以包括根据第一消息中包含的至少一个参数计算的签名。可以由中间节点执行的功能可以包括是以下各项中的至少一个:防病毒保护;内容筛选;入侵检测或防护;内容适配或转码;业务优化;计费;缓存或策略执行。根据一个实施例,识别步骤是与以下相关联地执行的:判定需要中间节点执行与请求的连接相关联的至少一个功能以使得能够建立连接,即,而不是指示执行请求的呼叫建立的期望,其中,作为结果,可以在中间节点参与或不参与的情况下执行呼叫建立,这种中间节点的参与对于执行成功的呼叫建立是必须的。此外,第二消息还可以包括:中间节点与在客户端和服务器之间建立请求的连接相关联地执行所述至少一个功能的要求。中间节点的要求可以指多个各种主题,例如以下的一个或更多个:请求能够在上行链路或下行链路业务中读取请求的连接的至少部分接收分组;请求能够在上行链路或下行链路业务中修改请求的连接的至少部分接收分组;请求能够应用特定类型的协议;或请求能够应用特定密码要求。根据一个实施例,所述要求包括关于与请求的连接相关联的所述至少一个功能的信息,即,端点将能够考虑,并接受或拒绝中间节点在连接上执行一个或更多个特定功能。此外,可以在中间节点处存储从客户端向中间节点提供的信息的至少一部分,以在将来的连接建立尝试期间访问。根据另一方面,公开了一种由客户端执行的方法,所述客户端需要在客户端和服务器之间建立连接,其中在客户端和服务器之间布置中间节点。客户端发送以服务器为目的地的第一消息,请求在客户端和服务器之间建立连接。一旦从中间节点接收包括标识的第二消息,所述标识标识中间节点,所述客户端确定接受还是拒绝中间节点作为参与请求的连接建立的节点。在这种确定之后,客户端发送以服务器为目的地的第三消息,请求在确定步骤中确定中间节点参与或不参与的情况下,在客户端和服务器之间建立连接。根据一个实施例,第二消息还包括中间节点参与连接建立的要求,其中所述确定步骤还包括确定接受哪些要求和拒绝哪些要求,并且发送步骤还包括将关于客户端接受哪些要求和客户端拒绝哪些要求的信息包含到第三消息中。根据另一方面,公开了一种由服务器执行的方法,客户端请求与所述服务器建立连接,其中在客户端和服务器之间布置中间节点。初始地,从中间节点接收请求在客户端和服务器之间建立连接的消息,所述消息包括中间节点的标识和中间节点针对参与建立请求的连接的要求。接下来,确定接受还是拒绝中间节点参与连接建立,以及在这种确定之后,在接受中间节点参与的情况下,过程继续经由中间节点在客户端和服务器之间发起的建立,或在服务器拒绝中间节点参与的情况下,结束所述建立。根据一个实施例,建立还包括:向中间节点提供至少一个加密和/或认证密钥,从而使所述中间节点能够访问所述连接。根据一个实施例,建立连接可以启用传输层安全(TLS)或数据报传输层安全(DTLS)通信。根据另一方面,公开了能够参与在客户端和服务器之间建立连接的中间节点,所述中间节点被配置为:截取从客户端发送的以服务器为目的地的第一消息,所述第一消息请求在所述客户端和所述服务器之间建立连接;基于接收到的第一消息的内容,识别中间节点期望在请求的连接上执行至少一个功能;以及向客户端发送第二消息,所述第二消息包括中间节点的标识,从而使客户端能够接受或拒绝中间节点作为参与请求的连接建立的节点。中间节点还可以被配置为还将认证信息插入第二消息中,从而使客户端能够授权中间节点。根据一个实施例,插入的认证信息包括根据第一消息中包含的至少一个参数计算的签名。中间节点可以被配置为识别执行包括以下各项中的至少一个的功能的期望:防病毒保护;内容筛选;防护的入侵检测;内容适配或转码;业务优化;计费;缓存或策略执行。根据一个实施例,中间节点被配置为:与以下相关联地执行所述识别步骤:判定需要中间节点执行与请求的连接相关联的至少一个功能以使得能够建立连接。根据一个实施例,中间节点被配置为:插入中间节点与在客户端和服务器之间建立请求的连接相关联地执行所述至少一个功能的要求。中间节点可以被配置为插入包括以下至少一个的要求:请求能够在上行链路或下行链路业务中读取请求的连接的至少部分接收分组,请求能够在上行链路或下行链路业务中修改请求的连接的至少部分接收分组,请求能够应用特定类型的协议,或请求能够应用特定密码要求。中间节点可以被配置为:插入包括关于与请求的连接相关联的所述至少一个功能的信息的要求。中间节点还可以被配置为:存储从客户端向中间节点提供的信息的至少一部分,使得中间节点将在将来的连接建立尝试期间能够访问这种信息。根据另一方面,描述了一种能够在客户端和服务器之间布置中间节点时与服务器建立连接的客户端。根据一个实施例,这种客户端被配置为:发送以服务器为目的地的第一消息,请求在客户端和服务器之间建立连接;从中间节点接收第二消息,所述第二消息包括标识,所述标识标识中间节点;确定接受还是拒绝中间节点作为参与请求的连接建立的节点,以及发送以服务器为目的地的第三消息,请求在确定步骤中确定中间节点参与或不参与的情况下,在客户端和服务器之间建立连接。此外,客户端可以被配置为:还将中间节点针对所述中间节点参与连接建立的要求提供到所述第二消息中;确定接受哪些要求和拒绝哪些要求,以及将关于客户端接受哪些要求和客户端拒绝哪些要求的信息提供到第三消息中。从而,客户端将能够基于给定信息中提供细节的程度做出判定。根据又一方面,公开了一种能够在客户端和服务器之间布置中间节点时建立与客户端连接的服务器。根据一个实施例,所述服务器被配置为:从中间节点接收请求在客户端和服务器之间建立连接的消息,所述消息包括中间节点的标识和中间节点参与建立请求的连接的要求;确定接受还是拒绝中间节点参与连接建立,以及在接受中间节点参与的情况下,继续经由中间节点在客户端和服务器之间发起的建立,或在服务器拒绝中间节点参与的情况下,结束所述建立。根据一个实施例,服务器还被配置为:通过向所述中间节点提供至少一个加密和/或认证密钥来继续连接建立,从而使所述中间节点能够防问所述连接。服务器可以被配置为:建立连接传输层安全(TLS)或数据报传输层安全(DTLS)通信。根据一方面,提出了一种能够参与客户端和服务器之间的连接建立的中间节点,所述中间节点包括处理器和存储器,所述存储器能够存储指令,所述指令当由处理器执行时使所述中间节点:截取从客户端发送的以服务器为目的地的第一消息,所述第一消息请求在所述客户端和所述服务器之间建立连接;基于接收到的第一消息的内容,识别中间节点期望在请求的连接上执行至少一个功能;以及向客户端发送第二消息,所述第二消息包括中间节点的标识,从而使客户端能够接受或拒绝中间节点作为参与请求的连接建立的节点。根据另一方面,描述了一种可以在中间节点上执行的计算机程序,该中间节点能够参与客户端和服务器之间连接的建立,其中,所述计算机程序包括指令,所述指令当在中间节点上运行时使中间节点:截取从客户端发送的以服务器为目的地的第一消息,所述第一消息请求在所述客户端和所述服务器之间建立连接;基于接收到的第一消息的内容,识别中间节点期望在请求的连接上执行至少一个功能;以及向客户端发送第二消息,所述第二消息包括中间节点的标识,从而使客户端能够接受或拒绝中间节点作为参与请求的连接建立的节点。根据另一方面,一种计算机程序产品,包括例如以上描述的计算机程序以及在其上存储计算机程序的计算机可读装置。根据另一方面,一种客户端,能够在客户端和服务器之间布置中间节点时与服务器建立连接,所述客户端包括处理器和存储器,所述存储器能够存储指令,所述指令当由处理器执行时能够使所述客户端:发送以服务器为目的地的第一消息,请求在客户端和服务器之间建立连接;从中间节点接收第二消息,所述第二消息包括标识,所述标识标识中间节点;确定接受还是拒绝中间节点作为参与请求的连接建立的节点,以及发送以服务器为目的地的第三消息,请求在确定步骤中确定中间节点参与或不参与的情况下,在客户端和服务器之间建立连接。根据另一方面,描述了一种能够在客户端上执行的计算机程序,所述客户端能够在客户端和服务器之间布置中间节点时与服务器建立连接,所述计算机程序包括指令,所述指令当在客户端上运行时使所述客户端:发送以服务器为目的地的第一消息,请求在客户端和服务器之间建立连接;从中间节点接收包括标识的第二消息,所述标识标识中间节点;确定接受还是拒绝中间节点作为参与请求的连接建立的节点,以及发送以服务器为目的地的第三消息,请求在确定步骤中确定中间节点参与或不参与的情况下,在客户端和服务器之间建立连接。根据另一实施例,公开了一种计算机程序产品,包括例如以上提出的计算机程序以及在其上存储计算机程序的计算机可读装置。根据另一实施例,提出了一种服务器,能够在客户端和服务器之间布置中间节点时与客户端建立连接。根据一个实施例,所述服务器包括处理器和存储器,所述存储器能够存储指令,所述指令当由处理器执行时能够使所述服务器:从中间节点接收请求在客户端和服务器之间建立连接的消息,所述消息包括中间节点的标识和中间节点参与建立请求的连接的要求;确定接受还是拒绝中间节点参与连接建立,以及在接受中间节点参与的情况下,继续经由中间节点在客户端和服务器之间发起的建立,或在服务器拒绝中间节点参与的情况下,结束所述建立。根据另一方面,公开了一种能够在服务器上执行的计算机程序,所述服务器能够在客户端和服务器之间布置中间节点时与客户端建立连接,其中,所述计算机程序包括指令,所述指令当在客户端上运行时使所述客户端:从中间节点接收请求在客户端和服务器之间建立连接的消息,所述消息包括中间节点的标识和中间节点参与建立请求的连接的要求;确定接受还是拒绝中间节点参与连接建立,以及在接受中间节点参与的情况下,继续经由中间节点在客户端和服务器之间发起的建立,或在服务器拒绝中间节点参与的情况下,结束所述建立。根据另一方面,公开了一种计算机程序产品,包括根据例如以上提出的计算机程序以及在其上存储计算机程序的计算机可读装置。附图说明现在将结合附图更详细地描述实施例,在附图中:图1是示出在TLS客户端中执行的方法的流程图。图2是示出在中间节点中执行的方法的另一流程图。图3是根据第一实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图4是根据第二实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图5是根据第一实施例的TSI客户端的简化配置。图6是根据第二实施例的TSI客户端的简化配置。图7是根据第一实施例的中间节点的简化配置。图8是根据第二实施例的中间节点的简化配置。图9显示了在TLS服务器中执行的方法的流程图。图10是根据第三实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图11是根据第四实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图12是根据第五实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图13是根据第六实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图14是根据第一实施例的TLS服务器的简化配置。图15是根据第二实施例的TLS服务器的简化配置。图16是根据第七实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图17是根据第八实施例示出TLS客户端和TLS服务器之间的信令的信令方案。图18是根据现有技术示出非TLS客户端和非TLS服务器之间的信令的信令方案。图19是根据第一实施例示出非TLS客户端和非TLS服务器之间的信令的信令方案。图20是根据第二实施例示出非TLS客户端和非TLS服务器之间的信令的信令方案。具体实施方式当前不存在TLS客户端或TLS服务器发现存在要求或建议应当包括在TLS通信中的中间节点(例如代理)的已知方法。HTTP1.0/1.1也是如此。由于传统TLS客户端和TLS服务器未知晓在通信路径中存在网络代理,并且因此也未知晓网络代理的标识,客户端和服务器不能基于代理的存在而行动,意味着中间节点必须或者阻止业务或者不能按照它的期望履行服务。简要地描述,公开了一种方法,该方法允许希望通过TLS发送例如HTTP1.1、HTTP2.0、CoAP、SPDY、MSRP的应用数据的TLS客户端,不需预先配置,发现在TLS客户端和预期TLS服务器之间存在例如代理的中间节点。还使TLS客户端知晓中间节点的标识和中间节点具有的要求,其要求可以包括中间节点应用的策略,以使TLS客户端与预期TLS服务器建立TLS。该解决方案还允许希望在TLS通信中包括的一个或更多个中间节点向TLS客户端指示它的存在、标识和要求。通过向TLS客户端提供中间节点的标识,该标识可以视为向TLS客户端的对于中间节点希望参与连接建立的指示。贯穿该文档,当提到TLS时,将理解这还包括作为替代应用DTLS的相应情况。希望与预期TLS服务器建立TLS连接的TLS客户端通过向TLS服务器发送TLS客户端问候ClientHello消息来尝试直接与预期TLS服务器建立TLS连接。ClientHello消息可以包含TLS客户端预期例如通过使用TLS应用层协议协商来在TLS连接上发送的关于应用协议的信息。ClientHello的必选元素包括客户端版本、随机数、安全和压缩设置。中间节点截取TLSClientHello消息,识别TLS客户端未知晓它的存在,或不满足中间节点的要求。该识别可以基于特定字段(例如扩展)的不存在或特定安全设置的指示。因此,中间节点不向预期TLS服务器转发ClientHello。作为替代,中间节点返回包含与中间节点的标识(例如证书)和它对通信的要求相关的附加信息的一种新类型的消息或信息元素,该消息或信息元素可以被称为TLS信令或错误消息,以允许TLS客户端与预期TLS服务器建立TLS。可以例如作为TLS警告协议的消息来发送该消息。该消息向TLS客户端(或更具体地TLS客户端的用户代理(浏览器))通知在通信路径上存在中间节点,并且附加信息使TLS客户端能够作出关于是否可以信任中间节点的判定。上述消息还可以包含中间节点的签名,使得客户端可以授权消息的发送方,即中间节点。根据ClientHello的至少一些参数(例如随机数)来计算该签名。除非另外指示,本文提到的每个通信被称为经由TLS连接在TLS客户端和TLS服务器之间执行的TLS通信。中间节点向请求的TLS客户端发回信息,并提供首部(优选地签名的)和关于中间节点的名称的信息。在不需要任何预配置的情况下,上述建议的过程允许TLS客户端发现在TLS客户端和TLS服务器之间存在中间节点,该中间节点要求或建议它应当包括在通信中。另一方面,本发明可以可选地使用预配置,例如为客户端提供特定可信代理的证书。由于TLS可以用于保护在TCP上承载的任何应用层协议,并且由于本文所描述的方法仅修改/扩展了TLS协议,本领域技术人员将显而易见本方法可以在任何这种应用协议的上下文中实现。此外,由于在关于本发明的所有方面DTLS协议与TLS等同,也可以结合当通过DTLS保护时在UDP上承载的任何协议应用本方法。类似地,还可以在这些协议的衍生物(例如SPDY或QUIC)上实现该方法。考虑到这一点,本方法由于说明性目的主要在TCP/TLS上下文中描述。更具体地,考虑TLS客户端、中间节点和预期TLS服务器。在通信路径中可以存在若干中间节点,其中在TLS客户端和每个中间节点之间执行上述过程。TLS客户端希望与预期TLS服务器建立TLS连接,以安全地通过TLS连接发送应用层数据。这时TLS客户端未知晓任何中间节点的存在,并尝试直接与预期TLS服务器建立TLS连接。备选地,TLS客户端可以知晓一个或更多个中间节点,但不能确定这些中间节点的一个或更多个将影响与TLS服务器的通信。备选地,TLS客户端可能不知晓中间节点的特定细节(例如,标识、地点、证书、要求)。中间节点位于TLS客户端和预期TLS服务器之间通信路径中的某处。该路径可以例如包括3GPP网络,中间节点可能位于该网络中。中间节点代表TLS客户端、TLS服务器或第三方使用应用层数据来执行服务,第三方可以是企业、审计师、政府/监管机构、网络运营商、宾馆或机场。中间节点执行的服务或功能可以是例如:防病毒保护、内容筛选、入侵检测/防护、内容适配/转码、业务优化、计费、缓存或任何形式的策略执行。该服务可以需要访问纯文本数据、缓存内容的能力、优先、延迟或阻止内容的能力,或注入、修改或重放内容的能力。中间节点的服务的一些可以仅需要访问首部/元数据,而其他服务需要全有效载荷访问。可以由第三方或预期TLS服务器执行中间节点的服务。备选地,该服务可以是推荐的或可选的,并代表第三方或预期TLS服务器或TLS客户端来执行。现在将参照图1用附加细节来描述在TLS客户端中执行的方法,其中在第一步骤1:10中,TLS客户端尝试通过根据标准过程发送TLSClientHello消息来建立与TLS服务器的TLS通信。ClientHello消息可以包含TLS客户端预期例如通过使用TLS应用层协议协商来在TLS连接上发送的关于应用协议的信息。TLS客户端希望与预期TLS服务器建立TLS连接,以安全地通过TLS连接发送应用层数据。如果TLS客户端:·知晓中间节点的存在;·知晓关于这些中间节点的细节(例如,标识、地址、证书、要求)。·以及接受(在客户端知晓的要求下)以将这些中间节点包括到TLS通信中,则TLS客户端将关于这些中间节点的信息包括到ClientHello消息中,例如在TLS扩展中。关于中间节点的信息可以是但不限于:·中间节点的标识(例如IP地址、域名、FQDN、证书)。·属于中间节点的公钥(原始公钥或证书),TLS客户端和TLS服务器之间的通信路径中的中间节点截取ClientHello消息。中间节点检测/判定它可以/应当在会话上执行一些功能,例如任何上述功能,并因此不将其转发给预期TLS服务器。相反,如在另一步骤1:20中所示,中间节点返回指示消息或信息元素,例如错误消息,例如TLS信令或错误消息。这种信息将包含以下的全部或子集:A.标识中间节点的标识,例如证书。应当优选地由可信方对这种证书签名,因此TLS客户端可以稍后对证书进行验证。中间节点可以具有多个证书并且可以根据初始地在TLSClientHello消息中提供的信息选择中间节点提供的一个证书,例如指示TLS客户端预期在TLS连接上使用哪个应用协议。B.中间节点针对TLS连接的要求(例如请求的许可),以允许TLS客户端与预期TLS服务器建立TLS连接。这些要求可以例如指示中间节点希望执行哪个(哪些)功能/服务、它需要什么类型的访问,以及潜在地其原因。此外还可以包括关于计费或隐私策略的信息。如以上已经提及的,可以将要求配置为使得功能/服务是可选的,并且因此也可以在没有TLS客户端同意的情况下执行连接建立,但是没有相应功能/服务的执行。在后一场景中,在B下指出的消息可以包括中间节点对TLS连接的要求,以建立连接,并且还执行相应功能/服务。C.中间节点配置所需的任何附加信息,例如通常在典型浏览器所使用的.pac文件(代理自动配置)中存储的信息。D.使用中间节点证书的签名(更精确地,与该证书相关联的私钥)或任何其他认证信息,覆盖该消息和TLSClientHello消息的全部或所选部分。中间节点可以做出或表达关于TLS连接的任何要求或许可,中间节点可以请求以下的任何或甚至全部:·读取完整上行链路或下行链路业务的能力,·读取上行链路或下行链路业务的部分的能力,即分组的一些类型或分组的一些部分,·修改下行链路或上行链路中接收分组的全部或部分的能力,·应用层专用要求,例如使用特定类型应用协议的要求,·密码专用要求,例如使用特定密钥长度、加密和认证算法、加密密钥长度、授权密钥长度、加密算法、认证算法或TLS的任何其他部分的要求。该要求可以是绝对要求,绝对要求规定特定值、最大要求或最小要求。可以通过策略来支持这些要求,即中间节点可以包括关于特定要求原因的信息(例如“最优传送”)或提供可以检索关于要求的信息的URL。在另一可选步骤1:30中,TLS客户端可以评估从中间节点提供的要求与任何类型的安全性、隐私或服务策略或偏好,并相应接受或拒绝这些要求。可选地,TLS客户端设备可以通过用人类可读格式显示要求来提示用户判定。如在步骤1:50a中所示:假设TLS客户端认为要求可接受,则向TLS服务器发送新ClientHello。该消息可以包括关于发现的中间节点和它希望执行的功能的信息。这还将使TLS服务器能够评估中间的请求许可并判定是否可以接受它们。如果接受,则服务器还将使用与许可有关的信息来用特定方式配置其本身,和/或稍后包括向中间的信息。例如,如稍后将更详细论述的,服务器可以禁用加密或可以向中间传送特定解密密钥。这时完成发现,并执行用于安全插入中间节点的功能。在后面的步骤中可以用不同方式解决要求,例如通过在TLS服务器和/或客户端处使用空加密算法,通过与中间节点共享TLS下行链路或上行链路加密/解密密钥,或通过共享更高层的密钥使得中间节点可以导出所需加密密钥,来满足读取应用信息的要求。TLS客户端还可以拒绝该要求,例如针对如网上银行或电子健康的非常敏感的信息,明确地向中间节点要求例外。该要求还可以规定特定解决方案,例如“我需要上行链路加密密钥”意味着不允许空加密的使用。在发现之后,可以在TLS客户端(例如浏览器)、中间节点以及原TLS服务器中保存例如中间节点的证书的信息,以简化经由同一中间节点的后续通信建立。如在备选步骤1:50b中所指示的,如果TLS客户端(用户或用户代理)不认为中间节点可接受(不管什么原因),则TLS客户端可以在后续ClientHello中包括指示客户端已经观察到中间的存在,但是不向其授权任何许可并希望继续TLS握手(直接向服务器和/或某一其他中间节点)的信息。备选地,TLS客户端可以指示它授权了许可的子集。现在将参照图2用附加细节描述在中间节点处执行的方法。在第一步骤2:10中,中间节点截取第一ClientHello,在后续步骤2:20中评估第一ClientHello。如果在步骤2:20中,中间节点确定它需要向TLS客户端提供具有要求的建议,则如步骤2:30中所示,它向TLS客户端提供返回消息(例如错误消息),请求TLS客户端接受或拒绝要求。如在2:50中所示,响应于被提供为来自TLS客户端的第二ClientHello的消息,中间节点截取来自TLS客户端的第二ClientHello。在后续步骤2:60中评估第二ClientHello,并且在要求(或至少一些要求)的至少一个接受的情况下,如步骤2:70中所指示的向预期TLS服务器转发ClientHello。如果未接受,根据一个实施例,根据步骤2:80a,TLS连接不能继续并结束过程。是否在步骤2:30中将消息返回TLS客户端可以例如取决于针对特定TLS连接中间节点需要执行的服务的类型,其可以从ClientHello中的扩展来标识,或在中间节点是公司代理的情况下,ClientHello的发送方可以决定。这可以例如通过使用什么证书来确定。根据另一实施例,用步骤2:80b指示的,还向TLS服务器转发消息,同时在拒绝中间节点参与的情况下,其中稍后将不执行中间节点指示的一个或更多个功能,即不接受中间节点,但在不涉及中间节点的情况下继续该过程。用备选步骤2:80b指示后一步骤。还将理解可以部分接受那些要求,即拒绝一些而接受一些,使得稍后将仅执行可以用允许的要求执行的功能。尽管图1和2中公开的方法指的是TLS客户端和TLS服务器,将理解这些方法也可适用于包括非TLS客户端和TLS服务器的场景,例如用图19或20描述的场景。图3是示出可以如何在一个中间节点上执行上述方法的信令方案,而图4是示出当在TLS客户端和TLS服务器之间的通信路径中存在多个中间节点时可以执行的相应过程。在图3的步骤1:1中,向TLS服务器发送并由中间节点1截取呼叫建立请求,并且在后续步骤1:2中,如上所述中间节点1向客户端通知它本身。在步骤1:3中,从客户端向服务器提供呼叫建立的接受。如图4中所指示的,每个中间节点将通过发送消息(这里警告/错误消息)对TLSClientHello作出响应,允许TLS客户端完全、部分接受或拒绝相应中间节点的要求。图5是客户端500的功能模块的简化说明,客户端500这里称为TLS客户端,其中连接建立模块510被配置为执行图1中的步骤1:10和1:50,反馈接收模块520被配置为执行图1的步骤1:20,而评估模块530被配置为执行图1中的步骤1:30和1:40。任何类型的传统I/O模块540被配置为使TLS客户端500能够与客户端(未示出)和中间节点(未示出)进行通信,而传统密钥处理模块550可以被配置为处理为安全目的提供的密钥。例如本文参照图19或20的信令方案所描述的,还可以理解非TLS客户端能够执行与参照图1描述的方法相对应的方法。图6是根据一个实施例示出TLS客户端的框图,其中图5的模块可以实现为包括可执行指令的软件模块,可执行指令在存储装置620的存储器630上存储。将理解图6的客户端可以备选地配置为非TLS客户端,以应用相应非TLS场景。图7是中间节点功能模块的简化说明,其中截取模块710被配置为执行图2中的步骤2:10和2:50,响应模块720被配置为执行步骤2:30,而转发模块730被配置为执行步骤2:40和2:80。任何类型的传统I/O模块540被配置为使TLS客户端500能够与客户端(未示出)和中间节点(未示出)进行通信,而传统密钥处理模块550可以被配置为处理为安全目的提供的密钥。图8是根据一个实施例示出中间节点的框图,其中图7的模块可以实现为包括可执行指令的软件模块,可执行指令在存储装置820的存储器830上存储。参照图7或8描述的中间节点可以被配置为也处理例如根据参照图19或20描述的非TLS客户端和非TLS服务器。根据另一实施例,在TLS客户端已经例如通过接受以上已经描述的要求的部分或全部,对从位于TLS客户端和TLS服务器之间的中间节点向TLS客户端提供的要求作出响应之后,在TLS服务器中执行方法,并且作为先决条件,现在在与TLS客户端的TLS握手中包括TLS服务器。现在将参照图9用附加细节描述这种方法。如在第一步骤9:10中指示的,TLS服务器从TLS扩展中导出一个或更多个中间节点的标识和要求,根据上述过程TLS客户端已经接受了该一个或更多个中间节点以包括在TLS连接中。在下一步骤9:20中确定TLS服务器是否同意包括该一个或更多个中间节点。如果TLS服务器同意包括TLS客户端接受的中间节点,则它通过将具有对TLS扩展的应答的服务器问候ServerHello发送回TLS客户端,继续与TLS客户端的TLS握手。这用图9中的步骤9:30指示。如果TLS服务器知晓它希望包括的任何更多的中间节点,则TLS服务器还可以将关于这些附加中间节点的信息包括到发送回TLS客户端的ServerHello中。可以用相同的方式来构建提供给TLS客户端的信息,并包含与已经在先前ClientHello中发送的中间节点信息类似信息元素,但是还可以不同地构建,并可以甚至用TLS消息的不同部分发送。TLS服务器确保TLS连接将满足全部中间节点的要求。例如,针对需要访问密钥材料的路径中的每个中间节点,TLS服务器还包括ServerHello中的所需密钥材料。应当对密钥材料加密,使得仅预期的中间节点可以对其进行解密,但是可以备选地不加密的发送密钥。密钥材料可以包括在TLS连接中内部使用的任何密钥。它可以例如是以下的全部或任何:-用于上行链路或下行链路业务的加密密钥,以及-用于上行链路或下行链路业务的认证密钥,如以下将更详细描述的,TLS服务器还从加密或认证密钥导出密钥,并将这些密钥发送给中间节点。如果TLS客户端或TLS服务器使用这些导出的密钥来对一些分组或一些分组的仅部分或全部进行加密或整体保护。相应中间节点被限制为仅对用导出密钥处理的分组/部分进行解密/修改,并且不对用正常TLS加密/认证密钥处理的分组/部分进行解密/修改。可以例如用以下方式的一些对传送至中间节点密钥材料进行加密:·使用属于中间节点的公钥。TLS服务器可以事先已知公钥,包括在ClientHello中,或在接收ClientHello之后通过使用中间节点的标识从某一第三方取回,或通过使用中间节点标识(例如使用基于标识的加密)导出。·使用TLS服务器和中间节点共享的秘密(对称密钥、密码)。TLS服务器可以事先已知共享秘密,包括在ClientHello中,或在接收ClientHello之后通过使用中间节点的标识从某一第三方取回。中间节点可以通过查看TLSServerHello来检查TLS连接将满足它们的要求以及TLS服务器已经接受它们包括在TLS通信中。中间节点提取针对它们的任何密钥材料并且如果需要则对密钥材料进行解密。中间节点存储密钥材料,以在将在客户端/服务器之间传送的TLS记录层分组上使用。TLS客户端可以从ServerHello看出TLS服务器已经接受了包括中间节点和它们的能力。如果TLS客户端和/或TLS服务器知晓中间节点的存在并且不希望同意包括这些中间节点,或不同意一些中间节点关于TLS连接的要求,它可以在ClientHello中指示这一点,要求中间节点无论如何向TLS客户端转发ClientHello消息。TLS客户端还可以指示它希望排除特定中间节点的原因(例如如网上银行的高度安全或敏感信息),或它应当排除的原因(例如为排除的服务支付或具有特殊权利)。如果TLS客户端或服务器不同意包括中间节点并给它们特定能力,则TLS客户端或TLS服务器可以取消TLS握手并且可以作为替代向另一方发送指示这一点的错误消息。一旦TLS服务器作出这种判定,在步骤9:40a中指示这一点。备选地,根据备选步骤9:40b,TLS服务器还可以具有以下选项:在TLS服务器不同意包括中间节点的情况下,选择继续TLS握手,而不包括中间节点。替代于在ServerHello中向中间节点发送密钥材料,可以在TLS握手中的另一稍后消息中或在非握手消息中发送密钥材料。用图9中的可选步骤9:50指示后一情况。在这种情况下可以由TLS客户端或TLS服务器发送密钥材料。可以用各种方式实现授权中间节点访问TLS业务,其中访问可以限制为读取访问、修改访问或包括两种访问类型。根据一个实施例,TLS客户端/TLS服务器可以针对加密和/或消息认证选择“空”密码变换。例如,如果授权读取访问,则可以选择空加密算法。备选地,可以选择具有“选择性”保护的密码算法,例如对有效载荷而不对首部加密的加密算法,例如AEAD(具有附加数据的认证加密)。如以下将描述的,另一选项是使用密钥管理。TLS握手提供所谓的主密钥,从主密钥导出加密和认证密钥。可以针对“上行链路”(客户端到服务器)和“下行链路”(服务器到客户端)导出不同密钥。为授权中间节点访问业务内容,允许中间节点访问合适的密钥。例如,如果授权中间节点仅下行链路业务的读取访问,仅向中间节点提供相应服务器到客户端解密密钥等。因此可以提供选择性的“读取”和/或“写入”访问,并分别用于上行链路和/或下行链路。TLS连接的未来扩展可以允许附加密钥的使用,例如不同的密钥以保护消息的不同部分和/或用于不同类型消息的不同密钥。在这种情况下,可以向中间节点提供密钥的相应子集。图10是示出如上所述TLS客户端已知的中间节点的插入的信令方案。图11是示出如上所述TLS服务器已知的中间节点的插入的信令方案。图12是示出如上所述TLS客户端已知的中间节点的插入的信令方案。图13是如上所述示出多个中间节点可以如何插入TLS连接的信令方案。图14是TLS服务器的功能模块的简化说明,其中连接建立模块1410被配置为执行图16的步骤16:2,评估模块1430被配置为执行步骤16:3并且密钥处理模块1420被配置为处理要提供给中间节点的密钥。图15是根据一个实施例示出TLS客户端的框图,其中图14的模块可以实现为包括可执行指令的软件模块,可执行指令在存储装置1520的存储器1530上存储。将理解的是参照图14或15描述的架构还可以应用于非TLS服务器。在备选实施例中,中间节点可以替代于将错误消息发送回TLS客户端,使得TLS服务器知晓它的存在。这具有降低所需往返次数的益处,并且因此也减小在TLS客户端和TLS服务器可以用合适的应用协议开始通信之前的延时。然而,这需要对TLS处理的一些改变。现在将参照图16的信令方案描述第一备选实施例。在第一步骤16:1中,TLS客户端向TLS服务器发送ClientHello,该ClientHello不包括中间节点的标识,但是它可以包括指示TLS客户端接受中间节点,或者它接受TLS服务器包括的中间节点的某种信息(例如扩展)。在另一步骤16:2中,中间节点截取ClientHello并添加以下的一些或全部:中间节点的标识(例如通过包括它的证书)、它的要求的列表,和MAC/签名,证明它是添加信息的中间节点。中间节点可以备选地只转发ClientHello并用另一单独的消息向TLS服务器发送附加信息。如果TLS服务器同意包括中间节点,则它将TLS密钥包括在步骤16:3中发送的其ServerHello中。TLS服务器可以备选地在另一消息中向中间节点发送密钥。如步骤16:4中所指示的,在向TLS客户端发送ServerHello之前,中间节点截取ServerHello并移除包括的TLS密钥以及不针对TLS客户端的其他信息。使用这些密钥,中间节点可以执行应用协议层上的一些服务。如果在ClientHello和ServerHello消息中发送在中间节点和TLS服务器之间发送的附加信息,则当计算TLS消息上的散列时,TLS服务器应当排除该信息,否则TLS客户端和TLS服务器将计算不同散列。现在将参照图17中的信令方案描述另一备选实施例。在第一步骤17:1中,TLS客户端向TLS服务器发送ClientHello,该ClientHello不包括中间节点的标识,但是它可以包括指示TLS客户端接受中间节点,或者它接受TLS服务器已经包括的一个或更多个中间节点的某种信息(例如扩展)。中间节点截取ClientHello并添加以下的一些或全部:中间节点的标识(例如通过包括它的证书)、它的要求的列表,和MAC/签名,证明它是添加信息的中间节点。如步骤17:2中所指示的,然后将该消息发送给TLS服务器。中间节点可以备选地只转发ClientHello并在另一消息中向TLS服务器发送附加信息。如果TLS服务器同意包括中间节点,则它将TLS密钥包括在用步骤17:3示出的其ServerHello中。中间节点截取ServerHello并提取出包括的TLS密钥。使用这些密钥,中间节点可以执行应用协议层上的一些服务。使用ServerHello中的信息,TLS客户端可以查看插入的中间节点的标识和它的能力/要求。然后,TLS客户端可以决定这是否可接受,并继续或取消TLS握手。如果在ClientHello消息中发送在中间节点和TLS服务器之间发送的附加信息,则当计算TLS消息上的散列时,TLS服务器应当排除该信息。TLS客户端和TLS服务器当计算TLS消息上的散列时,应当均包括或均排除ServerHello中的附加(代理)信息。如果发送附加(代理)信息作为TLS扩展,并且TLS客户端在从TLS客户端发送的ClientHello中不包括相同扩展,则它不应将这处理为由TLS的当前版本规定的致命错误。参照图18-20,现在将给出初始不使用TLS的中间节点的发现的备选实施例。图18示出了经由GGSN和MSP建立连接的客户端和服务器之间的正常(现有技术)流,其中如根据任何上述方法所提出的,端节点不能控制任何中间节点,而图19示出了根据本文描述的基本概念的方法,即不使用TLS的或可以至少初始地不应用TLS的至少客户端可以控制中间节点的参与。根据图19所示的方法包括以下步骤:客户端在步骤19:1中经由GGSN向服务器、并且步骤19:2中向中间节点(这里称为MSP)发送请求(例如HTTPget)。中间节点观察请求并检测它是否期望在将要建立的客户端-服务器连接上执行特定功能。因此如用步骤19:3指示的,中间节点因此响应(例如600消息),指示中间节点的存在(例如通过包括证书)和可选的附加信息(例如早先提到的信息(例如它期望执行的功能)),在另一步骤19:4中其由GGSN转发给客户端。在转发该响应之前,代理认证(例如签名)添加信息的至少部分(例如使用与证书相关联的密钥)。现在,客户端可以评估是否接受中间节点(MSP)。这里,步骤19:5指示客户端的用户的选项,并且步骤19:6指示用户/客户端在通信中是否接受中间节点。在后续步骤中,如用步骤19:7指示的,客户端发送以服务器为目的地的另一消息,这里用另一HTTPGET,该消息在步骤19:8中转发给中间节点并且在步骤19:9中转发给服务器。服务器在步骤19:10中验证,在步骤19:11和19:12中将其转发给客户端。图20中示出的另一实施例示出了中间节点如何首先在步骤20:3中向服务器转发请求,并且然后如上所述恰好在步骤20:5中向客户端转发响应(例如200OK)之前添加信息。另一选项允许中间节点在客户端不请求时也添加或修改安全性配置。例如,参照图19,中间节点可以作为替代用指示它存在的消息(例如错误消息)作出响应,并且还添加向客户端提议使用TLS(或某一其他安全协议)的信息。如上优选地对信息(或其部分)进行签名。然后客户端可以评估该提议并相应接受/拒绝,如上所述,即通过执行与图19中的步骤19:7-19:12相对应的步骤。换言之,中间节点可以作为它要求的一部分将请求的连接从使用非TLS“升级”至使用TLS。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1