首页 / 专利库 / 电脑零配件 / 接口 / 一种在TCP连接阶段传递客户端信息的方法

一种在TCP连接阶段传递客户端信息的方法

阅读:511发布:2021-04-13

专利汇可以提供一种在TCP连接阶段传递客户端信息的方法专利检索,专利查询,专利分析的服务。并且本 发明 公布了一种在TCP连接阶段传递客户端信息的方法,通过改造通讯双方的协议栈,使得在客户端传输层的上端 接口 处过滤应用层发起的连接 请求 ,在客户端传输层的下端与网络层之间的接口处过滤网络包的发送与接收,在服务端传输层与网络层之间的接口处过滤网络包的接收;设定TCP的握手过程包括约定模式和协商模式,在TCP的握手过程中附加交换客户端的应用程序信息,从而实现精细的网络 访问 控制,达到增强网络安全效果,也可为以服务保障为目标的包筛选提供依据。本发明在TCP连接报文中传递客户端 进程 详细信息,能供TCP监听端进行访问授权,可广泛应用于网络安全中的访问控制。,下面是一种在TCP连接阶段传递客户端信息的方法专利的具体信息内容。

1.一种在TCP连接阶段传递客户端进程信息的方法,通过改造通讯双方的协议栈,使得在客户端传输层的上端接口处过滤应用层发起的连接请求,在客户端传输层的下端与网络层之间的接口处过滤网络包的发送与接收,在服务端传输层与网络层之间的接口处过滤网络包的接收;设定TCP的握手过程包括约定模式和协商模式,在TCP的握手过程中附加交换客户端进程信息,从而实现精细的网络访问控制,达到增强网络安全效果;所述方法在TCP连接阶段的处理包括如下步骤:
步骤一,当客户端进程的连接请求送达协议栈时,开始采集客户端进程信息,将此信息缓存起来;所述客户端进程信息包括:进程的账号、名称、哈希值、代码签名状态及当前线程的调用栈信息;
步骤二,当协议栈的传输层模对TCP连接请求解析完成后,会构造SYN报文,发送到网络层;在约定模式下,将提取出步骤一中缓存的客户端进程信息编码到SYN报文的载荷中;
在协商模式下,则提取出SYN报文中的连接信息,在缓存中建立所述连接信息与步骤一中提取到的客户端进程信息的映射;
步骤三,SYN报文传送至服务端时,服务端尝试提取报文中携带的客户端进程信息,并根据情况应答,回送报文包括SYN+ACK确认连接报文、普通RST拒绝连接报文、带有客户端进程信息请求数据的RST报文;
步骤四,客户端接收到服务器的应答报文,根据报文确定通讯双方为连接成功或连接失败,当报文为带有客户端进程信息请求数据的RST报文时,客户端从缓存中提取出连接信息和进程信息,按客户端进程信息请求数据中的要求重新构造SYN报文,在报文中携带客户端进程信息并发送;
步骤五,连接成功或连接失败均销毁前述步骤中创建的各项缓存;
由此实现在TCP连接阶段传递客户端进程信息。
2.如权利要求1所述在TCP连接阶段传递客户端进程信息的方法,其特征是,所述改造通讯双方的协议栈具体包括改写TCP/IP协议栈驱动或采用过滤器或挂钩技术。
3.如权利要求1所述在TCP连接阶段传递客户端进程信息的方法,其特征是,在所述约定模式下,客户端和服务端均假定对方能够处理握手报文中携带的客户端进程信息;在所述协商模式下,客户端假定服务方不需要或不能够处理握手报文中携带的客户端进程信息,直到服务端回送客户端进程信息请求时,客户端才构造并发送携带客户端进程信息的握手报文。
4.如权利要求1所述在TCP连接阶段传递客户端进程信息的方法,其特征是,步骤二在约定模式下将提取出步骤一中缓存的客户端进程信息编码到SYN报文的载荷中;具体包括如下过程:
A1,提取出缓存的客户端进程信息,用预定的封装算法将客户端进程信息转换为字节数组,添加到SYN报文的传输层载荷数据;
A2,重新计算SYN报文TCP首部的校验和;
A3,可调整SYN报文IP首部中的报文长度字段,并重新计算IP首部的校验和;
步骤二在协商模式下具体包括如下过程:
B1,提取出SYN报文中包含的初始连接信息,包括目标IP地址、目标端口号、SYN序号;
B2,在缓存中建立初始连接信息到客户端进程信息的映射关系,以便在服务端回送请求时重新构造SYN报文;
B3,为B2中建立的映射关系创建一个定时器处理过程,用于在连接超时后从缓存中销毁初始连接信息、客户端进程信息及映射的数据结构。
5.如权利要求4所述在TCP连接阶段传递客户端进程信息的方法,其特征是,使用哈希表存储在缓存中建立的初始连接信息到客户端进程信息的映射关系信息。
6.如权利要求1所述在TCP连接阶段传递客户端进程信息的方法,其特征是,步骤三中,当SYN报文传送至服务端时:
当客户端工作在约定模式下时,报文中携带客户端进程信息,服务端根据预设的规则验证是否允许连接;如果不允许,将回送普通的RST报文拒绝连接;如果允许,将回送SYN+ACK报文;
当客户端工作在协商模式下时,SYN报文中没有客户端进程信息,服务端将回送RST报文,并在RST报文中附加客户端进程信息请求数据,用于客户端重新发送SYN报文时参考。
7.如权利要求6所述在TCP连接阶段传递客户端进程信息的方法,其特征是,当客户端工作在协商模式下时,在RST报文中附加客户端进程信息请求数据中可包含加密方法及密钥协商信息。
8.如权利要求1所述在TCP连接阶段传递客户端进程信息的方法,其特征是,步骤四当报文为带有客户端进程信息请求数据的RST报文时,客户端从缓存中提取出连接信息和进程信息,按客户端进程信息请求数据中的要求重新构造SYN报文,在报文中携带客户端进程信息并发送;具体包括以下过程:
C1,从RST报文中提取出客户端进程信息请求数据;
C2,从RST报文中还原出初始连接信息;
C3,在缓存中用初始连接信息查找映射的客户端进程信息;
C4,根据C1中提取出的客户端进程信息请求数据中的算法和密钥,将客户端进程信息用封装算法转换为字节数组,添加到SYN报文的传输层载荷数据;
C5,重新计算SYN报文TCP首部的校验和;
C6,可调整SYN报文IP首部中的报文长度字段,并重新计算IP首部的校验和;
C7,发送新构造的SYN报文。

说明书全文

一种在TCP连接阶段传递客户端信息的方法

技术领域

[0001] 本发明属于网络安全技术领域,涉及网络安全中的访问控制,尤其涉及一种在TCP连接报文中段传递客户端进程详细信息的方法,该客户端进程详细信息可供TCP监听端进行访问授权。

背景技术

[0002] 为了支持异构网络之间的互联互通,减少网络设计的复杂性,简化网络设备的实现,传输控制协议/因特网互联协议(TCP/IP)采用分层结构实现。以TCP/IP的四层模型为例,从上至下分别有:应用层、传输层、网络互连层、主机到接口层。所有的主流操作系统都遵从此分层模型实现TCP/IP(协议栈)。互联网发展到今天的规模,分层模型功不可没,但分层实现的也有其弱点:随着信息的逐级传递,过程中高层次的部分信息会被丢弃,这使得以信息安全为目标的网络访问控制难以实现,也使得以服务保障为目标的包筛选缺少了依据。
[0003] TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的,所以只能用于端到端的通讯。其握手过程如下:客户端发送带有SYN(“同步”)标志的包,以请求连接;服务端发送带有SYN和ACK(“确认”)标志的包,以应答连接;客户端发送带有ACK标志的包,连接建立完毕。以典型的基于TCP的客户端/服务器通讯为例:服务端程序在指定的TCP端口上监听连接,客户端程序发起连接,连接请求发送到协议栈时,客户端的进程信息还是已知的,请求经过协议栈从应用层传递到传输层后,进而构造成SYN报文后,进程相关的信息(诸如进程名称、用户账号等)均被丢弃,取而代之网络地址和端口号。例如,一个Web服务在TCP 80端口监听,预期响应浏览器发起的连接请求,但是当一个连接请求到达后,仅根据网络地址和端口信息,是无法确定对方到底是一个浏览器,还是一个恶意的工具。套用访问控制模型,这种情况就是因主体不明确而导致控制失效。
[0004] 网际网路安全协议(Internet Protocol Security,IPsec)是一个协议组合,透过对IP报文进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议的集合)。IPsec由两大部分组成:
[0005] (一)建立安全分组流的密钥交换协议,即互联网密钥交换(IKE)协议;
[0006] (二)保护分组流的协议,包括加密分组流的封装安全载荷协议(ESP协议)或认证头协议(AH协议)协议,用于保证数据的机密性、来源可靠性(认证)、无连接的完整性并提供抗重播服务。IPsec用来提供:
[0007] (一)入口对入口通信安全,在此机制下,分组通信的安全性由单个节点提供给多台机器(甚至可以是整个局域网);
[0008] (二)端到端分组通信安全,由作为端点的计算机完成安全操作。
[0009] IPSec最主要的用途是构造虚拟专用网络(VPN),通常实现为专用的设备。上述的任意一种模式都可以用来构建虚拟专用网(VPN)。但是,受限于分层框架,IPSec的认证过程仅是针对用户身份的,与具体的网络应用程序无关,也就是说,基于IPSec的隧道建立起来之后,客户端和服务端之间的访问仍然是不限制的,此时,如果有恶意代码尝试攻击服务端,数据仍然是可达的。此外,IPSec在应用时,会明显的改变用户的使用习惯,例如,在访问指定的网络资源前需要先进行一个需要用户干预的认证过程,例如输入账号口令或插入智能卡。再有,IPSec被设计为端到端的(隧道),与现有互联网的开放特征不尽匹配,难以广泛应用。

发明内容

[0010] 为了克服上述现有技术的不足,本发明提供一种在TCP连接阶段传递客户端信息的方法,在兼容现有的TCP/IP规范、不影响上层应用开发的前提下改造协议栈的实现,通过在TCP的握手过程中附加交换客户端的应用程序信息,实现精细的访问控制,从而达到增强的网络安全效果,还可为服务质量保证(QoS)提供附加的支持。
[0011] 本发明提供的技术方案是:
[0012] 一种在TCP连接阶段传递客户端信息的方法,通过改造通讯双方的协议栈,在TCP的握手过程(包括约定模式和协商模式)中附加交换客户端的应用程序信息,实现精细的访问控制,从而达到增强的网络安全效果,并为服务质量保证(QoS)提供附加支持;
[0013] 具体地,通过改写TCP/IP协议栈驱动(针对开源系统)或过滤器/挂钩技术(针对开源系统或非开源系统),改造通讯双方的协议栈,对于客户端系统:在其传输层的上端接口处,过滤应用层发起的连接请求;在其下端与网络层之间的接口处,过滤网络包的发送与接收;对于TCP服务端系统:在其传输层与网络层之间的接口处,过滤网络包的接收。
[0014] 在对TCP连接的握手过程处理中,本方法定义了两种工作模式以适应不同的应用场景:一、约定模式,在此模式下,客户端和服务方均假定对方能够处理握手报文中携带的客户端应用程序信息;二、协商模式,在此模式下,客户端假定服务方不需要或不能够处理握手报文中携带的客户端应用程序信息,直到服务端显式的回送客户端应用程序信息请求时,客户端才构造并发送携带客户端应用程序信息的握手报文。
[0015] 本方法在TCP连接阶段的处理包括如下步骤:
[0016] 步骤一,当客户端进程的连接请求送达协议栈时,开始采集客户端的进程信息,可包括进程的账号、名称、哈希值、代码签名状态及当前线程的调用栈信息,将此信息缓存起来。
[0017] 步骤二,当协议栈的传输层模对TCP连接请求解析完成后,会构造SYN报文,发送到网络层,在约定模式下,将提取出步骤一中缓存的客户端进程信息,将其编码到SYN报文的载荷中;在协商模式下,则提取出SYN报文中的连接信息,在缓存中建立其与步骤一中提取到的客户端进程信息的映射,以便后续处理。
[0018] 进一步的,所述步骤二在约定模式下具体包括:
[0019] 步骤A1,提取出缓存的客户端进程信息,用预定的封装算法将其转换为字节数组,添加到SYN报文的传输层载荷数据;
[0020] 封装算法将信息编码为字节数组,例如:将信息的中包含的内容逐一添加到一个C语言的结构(struct)中,然后使用AES加密算法加密后,再将加密后的结构的内存复制到SYN报文的载荷数据里。
[0021] 步骤A2,重新计算SYN报文TCP首部的校验和;
[0022] 步骤A3,可调整SYN报文IP首部中的报文长度字段,并重新计算IP首部的校验和。
[0023] 进一步的,所述步骤二在协商模式下具体包括:
[0024] 步骤B1,提取出SYN报文中包含的初始连接信息,具体有目标IP地址,目标端口号,SYN序号。
[0025] 步骤B2,在缓存中建立初始连接信息到客户端进程信息的映射,以便在服务端回送请求时重新构造SYN报文。
[0026] 这里映射指的是在内存中维护初始连接信息与客户端进程信息的一一对应关系,在实现时可以使用哈希表存储,以加速查找速度。
[0027] 步骤B3,为步骤B2中建立的映射创建一个定时器处理过程,以便在连接超时后从缓存中销毁初始连接信息、客户端进程信息及其映射的数据结构。
[0028] 步骤三,SYN报文传送至服务端,如果服务端的协议栈没有经过前面所述的协议栈改造,将按常规的方式应答SYN+ACK响应或RST(复位)拒绝。否则服务端将尝试提取报文中携带的客户端进程信息,如果客户端工作在约定模式下,报文中将携带客户端进程信息,服务端将根据预设的规则验证是否允许此连接,如果不允许,将回送普通的RST报文拒绝连接,如果允许,将回送SYN+ACK报文;如果客户端工作在协商模式下,SYN报文中没有客户端进程信息,服务端将回送RST报文,并在RST报文中附加客户端进程信息请求数据,以期望客户端重新发送SYN报文。
[0029] 在RST报文中附加的客户端进程信息请求数据,可包含加密算法的选择及其密钥协商等信息,编码时可以用共钥加密算法保证其安全性。
[0030] 步骤四,客户端接收到服务器的应答后,根据不同的情况可能有:情况一,服务端应答SYN+ACK报文确认连接,则发送ACK应答,连接建立成功;情况二,服务端应答普通的RST拒绝连接报文,则向应用层返回连接失败;情况三,服务端应答带有客户端进程信息请求数据的RST报文,则从缓存中提取出连接信息和进程信息,按客户端进程信息请求数据中的要求重新构造SYN报文,在报文中携带上客户端进程信息。
[0031] 进一步的,在步骤四的第三种情况下,包括以下步骤:
[0032] 步骤C1,从RST报文中提取出客户端进程信息请求数据。
[0033] 步骤C2,从RST报文中还原出初始连接信息。
[0034] 步骤C3,在缓存中用初始连接信息查找其映射的客户端进程信息。
[0035] 步骤C4,根据步骤C1中提取出的客户端进程信息请求数据中要求的算法和密钥,将客户端进程信息用封装算法将其转换为字节数组,添加到SYN报文的传输层载荷数据;
[0036] 步骤C5,重新计算SYN报文TCP首部的校验和;
[0037] 步骤C6,可调整SYN报文IP首部中的报文长度字段,并重新计算IP首部的校验和。
[0038] 步骤C7,发送新构造的SYN报文。
[0039] 步骤五,连接建立成功或者连接失败,均将销毁前述步骤中创建的各项缓存,至此,客户端的处理流程完毕,在TCP连接阶段实现客户端信息的传递。
[0040] 本发明具体实施中,采用本发明方法对客户端在约定模式下主动携带进程信息(三路握手)和客户端在协商模式下被动携带进程信息(五路握手)的情况进行处理,均在TCP连接阶段实现了客户端信息的传递。
[0041] 与现有技术相比,本发明的有益效果是:
[0042] 本发明提供一种在TCP连接阶段传递客户端信息的方法,通过在TCP的握手过程中附加交换客户端的应用程序信息,实现精细的访问控制,从而达到增强的网络安全效果,还可为服务质量保证(QoS)提供附加的支持。本发明是在兼容现有的TCP/IP规范、不影响上层应用开发的前提下改造协议栈的实现,由此实现以信息安全为目标的网络访问控制,同时也可为以服务保障为目标的包筛选提供依据。本发明在TCP连接报文中段传递客户端进程详细信息,该客户端进程详细信息可供TCP监听端进行访问授权,可广泛应用于网络安全中的访问控制。附图说明
[0043] 图1是本发明实施例中TCP/IP协议栈挂接位置的示意图;
[0044] 其中,实线表示报文的发送流程,虚线表示报文的接收流程;HookTI表示在协议栈传输层的入口点拦截TCP连接请求的挂接点;HookTO表示在传输层与网络层之间的出口点拦截网络包的发送的挂接点;HookRI表示在传输层与网络层之间的入口点拦截传输层包的接收的挂接点。
[0045] 图2是本发明方法的流程框图
[0046] 图3是本发明实施例一约定模式下传递客户端信息的方法流程框图。
[0047] 图4是本发明实施例二协商模式下传递客户端信息的方法流程框图。

具体实施方式

[0048] 下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。
[0049] 本发明提供一种在TCP连接阶段传递客户端信息的方法,通过改造通讯双方的协议栈,在TCP的握手过程中附加交换客户端的应用程序信息,实现精细的访问控制,从而达到增强的网络安全效果,并为服务质量保证(QoS)提供附加支持;图1示意了实施例一和实施例二中TCP/IP协议栈挂接位置。图2示意了本发明方法的整体流程。
[0050] 改造通讯双方的协议栈,在具体实施中,针对开源系统,直接在源代码级别改造协议栈更简单,这在开发自主的系统时有效;过滤器、挂钩技术是使用并行的模块干预协议栈,兼容性更好一些,不用替换内核模块(刷机)。在实际实现中,主要通过过滤器、挂钩技术改造通讯双方的协议栈。
[0051] 以下实施例分别具体说明了客户端主动携带进程信息(三路握手)和客户端被动携带进程信息(五路握手)的情况;图3和图4分别表示了实施例一和二采用本发明方法的实施流程。
[0052] 实施例一:约定模式下客户端主动携带进程信息(三路握手)的情况:
[0053] 此实施例中,采用本发明方法在TCP连接阶段传递客户端信息包括如下步骤:
[0054] 步骤一,挂接客户端操作系统的协议栈驱动程序,在协议栈传输层的入口点拦截TCP连接请求,记作挂接点TI(HookTI);在传输层与网络层之间的出口点拦截网络包的发送,记作挂接点TO(HookTO)。
[0055] 步骤二,当客户端进程尝试发起TCP连接时,命中HookTI,HookTI处理例程即开始采集客户端的进程信息,可包括进程的账号、名称、哈希值、代码签名状态及当前线程的调用栈信息,进程信息整体记作PISet。
[0056] 步骤三,将步骤二采集的进程信息PISet,缓存起来,以供下一步骤或后续调用使用。
[0057] 步骤四,当协议栈的传输层模块对TCP连接请求解析完成后,会构造SYN报文,发送到网络层,即将命中HookTO,HookTO处理例程将提取缓存的PISet,将其添加到SYN报文的载荷数据。
[0058] 进一步的,所述步骤四,具体包括:
[0059] 步骤A,提取出缓存的PISet信息,用预定的封装算法将其转换为字节数组,添加到SYN报文的传输层数据。
[0060] 步骤B,重新计算TCP首部的校验和。
[0061] 步骤C,如果需要,调整IP首部中的报文长度字段,并重新计算IP首部的校验和。
[0062] 步骤五,SYN报文传送至服务端,服务端验证或忽略SYN报文中的PISet后,应答标准的SYN+ACK报文。
[0063] 步骤六,客户端接收到服务器应答的SYN+ACK后,发送ACK应答。
[0064] 至此,客户端的处理流程完毕,在TCP连接阶段实现客户端信息的传递。
[0065] 实施例二:协商模式下客户端被动携带进程信息(五路握手)的情况:
[0066] 此实施例中,采用本发明方法在TCP连接阶段传递客户端信息包括如下步骤:
[0067] 步骤一,挂接客户端操作系统的协议栈驱动程序,在协议栈传输层的入口点拦截TCP连接请求,记作挂接点TI(HookTI);在传输层与网络层之间的出口点拦截网络包的发送,记作挂接点TO(HookTO);在传输层与网络层之间的入口点拦截传输层包的接收,记作挂接点RI(HookRI)。
[0068] 步骤二,当客户端进程尝试发起TCP连接时,命中HookTI,HookTI处理例程即开始采集客户端的进程信息,可包括进程的账号、名称、哈希值、代码签名状态及当前线程的调用栈信息,进程信息整体记作PISet。
[0069] 步骤三,将步骤二采集的进程信息PISet,缓存起来,以供后续步骤需要时使用。
[0070] 步骤四,当协议栈的传输层模块对TCP连接请求解析完成后,会构造SYN报文,发送到网络层,即将命中HookTO,HookTO处理例程此时不会修改报文,而是提取出连接相关的信息,缓存后留待使用。
[0071] 进一步的,所述步骤四,具体包括:
[0072] 步骤A1,记录的SYN报文的目标IP、目标端口以及SYN序号,将其缓存起来,记作连接信息集CISet。
[0073] 步骤A2,针对本次连接会话,建立CISet与PISet的映射关系,记作CISet->PISet。
[0074] 步骤A3,启动一个定时器CITimer,在连接超时后销毁相关的CISet->PISet数据。
[0075] 步骤五,SYN报文传送至服务端,如果服务端强制要求验证客户端的PISet,会发送带有特定数据PIReq的RST报文,复位连接,要求客户端提供PISet。PIReq数据中,可能包括与PISet封装算法相关的参数。
[0076] 步骤六,客户端接收到服务器的RST报文后,会命中挂接点HookRI,HookTI处理例程会提取出其携带的PIReq数据,并从中还原出原始SYN报文的CISet,查找出对应的PISet后,构造新的SYN报文。
[0077] 进一步的,所述步骤六,具体包括:
[0078] 步骤B1,从RST报文的载荷数据中提取出PIReq数据。
[0079] 步骤B2,从RST报文的IP首部和TCP首部中还原出原始的CISet,即源IP,源端口号及ACK序号(减一)。
[0080] 步骤B3,由CISet查找到映射的进程信息PISet。
[0081] 步骤B4,构造新的SYN报文,根据PIReq中要求的封装算法,将PISet转换为字节数组,添加到SYN报文的传输层数据。
[0082] 步骤B5,重新计算TCP首部的校验和。
[0083] 步骤B6,如果需要,调整IP首部中的报文长度字段,并重新计算IP首部的校验和。
[0084] 步骤B7,丢弃此RST报文,不提交到传输层模块,以保持连接过程。
[0085] 步骤B8,销毁CISet,关闭定时器。
[0086] 步骤七,新SYN报文传送至服务端,服务端验证报文中的PISet后,应答标准的SYN+ACK报文。
[0087] 步骤八,客户端接收到服务器应答的SYN+ACK后,发送ACK应答。
[0088] 至此,客户端的处理流程完毕,在TCP连接阶段实现客户端信息的传递。
[0089] 需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈