CN105094995B - 一种内核与用户态进程间的安全通信传输方法和系统 - Google Patents

一种内核与用户态进程间的安全通信传输方法和系统 Download PDF

Info

Publication number
CN105094995B
CN105094995B CN201410211069.9A CN201410211069A CN105094995B CN 105094995 B CN105094995 B CN 105094995B CN 201410211069 A CN201410211069 A CN 201410211069A CN 105094995 B CN105094995 B CN 105094995B
Authority
CN
China
Prior art keywords
serial number
communication information
kernel
message
user space
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
CN201410211069.9A
Other languages
English (en)
Other versions
CN105094995A (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.)
Kyland Technology Co Ltd
Original Assignee
Kyland Technology 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 Kyland Technology Co Ltd filed Critical Kyland Technology Co Ltd
Priority to CN201410211069.9A priority Critical patent/CN105094995B/zh
Publication of CN105094995A publication Critical patent/CN105094995A/zh
Application granted granted Critical
Publication of CN105094995B publication Critical patent/CN105094995B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开一种内核与用户态进程间的安全通信传输方法和系统,包括以下步骤:1、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,2、用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验;3、用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较。4、根据比较结果,用户态进程从通信消息获得消息队列序号,解决Netlink协议传输过程可能被修改的危险,从而提升了系统本身的安全性。

Description

一种内核与用户态进程间的安全通信传输方法和系统
技术领域
本发明涉及Linux操作系统的内核安全,尤其涉及一种内核与用户态进程间的安全通信传输方法和系统。
背景技术
Netlink协议是用来实现用户态进程与内核进程通信的一种特殊的进程间通信,也是网络应用程序与内核通信的最常用的接口,既可以实现用户态数据到内核,也可以实现内核数据到用户态。Netlink协议做为通信的一种实现机制,本身并没有提供有效的安全传输,常规的netlink的通信消息格式如下定义,如图1-1和表1.
表1常规通信消息格式表
由于Linux系统的Netlink协议本身并没有提供安全传输机制,从带来了在Linux系统的Netlink协议传输过程可能被修改的危险,从而造成了Linux系统本身的安全问题,这是需要解决的。
发明内容
本发明实施例提供一种内核与用户态进程间的安全通信传输方法和系统,Linux系统的Netlink协议本身并没有提供安全传输机制,解决在Linux系统的Netlink协议传输过程可能被修改的危险,从而造成了Linux系统本身的安全问题。
一种内核与用户态进程间的安全通信传输方法,内核与用户态进程之间通过Netlink协议通信传输,包括如下步骤:
A、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,
当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含该下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
B、用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
C、用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;
其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
当用户态进程接收所述内核回复的包含下次发送的消息队列序号的消息超时,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
所述内核与用户态进程间的安全通信传输方法,还包括,用户态进程向内核发送通信消息时,将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和该通信信息的CRC值添加在该通信消息中的用户数据中,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后。
步骤C中的当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验进一步还包括:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度(包括头)计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
一种内核与用户态进程间的安全通信传输系统,所述传输系统中内核与用户态进程之间通过Netlink协议通信传输,包括如下模块:
A、握手通信模块,用于用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,
当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含该下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
B、发送通信消息模块,用于用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
C、接收通信消息模块,用于用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;
其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
当用户态进程接收所述内核回复的包含下次发送的消息队列序号的消息超时,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
所述接收通信消息模块中还包括,用户态进程向内核发送通信消息时,将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度(包括头)和该通信信息的CRC值添加在该通信消息中的用户数据中,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后。
所述接收通信消息模块中的当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验进一步还包括:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度(包括头)计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
本发明实施例提供一种内核与用户态进程间基于Netlink协议的传输方法和系统,该方法包括:A、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含该下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;B、用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;C、用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。Linux系统的Netlink协议本身并没有提供安全传输机制,解决在Linux系统的Netlink协议传输过程可能被修改的危险,从而造成了Linux系统本身的安全问题。
附图说明
图1-1为现有通信消息格式的结构示意图;
图1-2为本发明实施例提供一种通信消息格式的结构示意图;
图1-3为本发明实施例提供的一种内核与用户态进程间基于Netlink协议的结构示意图;
图2-1为本发明实施例提供的一种内核与用户态进程间基于Netlink协议的传输示意图;
图2-2为本发明实施例提供的一种内核与用户态进程间基于Netlink协议的握手通信传输示意图;
图2-3为本发明实施例提供的一种内核与用户态进程间基于Netlink协议的对握手通信回复的传输示意图;
图3本发明实施例提供的一种内核与用户态进程间基于Netlink协议的传输中用户态进程处理示意图;
图4为本发明实施例提供的另一种通信消息格式的结构示意图;
图5为本发明实施例提供的另一种内核与用户态进程间基于Netlink协议的传输中内核进程处理示意图。
具体实施方式
本发明针对由于Linux系统的Netlink协议本身并没有提供安全传输机制,从带来了在Linux系统的Netlink协议传输过程可能被修改的危险,从而造成了Linux系统本身的安全问题。为此提供了一种内核与用户态进程间基于Netlink协议的传输方法。
本发明首先对Netlink协议格式(也就是通信消息的格式)进行重新修改,所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度(包括头)和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
本实施例中将用户数据的包括通信消息的CRC值和下次发送的消息队列序号放置在通信信息协议的用户数据部分,由于用户数据部分可以人为设定,解决了通信消息自身CRC值的放置问题,同时保存下次发送的消息队列序号,
图1-2和表2,
表2本发明修改的通信消息格式
下面结合说明书附图,对本发明实施例进行详细说明。
图1-3和图2-1为本发明实施例提供的一种内核与用户态进程间基于Netlink协议的结构示意图和传输示意图,本发明应用于Linux系统中的用户态进程和内核之间,包括以下步骤:
S101、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,
S102、用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验
S103、用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较。
S104、根据比较结果,用户态进程从通信消息获得消息队列序号
结合图2-2对于步骤S101进一步具体实施方式展示握手通信流程,A、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含该下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
具体地,用户态进程向内核发起握手通信,内核接收该握手通信消息后,会根据消息通信类型(nlmsg_type)数值判断是否是握手通信或者是其它通信消息,用于判断通信消息的方向,本实例中该握手通信的数值为0(当然也可以其它的数值表示),该握手通信消息的CRC值保存在用户态进程发送的通信消息中,并与内核对该握手通信消息的CRC值进行校验比较,当内核对CRC值校验不成功时,内核丢失该握手通信消息;当内核的CRC值校验成功时,内核将为用户态进程保存一个用户态进程后续发送通信消息的消息队列序号表,也即用户态进程后续发送消息时的队列序号,例如:从1开始计数,一直到一个较大数值,该数值大小与内核的存储空间有关系。并选取一段消息队列序号填充通信消息中,这里的通信消息是对握手通信消息的回应,同时内核需要对回应通信消息进行CRC运算,并保存在该对应通信信息。实际上用户态进程和内核之间的接收和发送通信信息时都要对通信信息进行CRC值计算,本发明提及的CRC值计算一般为CRC-4或CRC-12方法,但是并不限于这两种计算方法。
例如:握手通信格式内容一般为
nlmsg_flags=0
nlmsg_type=0
nlmsg_seq=0
nlmsg_len=20
nlmsg_pid为本进程的pid
计算上述内容的Crc值,
对握手通信答复的内容可以是:
nlmsg_flags=0
nlmsg_type=0
nlmsg_seq内核为用户态进程分配的seq_id,同时记录在内核的在用seq_id表中,为后续查找配备使用
nlmsg_len=28
nlmsg_pid接收到进程的pid
计算上述内容crc值。
结合图2-3对于步骤S102进一步具体实施方式展示用户态进程对握手通信回复的处理流程,
用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
如图2-2中,用户态进程对内核回复消息包括的CRC值和针对内核回复消息计算获得的CRC值进行比较,这里的比较结果是握手通信是否完成的一个条件,其中当比较结果一致时,握手通信完成,用户态进程将内核回复的消息中的下次发送的消息队列序号添加到用户态进程发送的通信消息中,作为用户态进程发送通信消息的队列序号;当比较结果不一致时,代表握手通信不成功,用户态进程丢该内核回复的包含该消息队列序号的消息。
如图2-3,对于步骤S103和S104进一步具体实施方式展示用户态进程发送通信消息的处理流程.
用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息。
具体地,用户态进程向内核发送通信信息,内核接收到该消息后,将首先进行对通信消息的CRC比较,根据CRC比较结果,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
另外地,当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息。
如图3所示,进一步展示了内核向用户态进程发送添加了下次发送的消息队列序号的通信消息时,当用户态进程接收所述内核回复的包含下次发送的消息队列序号的通信消息超时,如何处理该通信消息,本实施中,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
如图3所示,进一步展示了内核向用户态进程发送添加了下次发送的消息队列序号的通信消息时,用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,
情况1,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
情况2,当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验;
情况2-1,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;
情况2-2,当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
注意:这里的数次是可以使人为设定的次数,例如1或2次等等,
图4为针对通信消息的用户数据的修改框图,本实施例中,
用户态进程将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度(包括头)和该通信信息的CRC值添加在该通信消息中的用户数据中,在本实施例中成为消息数据头,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后,。
图5为内核对通信消息新格式的校验处理流程图,
基于图4中通信消息的用户数据又添加了消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度(包括头)和该通信信息的CRC值,本实施例与步骤S103中的对于CRC值校验不一致时的不同处理方法,步骤S103的要求用户态进程向内核发送数次通信消息,这里处理的安全性和准确性增加了,但是又可能带来一些系统内通信消息传输的时延,为此,本例基于用户数据保存在一份通信消息的数据头(也就是除了用户数据本身的部分),因为通信消息在生成时可能发生一些跳变造成CRC值的错误,为此,在用户数据保存同样的数据头的内容来确保因为跳变造成的CRC值错误引起的重新发送请求信息(这里的跳变可能是消息通信类型在生成通信消息引起的),根据通信消息的用户数据的变化。具体过程如下:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度(包括消息数据头)计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
本发明实施例提供的一种内核与用户态进程间的安全通信传输系统,所述传输系统中内核与用户态进程之间通过Netlink协议通信传输,包括如下模块:
A、握手通信模块,用于用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对所述具有握手通信消息的CRC值进行校验,
当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含该下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
B、发送通信消息模块,用于用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
C、接收通信消息模块,用于用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;
其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
当用户态进程接收所述内核回复的包含下次发送的消息队列序号的消息超时,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
所述接收通信消息模块中还包括,用户态进程向内核发送通信消息时,将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度(包括头)和该通信信息的CRC值添加在该通信消息中的用户数据中,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后。
所述接收通信消息模块中的当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验进一步还包括:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度(包括头)计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种内核与用户态进程间的安全通信传输方法,内核与用户态进程之间通过Netlink协议通信传输,其特征在于,包括如下步骤:
A、用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对具有握手通信消息的CRC值进行校验,
当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
B、用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
C、用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
当该通信消息中的消息队列序号比较一致时,将内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;
其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
2.根据权利要求1所述的内核与用户态进程间的安全通信传输方法,其特征在于:所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
当用户态进程接收所述内核回复的包含下次发送的消息队列序号的消息超时,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
3.根据权利要求1或2所述的内核与用户态进程间的安全通信传输方法,其特征在于:所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
4.根据权利要求1所述的内核与用户态进程间的安全通信传输方法,其特征在于:还包括,用户态进程向内核发送通信消息时,将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和该通信消息的CRC值添加在该通信消息中的用户数据中,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后。
5.根据权利要求1或4所述的内核与用户态进程间的安全通信传输方法,其特征在于:步骤C中的当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验进一步还包括:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
6.一种内核与用户态进程间的安全通信传输系统,所述传输系统中内核与用户态进程之间通过Netlink协议通信传输,其特征在于,包括如下模块:
A、握手通信模块,用于用户态进程向内核发起握手通信,所述握手通信由内核接收用户态进程发送通信消息,其中内核对具有握手通信消息的CRC值进行校验,
当所述握手通信消息的CRC值校验不成功时,内核丢弃该握手通信消息;当所述握手通信消息的CRC值校验成功时,内核创建一个为用户态进程分配的消息队列序号表,该消息队列序号表包括用户态进程发送通信消息的队列序号,并向用户态进程回复包含下次发送的消息队列序号的通信消息,将用户态进程回复包含该消息队列序号的消息的CRC值,其中回复含该消息队列序号的通信消息的CRC值;
B、发送通信消息模块,用于用户态进程接收所述内核回复的包含该消息队列序号的通信消息,对内核回复的包含该消息队列序号的通信消息的CRC值进行校验,
当内核回复的包含该消息队列序号的通信消息的CRC值校验不成功时,丢弃该内核回复的包含该消息队列序号的通信消息;当所述内核回复的包含该消息队列序号的通信消息的CRC值校验成功时,将该消息队列序号添加到用户态进程发送的通信消息中;
C、接收通信消息模块,用于用户态进程向内核发送包括消息队列序号的通信消息,内核接收到该通信消息时,首先将通信消息中的消息队列序号与内核保存的消息队列序号表进行比较,当该通信消息中的消息队列序号比较不一致时,丢弃该通信消息;
当该通信消息中的消息队列序号比较一致时,将内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验,当校验结果比较不一致时,丢弃该通信消息;当校验结果比较一致时,内核向用户态进程发送添加了下次发送的消息队列序号的通信消息;
其中所述通信消息包括消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和用户数据,其中用户数据包括通信消息的CRC值和下次发送的消息队列序号。
7.根据权利要求6所述的内核与用户态进程间的安全通信传输系统,其特征在于:所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
当用户态进程接收所述内核回复的包含下次发送的消息队列序号的消息超时,用户态进程向内核发送数次包括消息队列序号的通信消息;当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信。
8.根据权利要求6或7所述的内核与用户态进程间的安全通信传输系统,其特征在于:所述接收通信消息模块中的所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息进一步包括:
用户态进程将所述内核回复的包含该下次发送的消息队列序号的通信消息中的队列序号与所述内核回复的下次发送的消息队列序号的消息对应的通信消息中的队列序号比较,当该队列序号比较不一致时,用户态进程向内核发起重新握手通信;
当该队列序号比较一致时,对所述内核回复的包含该队列序号的消息计算的CRC值和该通信消息中保存的CRC值进行校验,当该CRC值校验不一致时,用户态进程向内核发送数次包括消息队列序号的通信消息,当该发送次数超过设定的数值时,用户态进程向内核发起重新握手通信;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
9.根据权利要求6所述的内核与用户态进程间的安全通信传输系统,其特征在于:所述接收通信消息模块中还包括,用户态进程向内核发送通信消息时,将所述通信消息中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号、消息的字节长度和该通信消息的CRC值添加在该通信消息中的用户数据中,位于用户数据包括通信消息的CRC值和下次发送的消息队列序号之后。
10.根据权利要求6或9所述的内核与用户态进程间的安全通信传输系统,其特征在于:所述接收通信消息模块中的当该通信消息中的消息队列序号比较一致时,对内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验进一步还包括:
当内核对该通信消息计算的CRC值和通信消息中保存的CRC值校验不一致时,内核将保存在其用户数据中的消息通信标志、消息通信类型、消息队列序号、用户态进程发送消息进程的序号和消息的字节长度计算获得的CRC值与该用户数据中保存的CRC值进行校验,当该CRC值校验不一致时,丢弃该通信消息;当该CRC值校验一致时,用户态进程从所述内核向用户态进程发送添加了下次发送的消息队列序号的通信消息中提出下次发送的消息队列序号。
CN201410211069.9A 2014-05-19 2014-05-19 一种内核与用户态进程间的安全通信传输方法和系统 Active CN105094995B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410211069.9A CN105094995B (zh) 2014-05-19 2014-05-19 一种内核与用户态进程间的安全通信传输方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410211069.9A CN105094995B (zh) 2014-05-19 2014-05-19 一种内核与用户态进程间的安全通信传输方法和系统

Publications (2)

Publication Number Publication Date
CN105094995A CN105094995A (zh) 2015-11-25
CN105094995B true CN105094995B (zh) 2019-02-12

Family

ID=54575500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410211069.9A Active CN105094995B (zh) 2014-05-19 2014-05-19 一种内核与用户态进程间的安全通信传输方法和系统

Country Status (1)

Country Link
CN (1) CN105094995B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109343977B (zh) * 2018-09-21 2021-01-01 新华三技术有限公司成都分公司 跨态通信方法和通道驱动装置
CN114090273A (zh) * 2020-07-30 2022-02-25 华为技术有限公司 一种进程间通信的方法、装置及计算机存储介质
CN113849238B (zh) * 2021-09-29 2024-02-09 浪潮电子信息产业股份有限公司 数据通信方法、装置、电子设备及可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428226A (zh) * 2013-08-30 2013-12-04 天津汉柏汉安信息技术有限公司 一种用户态与内核通信的方法与系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5018138A (en) * 1987-11-10 1991-05-21 Echelon Systems Corporation Protocol for network having a plurality of intelligent cells
WO2007149745A2 (en) * 2006-06-19 2007-12-27 Liquid Computing Corporation Methods, systems and protocols for application to application communications
US20110228714A1 (en) * 2010-03-02 2011-09-22 Balash Akbari Method and system for retransmission in asm
GB2496454B (en) * 2011-11-14 2013-10-09 Renesas Mobile Corp Wireless communication network
CN102629202A (zh) * 2012-03-07 2012-08-08 维图通讯有限公司 一种处理内嵌多模块物联网移动终端设备数据系统的方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103428226A (zh) * 2013-08-30 2013-12-04 天津汉柏汉安信息技术有限公司 一种用户态与内核通信的方法与系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于netlink机制内核空间与用户空间通信的分析;董昱,马鑫;《测控技术》;20070930;第26卷(第9期);第57-60页

Also Published As

Publication number Publication date
CN105094995A (zh) 2015-11-25

Similar Documents

Publication Publication Date Title
US9981187B2 (en) Method and apparatus for simulating sound in virtual scenario, and terminal
US10166481B2 (en) Method, device and system for sharing of game characters
CN105094995B (zh) 一种内核与用户态进程间的安全通信传输方法和系统
CN105354505B (zh) 一种图像适配方法及电子设备
CN105898741A (zh) 无人机的控制方法及控制系统和无人机系统
CN107733883B (zh) 一种检测批量注册账号的方法及装置
CN108228363A (zh) 一种消息发送方法及装置
US20150238865A1 (en) Method for identifying a client's request signal at game based on web
CN104780042A (zh) 一种即时通信的双层认证方法、装置及系统
WO2015184754A1 (zh) 一种移动终端及移动终端间实现名片交换的方法
CN107277163B (zh) 一种设备远程映射方法及装置
CN110022327B (zh) 一种短信认证测试方法和装置
US9760326B2 (en) Print facilitation
JP2018129791A5 (zh)
CN106572066B (zh) 一种实体身份有效性验证方法及其装置
CN114371863A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
CN109905395A (zh) 一种验证客户端可信的方法及相关装置
CN111177661B (zh) 建筑信息模型构件版权认证方法及相关产品
CN108200043A (zh) 图片验证码验证方法和图片验证码验证装置
WO2014201991A1 (zh) 一种购买应用的方法及终端
CN114301590A (zh) 基于tpm的无人机机载控制系统的可信启动方法及系统
CN103428667B (zh) 安全控制方法、运营管理计费系统、应用商店和移动终端
KR101946620B1 (ko) 서버의 서명 데이터를 포함하는 데이터 블록을 생성하는 방법 및 그 서버
CN111125250A (zh) 区块链上互联网评价数据的存储方法及其装置
CN108509329B (zh) 对客户端上执行的操作进行验证的方法及装置

Legal Events

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