CN113868636A - 内核和任务隔离的方法和装置 - Google Patents
内核和任务隔离的方法和装置 Download PDFInfo
- Publication number
- CN113868636A CN113868636A CN202010611828.6A CN202010611828A CN113868636A CN 113868636 A CN113868636 A CN 113868636A CN 202010611828 A CN202010611828 A CN 202010611828A CN 113868636 A CN113868636 A CN 113868636A
- Authority
- CN
- China
- Prior art keywords
- memory
- task
- configuration information
- kernel
- interrupt
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/74—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
-
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/145—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1483—Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- 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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/545—Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- 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/2149—Restricted operating environment
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Storage Device Security (AREA)
Abstract
本申请实施例提供一种内核和任务隔离的方法和装置,通过在计算机***上增加一个单独的可信基,该可信基独立于内核和任务,可信基、任务以及内核分别拥有独立的内存,任务和内核互相无法访问对方的内存,当需要进行任务调度时,由可信基根据可信基的内存上存储有内存切换配置信息对内存保护装置进行配置,通过对内存保护装置进行配置可以将内存访问边界从内核的内存切换到任务的内存,或者将内存访问边界从任务的内存切换到内核的内存,通过内存边界的切换实现任务和内核二者内存的访问,从而能够保证任务和内核的安全。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种内核和任务隔离的方法和装置。
背景技术
随着电子技术、计算机技术和信息技术等新技术的应用和发展,汽车电子控制应用而生。汽车工业界相继提出了汽车电子类开放***和对应接口标准/汽车分布式执行标准(open systems and the corresponding interfaces for automotive electronics/vehicle distributed executive,OSEK/VDX)、汽车开放***架构(automotive opensystem architecture,AUTOSAR)等规范,为车载嵌入式实时操作***以及相关服务制定了统一的标准规范,以实现汽车电子的开放开发平台,提供高度模块化、移植性和复用性,简化开发流程,降低开发成本。
OSEK/VDX没有考虑汽车电子应用的安全性和可靠性,AUTOSAR在OSEK/VDX的基础上,提出了一系列与隔离保护相关的实施规范,以保证汽车电子应用的安全性和可靠性。目前,汽车电子控制主要由电子控制单元(electronic control unit,ECU)执行,随着ECU能力的提升,针对于具备内存保护单元(memory protection unit,MPU)的设备,AUTOSAR提出了一种软件分区隔离方法,将设备的存储区域分为操作***(operating system,OS)分区与应用分区。操作***的内核、存储软件、外设与输入/输出(input/output,I/O)等基础软件位于一个可信的处于特权模式(privilege mode)的操作***分区中。应用软件在逻辑上被分为可信应用与普通应用,普通应用被划分至不可信的、非特权模式(Non-privilegemode)的应用分区;可信应用与操作***内核一样,处于可信的、特权模式的操作***分区中。其中,普通应用之间的数据段上数据不可读写、代码不可执行,只能通过***调用进行特权切换访问***服务。
但是,上述方法中可信应用与内核能够互相访问对方内存,内核能否访问非可信应用的内存,从而无法保证应用和内核的安全性。
发明内容
本申请实施例提供一种内核和任务隔离的方法和装置,能够保证任务和内核之间的安全性,提高了***的安全。
本申请第一方面提供一种内核和任务隔离的方法,所述方法应用于计算机***,所述计算机***上运行有OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述方法包括:
所述内核从任务准备队列中查找第一任务;所述可信基从内存中查找所述第一任务的第一内存切换配置信息,根据所述第一内存切换配置信息对内存保护装置进行配置,其中,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件,所述第一内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第一任务的内存地址信息和所述第一任务的内存操作权限,配置后所述第一任务对所述内核的内存的操作权限为无权限;配置后所述内核对所述第一任务的内存的操作权限为可读;所述内核调用所述第一任务。
该第一内存切换配置信息用于将内存访问边界从内核的内存切换到第一任务的内存。
其中,内核的内存操作权限包括:内核对自己内存的操作权限、内核对任务的内存的操作权限,以及内核对可信基的内存的操作权限。第一任务的内存操作权限包括:第一内务对自己的内存的操作权限、第一任务对内核的内存的操作权限,以及第一任务对可信基的内存的操作权限。可信基的内存的操作权限包括:可信基对内核的内存的操作权限、可信基对任务的内存的操作权限,以及可信基对自己的内存的操作权限。
内核的对自己的内存操作权限包括:内核对内核的代码段的操作权限为可读、可执行和不可写,内核对内核的数据段的操作权限为可读、可写和不可执行读写,内核对内核的只读段的操作权限为只读、不可写和不可执行。内核对第一任务的操作权限为无权限,即内核对第一任务的数据段、代码段以及只读段的操作权限均为无权限。内核对可信基的操作权限包括:内核对可信基的数据段的权限为无权限,内核对可信基的代码段的权限为可执行,不可读和不可写,内核对可信基的只读段的权限为可读、不可写和不可执行。
第一任务对自己的内存操作权限包括:第一任务对第一任务的代码段的操作权限为可读、可执行和不可写,第一任务对第一任务的数据段的操作权限为可读、可写和不可执行读写,第一任务对第一任务的只读段的操作权限为只读、不可写和不可执行。第一任务对内核的操作权限为无权限,即第一任务对内核的数据段、代码段以及只读段的操作权限均为无权限。第一任务对可信基的操作权限包括:第一任务对可信基的数据段的权限为无权限,第一任务对可信基的代码段的权限为可执行,不可读和不可写,第一任务对可信基的只读段的权限为可读、不可写和不可执行。
可信基对第一任务的操作权限包括:可信基对第一任务的代码段的操作权限为可读、可执行和不可写,可信基对第一任务的数据段的操作权限为可读、可写和不可执行读写,可信基对第一任务的只读段的操作权限为只读、不可写和不可执行。可信基对内核的操作权限包括:可信基对内核的代码段的操作权限为可读、可执行和不可写,可信基对内核的数据段的操作权限为可读、可写和不可执行读写,可信基对内核的只读段的操作权限为只读、不可写和不可执行。可信基对自己内存的操作权限包括:可信基对可信基的数据段的权限为无权限,可信基对可信基的代码段的权限为可执行,不可读和不可写,可信基对可信基的只读段的权限为可读、不可写和不可执行。
通过上述内核的内存操作权限、第一任务的内存操作权限以及可信基的内存操作权限可知,在内存访问边界切换之前或者说对内存保护装置进行配置之前,第一任务和内核之间不能够互相访问,即第一任务无法访问内核的内存,内核也不能访问第一任务的内存。所以,本申请实施例中,当需要调用第一任务时,先要进行任务边界切换,即根据第一内存切换配置信息,将内存访问边界从内核的内存切换到第一任务的内存。
相应的,配置后第一任务对内核的内存的操作权限为无权限,即第一任务对内核的数据段、代码段和只读段的权限均为无权限,所以配置完成后,第一任务无法访问内核的内存。
配置后内核能够访问第一任务的内存,相应的,配置后内核对第一任务的内存的访问权限为可读。其中,内核对第一任务的内存的操作权限具体包括:内核对第一任务的数据段的权限为可读、可写和不可执行,内核对第一任务的代码段的权限为可读、可执行和不可写,内核对第一任务的只读段的权限为可读、不可写和不可执行。
配置前后任务和内核对可信基的内存的访问权限没有发生变化。内核或第一任务对可信基的内存的操作权限例如包括:内核或第一任务对可信基的数据段的权限为无权限,内核或第一任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第一任务对可信基的只读段的权限为可读、不可写和不可执行。
其中,第一内存切换配置信息存储在可信基的只读段中,第一任务或者内核对可信基的只读段的权限为可读、不可写和不可执行,可信基的内存操作权限使得只有可信基能够完成对内存保护装置的配置,而内核无法对内存保护装置进行配置。
现有技术中,当第一任务是普通应用的任务时,内核需要进行一次特权切换,即从内核到用户的上下文切换,在特权切换之后,内核能够访问应用的内存,但是应用无法访问内核的内存。当第一任务是可信应用的任务时,二者均处于特权层,能够互相访问对方的内存,可知现有技术的方法无法保证内核和任务之间的安全性。而本申请实施例的方法,无论第一任务是普通应用的任务还是可信应用的任务,当内存访问边界位于内核的内存时,如果要调用第一任务,由于内核和第一任务互相不具有访问权限,所以需要由可信基根据第一任务的第一内存切换配置信息对内存保护装置进行配置,通过对内存保护装置配置完成内存访问边界的切换,在配置完成后,第一任务对内核的内存的权限为无权限,内核对第一任务的内存的操作权限为可读,即第一任务无法访问内核的内存,但是内核能够访问第一任务的内存了,从而完成了将内存访问边界从内核的内存切换到第一任务的内存,实现了内核和任务的内存隔离,保证了内核和任务之间的安全性。
可选的,所述可信基从内存中查找所述第一任务的第一内存切换配置信息之前,所述可信基关闭中断,所述可信基根据所述第一内存切换配置信息对内存保护装置配置完成之后,所述可信基打开所述中断。
在内存保护装置配置过程中,可信基先从内存中将第一内存切换配置信息读取到通用寄存器,在将通用寄存器中的第一内存切换配置信息读取到内存保护装置对应的寄存器,其中,通用寄存器中的第一内存切换配置信息可能被中断操作进行修改,通用寄存器中的内存切换配置信息被修改可能导致任务和内核的内存中的数据被泄露,从而无法保证在***调用过程中任务和内核的安全性。本申请实施例中,可信基可以在对内存保护装置进行配置之前打开中断,在配置完成之后再打开中断,关闭中断之后中断不会修改通用寄存器中的值,从而能够保证内核和任务之间的安全性。
不仅中断操作会修改通用寄存器中的第一内存切换配置信息,JOP或者ROP攻击也会篡改通用寄存器中的第一内存切换配置信息,因此,本申请实施例中,所述内核调用所述第一任务之前,所述可信基还可以比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同,若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则确定所述第一内存切换配置信息合法,在所述第一内存切换配置信息合法的情况下,所述可信基调用所述第一任务,从而能够防止JOP或者ROP攻击,保证内核和任务之间的安全性。
或者,所述可信基打开所述中断之前,比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同,若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则所述可信基确定所述第一内存切换配置信息合法,在所述第一内存切换配置信息合法的情况下,所述可信基打开所述中断。该方法不仅能够防止中断对通用寄存器中的第一内存切换配置信息的修改,还能够避免JOP或者ROP对通用寄存器中的第一内存切换配置信息的修改。
可选的,若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息不相同,则所述可信基确定所述第一内存切换配置信息不合法,在所述第一内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第一任务。
可选的,所述OS和所述应用均处于特权层。当所有应用都处于特权层时,当普通应用进行***调用时不需要进行特权切换,减少了特权切换的开销,从而提高了应用的响应速度。
可选的,在打开所述中断之后,所述方法还包括:
当接收到中断请求时,所述可信基查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
所述可信基根据所述中断向量表进入所述可信基的中断服务函数;
所述可信基获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,所述可信基确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,所述可信基确定所述当前中断为合法中断,调用所述正常中断服务函数。
通过设置该可信基的中断服务函数,在接收到中断请求时,判断中断是否为合法中断,可以避免非法中断攻击,进一步提高了内核和任务的安全性。
可选的,还包括:所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中,在***启动过程中,可信基初始化所述中断向量表。
可选的,在所述计算机***启动过程中,所述可信基对OS的代码段和任务的代码段进行I/O特权扫描,根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令,然后启动所述OS。通过将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令,避免了内核对这些特定操作的访问。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;所述特权任务的特定操作包括内存保护装置寄存器操作。
可选的,所述内存保护装置为内存保护单元MPU,所述内存地址信息包括内存起始地址和地址长度,所述内存起始地址为物理地址。
可选的,所述内存保护装置为内存管理单元MMU,所述内存地址信息包括内存起始地址、地址长度、虚拟地址与物理地址的映射表。
本申请第二方面提供一种内核和任务隔离的方法,所述方法应用于计算机***,所述计算机上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行可信基,所述方法包括:
在第二任务需要调用***服务应用程序接口API时,所述可信基保存所述第二任务的任务号;
所述可信基从内存中查找所述第二任务对应的第二内存切换配置信息,根据所述第二内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第二内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述内核对所述第二任务的内存的操作权限为无权限,配置后所述第二任务对所述内核的内存的操作权限为可读;
所述内核调用所述第二任务;
所述内核调用所述***服务;
在所述***服务完成后,所述可信基取出所述第二任务的任务号,将内存访问边界从所述内核的内存切换到所述第二任务的内存;
所述内核调用所述第二任务获取所述***服务的返回结果。
第二任务要调用***服务时,需要进行两次内存边界切换,在***调用之前内存访问边界位于第二任务的内存,所以,需要先根据第二内存切换配置信息将内存访问边界从第二任务的内存切换到内核的内存,在将内存访问边界切换到内核的内存之后,可以进行***调用,***调用完成之后需要将内存访问边界从内核的内存切换到第二任务的内存,此时,根据第三内存切换配置信息进行内存访问边界的切换,将内存访问边界切回到第二任务的内存。所述方法,在***调用过程中,通过两次内存边界切换,实现***调用,可以保证第二任务和内核的内存隔离。
该第二内存切换配置信息用于将内存访问边界从第二任务的内存切换到内核的内存,其中,配置后内核对第二任务的内存的操作权限为无权限,即内核对第二任务的数据段、代码段和只读段的权限均为无权限,内核无法访问第二任务的内存。
其中,配置后第二任务对内核的内存的操作权限为可读,即配置后第二任务能够访问内核的内存,其中,第二任务对内核的内存的操作权限可以包括:第二任务对内核的数据段的权限为可读、可写和不可执行,第二任务对内核的代码段的权限为可读、可执行和不可写,第二任务对内核的只读段的权限为可读、不可写和不可执行。
可选的,配置前和配置后内核和第二任务对可信基的内存的操作权限没有变化,内核或第二任务对可信基的内存的操作权限例如包括:内核或第二任务对可信基的数据段的权限为无权限,内核或第二任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第二任务对可信基的只读段的权限为可读、不可写和不可执行。其中,第二内存切换配置信息存储在可信基的只读段中。
可选的,所述可信基从内存中查找所述第二任务对应的第二内存切换配置信息之前,所述可信基关闭中断;所述可信基根据所述第二内存切换配置信息对内存保护装置配置完成之后,所述可信基打开所述中断。
当通用寄存器中的第二内存切换配置信息被修改可能导致任务和内核的内存中的数据被泄露,从而无法保证在***调用过程中任务和内核的安全性。本申请实施例中,可信基可以在对内存保护装置进行配置之前打开中断,在配置完成之后再打开中断,关闭中断之后中断不会修改通用寄存器中的值,从而能够保证内核和任务之间的安全性。
可选的,所述内核调用所述第二任务之前,所述可信基比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则所述可信基确定所述第二内存切换配置信息合法;在所述第二内存切换配置信息合法的情况下,所述可信基调用所述第二任务。
或者,所述可信基打开所述中断之前,所述可信基比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则所述可信基确定所述第二内存切换配置信息合法;在所述第二内存切换配置信息合法的情况下,所述可信基打开所述中断。
不仅中断操作会修改通用寄存器中的第二内存切换配置信息,JOP或者ROP攻击也会篡改通用寄存器中的第二内存切换配置信息,本申请实施例中通过验证第二内存切换配置信息的合法性,能够防止JOP或者ROP攻击,保证内核和任务之间的安全性。
可选的,若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息不相同,则所述可信基确定所述第二内存切换配置信息不合法;在所述第二内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第二任务。
可选的,所述将内存访问边界从所述内核的内存切换到所述第二任务的内存,包括:
所述可信基从内存中查找所述第二任务的第三内存切换配置信息,根据所述第三内存切换配置信息对所述内存保护装置进行配置,所述第三内存切换配置信息包括:所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述第二任务对所述内核的内存操作权限为无权限,配置后所述内核对所述第二任务的内存的操作权限为可读。
该第三内存切换配置信息用于将内存访问边界从内核的内存切换到第二任务的内存,配置后第二任务对内核的内存的操作权限为无权限,即第二任务对内核的数据段、代码段和只读段的权限均为无权限,所以配置完成后,第二任务无法访问内核的内存。
配置后内核对第二任务的内存的权限为可读,即配置后内核能够访问第二任务的内存,其中,内核对第二任务的内存的权限为可读例如可以包括:内核对第二任务的数据段的权限为可读、可写和不可执行,内核对第二任务的代码段的权限为可读、可执行和不可写,内核对第二任务的只读段的权限为可读、不可写和不可执行。
配置前后第二任务和内核对可信基的内存的访问权限没有发生变化。内核或第二任务对可信基的内存的操作权限例如包括:内核或第二任务对可信基的数据段的权限为无权限,内核或第二任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第二任务对可信基的只读段的权限为可读、不可写和不可执行。
可选的,所述可信基从内存中查找所述第二任务的第三内存切换配置信息之前,所述可信基关闭中断,所述可信基根据所述第三内存切换配置信息对所述内存保护装置配置完成之后,所述可信基打开所述中断。
可选的,所述内核调用所述第二任务获取所述***服务的返回结果之前,所述可信基比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则所述可信基确定所述第三内存切换配置信息合法;在所述第三内存切换配置信息合法的情况下,所述内核调用所述第二任务获取所述***服务的返回结果。
或者,所述可信基打开所述中断之前,比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则所述可信基确定所述第三内存切换配置信息合法;在所述第三内存切换配置信息合法的情况下,所述可信基打开所述中断。
可选的,还包括:
若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息不相同,则所述可信基确定所述第三内存切换配置信息不合法;
在所述第三内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第二任务。
可选的,所述OS和所述计算机***上的所有应用均处于特权层。
可选的,在打开所述中断之后,所述方法还包括:
当接收到中断请求时,所述可信基查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
所述可信基根据所述中断向量表进入所述可信基的中断服务函数;
所述可信基获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,所述可信基确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,所述可信基确定所述中断为合法中断,调用所述正常中断服务函数。
可选的,还包括:所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
可选的,在所述计算机***启动过程中,所述可信基对所述OS代码段和任务的代码段进行I/O特权扫描,根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令,然后启动所述OS。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
本申请第三方面提供一种计算机***,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基;
所述内核,用于从任务准备队列中查找第一任务;
所述可信基,用于从内存中查找所述第一任务的第一内存切换配置信息,根据所述第一内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第一内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第一任务的内存地址信息和所述第一任务的内存操作权限,配置后所述第一任务对所述内核的内存的操作权限为无权限;配置后所述内核对所述第一任务的内存的操作权限为可读;
所述内核,还调用所述第一任务。
可选的,所述可信基还用于:从内存中查找所述第一任务的第一内存切换配置信息之前,关闭中断,根据所述第一内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基还用于:比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同;若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则确定所述第一内存切换配置信息合法。所述内核还用于:在所述第一内存切换配置信息合法的情况下,调用所述第一任务。
可选的,所述可信基还用于:若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息不相同,则确定所述第一内存切换配置信息不合法;所述内核还用于:在所述第一内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第一任务。
可选的,所述OS和所述计算机***上的所有应用均处于特权层。
可选的,在所述可信基打开所述中断之后,所述可信基还用于:当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;根据所述中断向量表进入所述可信基的中断服务函数;获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;当所述中断的返回地址属于所述预设地址范围时,确定所述当前中断为非法中断,采取韧性保护;当所述中断的返回地址不属于所述预设地址范围时,确定所述当前中断为合法中断,调用所述正常中断服务函数。
可选的,所述可信基还用于:所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
可选的,所述可信基还用于:在所述计算机***启动过程中,对所述内核的代码段以及任务的代码段进行输入/输出I/O特权扫描;根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;启动所述OS。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;所述特权任务的特定操作包括内存保护装置寄存器操作。
本申请第四方面提供一种计算机***,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行可信基;
所述可信基,用于在第二任务需要调用***服务应用程序接口API时,保存所述第二任务的任务号;
所述可信基,还用于从内存中查找所述第二任务的第二内存切换配置信息,根据所述第二内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第二内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述内核对所述第二任务的内存的操作权限为无权限,配置后所述第二任务对所述内核的内存的操作权限为可读;
所述内核,用于调用所述第二任务以及所述***服务;
所述可信基,还用于在所述***服务完成后,取出所述第二任务的任务号,将内存访问边界从所述内核的内存切换到所述第二任务的内存;
所述内核,还用于调用所述第二任务获取所述***服务的返回结果。
可选的,所述可信基还用于:从内存中查找所述第二任务对应的第二内存切换配置信息之前,关闭中断;在根据所述第二内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基还用于:比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则确定所述第二内存切换配置信息合法;所述内核还用于:在所述第二内存切换配置信息合法的情况下,调用所述第二任务。
可选的,所述可信基还用于:若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息不相同,则确定所述第二内存切换配置信息不合法;所述内核还用于:在所述第二内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
可选的,所述可信基将内存访问边界从所述内核的内存切换到所述第二任务的内存,包括:从内存中查找所述第二任务的第三内存切换配置信息,根据所述第三内存切换配置信息对所述内存保护装置进行配置,所述第三内存切换配置信息包括:所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述第二任务对所述内核的内存操作权限为无权限,配置后所述内核对所述第二任务的内存的操作权限为可读。
可选的,所述可信基还用于:从内存中查找所述第二任务的第三内存切换配置信息之前,关闭中断,根据所述第三内存切换配置信息对所述内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基还用于:比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则确定所述第三内存切换配置信息合法;所述内核还用于:在所述第三内存切换配置信息合法的情况下,调用所述第二任务获取所述***服务的返回结果。
可选的,所述可信基还用于:若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息不相同,则确定所述第三内存切换配置信息不合法;所述内核还用于:在所述第三内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
可选的,所述OS和所述计算机***上的所有应用均处于特权层。
可选的,在打开所述中断之后,所述可信基还用于:
当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
根据所述中断向量表进入所述可信基的中断服务函数;
获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,确定所述中断为合法中断,调用所述正常中断服务函数。
可选的,所述可信基还用于:初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
可选的,所述可信基还用于:在所述计算机***启动过程中,对所述OS代码段和任务的代码段进行I/O特权扫描,根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;
启动所述OS。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
本申请第五方面提供一种计算机***,包括:处理器、存储器和内存保护装置,所述存储器中包括内存,所述处理器上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述存储器用于存储指令,所述处理器用于执行所述存储器中存储的指令,以使所述处理器执行本申请第一方面或者第一方面的任一可选方式所述的方法。
本申请第六方面提供一种计算机***,包括:处理器、存储器和内存保护装置,所述存储器中包括内存,所述处理器上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述存储器用于存储指令,所述处理器用于执行所述存储器中存储的指令,以使所述处理器执行本申请第二方面或者第二方面的任一可选方式所述的方法。
各计算机***对应的技术效果参照第一方面和第二方面提供的方法对应的技术效果,这里不再赘述。
本申请实施例提供一种内核和任务隔离的方法和装置,通过在计算机***上增加一个单独的可信基,该可信基独立于内核和任务,可信基、任务以及内核分别拥有独立的内存,任务和内核互相无法访问对方的内存,当需要进行任务调度时,由可信基根据可信基的内存上存储有内存切换配置信息对内存保护装置进行配置,通过对内存保护装置进行配置可以将内存访问边界从内核的内存切换到任务的内存,或者将内存访问边界从任务的内存切换到内核的内存,通过内存边界的切换实现任务和内核二者内存的访问,从而能够保证任务和内核的安全。
附图说明
图1为本申请实施例适用的一种计算机***的架构示意图;
图2为现有AUTOSAR OS中软件分区的架构示意图;
图3为本申请适用的新的软件分区的架构示意图;
图4为可信基的功能模块的一种示意图;
图5为本申请实施例一提供的内核和任务隔离的方法的流程图;
图6为本申请提供的内存边界访问表的一种示意图;
图7为本申请实施例二提供的内核和任务隔离的方法的流程图;
图8为本申请实施例三提供的内核和任务隔离的方法的流程图;
图9为本申请实施例四提供的内核和任务隔离的方法的流程图;
图10为本申请实施例五提供的内核和任务隔离的方法的流程图;
图11为本申请实施例六提供的内核和任务隔离的方法的流程图;
图12为本实施例适用的车载设备的硬件和软件架构示意图;
图13为气囊***反馈碰撞检测的流程示意图;
图14为本申请实施例八提供的计算机***的结构示意图;
图15为本申请实施例九提供的计算机***的结构示意图;
图16为本申请实施例十提供的计算机***的结构示意图。
具体实施方式
本申请实施例提供一种内核和任务(task)隔离的方法,可以应用于采用汽车开放***架构(automotive open system architecture,AUTOSAR)标准的计算机***。该计算机***可以部署在车辆上,也可以部署在远离车辆的地方并且与车辆进行无线通信,例如部署在与车辆通信连接的服务器上。部署在车辆上的计算机***可以称为车载设备。车辆具体可以为轿车、卡车、摩托车、公共汽车、船、飞机、直升飞机、割草机、娱乐车、游乐场车辆、施工设备、电车、高尔夫球车、火车、和手推车等,本发明实施例不做特别的限定。
图1为本申请实施例适用的一种计算机***的架构示意图,如图1所示,计算机***100包括处理器101,处理器101和***总线102耦合。处理器101可以是一个或者多个处理器,其中每个处理器都可以包括一个或多个处理器核。显示适配器(video adapter)103,显示适配器可以驱动显示器104,显示器104和***总线102耦合。***总线102通过总线桥105和输入输出(I/O)总线耦合。I/O接口106和I/O总线耦合。I/O接口106和多种I/O设备进行通信,比如输入设备107(如:键盘,鼠标,触摸屏等),媒体盘(media tray)108,(例如,CD-ROM,多媒体接口等)。收发器109(可以发送和/或接受无线电通信信号),摄像头110(可以捕捉景田和动态数字视频图像)和外部USB接口111。其中,可选地,和I/O接口106相连接的接口可以是USB接口。
其中,处理器101可以是任何传统处理器,包括精简指令集计算(reducedinstruction set computing,RISC)处理器、复杂指令集计算(complex instruction setcomputing,CISC)处理器或上述的组合。可选地,处理器可以是诸如专用集成电路(application-specific integrated circuit,ASIC)的专用装置。可选地,处理器101可以是神经网络处理器或者是神经网络处理器和上述传统处理器的组合。
可选地,在本申请所述的各种实施例中,计算机***100可位于远离自动驾驶车辆的地方,并且可与自动驾驶车辆无线通信。在其它方面,本申请所述的一些过程在设置在自动驾驶车辆内的处理器上执行,其它由远程处理器执行,包括采取执行单个操纵所需的动作。
计算机***100可以通过网络接口112和软件部署服务器113通信。网络接口112是硬件网络接口,比如,网卡。网络114可以是外部网络,比如因特网,也可以是内部网络,比如以太网或者虚拟私人网络(VPN)。可选地,网络114还可以是无线网络,比如WiFi网络,蜂窝网络等。
硬盘驱动接口115和***总线102耦合。硬件驱动接口115和硬盘驱动器116相连接。***内存117和***总线102耦合。运行在***内存117的数据可以包括计算机***100的操作***118和应用程序119。
操作***118包括壳(Shell)120和内核(kernel)121。Shell 120是介于使用者和操作***之内核(kernel)间的一个接口。shell是操作***最外面的一层。shell管理使用者与操作***之间的交互:等待使用者的输入,向操作***解释使用者的输入,并且处理各种各样的操作***的输出结果。
内核121由操作***中用于管理存储器、文件、外设和***资源的那些部分组成。直接与硬件交互,操作***内核通常运行进程,并提供进程间的通信,提供CPU时间片管理、中断、内存管理、IO管理等等。
应用程序122包括控制汽车自动驾驶相关的程序123,比如,管理自动驾驶的汽车和路上障碍物交互的程序,控制自动驾驶汽车路线或者速度的程序,控制自动驾驶汽车和路上其他自动驾驶汽车交互的程序。应用程序122也存在于软件部署服务器(deployingserver)113的***上。在一个实施例中,在需要执行应用程序122时,计算机***100可以从软件部署服务器113下载应用程序122。
传感器124和计算机***100关联。传感器124用于探测计算机***100周围的环境。举例来说,传感器124可以探测动物,汽车,障碍物和人行横道等,进一步传感器还可以探测上述动物,汽车,障碍物和人行横道等物体周围的环境,比如:动物周围的环境,例如,动物周围出现的其他动物,天气条件,周围环境的光亮度等。可选地,如果计算机***100位于自动驾驶的汽车上,传感器可以是摄像头,红外线感应器,化学检测器,麦克风等。
现有技术中,针对具备MPU能力的车载设备,AUTOSAR OS提出了一种软件分区隔离方法,图2为现有AUTOSAR OS中软件分区的架构示意图,如图2所示,OS的内核(Kernel)和可信应用处于特权模式(或称为特权层),普通应用(或称为非可信应用(non-trustedapplication))处于非特权模式(也称为非特权层或者用户模式(User Mode))。另外,存储软件、外设与I/O等基础软件也处于特权模式,图2中未示出。
在ARM***中,处理器的工作模式包括以下七种:用户模式、***模式、一般中断模式、快速中断模式、管理模式、中止模式和未定义指令模式。除用户模式外的其他模式均为特权模式。
处理器的模式可以理解为处理器当前的工作状态,例如,当前操作***正在执行用户程序,那么当前CPU的工作模式为用户模式,这时,如果网卡上有数据达到,产生中断信号,处理器自动切换到一般中断模式下处理网卡数据,处理完网卡数据,返回到用户模式下继续执行用户程序。
用户模式是用户程序的工作模式,它运行在操作***的用户态,它没有权限去操作其它硬件资源,只能执行处理自己的数据,也不能切换到其它模式下,要想访问硬件资源或切换到其它模式只能通过软中断或产生异常。
特权模式可以自由的切换处理器的工作模式,ARM内部寄存器和一些片内外设在硬件设计上只允许(或者可选为只允许)特权模式下访问。
如图2所示,内核的数据包括数据(data,也称为数据段(data segment))和代码(code,也称为代码段(code segment)),应用(包括普通应用和可信应用)的数据包括数据、代码以及一个或者多个任务,每个任务的数据包括数据和栈(stack)。应用程序会占用一定的内存,数据段通常是指用来存放程序中已初始化的全局变量的一块内存区域;代码段通常是指用来存放程序执行代码的一块内存区域堆栈段通常是指采用堆栈方式工作的一段内存区域。当程序被执行时,程序可能会将其执行的状态加入栈的顶部;当程序结束时,它必须把栈顶的状态数据弹出(pop)。堆(heap)是用于存放进程运行中被动态分配的内存段,它的大小并不固定,可动态扩张或缩减。栈(stack):栈又称堆栈,是用户存放程序临时创建的局部变量。除此以外,在函数被调用时,其参数也会被压入发起调用的栈中,并且待到调用结束后,函数的返回值也会被存放回栈中。由于栈的先进后出特点,所以栈特别方便用来保存/恢复调用。从这个意义上讲,可以把堆栈看成一个寄存、交换临时数据的内存区。其中,堆栈段也可以属于数据段。
现有技术中,普通应用之间互相不能读写对方的数据段的数据,并且互相不能执行对方数据段的程序,普通应用只能通过***调用进行特权切换后才能访问***服务。而可信应用由于与内核均处于特权层,所以可信应用可以直接访问内核的数据和服务,因此,可信应用和内核组成了AUTOSAR的可信计算基(Trusted Computing Base,TCB)。
MPU是嵌入式***中常用的用于内存保护的硬件资源,嵌入式***使用多任务的操作和控制,该***必须提供一种机制来保证正在运行的任务不破坏其他任务的操作,即要防止***资源和其他一些任务不被非法访问。
MPU使用域(region)或者保护域(protected region)对内存的地址空间进行管理,域是与内存的地址空间相关联的属性。MPU中域的个数通常为8个,编号从0-7。域的大小和起始地址可以保存在协处理器CP15的寄存器c6中,域的大小可以是4KB~4GB的任何2的乘幂,域的起始地址必须是其大小的倍数。
操作***可以为MPU的域配置访问权限,操作***可以基于处理器当前的工作模式设定域的访问权限为读、只读或者不可访问等。
当处理器访问内存的一个域时,MPU比较该域的访问权限属性和处理器当前的工作模式,如果处理器的访问请求符合域的访问权限,则MPU允许内核读写内存;如果处理器的访问请求不符合域的访问权限,则产生一个异常信号。
在嵌入式***中,内存管理单元(memory management unit,MMU)能够提供比MPU更强大的内存保护机制,MPU通常只提供内存保护,而MMU在提供内存保护的基础上,还可以提供虚拟地址到物理地址的映射等功能。
大多数使用MMU的机器都采用分页机制,操作***可以在页表中设置每个页表访问权限,有些页表不可以访问,有些页表只能在特权模式下访问,有些页表在用户模式和特权模式下都可以访问,同时,访问权限又分为可读、可写和可执行三种。这样设定之后,当处理器要访问一个虚拟地址时(virtual address,VA)时,MMU会检查处理器当前处于用户模式还是特权模式,访问内存的目的是读数据、写数据还是取指令执行:如果与操作***设定的权限相符,则允许访问,把VA转换成物理地址(phyasical address,PA);否则不允许执行,产生异常(exception)。
异常与中断的处理机制类似,不同的是中断由外部设备(如硬件错误、输入错误)产生,而异常由处理器内部产生,中断产生与处理器当前执行的指令无关,而异常是由于当前执行的指令出现问题导致的。
在正常情况下处理器在用户模式下执行用户程序(如图1的不可信应用),在中断或异常情况下处理器切换到特权模式执行内核程序,处理完中断或异常之后再返回用户模式继续执行用户程序。通常操作***会将虚拟地址空间划分为用户空间和内核空间。例如x86平台的linux***的虚拟地址空间范围是0x0000 0000~0xffff ffff,前3G的空间为用户空间,后1G的空间为内核空间。用户程序加载到用户空间,内核程序加载到内核空间,用户程序不能访问内核中的数据,也不能跳转到内核空间执行。这样可以保护内核,如果一个进程访问了非法地址,该进程可能会崩溃,但是不会影响到内核和***的稳定性。在***发生中断或异常时,不仅会跳转到中断服务函数或异常服务函数中执行,而且还会从用户模式切换到特权模式,从中断服务程序或异常服务程序跳转到内核代码中执行。
可信计算基:也称为可信基,是为实现计算机***安全保护的所有安全保护机制的集合,该安全保护机制可以以硬件、固件和软件的形式出现,一旦可信计算机基的某个构件出现程序错误或者安全隐患,会对整个***的安全造成危害。与之相反,如果除可信计算基之外的其他部分出现问题,也只是泄漏了***安全策略赋予它们的相关权限而已,这些权限一般都是比较低的,所以减小可信计算基对***整体安全至关重要。
***调用(system call):操作***的主要功能是管理硬件资源和为应用程序开发人员提供良好的环境来使应用程序具有更好的兼容性,为了达到这个目的,内核提供一系列具备预定功能的多内核函数,通过一组称为***调用的接口呈现给用户。***调用把应用程序的请求传给内核,调用相应的内核函数完成所需的处理,将处理结果返回给应用程序。
图2所示架构中,普通应用运行在非特权层,当普通应用处理任务调度、***服务请求以及I/O访问等操作时需要进行特权切换,从非特权模式切换到特权模式,而特权切换占用的时间较长。示例性的,当普通应用向内核请求需要更高权限运行的服务时,如特权I/O(priviledge I/O)的访问,进程间通信等,普通应用无法直接访问***服务,而需要通过***调用进行特权切换。
处理器的指令分为普通指令和特权指令,特权指令只有内核能执行,用户模式下只能运行普通指。计算机***的I/O访问包括特权I/O访问和普通I/O(normal I/O)访问,其中,特权I/O是指只有内核能否访问的I/O,普通I/O只有应用可以访问,当某个应用中的任务需要访问特权I/O时,需要通过***调用才能访问特权I/O。
具体的,普通应用中的用户任务发起***服务请求到***调用处理函数(syscallhandler),会发生以下行为:处理器会产生同步异常(Trap),并且刷新流水线(pipeline),保存用户任务的CPU寄存器,读取异常向量表,切换MPU保护域。每一个***调用都需要经历从用户任务到内核的上下文切换,接下来syscall handler会调用***服务的应用程序接口(application programming interface,API),在完成用户任务后,还需要经历一次从内核到用户任务的上下文切换,其中,上述从用户任务到内核的上下文切换或者从内核到用户任务的上下文切换即为一次特权切换。
在一次***调用过程中,需要进行两次上下文切换(或者两次特权切换),每一次上下文切换的时钟开销大概在300个指令周期(cycles)以上。尽管内存分配、I/O访问,互斥资源都是任务中较为常见的操作,但是由于资源或I/O都属于特权层,因此需通过***调用才能访问,而内存分配、I/O访问等在***中频繁发生,从而导致普通应用的特权切换开销过大,特权切换开销过大会导致应用的响应不及时,进而可能导致错误传导或者任务调度异常。
在车载设备中,自动制动***(autonomous emergency braking,AEB)是一种主动安全技术,通过雷达、摄像头等设备侦测前方道路,在小于安全距离时,采取紧急制动,所以AEB对实时性和***响应要求极高。
另外,图1所示分区架构中,可信应用与内核组成了可信基,当可信应用的个数过多时,可信基也会因过大而存在安全隐患。因为一旦可信任务或内核漏洞被利用,用户数据和内核数据会被完全暴露,存在安全隐患。
汽车电子***面临的安全威胁包括:远程入侵与物理接触攻击。对于存在安全漏洞的车娱***,漏洞的利用仅会引起用户隐私的泄露,不会造成人身安全损失;而对于转向辅助***,若存在安全漏洞,则在遭破解远程控制后会导致人身安全风险。
可见,在车载设备中,实时性与安全性至关重要,为了满足车载设备的实时性和安全性要求,本申请实施例提供一种新的分区架构,图3为本申请适用的新的软件分区的架构示意图,如图3所示,该新的分区架构中将普通应用划分到特权层,即OS和应用(包括现有技术中的普通应用和可信应用)都处于特权层,由于普通应用和内核同都处于特权层,因此普通应用中的任务调度、***服务请求等不需要特权切换的开销,从而提高了应用的响应速度。
不同于现有技术,该新的分区架构中还增加了可信基,
但是,出于车载设备的安全性考虑,需要保证内核和任务之间的内存隔离,该内存隔离是指任务和内核之间不能够任意访问对方的内存。本申请实施例中,增加一个可信保护单元,将该可信保护单元作为可信基,如图3所示,该可信基独立于内核和任务。图2所示分区架构中可信应用和内核共同组成了可信基,所以,本申请实施例中的可信基不同于现有技术的可信基。
该可信基用于处理内存隔离,该可信保护单元也称为MCU保护环境底座(Protected Environment Keystone for MCU,PEKM)。可信基相当于一个API网关,实现任务和内核的连接,本申请实施例中所有的***调用和任务调度都需要由该可信基进行内存边界切换与认证,以保证任务与内核处于特权层的安全。
可以理解,当车载设备的处理器在不同的工作模式下,其能够访问的内存空间是有限的,处理器在不同工作模式下能够访问的内存空间的范围称为内存边界。例如,处理器工作在特权模式下和用户模式下能够访问的内存空间是不同的,当处理器的工作模式从特权模式切换到用户模式之后,处理器能够访问的内存空间也发生了变化,处理器访问的内存空间的变化称为内存边界切换。
可选的,该可信基可以通过软件方式实现,该可信基整体(即实现该可信基的软件整体)作为车载设备的可信基,该可信基的内存上存储有MPU配置信息或者MMU的配置信息,主要是通过该MPU配置信息和MMU配置信息实现内存隔离,因此,也可以说车载设备的可信基主要包括MPU配置信息或者MMU配置信息。相比于现有技术中车载设备的可信保护基由内核以及可信应用组成,减小了可信基,提高了***的安全。
图3所示分区架构中,内核与可信应用之间,内核与非可信应用之间,可信应用与可信应用之间,可信应用和非可信应用之间,同一个可信应用的不同任务之间,以及同一个不可信应用的不同任务之间,均存在保护边界(或称为内存保护边界),该保护边界即上述提到的内存边界。当任务要访问的内存超出了可信基为该任务分配的内存边界,会发生内存异常。本申请实施例中,在发生内存异常后,由该可信基实现内存边界切换。
本申请实施例中,车载设备的主要保护机制由MPU配置信息或者MMU配置信息来实现,可以通过敏感指令消除(instruction elimination)、过后验证(post verification)、权限保护等方式保护可信基。
敏感指令消除是指通过编译器技术,将内核(或者OS)和任务中原有的、访问MPU寄存器或者MMU寄存器的***指令消除,对代码段数据段进行W⊕X保护,⊕表示异或运算,W⊕X保护即数据执行保护(data execution prevention,DEP),只有可信基具有访问操作MPU或者MMU的***指令。
权限保护是指将可信基中包括的内存切换配置信息、中断向量表配置为只读,将可信基的代码段配置为执行不可写。其中,内存切换配置信息用于将内存访问边界从内核的内存切换到任务的内存,或者将内存访问边界从任务的内存切换到内核的内存。
过后验证:一方面为了防止路由信息协议(routing information protocol,RIP)攻击,可信基会验证内存切换配置信息是否合法,该验证过程为第一次过后验证,若发现内存切换配置信息不合法,则触发韧性保护,如重启***、关闭***、终止服务等。对于中断请求,为避免对MPU或者MMU配置后中断发生,可能绕过第一次过后验证,本申请实施例中还可以进行第二次过后验证,第二次过后验证是对中断请求进行验证,检查中断处理函数返回地址是否合法。
图4为可信基的功能模块示意图,如图4所示,该可信基包括调用点、API网关和初始化模块。调用点是该可信基与内核、以及可信基与任务之间的服务入口,当程序技术器(program counter,PC)运行到调用点之后,会调用该可信基提供的接口,该接口包括:***引导程序(system bootloader)接口、***调用接口、中断处理程序(Interrupt handler)接口以及任务调度(schedule)接口。初始化模块用于处理***初始化事件,用于在***启动过程中对I/O的特权控制进行初始化,包括I/O特权扫描(privilege scanner)与指令消除。该API网关具有以下功能:内存访问边界的切换、过后验证与异常处理(exceptionhandler)。API网关用于处理***调用、中断服务函数与任务调度事件,在任务或内核需要切换内存访问边界去访问资源或服务时,API网关会通过配置MPU或者配置MMU进行内存访问边界的切换,API网关根据可信基的内存中存储的配置信息对MPU或者MMU进行配置,并对配置信息的合法性进行校验(即过后验证),当校验通过时返回任务或内核的下一条指令。
图5为本申请实施例一提供的内核和任务隔离的方法的流程图,本实施例的方法由计算机***执行,该计算机***上运行有OS和应用,OS上运行有内核,一个应用包括一个或者多个任务,该OS上还运行有可信基。如图5所示,本实施例提供的方法包括以下步骤:
S131、内核从任务队列中查找第一任务。
AUTOSAR OS是一个静态任务分配的***,任务可以通过调度表配置定期或非定期启动。当现任务(即当前调度的任务)从运行态切换到准备态时,调度器(Scheduler或者OSScheduler)运行,调度器用于进行任务调度,调度器将现任务保存,保存任务的上下文信息,根据调度策略从任务队列中找到待运行的第一任务。
调度器可以根据任务之间的优先级对任务队列中的任务进行调度,该第一任务可能是现任务,也可能不是现任务,当现任务是任务队列中优先级最高的任务时,该第一任务为现任务,当现任务不是任务队列中优先级最高的任务是,该第一任务不是现任务,而是优先级高于现任务的某个任务。可以理解,这里只是举例说明,任务队列中的任务还可以采用其他方式进行调度。
S132、可信基从内存查找第一任务对应的第一内存切换配置信息,根据第一内存切换配置信息对内存保护装置进行配置。
本实施例中,该内存保护装置是用于对所计算机***的内存进行保护的硬件组件,可以为MPU或者MMU。该第一内存切换配置信息用于将内存访问边界从内核的内存切换到第一任务的内存。
其中,该第一内存切换配置信息包括内核的内存地址信息和内核的内存操作权限,第一任务的内存地址信息和第一任务的内存操作权限。配置后的内核的内存操作权限为无权限,配置后的第一任务的权限为可读。第一内存切换配置信息还可以包括可信基的内存地址信息和内存操作权限。
本实施例中,内核、任务以及可信基的内存操作权限均由数据段(或者称为数据段内存)、代码段(或者称为代码段内存)以及只读(read only)段(或者称为只读段内存)的权限组成。数据段内存即数据段占用的内存,代码段内存即代码段占用的内存,只读段内存即只读段占用的内存。
配置后第一任务对内核的内存的操作权限为无权限,即第一任务对内核的数据段、代码段和只读段的权限均为无权限,所以配置完成后,第一任务无法访问内核的内存。
配置后内核能够访问第一任务的内存,相应的,配置后内核对第一任务的内存的访问权限为可读。其中,内核对第一任务的内存的操作权限具体包括:内核对第一任务的数据段的权限为可读、可写和不可执行,内核对第一任务的代码段的权限为可读、可执行和不可写,内核对第一任务的只读段的权限为可读、不可写和不可执行。
配置前后任务和内核对可信基的内存的访问权限没有发生变化。内核或第一任务对可信基的内存的操作权限例如包括:内核或第一任务对可信基的数据段的权限为无权限,内核或第一任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第一任务对可信基的只读段的权限为可读、不可写和不可执行。
上述数据段、代码段以及可读段的权限均由:读、写以及执行三种权限组成,在描述数据段、代码段以及可读段的权限时可以分别描述读、写以及执行三种权限,也可以以否定方式描述数据段、代码段以及可读段的权限。例如,当第一任务的数据段的权限为可读、可写和不可执行时,如果通过否定方式描述,那么第一任务的数据段的权限为不可执行;当第一任务的代码段的权限为可读、可执行和不可写时,如果通过否定方式描述,那么第一任务的代码段的权限为不可写;当第一任务的只读段的权限为可读、不可写和不可执行时,如果通过否定方式描述,那么第一任务的只读段的权限为不可写和不可执行。
可信基从内存中(具体为可信基的内存)读取第一内存切换配置信息,将第一内存切换配置信息读取到通用寄存器,再将通用寄存器中的第一内存切换配置信息读取到内存保护装置的寄存器中,根据内存保护装置的寄存器中的第一内存切换配置信息对内存保护装置的保护域进行配置。在内存保护装置的保护域配置完成后,第一任务只能对保护域内的内存地址进行访问,当访问的内存地址超出保护域,会产生内存访问异常,从而实现内存隔离。
本申请实施例中,可信基在对内存保护装置配置之前,内存访问边界位于内核的内存,此时如果要调用第一任务,由于内核和第一任务互相不具有访问权限,所以无法对第一任务的内存进行访问,所以需要先进行内存访问边界的切换。在内存保护装置配置完成之后,第一任务对内核的数据段、代码段和只读段的权限均为无权限,内核对第一任务的内存的操作权限为可读,所以配置完成后第一任务无法访问内核的内存,但是内核能够访问第一任务的内存,从而完成了将内存访问边界从内核内存切换到第一任务的内存。
其中,在内存边界切换之前,内核对第一任务的数据段、代码段和只读段的权限均为无权限,内核对内核的数据段的权限为可读、可写和不可执行;内核对内核的代码段的权限为可读、可执行和不可写,内核对内核的只读段的权限为可读、不可写和不可执行;内核对可信基的数据段的权限为无权限,内核对可信基的代码段的权限为可执行,不可读和不可写,内核对可信基的只读段的权限为可读、不可写和不可执行。因此,在内存边界切换之前,内核无法访问第一任务的内存,处理器的工作模式为特权模式,在内存边界从内核的内存切换到第一任务的内存之后,第一任务无法访问内核的内存,处理器的工作模式为用户模式。
内核、第一任务的可信基的内存地址信息可以为内存的起始地址和地址长度,也可以为起始地址和结束地址。内存的操作权限可以为不可读、不可写以及不可执行等。当内存保护装置为MPU时,内核、第一任务的可信基的内存地址为物理地址,当内存保护装置为MMU时。内核、第一任务的可信基的内存地址为物理地址、虚拟地址或者虚拟地址与物理地址的映射表。
本申请实施例中,存在两种内存切换配置信息,一种内存切换配置信息用于将内存访问边界从内核的内存切换到任务的内存,另一种内存切换配置信息用于将内存访问边界从任务的内存切换到内核的内存。两种内存切换配置信息均存储在可信基的内存中,具体的,该内存切换配置信息存储在可信基的只读段中,可信基的只读段的操作权限被配置为只读,即可信保护保护单元的只读段不可写不可执行。
本申请实施例中只有可信基能够读取该内存切换配置信息,并执行该内存切换配置信息完成MPU配置或者MMU配置,从而完成内存边界切换,而内核无法执行该内存切换配置信息,无法对MPU或者MMU进行配置。现有技术中,MPU或者MMU的配置由内核完成。
可选的,第一内存切换配置信息可以以表格形式存储在可信基的内存上,示例性的,该第一内存切换配置信息存储在内存边界访问表中,该内存边界访问表可以静态生成或者预先配置,该内存边界访问表中包括多个任务至内核切换表,以及多个内核至任务切换表,其中,任务至内核切换表用于将内存访问边界从内核的内存切换到任务的内存,将内存访问边界从任务的内存切换到内核的内存。
图6为本申请提供的内存边界访问表的一种示意图,如图6所示,MCU上的内存的地址范围为:0X00000000-0XFFFFFFFF,该内存地址范围的布局如图6所示,该内存的地址范围被划分为内核的内存、可信基的内存、任务1至任务n的内存、特权I/O的内存、普通I/O的内存。其中,内核的内存、可信基的内存和任务的内存均包括:数据段内存、代码段内存和只读段内存,任务的内存(包括只读段、代码段和数据段)排布在连续的地址空间。
可以理解,内核的内存、可信基的内存、任务的内存、特权I/O的内存、普通I/O的内存的地址空间可以是连续的,也可以是不连续的,图6只是一种示意图,并不构成对内存划分的限定。
如图6所示,每个任务可以对应三张任务至内核切换表,第一张任务至内核切换表中包括内核、任务和可信基各自的代码段内存的起始地址、结束地址和权限,第二张任务至内核切换表中包括内核、任务和可信基各自的数据段内存的起始地址、结束地址和权限,第三张任务至内核切换表中包括内核、任务和可信基各自的只读段内存的起始地址、结束地址和权限。当然,三张任务至内核切换表中的内容也可以存储在一张表中,本实施例不对此进行限制。
图6中,任务至内核表中第0行表示内核的代码段的起始地址(Kernel_stext)、结束地址(Kernel_etext)和权限,第1行表示任务的代码段的起始地址(Task_stext)、结束地址(Task_etext)和权限,第2行表示可信基的代码段的起始地址(PEKM_stext)、结束地址(PEKM_etext)和权限。同样,图6中(Kernel/Task/PEKM_sdata)表示内核/任务/可信基的数据段的起始地址,(Kernel/Task/PEKM_edata)表示内核/任务/可信基的数据段的结束地址,(Kernel/Task/PEKM_sro)表示内核/任务/可信基的只读段的起始地址,(Kernel/Task/PEKM_ero)表示内核/任务/可信基的只读段的结束地址。
同样,每个任务还对应三张内核至任务切换表,第一张内核至任务切换表中包括任务、内核和可信基各自的代码段内存的起始地址、结束地址和权限,第二张内核至任务切换表中包括任务、内核和可信基各自的数据段内存的起始地址、结束地址和权限,第三张内核至任务切换表中包括任务、内核和可信基各自的只读段内存的起始地址、结束地址和权限。
S133、内核调用第一任务。
当内存访问边界从内核的内存切换到第一任务的内存之后,第一任务无法访问内核的内存,第一任务的内存可以被内核访问,内核调用第一任务,此时处理器的工作模式为用户模式,在用户模式下第一任务只能访问自己的内存,无法访问内核的内存。
需要说明的是,本实施例的方法适用于以下两种场景:普通应用位于非特权层,内核和可信应用位于特权层;所有应用均位于特权层,即普通应用也位于特权层。其中,后一种场景相对于前一种场景,能够提高***性能,即提高应用的响应速度。当所有应用都处于特权层时,当普通应用进行***调用时不需要进行特权切换,减少了特权切换的开销,从而提高了应用的响应速度。
另外,本实施例中可信基主要由MPU配置信息或者MMU配置信息组成,相比于现有技术中可信基由内核和可信应用共同组成,减小了可信基,提高了***的安全。
本实施例中,可信基独立与内核和任务,在进行任务调度时,由可信基从内存中查找第一任务的第一内存切换配置信息,根据第一内存切换配置信息对内存保护装置进行配置,第一内存切换配置信息包括内核的内存地址信息和操作权限,以及第一任务的内存地址信息和操作权限;配置后的内核的内存操作权限为无权限,配置后的第一任务的权限为可读。内存保护单元配置之后,由于内核的内存操作权限均为无权限,即第一任务无法访问内核的内存,从而保证了任务和内核的安全。
图7为本申请实施例二提供的内核和任务隔离的方法的流程图,本实施例在实施例一的基础上,可信基对内存保护装置配置之前,关闭了中断,在内存保护装置配置完成之后打开中断,从而避免由于中断操作对寄存器中的第一内存切换配置信息的篡改。进一步的,在打开中断之前,可以进行一次过后验证,即验证第一内存切换配置信息是否合法,当第一内存切换配置信息合法时,才打开中断,通过过后验证能够防止面向跳转的编程攻击(Jump-oriented Programming,JOP)或者面向返回的编程攻击(Return-OrientedProgrammming,ROP)等流控攻击。
S201、内核从任务队列中查找第一任务。
S202、可信基关闭中断。
在对内存保护装置配置之前,将中断关闭,可以防止中断对通用寄存器中存储的第一内存切换配置信息进行修改,如果不关闭中断,中断可能对通用寄存器中的存储的第一内存切换配置信息进行修改,如果通用寄存器中的存储的第一内存切换配置信息被修改,那么会导致后续对内存保护装置发生错误。
S203、可信基从内存中查找第一任务的第一内存切换配置信息,根据第一内存切换配置信息对内存保护装置进行配置。
第一内存切换配置信息包括内核、第一任务以及可信基的内存保护装置配置信息,内核的内存保护装置配置信息包括内核的内存地址信息和内核的内存操作权限,第一任务的内存保护装置配置信息包括第一任务的内存地址信息和第一任务的内存操作权限,可信基的内存保护装置配置信息包括可信基的内存地址信息和可信基的内存操作权限。
可信基先将内核、第一任务以及可信基的内存保护装置配置信息分别从内存加载到通用寄存器中。示例性的,分别将内核、第一任务以及可信基的内存保护装置配置信息分别加载到通用寄存器r0,r1和r2,r0=table[kenel],r1=table[task1 ID],r2=table[PEKM],“=”表示赋值运算,table[kenel]表示内存中存储的内核的内存保护装置配置信息,table[task1 ID]表示内存中存储的第一任务的内存保护装置配置信息,[PEKM]表示内存中存储的可信基的内存保护装置配置信息。
可信基将通用寄存器r0,r1和r2中存储的内核、第一任务以及可信基的内存保护装置配置信息读取到内存保护装置的寄存器中,内存保护装置的寄存器为专用寄存器,然后可信基根据内存保护装置的寄存器中存储的内核、第一任务以及可信基的内存保护装置配置信息对内存保护装置的保护域进行配置。其中,内存保护装置的保护域的配置可以通过如下方式表示:region[0]=r0,region[1]=r1,region[2]=r2,其中,region[0]、region[1]和region[2]分别表示内存保护装置的保护域,即根据通用寄存器r0,r1和r2中的配置信息设置内核、第一任务以及可信基的内存空间的访问权限。通过对内存保护装置进行配置,完成内存边界切换。
S204、可信基比较寄存器上存储的第一内存切换配置信息和内存中存储的第一内存切换配置信息是否相同。
可以理解,内存中存储的第一内存切换配置信息是只读的,不可被篡改的,而通用寄存器上存储的第一内存切换配置信息可能会由于中断、JOP或者ROP被篡改,因此,本实施例中在打开中断之前,先判断内存中存储的第一内存切换配置信息与通用寄存器中存储的第一内存切换配置信息是否相同,如果相同则说明通用寄存器中的第一内存切换配置信息没有被篡改,则打开中断,如果不相同,则说明通用寄存器中的第一内存切换配置信息被篡改了,可信基关闭OS或者终止第一任务,从而可以防止ROP或JOP等控制流攻击或者中断对第一内存切换配置信息的修改。
在可信基对内存保护装置配置完成之后,执行步骤S203,步骤S203为可选步骤。示例性的,可信基将第一内存切换配置信息从内存中读取到通用寄存器r3,r4和r5中,r3用于存储内核的内存保护装置配置信息,r4用于存储第一任务的内存保护装置配置信息,r5用于存储可信基的内存保护装置配置信息。
其中,通用寄存器r0,r1和r2中存储的内核、第一任务以及可信基的内存保护装置配置信息可能会被中断、ROP或者JOP等修改,而通用寄存器r3,r4和r5中的值是刚从内存中读取的没有被修改的值,所以,可信基将r0和r3的值进行比较,将r1和r4的值进行比较,将r2和r5的值进行比较,如果三组通用寄存器中的值均相同,则说明第一内存切换配置信息没有被修改。
示例性的,可以通过如下方式表示上述比较过程:cmp(table[kenel],r0),cmp(table[task1],r1),cmp(table[PEKM],r2),cmp表示比较操作,table[kenel/task1/PEKM]表示内存中存储的内核、第一任务以及可信基的内存保护装置配置信息,r0,r1和r2表示通用寄存器中存储的内核、第一任务以及可信基的内存保护装置配置信息。
当通用寄存器上存储的第一内存切换配置信息和内存中存储的第一内存切换配置信息相同时,说明第一内存切换配置信息是合法的,即通用寄存器上的第一内存切换配置信息没有被篡改,此时执行步骤S205,当通用寄存器上存储的第一内存切换配置信息和内存中存储的第一内存切换配置信息不相同时,说明第一内存切换配置信息合法不合法,通用寄存器上的第一内存切换配置信息被篡改了,此时执行步骤S207。
S205、可信基打开中断。
S206、内核调用第一任务。
S207、内核关闭OS和/或终止第一任务。
当第一内存切换配置信息合法不合法时,执行步骤S207。
本实施例中,可信基在从内存中查找第一任务的第一内存切换配置信息之前,关闭中断,在根据第一内存切换配置信息完成内存保护装置的配置后,打开中断,从而能够防止中断对通用寄存器中存储的第一内存切换配置信息的修改。可选的,可信保护在打开中断之前,可信基比较寄存器上存储的第一内存切换配置信息和内存中存储的第一内存切换配置信息是否相同,若寄存器上存储的第一内存切换配置信息和内存中存储的第一内存切换配置信息相同,则打开中断,内存和寄存器中存储的第一内存切换配置信息相同,则说明寄存器中的第一内存切换配置信息没有被ROP或JOP等攻击篡改,寄存器中的内存切换配置信息被修改之后,可能导致任务和内核的内存中的数据被泄露,从而无法保证在任务和内核的安全性。本实施例中,如果内存和寄存器中存储的第一内存切换配置信息不相同,则关闭OS和/或终止第一任务,从而能够保证任务和内存的安全性。
可以理解,在内存保护装置的配置之前关闭中断操作,以及过后验证可以解耦实现,即在一个可能实施例中,可信基可以在对内存保护装置配置之前关闭中断操作,在配置完成之后开启中断,在开启中断之前不比较内存中存储的内存切换配置信息与寄存器中存储的内存切换配置信息是否相同。在另一个可能实施例中,可信基可以在对内存保护装置配置之前不关闭中断操作,在调用服务之前,比较内存中存储的内存切换配置信息与寄存器中存储的内存切换配置信息是否相同。
图8为本申请实施例三提供的内核和任务隔离的方法的流程图,本实施例的方法由计算机***执行,计算机***上运行有OS和应用,OS上运行有内核,应用包括一个或者多个任务,OS上还运行可信基,本实施例以可信基对***调用过程中内存边界切换为例进行说明。可以理解,本实施例的方法可以独立与实施例一的方法的执行,也可以在实施例一之前或者之后执行,本实施例不对此进行限制。如图8所示,本实施例提供的方法包括以下步骤:
S301、在第二任务需要调用***服务API时,可信基保存第二任务的任务号(taskID)。
第二任务的任务号用于唯一表示一个任务,当第二任务需要调用***服务时,第二任务将服务ID(service ID)作为***服务请求的***服务号发送给可信基。
第二任务不同于第一任务,第二任务为需要进行***调用的任务,第一任务为进行普通函数调用的任务。第二任务要进行***调用,需要将处理器的工作状态从用户态切换到内核态,才能进行***调用。而第一任务在进行普通函数调用过程中,一直处于用户态。
S302、可信基查找第二任务的第二内存切换配置信息,根据该第二内存切换配置信息对内存保护装置进行配置。
该内存保护装置是用于对计算机***的内存进行保护的硬件组件,可以为MMU或者MPU。由于第二任务要进行***调用,需要将处理器的工作状态从用户态切换到内核态,在内核态下处理器能否访问内核的内存。当前状态下,内存访问边界位于第二任务的内存中,所以,本实施例中需要将内存访问边界从第二任务的内存切换到内核的内存。
其中,该第二内存切换配置信息用于将内存访问边界从第二任务的内存切换到内核的内存。该第二内存切换配置信息包括内核的内存地址信息和内核的内存操作权限,以及第二任务的内存地址信息和第二任务的内存操作权限。其中,配置后所述内核对第二任务的内存的操作权限为无权限,配置后第二任务对所述内核的内存的操作权限为可读。
其中,配置后内核对第二任务的内存的操作权限为无权限,即内核对第二任务的数据段、代码段和只读段的权限均为无权限,内核无法访问第二任务的内存。
其中,配置后第二任务对内核的内存的操作权限为可读,即配置后第二任务能够访问内核的内存,其中,第二任务对内核的内存的操作权限可以包括:第二任务对内核的数据段的权限为可读、可写和不可执行,第二任务对内核的代码段的权限为可读、可执行和不可写,第二任务对内核的只读段的权限为可读、不可写和不可执行。
可选的,配置前和配置后内核和第二任务对可信基的内存的操作权限没有变化,内核或第二任务对可信基的内存的操作权限例如包括:内核或第二任务对可信基的数据段的权限为无权限,内核或第二任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第二任务对可信基的只读段的权限为可读、不可写和不可执行。其中,第二内存切换配置信息存储在可信基的只读段中。
通过上述可知,第二内存切换配置信息和第一内存切换配置信息中均包括:内核的内存地址信息和内存访问权限,任务的内存地址信息和内存访问权限,以及可信基的内存地址信息和内存访问权限。但是,两个配置信息中的内存地址信息和内存访问权限的具体取值不同,第二内存切换配置信息可以以表格形式存储在可信基的内存上,例如存储在图6所示内存边界访问表中,具体存储在任务至内核表中,第二内存切换配置信息的具体实现方式可参照实施例一中第一内存切换配置信息的描述,这里不再赘述。
在对内存保护装置配置完成后,第二任务的数据段、代码段和只读段的权限均为无权限,则第二任务的内存无法被内核或者其他任务访问,内核的内存能否被第二任务访问,从而能够进行***调用。
S303、内核调用第二任务。
在根据第二内存切换配置信息对内存保护装置配置完成之后,内存访问边界切换成功,即内存访问边界从第二任务的内存切换到了内核的内存,
S304、内核调用***服务。
在根据第二内存切换配置信息对内存保护装置配置完成之后,内存访问边界切换成功,即内存访问边界从第二任务的内存切换到了内核的内存,此时,内核可以调用第二任务和***服务。示例性的,内核根据service ID找到***服务。
S305、在***服务完成后,可信基取出第二任务的任务号,将内存访问边界从内核的内存切换到第二任务的内存。
***调用需要进行两次内存边界切换,即将内存边界从第二任务的内存切换到内核的内存,在***服务完成后,还需要将内存边界从内核的内存切换到第二任务的内存。
在***服务完成后,内核调用可信基的调用点,取出保存的任务号。
示例性的,可信基可以通过如下方式将内存访问边界从内核的内存切换到第二任务的内存:可信基从内存中查找第二任务的第三内存切换配置信息,根据该第三内存切换配置信息对内存保护装置进行配置。
该第三内存切换配置信息用于将内存访问边界从内核的内存切换到第二任务的内存,其中,该第三内存切换配置信息包括:内核的内存地址信息和内核的内存操作权限,以及第二任务的内存地址信息和第二任务的内存操作权限,配置后第二任务对内核的内存操作权限为无权限,配置后内核对第二任务的内存的操作权限为可读。
配置后第二任务对内核的内存的操作权限为无权限,即第二任务对内核的数据段、代码段和只读段的权限均为无权限,所以配置完成后,第二任务无法访问内核的内存。
配置后内核对第二任务的内存的权限为可读,即配置后内核能够访问第二任务的内存,其中,内核对第二任务的内存的权限为可读例如可以包括:内核对第二任务的数据段的权限为可读、可写和不可执行,内核对第二任务的代码段的权限为可读、可执行和不可写,内核对第二任务的只读段的权限为可读、不可写和不可执行。
配置前后第二任务和内核对可信基的内存的访问权限没有发生变化。内核或第二任务对可信基的内存的操作权限例如包括:内核或第二任务对可信基的数据段的权限为无权限,内核或第二任务对可信基的代码段的权限为可执行,不可读和不可写,内核或第二任务对可信基的只读段的权限为可读、不可写和不可执行。
可选的,第三内存切换配置信息还可以包括可信基的内存地址信息和内存操作权限。第三内存切换配置信息中包括的可信基的数据段的权限为无权限,可信基的代码段的权限为可执行,不可读和不可写,可信基的只读段的权限为可读、不可写和不可执行。
第三内存切换配置信息的作用和实施例一中第一内存切换配置信息的作用相同,都是用于将内存访问边界从内核的内存切换到任务的内存,第三内存切换配置信息的具体描述可以参照实施例一中第一内存切换配置信息的描述,这里不再赘述。
S306、内核调用第二任务获取***服务返回的结果。
本实施例中,第二任务要调用***服务时,需要进行两次内存边界切换,在***调用之前内存访问边界位于第二任务的内存,所以,需要先根据第二内存切换配置信息将内存访问边界从第二任务的内存切换到内核的内存,在将内存访问边界切换到内核的内存之后,可以进行***调用,***调用完成之后需要将内存访问边界从内核的内存切换到第二任务的内存,此时,根据第三内存切换配置信息进行内存访问边界的切换,将内存访问边界切回到第二任务的内存。所述方法,在***调用过程中,通过两次内存边界切换,实现***调用,可以保证第二任务和内核的内存隔离。
图9为本申请实施例四提供的内核和任务隔离的方法的流程图,本实施例在实施例三的基础上,可信基对内存保护装置配置之前,需要关闭中断,在配置完成之后打开中断之前,进一步的,在打开中断之前可以验证第二内存切换配置信息和第三内存切换配置信息的合法性,当第二内存切换配置信息或者第三内存切换配置信息合法时,才打开中断。可以防止中断、JOP或者ROP对内存切换配置信息的修改。
S401、在第二任务需要调用***服务API时,可信基关闭中断,保存第二任务的任务号。
S402、可信基从内存查找第二任务的第二内存切换配置信息,根据该第二内存切换配置信息对内存保护装置进行配置。
第二内存切换配置信息包括内核、第二任务以及可信基的内存保护装置配置信息,可信基先将内核、第二任务以及可信基的内存保护装置配置信息分别从内存加载到通用寄存器中。示例性的,可信基将内核、第二任务以及可信基的内存保护装置配置信息分别加载到通用寄存器r0,r1和r2,r0=table[kenel],r1=table[task2 ID],r2=table[PEKM],“=”表示赋值运算,table[kenel]表示内存中存储的内核的内存保护装置配置信息,table[task2 ID]表示内存中存储的第二任务的内存保护装置配置信息,[PEKM]表示内存中存储的可信基的内存保护装置配置信息。
可信基将通用寄存器r0,r1和r2中存储的内核、第二任务以及可信基的内存保护装置配置信息读取到内存保护装置的寄存器中,内存保护装置的寄存器为专用寄存器,然后可信基根据内存保护装置的寄存器中存储的内核、第二任务以及可信基的内存保护装置配置信息对内存保护装置的保护域进行配置。其中,内存保护装置的保护域的配置可以通过如下方式表示:region[0]=r0,region[1]=r1,region[2]=r2,其中,region[0]、region[1]和region[2]分别表示内存保护装置的保护域,即根据通用寄存器r0,r1和r2中的配置信息设置内核、第一任务以及可信基的内存空间的访问权限。通过对内存保护装置进行配置,完成内存边界切换。
S403、可信基比较寄存器上存储的第二内存切换配置信息和内存中存储的第二内存切换配置信息是否相同。
可以理解,内存中存储的第二内存切换配置信息是只读的,不可被篡改的,而通用寄存器上存储的第二内存切换配置信息可能会由于中断、JOP或者ROP被篡改,因此,本实施例中在打开中断之前,先判断内存中存储的第二内存切换配置信息与通用寄存器中存储的第二内存切换配置信息是否相同,如果相同则说明通用寄存器中的第二内存切换配置信息没有被篡改,则打开中断,如果不相同,则说明通用寄存器中的第二内存切换配置信息被篡改了,可信基关闭OS或者终止第一任务,从而可以防止ROP或JOP等控制流攻击或者中断对第二内存切换配置信息的修改。
当寄存器上存储的第二内存切换配置信息和内存中存储的第二内存切换配置信息相同的情况下,即第二内存切换配置信息合法的情况下,执行步骤S404,当寄存器上存储的第二内存切换配置信息和内存中存储的第二内存切换配置信息不相同的情况下,即第二内存切换配置不合法的情况下,执行步骤S410。其中,判断第二内存切换配置信息是否合法的实现方式与实施例一中判断第一内存切换配置信息是否合法的实现方式相同,且作用也相同,这里不再赘述。
S404、可信基打开中断。
S405、内核调用第二任务以及***服务。
S406、在***服务完成后,可信基取出第二任务的任务号,关闭该中断,从内存中查找第二任务的第三内存切换配置信息,根据该第三内存切换配置信息对内存保护装置进行配置。
S407、可信基比较寄存器上存储的第三内存切换配置信息和内存中存储的第三内存切换配置信息是否相同。
当寄存器上存储的第三内存切换配置信息和内存中存储的第三内存切换配置信息相同的情况下,即第三内存切换配置信息合法的情况下,执行步骤S408,当寄存器上存储的第三内存切换配置信息和内存中存储的第三内存切换配置信息不相同的情况下,即第三内存切换配置不合法的情况下,执行步骤S410。其中,判断第三内存切换配置信息是否合法的实现方式与实施例一中判断第一内存切换配置信息是否合法的实现方式相同,且作用也相同,这里不再赘述。
S408、可信基打开中断。
S409、内核调用第二任务获取***服务返回的结果。
S410、内核关闭OS和/或终止第二任务。
本实施例中,可信基在根据内存切换配置信息(包括第二内存切换配置信息和第三内存切换配置信息)对内存保护装置配置之前,关闭中断,在配置完成之后打开中断,可以防止中断对寄存器中的内存切换配置信进行修改,并且,在打开中断之前,通过比较内存中存储的内存切换配置信息与寄存器中存储的内存切换配置信息是否相同,可以防止ROP或JOP等攻击对寄存器中的内存切换配置信息进行修改。从而能够防止由于寄存器中的内存切换配置信息进行修改导致内存访问权限被篡改,内存访问权限篡改可能导致任务和内核的内存中的数据被泄露,从而无法保证在***调用过程中任务和内核的安全性。
可以理解,在内存保护装置的配置之前关闭中断操作,以及过后验证可以解耦实现,即在一个可能实施例中,可信基可以在对内存保护装置配置之前关闭中断操作,在配置完成之后开启中断,在开启中断之前不比较内存中存储的内存切换配置信息与寄存器中存储的内存切换配置信息是否相同。在另一个可能实施例中,可信基可以在对内存保护装置配置之前不关闭中断操作,在调用服务之前,比较内存中存储的内存切换配置信息与寄存器中存储的内存切换配置信息是否相同。
图10为本申请实施例五提供的内核和任务隔离的方法的流程图,本实施例可以在上述实施例二或实施例四的基础上执行,即在可信基打开中断之后,按照本实施例的方法对中断进行处理,即第二次过后验证。如图10所示,本实施例提供的方法包括以下步骤:
S501、可信基初始化中断向量表。
中断向量表存储在可信基的只读段中,从而能够避免对中断向量表的非法修改。不同于现有技术中,本申请实施例中中断向量表中包括正常中断服务函数和可信基的中断服务函数,该可信基的中断服务函数是新增的函数。而现有技术中,中断向量表中只包括正常中断服务函数。本申请实施例中,在发生中断触发时,优先调用可信基的中断服务函数进行合法性验证,在验证通过之后,在执行正常中断服务函数,也可以认为可信基的中断服务函数的优先级高于正常中断服务函数的优先级。
本申请实施例中,设置可信基的中断服务函数进行二次合法性验证,提高了安全性。大多数情况下,通过验证内存切换配置信息的合法性已经能够防范攻击。但是,如果攻击者修改中断向量表并在可信基对MPU或者MMU配置之后进入中断,从而能够绕过过后验证,为了应对这种情况,可信基通过可信基的中断服务函数验证中断是否为合法中断。
S502、当接收到中断请求(Interrupt Request,IRQ)时,可信基查询中断向量表。
当打开中断之后,如果可信基接收到IRQ,则查询中断向量表。
S503、可信基根据中断向量表进入可信基的中断服务函数。
S504、可信基获取中断的返回地址,判断中断的返回地址是否属于预设地址范围。
正常执行过程中,每执行一条指令,PC寄存器更新,当发生中断时,会在执行完当前指令后,跳转到中断向量表中对应的中断处理函数(即正常中断服务函数),在进入中断处理函数前,会保存现场,并将PC寄存器的当前值赋值给当前中断的返回地址。
非法中断是指攻击者试图通过代码片段跳转,进入可信基的代码片段,并恶意发出中断,试图绕过过后验证。
本实施例中,可信基的内存包括数据段内存、代码段内存和只读段内存,该预设地址范围可以为可信基的代码段内存的地址范围,由于可信基在对内存保护装置配置之前已经关闭了中断,因此,只有恶意代码才会产生可信基的代码段内存的地址范围内的中断。
所以,本实施例中通过第二次过后验证,判断中断的返回地址是否属于预设地址范围,如果中断的返回地址属于预设地址范围,则确定中断为非法中断,如果中断的返回地址不属于预设地址范围,则确定中断为合法中断。在中断为合法中断时,执行步骤S505,在中断为非法中断时,执行步骤S506。
S505、可信基调用正常中断服务函数。
S506、内核采取韧性保护。
该韧性保护可以为关机操作,关闭操作***等。
可以理解,本实施例中正常中断服务函数和可信基的中断服务函数也可以采用其他名称,例如,将正常中断服务函数称为第一中断服务函数,将可信基的中断服务函数称为第二中断服务函数。
本实施例中,当接收到中断请求时,查询中断向量表,该中断向量表中包括正常中断服务函数和可信基的中断服务函数,根据中断向量表进入可信基的中断服务函数,获取中断的返回地址,判断中断的返回地址是否属于预设地址范围,当中断的返回地址属于所述预设地址范围时,确定中断为非法中断,采取韧性保护;当中断的返回地址不属于预设地址范围时,确定中断为合法中断,调用正常中断服务函数。通过验证中断是否为合法中断,提高了***调用或者任务调用的安全性。
图11为本申请实施例六提供的内核和任务隔离的方法的流程图,如图11所示,本实施例提供的方法包括以下步骤:
S601、在计算机启动过程中,可信基对内核的代码段和任务的代码段进行I/O特权扫描。
现有***中,不同的特权模式决定不同的I/O访问权限,I/O访问包括内存映射I/O(Memory mapping I/O,MMIO)和寄存器两种。为了保证I/O访问的特权隔离,即在普通任务中,不能访问特定的I/O寄存器,或者不能访问特定的I/O地址空间。本申请实施例中,将普通任务置于特权层之后,仍然需要限制I/O访问权限。所以,在***初始化过程中,对内核的代码段和任务的代码段进行I/O特权扫描。其中,内核的代码段中包括各种寄存器操作指令和各种I/O操作指令,任务的代码段中包括各种I/O操作指令。
I/O特权扫描即扫描非特权任务、部分特权任务以及特权任务的各种操作,得到非特权任务、部分特权任务以及特权任务中的特定操作。
S602、可信基根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令。
其中,非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和MPU寄存器操作。部分特权任务的特定操作包括:***寄存器操作和MPU寄存器操作。特权任务的特定操作包括:MPU寄存器操作。
本实施例中,对于特定寄存器的访问,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令,该异常指令可以为Trap(***异常),替换为异常指令对应的任务不会访问该特定寄存器,后续当任务试图非法访问该特定寄存器时,会触发异常。
S603、启动操作***。
需要说明的是,本申请其他实施例中还可以将非特权任务、部分特权任务以及特权任务中的特定操作进行指令消除,指令消除后的任务不会访问该特定寄存器。
本申请实施例七以AUTOSAR气囊***为例,在气囊***中由碰撞传感器检测冲撞事件,经过数据处理,通知气囊执行器,通常要求在10ms秒内完成应激响应。图12为本实施例适用的车载设备的硬件和软件架构示意图,如图12所示,该车载设备采用分层架构,包括:硬件(hardware)层、可信基、运行时环境(Run-Time Environment,RTE)层和软件组件(software component,SWC)层。
其中,硬件层包括:中央处理单元(central processing unit,CPU)、MPU、传感器(sensor)和执行器(executour),该传感器用于检测碰撞事件,执行器用于控制气囊的打开和关闭等操作。
可信基包括调用点、API网关和初始化模块。
RTE层包括通信模块(communication)、任务实体模块(task body)、生命周期模块(life cycle)。
SWC层包括碰撞传感器检测SWC、气囊执行器SWC和应用程序SWC。
图13为气囊***反馈碰撞检测的流程示意图,如图13所示,该碰撞检测流程包括:
S701、碰撞检测应用检测到发生碰撞,发起通知气囊应用。
碰撞检测应用通过分析碰撞传感器的输入,确定是否发生碰撞,当确认发生碰撞,则需要打开气囊,但由于碰撞检测和气囊打开分属于不同的任务实体,因此需要通过任务间通信通知到气囊应用。
S702、RTE层的通信模块调用***服务。
RTE为软件模块提供了通信的接口,不止于此,还用于创建任务实体,包含应用软件模块,它还控制着任务的激活或者终止。通常情况下,RTE采用共享内存的方法进行任务间通信,因此需要使用调用***服务GetResource()或ReleaseResource()去保证数据一致性,也需要调用***服务SetEvent(),WaitEvent(),ActivateTask()等去通知任务接收数据,即存在多次的***调用进行通信。以ActivateTask()调度气囊执行任务为例,RTE调用***服务调用点。
S703、RTE的通信模块调用可信基的调用点,执行ActivateTask()***服务去激活气囊任务。
S704、可信基在内核执行该***服务前,使用***调用点调用API网关,对MPU进行配置,将内存访问边界从任务的内存切换到内核的内存,并完成过后验证。
S705、在调度器对气囊任务进行调度前,API网关模块对MPU进行配置,将内存访问边界从内核的内存切换到气囊任务的任务的内存。
S706、RTE的通信模块查看是否有对应碰撞事件发生,当碰撞事件发生,则迅速调用执行器弹出气囊。
RTE的通信模块需调用对应的***服务查询对应的事件GetEvent(),通过GetEvent()查看是否有对应碰撞事件发生。
图14为本申请实施例八提供的计算机***的结构示意图,如图14所示,该计算机***800包括:内核81和可信基82,其中,内核81和可信基82均运行在计算机***800的OS,计算机***上还运行有一个或者多个应用,每个应用调用一个或者多个任务。
所述内核81,用于从任务准备队列中查找第一任务;
所述可信基82,用于从内存中查找所述第一任务的第一内存切换配置信息,根据所述第一内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第一内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第一任务的内存地址信息和所述第一任务的内存操作权限,配置后所述第一任务对所述内核的内存的操作权限为无权限;配置后所述内核对所述第一任务的内存的操作权限为可读;
所述内核81,还调用所述第一任务。
可选的,所述可信基81还用于:从内存中查找所述第一任务的第一内存切换配置信息之前,关闭中断,根据所述第一内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基81还用于:比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同;若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则确定所述第一内存切换配置信息合法。所述内核82还用于:在所述第一内存切换配置信息合法的情况下,调用所述第一任务。
可选的,所述可信基81还用于:若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息不相同,则确定所述第一内存切换配置信息不合法;
所述内核还用于:在所述第一内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第一任务。
可选的,所述OS和所述计算机***上的所有应用均处于特权层。
可选的,在所述可信基81打开所述中断之后,所述可信基还用于:当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;根据所述中断向量表进入所述可信基的中断服务函数;获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;当所述中断的返回地址属于所述预设地址范围时,确定所述当前中断为非法中断,采取韧性保护;当所述中断的返回地址不属于所述预设地址范围时,确定所述当前中断为合法中断,调用所述正常中断服务函数。
可选的,所述可信基81还用于:所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
可选的,所述可信基81还用于:在所述计算机***启动过程中,对所述内核的代码段以及任务的代码段进行输入/输出I/O特权扫描;根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;启动所述OS。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;所述特权任务的特定操作包括内存保护装置寄存器操作。
本实施例的计算机***,可用于执行上述方法实施例一、实施例二、实施例五或实施例六任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
图15为本申请实施例九提供的计算机***的结构示意图,如图15所示,该计算机***900包括:内核91和可信基92,其中,内核91和可信基92均运行在计算机***800的OS,计算机***上还运行有一个或者多个应用,每个应用调用一个或者多个任务。
所述可信基91,用于在第二任务需要调用***服务应用程序接口API时,保存所述第二任务的任务号;
所述可信基91,还用于从内存中查找所述第二任务的第二内存切换配置信息,根据所述第二内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第二内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述内核对所述第二任务的内存的操作权限为无权限,配置后所述第二任务对所述内核的内存的操作权限为可读;
所述内核92,用于调用所述第二任务以及所述***服务;
所述可信基91,还用于在所述***服务完成后,取出所述第二任务的任务号,将内存访问边界从所述内核的内存切换到所述第二任务的内存;
所述内核92,还用于调用所述第二任务获取所述***服务的返回结果。
可选的,所述可信基91还用于:从内存中查找所述第二任务对应的第二内存切换配置信息之前,关闭中断;在根据所述第二内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基91还用于:比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则确定所述第二内存切换配置信息合法;所述内核还用于:在所述第二内存切换配置信息合法的情况下,调用所述第二任务。
可选的,所述可信基91还用于:若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息不相同,则确定所述第二内存切换配置信息不合法;所述内核92还用于:在所述第二内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
可选的,所述可信基91将内存访问边界从所述内核的内存切换到所述第二任务的内存,包括:从内存中查找所述第二任务的第三内存切换配置信息,根据所述第三内存切换配置信息对所述内存保护装置进行配置,所述第三内存切换配置信息包括:所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述第二任务对所述内核的内存操作权限为无权限,配置后所述内核对所述第二任务的内存的操作权限为可读。
可选的,所述可信基91还用于:从内存中查找所述第二任务的第三内存切换配置信息之前,关闭中断,根据所述第三内存切换配置信息对所述内存保护装置配置完成之后,打开所述中断。
可选的,所述可信基91还用于:比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则确定所述第三内存切换配置信息合法;所述内核92还用于:在所述第三内存切换配置信息合法的情况下,调用所述第二任务获取所述***服务的返回结果。
可选的,所述可信基91还用于:若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息不相同,则确定所述第三内存切换配置信息不合法;所述内核92还用于:在所述第三内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
可选的,所述OS和所述计算机***上的所有应用均处于特权层。
可选的,在打开所述中断之后,所述可信基91还用于:
当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
根据所述中断向量表进入所述可信基的中断服务函数;
获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,确定所述中断为合法中断,调用所述正常中断服务函数。
可选的,所述可信基91还用于:初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
可选的,所述可信基91还用于:在所述计算机***启动过程中,对所述OS代码段和任务的代码段进行I/O特权扫描,根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;启动所述OS。
可选的,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;所述特权任务的特定操作包括内存保护装置寄存器操作。
本实施例的计算机***,可用于执行上述方法实施例三至实施例六任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
图16为本申请实施例十提供的计算机***的结构示意图,如图16所示,该计算机***200包括处理器21、存储器22和内存保护装置23,所述存储器22中包括内存,所述处理器21上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述存储器22用于存储指令,所述处理器21用于执行所述存储器22中存储的指令,以使所述处理器21执行上述方法实施例一至实施例七任一实施例所述的方法,具体实现方式和技术效果类似,这里不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (46)
1.一种内核和任务隔离的方法,其特征在于,所述方法应用于计算机***,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述方法包括:
所述内核从任务准备队列中查找第一任务;
所述可信基从内存中查找所述第一任务的第一内存切换配置信息,根据所述第一内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第一内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第一任务的内存地址信息和所述第一任务的内存操作权限,配置后所述第一任务对所述内核的内存的操作权限为无权限;配置后所述内核对所述第一任务的内存的操作权限为可读;
所述内核调用所述第一任务。
2.根据权利要求1所述的方法,其特征在于,所述可信基从内存中查找所述第一任务的第一内存切换配置信息之前,还包括:
所述可信基关闭中断;
所述可信基根据所述第一内存切换配置信息对内存保护装置配置完成之后,还包括:
所述可信基打开所述中断。
3.根据权利要求1所述的方法,其特征在于,所述内核调用所述第一任务之前,还包括:
所述可信基比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同;
若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则确定所述第一内存切换配置信息合法;
在所述第一内存切换配置信息合法的情况下,所述内核调用所述第一任务。
4.根据权利要求3所述的方法,其特征在于,还包括:
若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息不相同,则所述可信基确定所述第一内存切换配置信息不合法;
在所述第一内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第一任务。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述OS和所述计算机***上的所有应用均处于特权层。
6.根据权利要求2所述的方法,其特征在于,在所述可信基打开所述中断之后,所述方法还包括:
当接收到中断请求时,所述可信基查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
所述可信基根据所述中断向量表进入所述可信基的中断服务函数;
所述可信基获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,所述可信基确定所述当前中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,所述可信基确定所述当前中断为合法中断,调用所述正常中断服务函数。
7.根据权利要求6所述的方法,其特征在于,还包括:
所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
在所述计算机***启动过程中,所述可信基对所述内核的代码段以及任务的代码段进行输入/输出I/O特权扫描;
所述可信基根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;
所述可信基启动所述OS。
9.根据权利要求8所述的方法,其特征在于,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
10.一种内核和任务隔离的方法,其特征在于,所述方法应用于计算机***,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行可信基,所述方法包括:
在第二任务需要调用***服务应用程序接口API时,所述可信基保存所述第二任务的任务号;
所述可信基从内存中查找所述第二任务的第二内存切换配置信息,根据所述第二内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第二内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述内核对所述第二任务的内存的操作权限为无权限,配置后所述第二任务对所述内核的内存的操作权限为可读;
所述内核调用所述第二任务;
所述内核调用所述***服务;
在所述***服务完成后,所述可信基取出所述第二任务的任务号,将内存访问边界从所述内核的内存切换到所述第二任务的内存;
所述内核调用所述第二任务获取所述***服务的返回结果。
11.根据权利要求10所述的方法,其特征在于,所述可信基从内存中查找所述第二任务对应的第二内存切换配置信息之前,还包括:
所述可信基关闭中断;
所述可信基根据所述第二内存切换配置信息对内存保护装置配置完成之后,还包括:
所述可信基打开所述中断。
12.根据权利要求10所述的方法,其特征在于,所述内核调用所述第二任务之前,还包括:
所述可信基比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;
若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则所述可信基确定所述第二内存切换配置信息合法;
在所述第二内存切换配置信息合法的情况下,所述内核调用所述第二任务。
13.根据权利要求12所述的方法,其特征在于,还包括:
若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息不相同,则所述可信基确定所述第二内存切换配置信息不合法;
在所述第二内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第二任务。
14.根据权利要求10-13任一项所述的方法,其特征在于,所述将内存访问边界从所述内核的内存切换到所述第二任务的内存,包括:
所述可信基从内存中查找所述第二任务的第三内存切换配置信息,根据所述第三内存切换配置信息对所述内存保护装置进行配置,所述第三内存切换配置信息包括:所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述第二任务对所述内核的内存操作权限为无权限,配置后所述内核对所述第二任务的内存的操作权限为可读。
15.根据权利要求14所述的方法,其特征在于,所述可信基从内存中查找所述第二任务的第三内存切换配置信息之前,还包括:
所述可信基关闭中断;
所述可信基根据所述第三内存切换配置信息对所述内存保护装置配置完成之后,还包括:
所述可信基打开所述中断。
16.根据权利要求14所述的方法,其特征在于,所述内核调用所述第二任务获取所述***服务的返回结果之前,还包括:
所述可信基比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;
若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则所述可信基确定所述第三内存切换配置信息合法;
在所述第三内存切换配置信息合法的情况下,所述内核调用所述第二任务获取所述***服务的返回结果。
17.根据权利要求16所述的方法,其特征在于,还包括:
若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息不相同,则所述可信基确定所述第三内存切换配置信息不合法;
在所述第三内存切换配置信息不合法的情况下,所述内核关闭所述OS和/或终止所述第二任务。
18.根据权利要求10-17任一项所述的方法,其特征在于,所述OS和所述计算机***上的所有应用均处于特权层。
19.根据权利要求11或15所述的方法,其特征在于,在打开所述中断之后,所述方法还包括:
当接收到中断请求时,所述可信基查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
所述可信基根据所述中断向量表进入所述可信基的中断服务函数;
所述可信基获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,所述可信基确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,所述可信基确定所述中断为合法中断,调用所述正常中断服务函数。
20.根据权利要求19所述的方法,其特征在于,还包括:
所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
21.根据权利要求10-20任一项所述的方法,其特征在于,还包括:
在所述计算机***启动过程中,所述可信基对所述OS代码段和任务的代码段进行I/O特权扫描;
所述可信基根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;
所述可信基启动所述OS。
22.根据权利要求21所述的方法,其特征在于,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
23.一种计算机***,其特征在于,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基;
所述内核,用于从任务准备队列中查找第一任务;
所述可信基,用于从内存中查找所述第一任务的第一内存切换配置信息,根据所述第一内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第一内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第一任务的内存地址信息和所述第一任务的内存操作权限,配置后所述第一任务对所述内核的内存的操作权限为无权限;配置后所述内核对所述第一任务的内存的操作权限为可读;
所述内核,还调用所述第一任务。
24.根据权利要求23所述的***,其特征在于,所述可信基还用于:
从内存中查找所述第一任务的第一内存切换配置信息之前,关闭中断;
根据所述第一内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
25.根据权利要求23所述的***,其特征在于,所述可信基还用于:
比较寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息是否相同;
若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息相同,则确定所述第一内存切换配置信息合法;
所述内核还用于:在所述第一内存切换配置信息合法的情况下,调用所述第一任务。
26.根据权利要求25所述的***,其特征在于,所述可信基还用于:
若所述寄存器上存储的所述第一内存切换配置信息和所述内存中存储的所述第一内存切换配置信息不相同,则确定所述第一内存切换配置信息不合法;
所述内核还用于:在所述第一内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第一任务。
27.根据权利要求23-26任一项所述的***,其特征在于,所述OS和所述计算机***上的所有应用均处于特权层。
28.根据权利要求24所述的***,其特征在于,在所述可信基打开所述中断之后,所述可信基还用于:
当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
根据所述中断向量表进入所述可信基的中断服务函数;
获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,确定所述当前中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,确定所述当前中断为合法中断,调用所述正常中断服务函数。
29.根据权利要求28所述的***,其特征在于,所述可信基还用于:
所述可信基初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
30.根据权利要求23-29任一项所述的***,其特征在于,所述可信基还用于:
在所述计算机***启动过程中,对所述内核的代码段以及任务的代码段进行输入/输出I/O特权扫描;
根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;
启动所述OS。
31.根据权利要求30所述的***,其特征在于,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
32.一种计算机***,其特征在于,所述计算机***上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行可信基;
所述可信基,用于在第二任务需要调用***服务应用程序接口API时,保存所述第二任务的任务号;
所述可信基,还用于从内存中查找所述第二任务的第二内存切换配置信息,根据所述第二内存切换配置信息对内存保护装置进行配置,所述内存保护装置是用于对所述计算机***的内存进行保护的硬件组件;所述第二内存切换配置信息包括所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述内核对所述第二任务的内存的操作权限为无权限,配置后所述第二任务对所述内核的内存的操作权限为可读;
所述内核,用于调用所述第二任务以及所述***服务;
所述可信基,还用于在所述***服务完成后,取出所述第二任务的任务号,将内存访问边界从所述内核的内存切换到所述第二任务的内存;
所述内核,还用于调用所述第二任务获取所述***服务的返回结果。
33.根据权利要求32所述的***,其特征在于,所述可信基还用于:
从内存中查找所述第二任务对应的第二内存切换配置信息之前,关闭中断;
在根据所述第二内存切换配置信息对内存保护装置配置完成之后,打开所述中断。
34.根据权利要求32所述的***,其特征在于,所述可信基还用于:
比较寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息是否相同;
若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息相同,则确定所述第二内存切换配置信息合法;
所述内核还用于:在所述第二内存切换配置信息合法的情况下,调用所述第二任务。
35.根据权利要求34所述的***,其特征在于,所述可信基还用于:
若所述寄存器上存储的所述第二内存切换配置信息和所述内存中存储的所述第二内存切换配置信息不相同,则确定所述第二内存切换配置信息不合法;
所述内核还用于:在所述第二内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
36.根据权利要求32-35任一项所述的***,其特征在于,所述可信基将内存访问边界从所述内核的内存切换到所述第二任务的内存,包括:
从内存中查找所述第二任务的第三内存切换配置信息,根据所述第三内存切换配置信息对所述内存保护装置进行配置,所述第三内存切换配置信息包括:所述内核的内存地址信息和所述内核的内存操作权限,以及所述第二任务的内存地址信息和所述第二任务的内存操作权限,配置后所述第二任务对所述内核的内存操作权限为无权限,配置后所述内核对所述第二任务的内存的操作权限为可读。
37.根据权利要求36所述的***,其特征在于,所述可信基还用于:
从内存中查找所述第二任务的第三内存切换配置信息之前,关闭中断;
根据所述第三内存切换配置信息对所述内存保护装置配置完成之后,打开所述中断。
38.根据权利要求36所述的***,其特征在于,所述可信基还用于:
比较寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息是否相同;
若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息相同,则确定所述第三内存切换配置信息合法;
所述内核还用于:在所述第三内存切换配置信息合法的情况下,调用所述第二任务获取所述***服务的返回结果。
39.根据权利要求38所述的***,其特征在于,所述可信基还用于:
若所述寄存器上存储的所述第三内存切换配置信息和所述内存中存储的所述第三内存切换配置信息不相同,则确定所述第三内存切换配置信息不合法;
所述内核还用于:在所述第三内存切换配置信息不合法的情况下,关闭所述OS和/或终止所述第二任务。
40.根据权利要求32-39任一项所述的***,其特征在于,所述OS和所述计算机***上的所有应用均处于特权层。
41.根据权利要求34或37所述的***,其特征在于,在打开所述中断之后,所述可信基还用于:
当接收到中断请求时,查询中断向量表,所述中断向量表中包括正常中断服务函数和所述可信基的中断服务函数;
根据所述中断向量表进入所述可信基的中断服务函数;
获取中断的返回地址,判断所述中断的返回地址是否属于预设地址范围;
当所述中断的返回地址属于所述预设地址范围时,确定所述中断为非法中断,采取韧性保护;
当所述中断的返回地址不属于所述预设地址范围时,确定所述中断为合法中断,调用所述正常中断服务函数。
42.根据权利要求41所述的***,其特征在于,所述可信基还用于:
初始化所述中断向量表,所述中断向量表存储在所述可信基的只读段中。
43.根据权利要求32-42任一项所述的***,其特征在于,所述可信基还用于:
在所述计算机***启动过程中,对所述OS代码段和任务的代码段进行I/O特权扫描;
根据扫描结果,将非特权任务、部分特权任务以及特权任务中的特定操作替换为异常指令;
启动所述OS。
44.根据权利要求43所述的***,其特征在于,所述非特权任务的特定操作包括:IRQ寄存器操作指令、I/O状态寄存器查询指令、串口寄存器操作、定时寄存器操作、***寄存器操作和内存保护装置寄存器操作;
所述部分特权任务的特定操作包括:***寄存器操作和内存保护装置寄存器操作;
所述特权任务的特定操作包括内存保护装置寄存器操作。
45.一种计算机***,其特征在于,包括:处理器、存储器和内存保护装置,所述存储器中包括内存,所述处理器上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述存储器用于存储指令,所述处理器用于执行所述存储器中存储的指令,以使所述处理器执行权利要求1-9任一项所述的方法。
46.一种计算机***,其特征在于,包括:处理器、存储器和内存保护装置,所述存储器中包括内存,所述处理器上运行有操作***OS和应用,所述OS上运行有内核,所述应用包括一个或者多个任务,所述OS上还运行有可信基,所述存储器用于存储指令,所述处理器用于执行所述存储器中存储的指令,以使所述处理器执行权利要求10-22任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611828.6A CN113868636A (zh) | 2020-06-30 | 2020-06-30 | 内核和任务隔离的方法和装置 |
PCT/CN2021/096157 WO2022001514A1 (zh) | 2020-06-30 | 2021-05-26 | 内核和任务隔离的方法和装置 |
EP21832844.1A EP4155949A4 (en) | 2020-06-30 | 2021-05-26 | METHOD AND APPARATUS FOR ISOLATING A CORE FROM A TASK |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010611828.6A CN113868636A (zh) | 2020-06-30 | 2020-06-30 | 内核和任务隔离的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868636A true CN113868636A (zh) | 2021-12-31 |
Family
ID=78981207
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010611828.6A Pending CN113868636A (zh) | 2020-06-30 | 2020-06-30 | 内核和任务隔离的方法和装置 |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP4155949A4 (zh) |
CN (1) | CN113868636A (zh) |
WO (1) | WO2022001514A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115794661A (zh) * | 2023-01-19 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 处理器的异常访问定位方法、装置、电子设备及存储介质 |
WO2023202354A1 (zh) * | 2022-04-19 | 2023-10-26 | 华为技术有限公司 | 进程内隔离方法、装置、存储介质及计算机程序产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858425B (zh) * | 2023-01-17 | 2023-05-02 | 北京智芯微电子科技有限公司 | 应用mpu保护场景下的内存分配方法及*** |
CN117272412B (zh) * | 2023-11-21 | 2024-03-15 | 芯来智融半导体科技(上海)有限公司 | 中断控制寄存器保护方法、装置、计算机设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100452072C (zh) * | 1995-02-13 | 2009-01-14 | 英特特拉斯特技术公司 | 用于管理在第一装置和第二装置之间的数字文档的分布的方法 |
US8578483B2 (en) * | 2008-07-31 | 2013-11-05 | Carnegie Mellon University | Systems and methods for preventing unauthorized modification of an operating system |
CN101599022B (zh) * | 2009-07-07 | 2012-07-04 | 武汉大学 | 用于虚拟机***的可信计算基裁剪方法 |
US9239996B2 (en) * | 2010-08-24 | 2016-01-19 | Solano Labs, Inc. | Method and apparatus for clearing cloud compute demand |
US9710404B2 (en) * | 2015-03-23 | 2017-07-18 | Intel Corporation | Dynamic configuration and peripheral access in a processor |
US10033759B1 (en) * | 2015-09-28 | 2018-07-24 | Fireeye, Inc. | System and method of threat detection under hypervisor control |
CN108154032B (zh) * | 2017-11-16 | 2021-07-30 | 中国科学院软件研究所 | 具有内存完整性保障功能的计算机***信任根构建方法 |
CN108052461A (zh) * | 2017-12-29 | 2018-05-18 | 普华基础软件股份有限公司 | 一种操作***的内存保护方法 |
-
2020
- 2020-06-30 CN CN202010611828.6A patent/CN113868636A/zh active Pending
-
2021
- 2021-05-26 WO PCT/CN2021/096157 patent/WO2022001514A1/zh unknown
- 2021-05-26 EP EP21832844.1A patent/EP4155949A4/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023202354A1 (zh) * | 2022-04-19 | 2023-10-26 | 华为技术有限公司 | 进程内隔离方法、装置、存储介质及计算机程序产品 |
CN115794661A (zh) * | 2023-01-19 | 2023-03-14 | 苏州浪潮智能科技有限公司 | 处理器的异常访问定位方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2022001514A1 (zh) | 2022-01-06 |
EP4155949A1 (en) | 2023-03-29 |
EP4155949A4 (en) | 2024-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6898420B2 (ja) | セキュアロックダウンを実装するように構成された関連装置を有する特別にプログラムされたコンピューティングシステムおよびその使用方法 | |
EP4155949A1 (en) | Method and apparatus for isolating kernel from task | |
US8595487B2 (en) | Virtualization hardware for device driver isolation | |
US10379888B2 (en) | Adaptive integrity verification of software and authorization of memory access | |
EP3761208B1 (en) | Trust zone-based operating system and method | |
EP1966706B1 (en) | Identifier associated with memory locations for managing memory accesses | |
US20090119748A1 (en) | System management mode isolation in firmware | |
US10489332B2 (en) | System and method for per-task memory protection for a non-programmable bus master | |
US20080065854A1 (en) | Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor | |
US20020169979A1 (en) | Hardened extensible firmware framework | |
US8327415B2 (en) | Enabling byte-code based image isolation | |
US20050114639A1 (en) | Hardened extensible firmware framework to support system management mode operations using 64-bit extended memory mode processors | |
JP2010517164A (ja) | オペレーティングシステム資源の保護 | |
CN114556348A (zh) | 用于运行计算装置的方法和设备 | |
EP3436947B1 (en) | Secure driver platform | |
CN109711161B (zh) | 一种监控方法及电子设备 | |
EP2433238B1 (en) | Systems and methods of determining a trust level from system management mode | |
CN111213144A (zh) | 单芯片***,用于运行单芯片***的方法及机动车 | |
JP2019049928A (ja) | 電子制御装置及び電子制御装置の制御方法 | |
CN114741740A (zh) | 基于risc-v的物理内存保护方法、***和相关设备 | |
EP4372551A1 (en) | Virtual machine management method and related system, and storage medium | |
US20220391235A1 (en) | System and methods for input/output device emulation | |
WO2024158483A1 (en) | Safety in automotive hosted hypervisor systems for secure monitor calls using shared buffers | |
Thekkumbadan et al. | Mechanism for Runtime Kernel Integrity Check without Additional IP and without TEE for Low/Mid Automotive Segments | |
CN116611053A (zh) | 可信执行环境实现方法及装置、终端设备 |
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 |