安全DMA控制器及数据搬运方法与流程

文档序号:23720497发布日期:2021-01-24 07:55阅读:126来源:国知局
安全DMA控制器及数据搬运方法与流程
安全dma控制器及数据搬运方法
技术领域
[0001]
本发明属于计算机安全领域,尤其涉及一种用于阻断恶意程序利用dma控制器破坏关键内存数据的安全dma控制器及数据搬运方法。


背景技术:

[0002]
随着近年来计算机和智能终端的广泛普及,以及互联网技术的高速发展,设备安全的问题也更是日益凸显。围绕处理器进行的防护手段越来越多,比如各种杀毒软件、防火墙、主动防御软件等,还有如设置在处理器内部的安全部件,例如mmu(内存管理单元)可以将内存定义为只读、可执行、可读可写等不同区段,如果经过处理器的程序去改写一段被mmu定义为“只读”的内存区段,则mmu会禁止这种访问并触发异常。而一旦有恶意程序绕过处理器去读写数据,则会直接导致这些传统的防护手段失效。
[0003]
dma技术是为了提高计算机系统性能,提升处理器利用率而提出的,一些数据搬运工作可以由dma控制器完成,此时就可以释放处理器的性能,让其去处理其它工作。从计算机系统总线的角度来看,处理器和dma控制器都是主设备,二者均可以主动地发起总线访问,这就使得恶意程序可以通过传递给dma控制器特定的参数,使dma控制器去改写那些本该受保护的内存区段,比如恶意程序可以让dma控制器去篡改操作系统的某个系统调用入口,以达到劫持系统调用的目的。
[0004]
因此,现有技术中缺乏一种防止恶意程序利用dma控制器破坏关键内存数据的技术。


技术实现要素:

[0005]
有鉴于此,本发明的一个目的是提出一种数据搬运方法,以解决现有技术中恶意程序利用dma控制器破坏关键内存数据的问题。
[0006]
在一些说明性实施例中,所述数据搬运方法,应用于安全dma控制器,用于阻断恶意程序利用dma控制器破坏关键内存数据,包括:接收用于指示dma控制器执行数据搬运操作的数据传输指令;判断所述数据传输指令中的目标地址是否指向系统关键内存区段;若是,则阻断所述数据传输指令,并触发异常;若否,则执行所述数据传输指令。
[0007]
在一些可选地实施例中,在所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段之前,还包括:判断所述数据传输指令的目标地址是否指向内存;若是,则再次判断所述数据传输指令中的目标地址是否指向系统关键内存区段;若否,则直接执行所述数据传输指令。
[0008]
在一些可选地实施例中,在所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段之前,还包括:根据所述数据传输指令中的目标地址与数据长度,确定目标地址区段;所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段,具体包括:将所述目标地址区域与所述系统关键内存区段进行匹配;若所述目标地址区域与所述系统关键内存区段存在重叠,则阻断所述数据传输指令,并触发异常;否则,执行所述数据
传输指令。
[0009]
在一些可选地实施例中,在所述接收用于指示dma控制器执行数据搬运操作的数据传输指令之前,还包括:在系统上电或重启后的初始化阶段,获取所述系统关键内存区段;将获取到的所述系统关键内存区段写入预先设定的审核表中,并锁定所述审核表,使所述审核表在再次上电或重启之前只读。
[0010]
在一些可选地实施例中,所述系统关键内存区段至少包括:操作系统代码段、只读数据区、系统调用表、中断向量表和用户自定义区段。
[0011]
本发明的另一个目的在于提出一种安全dma控制器,该安全dma控制器可解决现有技术中恶意程序利用dma控制器破坏关键内存数据的问题。
[0012]
在一些说明性实施例中,所述安全dma控制器,包括:总线从接口,用以提供处理器通过总线对安全dma控制器进行配置与查询的接口;总线主接口,用以提供dma控制器通过总线进行从设备之间的数据搬运的接口;寄存器模块,包括:源地址寄存器,用以存储待搬运数据所在的地址;目的地址寄存器,用以存储待搬运数据所要搬运的目的地址;数据长度寄存器,用以存储所述待搬运数据的数据长度参数;使能寄存器,用以指示处理器已完成数据搬运操作配置;状态寄存器,用以指示数据搬运操作过程中的状态;审核模块,用以判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向系统关键内存区段;若是,则阻断本次数据搬运操作,并更新所述状态寄存器以通知处理器处理本次事件;若否,则使能数据传输引擎;数据传输引擎,用以依据源地址寄存器、目的地址寄存器和数据长度寄存器中的信息,通过所述总线主接口进行数据搬运操作。
[0013]
在一些可选地实施例中,所述审核模块,包括:审核表,用以存储系统关键内存区段的地址;第一审核单元,用以对所述目的地址寄存器和/或数据长度寄存器中地址信息与所述审核表中系统关键内存区段的地址进行一一匹配,判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向系统关键内存区段。
[0014]
在一些可选地实施例中,所述审核表在系统上电或重启后的初始化阶段,完成其系统关键内存区段的初始化并锁定,使其在再次上电或重启之前只读。
[0015]
在一些可选地实施例中,所述审核模块,还包括:第二审核单元,用以判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向内存;若是,则使能第一审核单元;若否,则使能数据传输引擎。
[0016]
在一些可选地实施例中,所述源地址寄存器、目的地址寄存器和数据长度寄存器构成一寄存器组;所述寄存器模块,包括多个所述寄存器组,用以描述多个不连续的目标地址区段。
[0017]
与现有技术相比,本发明具有如下优势:
[0018]
本发明通过在dma控制器内引入针对系统关键内存数据的审核策略,解决了恶意程序利用dma控制器破坏关键内存数据的问题,保障了计算机运行与数据安全。
附图说明
[0019]
图1是处理器与dma控制器的位置关系示意图;
[0020]
图2是本发明实施例中安全dma控制器的结构示意图;
[0021]
图3是本发明实施例中安全dma控制器的结构示意图;
[0022]
图4是本发明实施例中安全dma控制器的结构示意图;
[0023]
图5是本发明实施例中审核表初始化流程图;
[0024]
图6是本发明实施例中安全dma控制器的结构示意图;
[0025]
图7是本发明实施例中审核表锁定机制示意图;
[0026]
图8是本发明实施例中恶意程序利用安全dma控制器篡改关键内存的流程示意图;
[0027]
图9是本发明实施例中数据搬运方法的流程示意图;
[0028]
图10是本发明实施例中数据搬运方法的流程示意图。
具体实施方式
[0029]
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。
[0030]
需要说明的是,在不冲突的情况下本发明实施例中的各技术特征均可以相互结合。
[0031]
在计算机系统中,当需要传输大量数据时,需要采取更加有效的技术,即dma(direct memory access)直接存储器存取技术。挂接在总线105上的dma控制器104负责以dma方式进行数据传输。如图1所示,dma控制器104与处理器101都挂接在系统总线105上,并且从处理器101那里接管了系统控制的工作。dma控制器104需要通过控制系统总线105来管理从内存控制器102(及io控制器103)输出或输入内存控制器102(及io控制器103)的数据,这就是称dma控制器104为主设备的原因。
[0032]
当处理器需要读或写数据时,它对dma控制器进行配置,向dma控制器至少发送如下信息:数据传输方向、数据源和目的地址、数据的长度。处理器使能dma控制器后,其继续执行其它工作,dma控制器则可不经过处理器直接负责所有的数据传输。当数据传输完成时,dma控制器会给处理器发送一个中断信号。由此可见,处理器只在数据传送的开始和结束时参与。
[0033]
本发明针对现有技术中的dma控制器进行了改造,基于常规dma控制器结构提出的一种安全dma控制器结构,该安全dma控制器结构中除了常规的主从总线接口、寄存器模块、数据传输引擎之外,其改进点是在寄存器模块和数据传输引擎之间串接了审核模块。该审核模块主要用于对处理器写入寄存器模块中的配置信息进行审核,并利用审核结果判定本次dma传输是否允许使能。
[0034]
本发明实施例中公开了一种安全dma控制器,具体地,如图2所示,图2为本发明实施例中安全dma控制器的结构示意图。该安全dma控制器,包括:总线从接口201、总线主接口205、寄存器模块202、审核模块203和数据传输引擎204;其中,总线从接口201和总线主接口205分别挂接在系统总线上,寄存器模块202与总线从接口201连接,数据传输引擎204与总
线主接口205连接,审核模块203串接在寄存器模块202与数据传输引擎204之间。
[0035]
具体地,
[0036]
所述总线从接口201,用以提供处理器通过总线对安全dma控制器进行配置与查询的接口;
[0037]
所述总线主接口205,用以提供dma控制器通过总线进行从设备之间的数据搬运的接口;
[0038]
所述寄存器模块202,包括:源地址寄存器,用以存储待搬运数据所在的地址;目的地址寄存器,用以存储待搬运数据所要搬运的目的地址;数据长度寄存器,用以存储所述待搬运数据的数据长度参数;使能寄存器,用以指示处理器已完成数据搬运操作配置;状态寄存器,用以指示数据搬运操作过程中的状态。
[0039]
所述审核模块203,用以判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向系统关键内存区段;若是,则阻断本次数据搬运操作,并更新所述状态寄存器以通知处理器处理本次事件;若否,则使能数据传输引擎204;
[0040]
所述数据传输引擎204,用以依据源地址寄存器、目的地址寄存器和数据长度寄存器中的信息,通过所述总线主接口205进行数据搬运操作。
[0041]
其中,系统关键内存区段包括但不限于操作系统代码段、只读数据区、系统调用表、中断向量表和用户自定义区段;其中,各内存区段包含其起始地址,以及数据长度,以此描述其具体的内存区段。在一些实施例中,根据不同的处理器架构,这些地址可能为物理地址也可能为总线地址。
[0042]
本发明实施例中通过改造dma控制器,在dma控制器内引入针对系统关键内存数据的审核策略,解决了恶意程序利用dma控制器破坏关键内存数据的问题,保障了计算机运行与数据安全。
[0043]
另外,在传统的dma控制器的机制中,cpu处理器向dma控制器发送数据搬运的数据传输指令,使数据传输指令中的配置信息存储入dma控制器中相应的寄存器中,当所有的配置信息已准备完毕时,cpu处理器对dma控制器中的使能寄存器进行使能,指示dma控制器可以开始进行数据搬运,此时dma控制器使能数据传输引擎,依据寄存器模块中存储的配置信息开始数据搬运。
[0044]
而在本申请中改造后的安全dma控制器中,其机制有所改变,当cpu处理器对dma控制器中的使能寄存器进行使能,所有的配置信息已准备完毕,安全dma控制器此时使能审核模块开始对寄存器模块中的配置信息进行审核,并根据审核结果使能数据传输引擎或状态寄存器。
[0045]
因此,本申请中仅对安全dma控制器的机制进行了调整,并不涉及cpu处理器,cpu处理器对dma控制器的控制机制并未改动,整体改动范围小,适配性高,成本低。
[0046]
再有,本申请通过在硬件层面改造dma控制器,其审核机制不依赖于已有的软件防护手段,即使恶意程序绕过了所有软件防护,亦可有效的防止关键内存篡改和破坏攻击生效。
[0047]
进一步的,如图3所示,所述审核模块203,包括:审核表2032,用以存储系统关键内存区段的地址;第一审核单元2031,用以对所述目的地址寄存器和/或数据长度寄存器中地址信息与所述审核表中系统关键内存区段的地址进行一一匹配,判断所述目的地址寄存器
和/或数据长度寄存器中地址信息是否指向系统关键内存区段。
[0048]
第一审核单元与审核表连接,通过读取目的地址寄存器和数据长度寄存器中描述的地址信息与所述审核表中系统关键内存区段的地址进行一一匹配,从而判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向系统关键内存区段。在一些实施例中,目的地址寄存器和数据长度寄存器中描述的地址信息是指由目的地址寄存器中的目标地址与数据长度寄存器中的数据长度进行计算,获取本次数据搬运的目标地址区段,以该目标地址区段中的地址与审核表中预存的系统关键内存区段中的地址进行匹配,如果判定本次数据搬运的目标地址区段与系统关键内存区段存在重叠,则表明所述目的地址寄存器和/或数据长度寄存器中地址信息是指向系统关键内存区段,则阻断本次数据搬运操作,并更新所述状态寄存器以通知处理器处理本次事件;若否,则使能数据传输引擎进行本次数据搬运操作。
[0049]
具体地,以该目标地址区段中的地址与审核表中预存的系统关键内存区段中的地址进行匹配,包括:以目的地址寄存器的值作为起始地址,长度为“数据长度寄存器”的一段内存区段依次逐一与系统关键内存区段进行匹配。
[0050]
如图4所示,在一些可选地实施例中,所述审核模块203,还包括:第二审核单元2033,用以判断所述目的地址寄存器和/或数据长度寄存器中地址信息是否指向内存;若是,则使能第一审核单元;若否,则使能数据传输引擎。
[0051]
由于dma控制器的数据搬运可以在任意的从设备之间进行,并且其数据搬运方向亦不限,因此可以存在例如硬盘指向内存、内存指向硬盘、内存指向内存、内存指向移动存储设备、内存指向显卡等等。而本申请所关注的重点在于阻断恶意程序利用dma控制器破坏系统关键内存数据,因此通过第二审核单元可以首先排除目标地址并非指向内存的数据搬运,从而降低每次数据搬运的匹配遍历量,达到节省dma控制器性能,提高工作效率,降低功耗的效果。
[0052]
在一些可选地实施例中,所述审核表在系统上电或重启后的初始化阶段,完成其内系统关键内存区段的初始化并锁定,使其在再次上电或重启之前只读。具体地,本发明提出了一种针对审核表的优选地实施例,该实施例通过在初始化阶段锁定审核表,保证作为判决依据的审核表自身不被篡改。如图5所示,审核表的初始化过程包括:
[0053]
步骤s11、系统上电或重启;
[0054]
步骤s12、获取诸如操作系统代码区间、只读数据区间、系统调用表、中断向量表及用户自定义区间等各内存区段的起始地址及长度,根据不同的处理器架构,这些地址可能为物理地址也可能为总线地址;
[0055]
步骤s13、将步骤s12获取的各内存区段依次写入审核表;
[0056]
步骤s14、锁定审核表。其中,锁定的目的是防止再有其它程序改写审核表内容。
[0057]
通过上述实施例,可以在系统启动运行之初即可将系统关键内存地址写入审核表中,并且在写入完成后,即可锁定该审核表,限制该审核表在再次上电或重启之前只读,因此审核表中的信息无被篡改破坏的风险,保证安全dma控制器的安全审核机制始终安全可靠。
[0058]
进一步的,本申请还提供了一种基于上述安全dma控制器锁定审核表的方法,具体地,如图6所示,审核模块203还包括:锁定逻辑单元2034,所述审核表2032是一个ram存储单
元(随机存取存储器),该存储单元(即审核表2032)通过锁定逻辑单元2034与系统总线105交互,处理器101通过系统总线105利用锁定逻辑单元2034向审核表2032写入数据,审核单元2031可以直接读取审核表2032的内容。继续参照图7,在上电或系统复位c31阶段,锁定逻辑单元2034的状态机处于空闲(idle)s31状态,当处理器101向审核表2032发出写请求c32时,锁定逻辑单元2034的状态机进入写入状态s32,在写入状态,处理器101可以将关键数据表项写入审核表2032。当写入完成后,处理器101向锁定逻辑单元2034中的写入完成寄存器(即write_done寄存器)写1,将该寄存器置位c33,此时状态机进入锁定状态s33,在锁定状态,锁定逻辑单元2034不再响应处理器101发出的任何写请求,避免了审核表2032被恶意程序伪造或篡改。只有当系统重启复位条件满足c34时,状态机才再次进入空闲状态s31。
[0059]
在一些可选地实施例中,所述源地址寄存器、目的地址寄存器和数据长度寄存器构成一寄存器组;所述寄存器模块,包括多个所述寄存器组,用以描述多个不连续的目标地址区段。
[0060]
现在参照图8,本发明还提出了阻断恶意程序利用安全dma控制器篡改内存的实施例,包括:
[0061]
步骤s21、恶意程序通过cpu处理器配置安全dma控制器的目的地址寄存器为关键内存区段起始地址,将系统调用表某个表项地址配置到目的地址寄存器里,再将该表项长度配置到数据长度寄存器。恶意程序申请一段内存,写入伪造的系统调用表项内容,该伪造的表项内容里包含了木马程序。恶意程序将伪造的表项起始地址写入dma控制器的源地址寄存器;
[0062]
步骤s22、恶意程序使能dma控制器;
[0063]
步骤s23、安全dma控制器中的审核单元读取目的地址寄存器内容;
[0064]
步骤s24、安全dma控制器中的审核单元读取数据长度寄存器内容;
[0065]
步骤s25、安全dma控制器中的审核单元读取审核表表项内容;
[0066]
步骤s26、安全dma控制器中的审核单元将以目的地址寄存器值开始,以数据长度寄存器值为长度的内存区段与读取到的审核表表项内容进行比较;
[0067]
步骤s27.比较结果表明两部分内存区段有重叠,说明预写入的目的内存地址是关键内存区段,此时安全dma控制器更新状态寄存器,触发一次安全异常,以通知处理器介入处理。本次不会使能数据搬运引擎,更不会进行数据的dma搬运。
[0068]
如图9所示,本发明实施例中还公开了一种数据搬运方法,应用于安全dma控制器,用于阻断恶意程序利用dma控制器破坏关键内存数据,包括:
[0069]
步骤s31、接收用于指示dma控制器执行数据搬运操作的数据传输指令;
[0070]
步骤s32、判断所述数据传输指令中的目标地址是否指向系统关键内存区段;若是,则进入步骤s33;若否,则进入步骤s34;
[0071]
步骤s33、阻断所述数据传输指令,并触发异常;
[0072]
步骤s34、执行所述数据传输指令。
[0073]
如图10,在一些可选地实施例中,在所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段之前,还包括:
[0074]
步骤s32-0、判断所述数据传输指令的目标地址是否指向内存;
[0075]
若是,则进入步骤s32;若否,则进入步骤s34。
[0076]
在一些可选地实施例中,在所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段之前,还包括:
[0077]
根据所述数据传输指令中的目标地址与数据长度,确定目标地址区段;
[0078]
所述判断所述数据传输指令中的目标地址是否指向系统关键内存区段,具体包括:
[0079]
将所述目标地址区域与所述系统关键内存区段进行匹配;
[0080]
若所述目标地址区域与所述系统关键内存区段存在重叠,则阻断所述数据传输指令,并触发异常;
[0081]
否则,执行所述数据传输指令。
[0082]
在一些可选地实施例中,在所述接收用于指示dma控制器执行数据搬运操作的数据传输指令之前,还包括:
[0083]
在系统上电或重启后的初始化阶段,获取所述系统关键内存区段;
[0084]
将获取到的所述系统关键内存区段写入预先设定的审核表中,并锁定所述审核表,使所述审核表在再次上电或重启之前只读。
[0085]
在一些可选地实施例中,所述系统关键内存区段至少包括:操作系统代码段、只读数据区、系统调用表、中断向量表和用户自定义区段。
[0086]
本发明实施例中的数据搬运方法可以依托上述安全dma控制器的硬件机制实现,本领域技术人员应该亦可以理解本方法亦可通过软件程序执行。
[0087]
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1