CN111949596A - 基于mpk技术的微内核模块间通讯方法、系统及介质 - Google Patents
基于mpk技术的微内核模块间通讯方法、系统及介质 Download PDFInfo
- Publication number
- CN111949596A CN111949596A CN202010778265.XA CN202010778265A CN111949596A CN 111949596 A CN111949596 A CN 111949596A CN 202010778265 A CN202010778265 A CN 202010778265A CN 111949596 A CN111949596 A CN 111949596A
- Authority
- CN
- China
- Prior art keywords
- domain
- kernel
- mpk
- module
- memory
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种基于MPK技术的微内核模块间通讯方法、系统及介质,包括:基于MPK技术的执行域步骤:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;内核模块间通讯的关卡函数步骤:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。本发明有效的降低了微内核的IPC性能开销,并通过MPK技术保证了应用该发明的微内核具有和传统微内核相同的安全性保证。
Description
技术领域
本发明涉及数据通信技术领域,具体地,涉及基于MPK技术的微内核模块间通讯方法、系统及介质。
背景技术
-IPC:Inter-Process Communication,进程间通讯
-MPK:Memory Protection Keys
-KPTI:Kernel Page Table Isolation,内核页表隔离
Intel MPK技术是英特尔公司开发的一种新的硬件特性,可以实现进程内部的隔离。每个内存页可以在页表项中相应位设置标记,内存空间根据标记被区分为不同的保护域。WRPKRU为MPK特性提供的硬件指令,通过该指令,进程可以对修改当前对于每个内存保护域的读写权限,进而达到进程内隔离的目的。
值得注意的是,虽然MPK特性面向用户态进程的隔离性需求提出,但其使用并不局限于用户态。MPK特性生效需要保证进程所属页表为用户页表,用户页表和内核页表通过页表条目中相应位进行区分。如果将内核地址空间所在的页表项对应条目置为用户态,那么MPK特性将能够在内核地址空间使用。这么做的话,如果用户地址空间与内核地址空间位于同一页表,用户进程将可以自由的访问内核地址空间,这会为系统引入巨大的安全风险。所幸,为了提供更高的安全级别,大部分微内核提供了内核页表隔离机制(KPTI),即用户地址空间与内核地址空间位于不同的页表中。若用户地址空间与内核地址空间使用不同的两张页表,即使内核地址空间的页表被设置为用户页表,用户进程也无法访问内核地址空间。因此,在KPTI机制的基础上,在内核地址空间应用MPK特性将不会引入新的安全风险。无论是内核地址空间或是用户地址空间,MPK特性均能达到进程内隔离的目的。
微内核是一种精简的操作系统。与使用广泛的宏内核(如Linux、Windows)不同,宏内核所有的系统服务作为一个整体运行在内核态,而微内核架构下的系统服务作为单独的模块运行在用户态,仅有精简的核心功能作为内核模块运行在内核态。这样做的好处是,运行在内核态的代码量大大减少,有助于降低被恶意攻击的风险,内核的安全性大大提升。此外,不同的系统服务之间彼此隔离,使得某个用户态的系统服务的错误或崩溃不会影响其他的系统服务,系统有着较强隔离性和容错性。然而,微内核架构下,系统服务之间进行通讯的性能开销相较宏内核大大增加。宏内核架构中的系统服务由于位于同一进程中,可以直接通过函数调用进行通讯。微内核架构下,由于不同的系统服务属于不同的用户态进程,系统服务之间的通讯为进程间通讯(IPC),在通讯时需要经由操作系统内核进行身份验证和资源隔离相关工作。IPC过程中存在权限级别的切换以及地址空间的切换等操作,这些操作会为模块间的通讯过程引入巨大的性能开销。
针对上述问题,研究界提出了许多基于软件或者新硬件的解决方案,使得IPC的开销大大减小。dIPC基于新的硬件架构CODOMs在同一地址空间隔离多个进程,以过程调用的形式进行IPC。XPC提出了新的硬件组件和硬件指令,使得IPC过程不需要内核的参与。Skybridge利用虚拟化技术,使得进程能够在通讯时安全高效的切换地址空间。然而,微内核模块间通讯的开销依然远大于宏内核,IPC的性能仍有着较大的提升空间。
专利文献CN108845969A(申请号:CN201810267232.1)公开了一种适用于不完全对称多处理微控制器的操作控制方法及操作系统,所述的控制方法由特权处理器负责多处理器间的进程调度和资源分配,所有处理器都处理单处理器内的进程调度和资源分配,多处理器之间通过核间通讯IPC进行数据交换。嵌入式操作系统,包括任务调度、驱动管理和应用工具链等功能。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于MPK技术的微内核模块间通讯方法、系统及介质。
根据本发明提供的一种基于MPK技术的微内核模块间通讯方法,包括:
基于MPK技术的执行域步骤:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数步骤:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
优选地,所述基于MPK技术的执行域步骤:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用。
优选地,所述基于MPK技术的执行域步骤:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域。
优选地,所述基于MPK技术的执行域步骤:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
优选地,所述内核模块间通讯的关卡函数步骤:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈。
优选地,所述内核模块间通讯的关卡函数步骤:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
根据本发明提供的一种基于MPK技术的微内核模块间通讯系统,包括:
基于MPK技术的执行域模块:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数模块:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
优选地,所述基于MPK技术的执行域模块:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用;
所述基于MPK技术的执行域模块:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域;
所述基于MPK技术的执行域模块:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
优选地,所述内核模块间通讯的关卡函数模块:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈;
所述内核模块间通讯的关卡函数模块:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的基于MPK技术的微内核模块间通讯方法的步骤。
与现有技术相比,本发明具有如下的有益效果:
本发明有效的降低了微内核的IPC性能开销,并通过MPK技术保证了应用该发明的微内核具有和传统微内核相同的安全性保证。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明提供的实施例中内核模块IPC示意图。
图2为本发明提供的实施例中关卡函数执行流程示意图以及执行域切换过程示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种基于MPK技术的微内核模块间通讯方法,包括:
基于MPK技术的执行域步骤:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数步骤:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
具体地,所述基于MPK技术的执行域步骤:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用。
具体地,所述基于MPK技术的执行域步骤:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域。
具体地,所述基于MPK技术的执行域步骤:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
具体地,所述内核模块间通讯的关卡函数步骤:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈。
具体地,所述内核模块间通讯的关卡函数步骤:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
本发明提供的基于MPK技术的微内核模块间通讯系统,可以通过本发明给的基于MPK技术的微内核模块间通讯方法的步骤流程实现。本领域技术人员可以将所述基于MPK技术的微内核模块间通讯方法,理解为所述基于MPK技术的微内核模块间通讯系统的一个优选例。
根据本发明提供的一种基于MPK技术的微内核模块间通讯系统,包括:
基于MPK技术的执行域模块:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数模块:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
具体地,所述基于MPK技术的执行域模块:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用;
所述基于MPK技术的执行域模块:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域;
所述基于MPK技术的执行域模块:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
具体地,所述内核模块间通讯的关卡函数模块:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈;
所述内核模块间通讯的关卡函数模块:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
根据本发明提供的一种存储有计算机程序的计算机可读存储介质,所述计算机程序被处理器执行时实现上述中任一项所述的基于MPK技术的微内核模块间通讯方法的步骤。
下面通过优选例,对本发明进行更为具体地说明。
优选例1:
本发明所提出的方法,将微内核中的系统服务从用户态放回到内核态运行,从而获得接近宏内核函数调用的IPC性能。同时,本发明利用MPK特性保证系统服务的隔离性。放回内核态运行的系统服务仍然遵循微内核模块隔离的设计准则,在提高IPC性能的同时达到了和传统微内核相同的安全保证。
本发明所要解决的技术问题包括:
当多个模块均位于内核地址空间时,如何基于MPK特性实现模块间的隔离?
如何设计内核态系统服务的IPC机制,使得在保证模块间隔离的基础上尽可能的降低性能开销?
内核模块间的通讯数据不应暴露给内核外的第三方,内核模块之间如何在保证数据安全的前提下高效的传递数据?
MPK特性不能限制内存的执行权限,如何保证内核态系统服务与内核之间的通讯关卡不被恶意攻击者利用?
本发明包含以下技术点:
1.提出执行域的概念,基于MPK技术实现了内核地址空间中各执行域的隔离。内核态中的模块作为独立的执行域存在,每个执行域仅能读写拥有权限的MPK内存域。内核地址空间通过MPK内存保护键被划分为多个内存保护域,内核拥有全部内存域的读写权限,而其他执行域仅拥有自身数据所在内存域的读写权限。每个执行域拥有各自独立的栈,栈中内容仅自己可见。执行域不限制代码的执行权限,所有的代码均位于内核所在执行域中,其他执行域同样能够执行这些代码。
2.本发明为内核态模块设计了高效安全的IPC方式。对于每个内核态的系统服务,内核为其生成与内核、其他系统服务通讯所需的关卡函数,内核态模块间的通讯必须通过关卡函数进行执行域的切换。不同于轮询处理请求的响应方式,内核态系统服务将请求处理过程封装为函数并向请求发起者提供调用接口,请求发起者通过关卡函数保存运行状态、切换执行域,以请求响应者的身份安全的调用请求处理函数。
3.内核态系统服务通过共享内存与内核及其他模块共享数据。共享内存作为MPK中独立的内存保护域存在,通讯双方拥有其读写权限,非通讯双方(不包括内核)的内核态系统模块不拥有共享内存的读写权限,从而保证了共享内存中数据的安全。在建立共享内存时,通信双方会进行身份验证。
4.设计了关卡函数中调用者身份的验证方法,并使得该验证方法无法被攻击者绕开。关卡函数中,对调用者身份进行了验证,杜绝了关卡函数被恶意利用进行内核攻击的可能。
图1是实施例中内核模块IPC示意图。其中,内核为执行域-0,系统服务A为执行域-1,系统服务B为执行域-2。内核地址空间被划分成了四个内存域:内核的代码、数据及关卡函数所在的内存域0,系统服务A的代码、数据所在的内存域2,系统服务B的代码、数据所在的内存域3,以及系统服务A与B进行通讯时存放IPC数据的内存域4。执行域-0作为特权级别的内核拥有所有内存域的读写权限,执行域-1拥有内存域1、3的读写权限,执行域-2拥有内存域2、3的读写权限。位于用户态的应用程序请求内核态系统服务时,首先向内核发起请求,内核再通过关卡函数与相应内核态系统服务进行通讯。
图2是实施例中关卡函数执行流程示意图以及执行域切换过程示意图。经由关卡函数进行的模块间通讯流程如下:关卡函数被调用时,首先对当前调用者的寄存器状态进行保存及清除,以保证寄存器状态的隔离。之后,关卡函数将执行域从调用者切换到被调用者。关卡函数在被调用者执行域中,以函数调用的方式调用事先注册的请求处理函数,对调用者的通讯请求进行响应。请求处理完成后,关卡函数将执行域从被调用者切换为调用者,并对调用者的寄存器状态进行恢复。
切换执行域的过程中,需要对调用者的身份进行验证以防范可能的攻击。本发明设计了一套高效简洁的验证方法,具体过程如下:
1.将某个寄存器的值设置为内核生成的标记值,用于之后进行验证。该标记值位于内核所在内存域,无法被其他系统服务模块获得,故能保证不会泄露。
2.将当前栈寄存器的值保存在仅允许调用者访问的内存域中。对于调用者以外的恶意攻击者,由于无法访问该内存域,将在该步骤触发系统错误。恶意攻击者将不会通过身份验证,故无法利用后续的内存域权限修改步骤进行攻击。
3.通过WRPKRU指令对各内存域的读写权限进行修改,使得执行域切换到被调用者执行域。
4.对之前标记的寄存器进行检查,确认其值是否与标记值一致。该步骤是为了防止攻击者直接跳到修改内存域读写权限步骤执行,从而绕过之前的栈指针保存步骤。该类攻击者由于未执行标记步骤,将无法通过当前对于标记的检查。标记不一致的情况将被认定为身份验证失败,由错误处理流程进行处理。
5.通过标记检查标志着执行域成功进行切换。
本发明提出的方法不限于在微内核场景下使用,在宏内核中,也可以利用MPK技术对系统服务进行隔离,从而增强宏内核的隔离性。
优选例2:
基于MPK技术的微内核进程间通讯的核心思想是将多个进程运行在内核地址空间,从而减少通讯过程中进程切换等开销,达到提高通讯性能的目的。基于MPK技术的执行域机制用于保证通讯的进程互相隔离(彼此无法读写对方的代码和非共享数据)。传统的进程间通讯为跨地址空间的通讯,进程位于不同的地址空间,具有天然的隔离性。而对于本专利发明的通讯机制来说,多个进程位于同一地址空间中(内核地址空间),需要采用额外的机制保证隔离性。通过设计基于MPK技术的执行域机制可达成这一目的。内核模块间通讯的关卡函数机制用于包装通讯过程,切换执行域,配合基于MPK技术的执行域机制一同满足隔离性需求。在进程通讯过程中,需要切换执行域(更改当前进程对于内存地址空间中不同位置的读写权限)来保证隔离性,该过程涉及调用MPK提供的硬件指令。进程发起通讯必须经过关卡函数,在该函数中,会调用MPK相关指令,并进行栈、寄存器的保存与恢复工作,发起通讯。此外,关卡函数中还会进行一些特殊的检查,使得关卡函数不会被攻击或恶意利用。
在内核地址空间应用MPK技术的方法,是基于MPK技术的执行域机制在内核态生效的前提条件。MPK技术默认只能在用户态使用,为了达到微内核中进程高效通讯、同时保证进程隔离性的目的,我们希望能在内核态运用MPK技术。这一目的的实现需要采用特殊方法使得MPK技术在内核态生效。
1.在内核地址空间中应用MPK技术的方法,在开启KPTI支持的前提下,将内核页表条目中用户位设置为1。
2.一种基于MPK技术的执行域机制,通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离。MPK技术的设计目的即为控制当前时刻对于地址空间中多个内存域的读写权限。应该可以算是本技术领域公知常识。具体控制方式为Intel提供的一组硬件指令,通过该系列指令可以查看、控制当前对最多16个内存域的读写权限。
3.所述执行域机制,每个执行域对应一个内核模块。内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码。内核模块中存在一组入口函数,供进程间通讯使用。
4.所述执行域机制,每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限。内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域。
5.所述执行域机制,多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
6.一种内核模块间通讯的关卡函数机制,关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换。在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
7.所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈。在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈。
8.执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证。
寄存器状态验证,在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证,在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
在本申请的描述中,需要理解的是,术语“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本申请的限制。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (10)
1.一种基于MPK技术的微内核模块间通讯方法,其特征在于,包括:
基于MPK技术的执行域步骤:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数步骤:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
2.根据权利要求1所述的基于MPK技术的微内核模块间通讯方法,其特征在于,所述基于MPK技术的执行域步骤:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用。
3.根据权利要求2所述的基于MPK技术的微内核模块间通讯方法,其特征在于,所述基于MPK技术的执行域步骤:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域。
4.根据权利要求3所述的基于MPK技术的微内核模块间通讯方法,其特征在于,所述基于MPK技术的执行域步骤:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
5.根据权利要求1所述的基于MPK技术的微内核模块间通讯方法,其特征在于,所述内核模块间通讯的关卡函数步骤:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈。
6.根据权利要求5所述的基于MPK技术的微内核模块间通讯方法,其特征在于,所述内核模块间通讯的关卡函数步骤:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
7.一种基于MPK技术的微内核模块间通讯系统,其特征在于,包括:
基于MPK技术的执行域模块:通过MPK技术控制内存域的读写权限,执行域之间资源与状态互相隔离;
内核模块间通讯的关卡函数模块:关卡函数通过WRPKRU指令修改当前时刻对内存域的读写权限,进行执行域的切换;在被请求服务的内核模块所属的执行域中,在关卡函数中以函数调用的形式请求该内核模块的服务。
8.根据权利要求7所述的基于MPK技术的微内核模块间通讯系统,其特征在于,所述基于MPK技术的执行域模块:
每个执行域对应一个内核模块,内核模块有独立的寄存器状态以及独立的堆栈,以及可供执行的代码;
内核模块中存在一组入口函数,供进程间通讯使用;
所述基于MPK技术的执行域模块:
每个内核模块对应着一组对所有内存域的读写权限,内核模块至少可以读写自身代码及堆栈所处的内存域,内核拥有所有内存域的读写权限;
内核以外的内核模块不能读写其他执行域代码及堆栈所在的内存域;
所述基于MPK技术的执行域模块:
多个执行域可对一个内存域同时拥有读写权限,用于在通讯时传递数据。
9.根据权利要求7所述的基于MPK技术的微内核模块间通讯系统,其特征在于,所述内核模块间通讯的关卡函数模块:
所述关卡函数,在请求目标内核模块服务前进行寄存器状态的保存和清空,并将栈切换为请求处理者栈;
在请求处理结束后,恢复请求发起者的寄存器状态,并将栈切换为请求发起者栈;
所述内核模块间通讯的关卡函数模块:
执行域切换过程中的身份验证方法,包括:寄存器状态验证和内存访问权限验证;
寄存器状态验证:在执行域切换前,使用内核随机生成的标记值对寄存器进行标记,并在执行域切换后检查标记过的寄存器,如果值与标记值一致,则寄存器状态验证通过;如果值与标记值不一致,则认为身份验证失败,抛出错误进行相应错误处理。
内存访问权限验证:在执行域切换前,访问请求发起者拥有读写权限的内存域。如果能够成功进行读操作,则内存访问权限验证通过;如果不能成功进行读操作,则认为内存访问权限验证失败,抛出错误进行相应错误处理。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的基于MPK技术的微内核模块间通讯方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010778265.XA CN111949596A (zh) | 2020-08-05 | 2020-08-05 | 基于mpk技术的微内核模块间通讯方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010778265.XA CN111949596A (zh) | 2020-08-05 | 2020-08-05 | 基于mpk技术的微内核模块间通讯方法、系统及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111949596A true CN111949596A (zh) | 2020-11-17 |
Family
ID=73338047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010778265.XA Pending CN111949596A (zh) | 2020-08-05 | 2020-08-05 | 基于mpk技术的微内核模块间通讯方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111949596A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329046A (zh) * | 2020-11-25 | 2021-02-05 | 北京元心科技有限公司 | 安全通信方法、装置、电子设备及计算机可读存储介质 |
CN113064697A (zh) * | 2021-04-01 | 2021-07-02 | 上海交通大学 | 利用多硬件特性加速微内核进程间通信的方法 |
WO2023071786A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为技术有限公司 | 一种进程间的函数调用方法及相关设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955362A (zh) * | 2014-04-03 | 2014-07-30 | 广东工业大学 | 一种基于Xen的操作系统内核监控方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
-
2020
- 2020-08-05 CN CN202010778265.XA patent/CN111949596A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103955362A (zh) * | 2014-04-03 | 2014-07-30 | 广东工业大学 | 一种基于Xen的操作系统内核监控方法 |
CN109840410A (zh) * | 2017-12-28 | 2019-06-04 | 中国科学院计算技术研究所 | 一种进程内数据隔离与保护的方法和系统 |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
Non-Patent Citations (1)
Title |
---|
JINYU GU: "Harmonizing Performance and Isolation in Microkernels with Efficient Intra-kernel Isolation and Communication", USENIX ATC’20:PROCESSINGS OF THE 2020 USENIX CONFERENCE ON USENIX ANNUAL * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112329046A (zh) * | 2020-11-25 | 2021-02-05 | 北京元心科技有限公司 | 安全通信方法、装置、电子设备及计算机可读存储介质 |
CN112329046B (zh) * | 2020-11-25 | 2023-06-23 | 北京元心科技有限公司 | 安全通信方法、装置、电子设备及计算机可读存储介质 |
CN113064697A (zh) * | 2021-04-01 | 2021-07-02 | 上海交通大学 | 利用多硬件特性加速微内核进程间通信的方法 |
WO2023071786A1 (zh) * | 2021-10-28 | 2023-05-04 | 华为技术有限公司 | 一种进程间的函数调用方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109086100B (zh) | 一种高安全可信移动终端安全体系架构及安全服务方法 | |
CN111949596A (zh) | 基于mpk技术的微内核模块间通讯方法、系统及介质 | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
US8595487B2 (en) | Virtualization hardware for device driver isolation | |
US10083129B2 (en) | Code loading hardening by hypervisor page table switching | |
CN1285033C (zh) | 包含可进入安全执行模式的处理器的计算机系统及其初始化方法 | |
CN113064697B (zh) | 利用多硬件特性加速微内核进程间通信的方法 | |
CN107667350A (zh) | 基于虚拟化的平台保护技术 | |
JP5847839B2 (ja) | セキュリティサンドボックス | |
US7529916B2 (en) | Data processing apparatus and method for controlling access to registers | |
US10360386B2 (en) | Hardware enforcement of providing separate operating system environments for mobile devices | |
CN108154032B (zh) | 具有内存完整性保障功能的计算机系统信任根构建方法 | |
CN104424034A (zh) | 硬件资源访问方法及装置 | |
CN110532767B (zh) | 面向sgx安全应用的内部隔离方法 | |
Deng et al. | Strongbox: A gpu tee on arm endpoints | |
CN112818327A (zh) | 基于TrustZone的用户级代码和数据安全可信保护方法及装置 | |
US9158710B2 (en) | Page coloring with color inheritance for memory pages | |
CN103345604A (zh) | 基于轻量虚拟机监控器的沙盒系统及用其监控os的方法 | |
WO2021055290A1 (en) | Controlled access to data stored in a secure partition | |
US10572687B2 (en) | Computer security framework and hardware level computer security in an operating system friendly microprocessor architecture | |
EP1987430B1 (en) | Virtual cores and hardware-supported hypervisor integrated circuits, systems, methods and processes of manufacture | |
Dubrulle et al. | Blind hypervision to protect virtual machine privacy against hypervisor escape vulnerabilities | |
EP3915028A1 (en) | Apparatus and method for enforcing hardware-assisted memory safety | |
Schwarz et al. | Securing DMA through virtualization | |
Liu et al. | HyperPS: a hypervisor monitoring approach based on privilege separation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |