一种进程间数据通讯控制方法和系统的制作方法

文档序号:6483738阅读:214来源:国知局

专利名称::一种进程间数据通讯控制方法和系统的制作方法
技术领域
:本发明涉及电子信息领域,具体涉及一种保护电子数据的控制方法。
背景技术
:数据信息的安全主要包括数据信息的静态存储安全和数据信息的动态访问安全两个方面,数据信息的安全的核心是保护重要数据的安全。有一种数据信息的安全控制方法,通过分离重要数据和非重要数据的存储空间,建立一受控制访问数据存储区域,将重要数据加密保存在受控制访问区中,非重要数据保存在非受控制访问区。在进程级别,控制进程对受控制访问区的读、写访问,一旦进程获得访问受控制访问区的数据的权限,仅允许该进程在受控制访问区内读写数据,禁止其向其他数据存储区或者其他设备发送数据,从而达到管理重要数据不被泄漏的目的。这一数据信息的安全控制方法,提供了一种在尽量不改变用户使用习惯的前提下,既可以授权进程读、写使用受控制访问区中的重要数据,又能够避免因授权带来的主动泄密的可能性,同时又不影响进程处理非重要数据的访问控制方法。但是,数据信息的动态访问安全除了考虑进程对数据存储区或者其他设备的访问控制外,还必须考虑访问了不同数据存储区的进程之间数据通讯带来的数据安全隐患。多用户、多任务系统模型中同时运行着多个应用进程,每个应用进程体在内存中包含着属于自己的数据区,并且从操作系统层提供了各种各样的进程间数据通讯的方法。从数据安全的角度,进程的数据区将成为安全系统的保护域,对进程间数据通讯必须智能地、透明地加以控制,不造成数据泄漏的进程间数据通讯正常进行,造成数据泄漏的进程间数据通讯一律阻断,保障进程间通讯的数据安全。
发明内容本发明的目的在于提出一种进程间数据通讯控制方法和系统,将承载数据的文件划分为受保护文件和非受保护文件,将系统进程划分为受监控进程和非受监控进程,访问受保护文件的进程为受监控进程,对受监控进程严格控制进程间的数据通讯,禁止受监控进程向非受监控进程发送数据,从而达到管理受保护文件重要数据的目的。具体的,本发明的上述目标是通过以下解决方法实现的一种进程间数据通讯控制方法,有一系统,有若干进程,一文件存储区,有一进程访问管理器,有一文件访问管理表,文件存储区中受访问控制保护的文件目录以及文件名存储在文件访问管理表中,归属于文件访问管理表的文件为受保护文件,不归属于文件访问管理表的文件为非受保护文件,有一进程访问管理表,在进程访问管理表中的进程为受监控进程,不在进程访问管理列表中的进程为非受监控进程,进程访问管理表具有两种管理模式,模式一进程访问管理器捕获进程发出打开文件访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名中,进程访问管理器将进程标识记录到进程访问管理表中,当该进程发出关闭打开的文件访问请求,进程访问管理器捕获该访问请求,进程访问管理器将进程标识从进程访问管理表中删除,或当该进程结束时,进程访问管理器将该进程从进程访问管理表中删除;模式二在进程访问管理表中存储预定义的受监控进程信息,进程发出打开文件访问请求,进程访问管理器捕获该访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程在进程访问管理表中,则进程访问管理器允许该进程执行打开文件访问请求,如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程不在进程访问管理表中,则进程访问管理器阻断该进程执行打开文件访问请求。进程访问管理器根据文件访问管理表的受保护文件和非受保护文件,进程访问管理表的受监控进程和非受监控进程,控制进程与其他进程间的数据通讯,其中进程访问管理器允许在进程访问管理表中的进程的数据流向在进程访问管理表中的其他进程;进程访问管理器允许不在进程访问管理表中的进程的数据流向在进程访问管理表中的进程;进程访6问管理器允许不在进程访问管理表中的进程的数据流向其他不在进程访问管理表中的进程;进程访问管理器禁止在进程访问管理表中的进程的数据流向不在进程访问管理表中的其他进程。本发明的另一目的在于,提出一种具有上述方法的系统,系统具有一中央处理器,一文件存储区,一操作系统,运行若干进程。系统具有文件访问管理表,存储受保护访问控制的文件目录以及文件的名字。系统具有进程访问管理表,存储受监控的访问进程信息,包括进程标识,系统的进程访问管理表具有两种管理模式,模式一系统中的进程在用户触发下发出打开文件访问请求,进程访问管理器捕获该访问请求,自动提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名字中,进程访问管理器将进程标识记录到进程访问管理表中,当该进程发出关闭打开的文件访问请求,进程访问管理器捕获该访问请求,进程访问管理器将进程标识从进程访问管理表中删除,或当该进程结束时,进程访问管理器将该进程从进程访问管理表中删除;模式二系统的进程访问管理表中存储预定义的受监控进程信息,系统的进程发出打开文件访问请求,进程访问管理器捕获该访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程在进程访问管理表中,则进程访问管理器允许该进程执行打开文件访问请求,如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程不在进程访问管理表中,则进程访问管理器阻断该进程执行打开文件访问请求。系统的进程访问管理器控制系统进程间的数据通讯,其中系统的进程访问管理器允许在进程访问管理表中的进程的数据流向在进程访问管理表中的其他进程;系统的进程访问管理器允许不在进程访问管理表中的进程的数据流向在进程访问管理表中的进程;系统的进程访问管理器允许不在进程访问管理表中的进程的数据流向其他不在进程访问管理表中的进程;系统的进程访问管理器禁止在进程访问管理表中的进程的数据流向不在进程访问管理表中的其他进程。上述所说的进程间数据通讯方法包括消息(Message)、共享内存(SharedMemory)、管道(Pipe)、套接字(Sockets)、远程过程调用(RPC)、动态数据交换(DDE)、对象连接与嵌入(OLE)、动态连接库(DLL)、CORBA、7DBUS数据通讯。图1是系统实现框架图图2是Windows系统上进程间数据通讯的控制示例图图3是Windows系统上剪贴板的访问流程图图4是Linux系统上进程间消息队列数据通讯的控制示例图具体实施方法下面结合附图和具体实施例对本发明进行更详细的描述。图1示出了本发明的系统实现框架图。从图1可以看出,操作系统101中存在一个访问文件A的迸程A102、一个访问文件B的进程B103、一个进程访问管理器104、一个文件存储区105。进程访问管理器104中有一文件访问管理表106,用于登记系统中受保护的文件目录或文件名字。进程访问管理器104中有一进程访问管理表107,用于登记系统的受控制进程。进程访问管理器104在进程A102进程B103与文件存储区105之间,进程访问管理器104拦截进程A102进程B103对文件存储区105的文件访问请求。文件访问管理表106中登记着文件A的名字,文件A是系统的受保护文件,文件B未登记在文件访问管理表106中,文件B是系统的非受保护文件。进程访问管理器104判断进程A102访问了受保护文件A,将进程A102登记在进程访问管理表107中,进程A102成为受监控进程;进程访问管理器104判断进程B103访问的是非受保护文件B,进程B103未在进程访问管理列表107中登记,进程B103为非受监控进程。进程访问管理器104拦截进程A102与进程B103之间的数据通讯请求,允许受监控进程A102接受非受监控进程B103的通讯数据,阻断受监控进程A102向非受监控进程B103发送的通讯数据。另外,进程访问管理器104还允许受监控进程之间的数据通讯以及非受监控进程之间的数据通讯。图2是Windows系统上进程间数据通讯的控制示例图。从图2可以看出,在windows操作系统201中有一受监控进程word.exe202、一非受监控进程Notepad.exe203、一进程访问管理器204、Windows系统广义上的API函数库集205以及文件系统206。进程访问管理器204中有一APIHOOK207,是与API205相对应的HOOK(钩子)函数库集。进程访问管理器204通过Windows系统提供的APIHOOK技术将进程数据通讯对API205的访问钩链为对APIHOOK207的访问,在APIHOOK207的处理过程中,判断数据通讯双方的进程性质是受控制进程还是非受控制进程,进一步决定是继续回调API205完成本次进程间的数据通讯,还是阻断本次进程间的数据通讯。本示例中,进程访问管理器204阻断受控制进程worclexe202向非受控制进程Notepad.exe203的数据通讯,允许受控制进程word.exe202接受非受控制进程Notepad.exe203的数据通讯。在Windows系统中提供了多种进程间数据通讯机制,如内存映射文件(Memory-MappedFiles)、共享内存(SharedMemory)、匿名管道(AnonymousPipe)、命名管道(NamedPipe)、窗口消息(尤其是WM—COPYDATA)、邮件槽(Mailslots)、剪贴板(ClippedBoard)、动态数据交换(DDE)、对象连接与嵌入(OLE)、动态连接库(DLL)、远程过程调用(RPC)、套接字(Sockets)等,其中共享内存(SharedMemoiy)、管道(Pipe)、消息(Message)、套接字(Sockets)是Windows系统进程间数据通讯的四个基本机制,基于这四个基本机制Windows系统延伸出内存映射文件(Memory-MappedFiles)、匿名管道(AnonymousPipe)、命名管道(NamedPipe)、WM—COPYDATA、邮件槽(Mailslots)、剪贴板(ClippedBoard)、动态数据交换(DDE)、对象连接与嵌入(OLE)、动态连接库(DLL)、远程过程调用(RPC)等多种进程间数据通讯机制。针对Windows系统上述进程间通讯机制,本发明通过HOOK技术拦截相应进程间通讯过程中所调用的函数进行进一步的控制处理,如进程性质的判定、命名空间的转换、通讯数据的加解密,举例来说,共享内存进程间通讯机制是通讯进程的一方通过CreateFileMapping函数创建共享内存区域,通讯进程的另一方通过OpenFileMapping函数打开共享内存区域,然后通讯进程的双方通过MapViewOffile函数得到共享内存的指针之后直接进行内存复制实现进程间数据的交换,本发明的方法将CreateFileMapping函数和OpenFileMapping函数分别钩链为CreateFileMappingHook函数和OpenFileMappingHook函数,在CreateFileMappingHook函数和OpenFileMappingHook函数中对宿主进程9进行进程访问管理表的受监控进程的判断,当判定是受监控进程时对共享内存区进行统一规律的重新命名,如将原名"\BaseNamedObjects"重定向为"\SandBox\CurrentUser\Seesions\SeesionId\BaseNamedObjects",受监控进程之间通过"\SandBox\CurrentUser\Seesions\SeesionIdXBaseNamedObjects"共享内存空间进行正常的通讯数据交换,允许非受监控进程之间通过"\BaseNamedObjects"共享内存空间进行正常的通讯数据交换,而受监控进程与非受监控进程之间由于共享内存命名空间的不同阻断了通讯数据的交换;窗口消息WM—COPYDATA的进程间通讯机制是通过SendMessage函数将数据发送给指定进程,本发明的方法将SendMessage函数辛勾链为SendMessageHook函数,在SendMessageHook函数中对宿主进程和接收方进程分别进行进程访问管理表的受监控进程的判断,回调SendMessage函数允许受监控进程之间、非受监控进程之间、非受监控进程到受监控进程之间消息传递,函数直接返回阻断受监控进程到非受监控进程之间的消息传递;套接字(Socket)进程间通讯是网络中常用的C/S通讯机制,服务端进程通过socket、listen函数创建、侦听网络端口消息,客户端进程通过socket、connect函数打开并连接到服务端口,通讯进程的双方通过send函数、recv函数发送和接收网络端口上的通讯数据,本发明的方法将send函数和recv函数分别钩链为sendhook函数和recvhook函数,在sendhook函数和recvhook函数中对宿主进程进行进程访问管理表的受监控进程的判断,当判定发送方是受监控进程时对发送的数据进行加密处理后回调send函数发送,当判定接收方是受监控进程时回调recv函数获取数据后进行解密处理,受监控的客户端进程加密发送和受监控的服务端进程接收解密保障了受监控进程之间正常数据的通讯交换,非受监控的客户端进程明文发送和非受监控的服务端进程明文接收保留了原数据的正常通讯,而受监控进程与非受监控进程之间由于单方面的加解密处理使得接收方获得的是密文数据阻断了重要数据通过网络的外泄。通过本发明的方法能够控制内存映射文件、共享内存、管道、WM一COPYDATA、剪贴板、动态数据交换、对象连接与嵌入、动态连接库、远程过程调用、套接字的进程间数据通讯。下面以图3示例具体阐述Windows系统上剪贴板的访问流程图。图3示出了本发明在Windows系统上剪贴板的访问流程图。如图3所示,步骤301应用进程Word打开了file.doc文件,当选择数据执行复制命令时系统执行步骤302及其后续步骤,当选择位置执行粘贴命令时系统执行步骤306及其后续步骤。步骤302系统拦截到复制命令后将向剪贴板拷贝数据的SetClipboardData调用钩链到SetClipboardDataHook。在SetClipboardDataHook中执行步骤303进一步判断该Word进程是否是受监控进程,如果步骤303判定该Word进程是受监控进程,则执行步骤304将系统中的剪贴板状态置位并回调SetClipboardData完成数据拷贝;如果步骤303判定该Word进程是非受监控进程,则执行步骤305将系统中的剪贴板状态清位并回调SetClipboardData完成数据拷贝。在系统中增加了一个剪贴板状态位,用于标示剪贴板中数据的性质,剪贴板状态置位表示剪贴板中是重要数据,剪贴板状态清位表示剪贴板中是普通数据。步骤306系统拦截到粘贴命令后将从剪贴板粘贴数据的GetClipboardData调用钩链到GetCHpboardDataHook。在GetClipboardDataHook中执行步骤307进一步判断该Word进程是否是受监控进程,如果步骤307判定该Word进程是受监控进程,则执行步骤310回调GetClipboardData完成数据粘贴;如果步骤307判定该Word进程是非受监控进程,则执行步骤308进一步判断系统中的剪贴板状态位,如果步骤308判定系统中的剪贴板状态位在置位状态,则执行步骤309调用返回阻止数据粘贴,如果步骤308判定系统中的剪贴板状态位在清位状态,则执行步骤310回调GetClipboardData完成数据粘贴。系统借助剪贴板状态位控制剪贴板粘贴的过程,将重要数据限制在安全域之内传播。在Linux系统中,进程间数据通讯机制主要有共享内存、消息队列、管道、套接字,以及基于套接字的CORBA通讯组件、DBUS通讯中间件。本发明通过Linux系统提供的可加载内核(LoadableKernelModules(LKMs))技术将控制进程间通讯的数据管理系统加载到Linux系统内核运行,通过置换Linux系统内核中的系统调用表sys一eal1—table的函数指针,劫持进程间数据通讯相关的系统调用到数据管理系统再构造的系统调用,在再构造的系统调用中依据进程访问管理表进行进程性质的判定、命名空间的转换、通讯数据的加解密处理控制受监控进程向非受监控进程进行数据通讯。下面以图4示例具体阐述Linux系统上进程间消息队列数据通讯的控制方法。图4是Linux系统上进程间消息队列数据通讯的控制示例图。从图4可以看出,在Linux操作系统401中有一进程A402、一进程B403、一进程访问管理器404、一对消息队列405以及文件系统406。进程A402访问了文件访问管理表407中登记的文件被系统注册在进程访问管理表408中成为受监控进程,进程B403访问的文件不在文件访问管理表407中未被系统注册在进程访问管理列表408中成为非受监控进程。通过劫持操作系统提供的msgsnd(消息发送)函数和msgrcv(消息接收)函数到msgsndhook函数和msgrcvhook函数,msgsndhook函数执行时在报文中增加发送方进程名,msgrcvhook函数执行时过滤发送方进程名并与接受方进程名一道分别进行进程访问管理表408的受监控进程的判断,允许受监控进程之间、非受监控进程之间、非受监控进程到受监控进程之间的消息接受,阻断受监控进程到非受监控进程之间的消息接受。本示例中,进程访问管理器404阻断非受控制进程B403接收受控制进程A402发送的消息,允许受控制进程A402接受非受控制进程B403发送的消息。应当理解,上述说明只是用于展示本发明,而不是用于限制本发明的保护范围。权利要求1、一种进程间数据通讯控制方法,有一系统,若干进程,一文件存储区,其特征在于包括具有一文件访问管理表,文件存储区中受访问控制保护的文件目录以及文件名存储在文件访问管理表中,归属于文件访问管理表的文件为受保护文件,不归属于文件访问管理表的文件为非受保护文件;具有一进程访问管理表,在进程访问管理表中的进程为受监控进程,不在进程访问管理列表中的进程为非受监控进程;具有一进程访问管理器;进程访问管理器根据文件访问管理表的受保护文件和非受保护文件,进程访问管理表的受监控进程和非受监控进程,控制系统中进程与进程间的数据通讯。2、如权利要求1所述的方法,进程访问管理器捕获进程发出打开文件访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名中,进程访问管理器将进程标识记录在进程访问管理表中。3、如权利要求1或2所述的方法,其中进程访问管理器捕获进程访问文件请求,进一步包括当该进程发出关闭打开的文件访问请求,进程访问管理器捕获该访问请求,进程访问管理器将进程标识从进程访问管理表中删除;或当该进程结束时,进程访问管理器将该进程从进程访问管理表中删除。4、如权利要求1所述的方法,在进程访问管理表中存储预定义的受监控进程信息;当进程发出打开文件访问请求,进程访问管理器捕获该访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名中,且该进程在进程访问管理表中,则进程访问管理器允许该进程执行打开文件访问请求;如果该文件包含在文件访问管理表的文件目录或文件名中,且该进程不在进程访问管理表中,则进程访问管理器阻断该进程执行打开文件访问请求05、如权利要求1至4所述的方法,其中进程访问管理器控制进程间的数据通讯,进一步包括允许在进程访问管理表中的进程的数据流向在进程访问管理表中的其他进程。6、如权利要求1至4所述的方法,其中进程访问管理器控制进程间的数据通讯,进一步包括允许不在进程访问管理表中的进程的数据流向在进程访问管理表中的进程。7、如权利要求1至4所述的方法,其中进程访问管理器控制进程间的数据通讯,进一步包括允许不在进程访问管理表中的进程的数据流向其他不在进程访问管理表中的进程。8、如权利要求1至4所述的方法,其中进程访问管理器控制进程间的数据通讯,进一步包括禁止在进程访问管理表中的进程的数据流向不在进程访问管理表中的其他进程。9、一种具有进程间数据通讯控制方法的系统,系统具有一中央处理器,一文件存储区,一操作系统,若干进程,其特征在于系统具有文件访问管理表,存储受保护访问控制的文件目录以及文件的名字;系统具有进程访问管理表,存储受监控的访问迸程信息,包括进程标识;系统具有一进程访问管理器,控制系统中进程访问管理表中的进程与其他进程间的数据通讯。10、如权利要求9所述的系统,系统中的进程在用户触发下发出打开文件访问请求,进程访问管理器捕获该访问请求,自动提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名字中,进程访问管理器将进程标识记录到进程访问管理表中。11、如权利要求9、IO所述的系统,其中系统的进程访问管理器捕获进程访问文件请求,进一步包括当该进程发出关闭打幵的文件访问请求,进程访问管理器捕获该访问请求,进程访问管理器将进程标识从进程访问管理表中删除;或当该进程结束时,进程访问管理器将该进程从进程访问管理表中删除。12、如权利要求9所述的系统,其中进一步包括系统的进程访问管理表中存储预定义的受监控进程信息;系统的进程发出打开文件访问请求,进程访问管理器捕获该访问请求,提取该访问请求的文件名以及路径名,如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程在进程访问管理表中,则进程访问管理器允许该进程执行打开文件访问请求;如果该文件包含在文件访问管理表的文件目录或文件名字中,且该进程不在进程访问管理表中,则进程访问管理器阻断该进程执行打开文件访问请求。13、如权利要求9至12所述的系统,其中进程访问管理器控制进程间的数据通讯,进一步包括-允许在进程访问管理表中的进程的数据流向在进程访问管理表中的其他进程;允许不在进程访问管理表中的进程的数据流向在进程访问管理表中的进程;允许不在进程访问管理表中的进程的数据流向其他不在进程访问管理表中的进程;禁止在进程访问管理表中的进程的数据流向不在进程访问管理表中的其他进程。14、如权利要求l至13所述,其中进程管理器控制进程间的数据读写访问,包括截获进程间的消息(Message)、共享内存(SharedMemory)、管道(Pipe)、套接字(Sockets)、远程过程调用(RPC)、动态数据交换(DDE)、对象连接与嵌入(OLE)、动态连接库(DLL)、CORBA、DBUS数据通讯命令。全文摘要本发明公开了一种进程间数据通讯控制方法和系统,系统的文件分为受保护文件和非受保护文件,结合系统的进程对受保护文件和非受保护文件的访问管理,控制进程间的数据通讯,避免受保护文件的重要数据在进程间的通讯过程中泄露。文档编号G06F9/54GK101515241SQ20091007777公开日2009年8月26日申请日期2009年2月19日优先权日2009年2月19日发明者峥俞申请人:北京安高科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1