CN110162965A - 一种运行时访问控制方法及计算装置 - Google Patents

一种运行时访问控制方法及计算装置 Download PDF

Info

Publication number
CN110162965A
CN110162965A CN201910278180.2A CN201910278180A CN110162965A CN 110162965 A CN110162965 A CN 110162965A CN 201910278180 A CN201910278180 A CN 201910278180A CN 110162965 A CN110162965 A CN 110162965A
Authority
CN
China
Prior art keywords
msu
instruction
safety device
transfer
information
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.)
Granted
Application number
CN201910278180.2A
Other languages
English (en)
Other versions
CN110162965B (zh
Inventor
杨力祥
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to CN201910278180.2A priority Critical patent/CN110162965B/zh
Publication of CN110162965A publication Critical patent/CN110162965A/zh
Application granted granted Critical
Publication of CN110162965B publication Critical patent/CN110162965B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing 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/2141Access 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种访问控制方法及计算装置,涉及信息技术,特别是信息安全领域,包括:包括安全装置,和/或,保障装置。所述安全装置基于硬件针对MSU进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令;所述安全装置提供合法跨越MSU边界的方式;所述提供合法跨越MSU边界的方式,包括:执行专用的跨MSU转移指令或发生中断/异常时,必须先转移至中转MSU,由中转MSU中程序检查跨MSU转移的合法性并转移至最终的目标;特别的,如果二者转移到相同中转MSU的共同代码位置,由硬件提供标识信息;中断返回也会导致跨MSU转移。

Description

一种运行时访问控制方法及计算装置
技术领域
本申请涉及信息技术领域,特别涉及一种运行时隔离方法,以及一种运行时访问控制方法及计算装置。
背景技术
现有技术中,特别是现有操作系统和处理器体系架构技术中,对于内存及其使用的设计更多的考虑是紧凑、方便、高效,这样的设计使得各个功能的代码之间有着错综复杂的相互联系,数据几乎没有任何封装,或者仅在高级语言的语法编译阶段具有有限的封装,而在运行时实际上可以不受任何检查的随意访问。
具体的,对语法的检查只能保证源码中不包含语法所不允许的非法访问,但在运行时,攻击者有可能通过某种手段改变程序的执行序或者是数据访问对象,从而打破语法规则的封装。比如,C++语言规定了类中的私有成员不可被其他类对象访问,但是如果程序被攻击,攻击者在运行时改变了函数的跳转目标,就可以打破这种保护。
特别是对于操作系统内核而言,现有技术的上述缺陷,实质上导致内核空间是平坦的,一旦攻击者借助如果攻击者借助用户态和内核态之间的数据传输,利用内核态代码在传输、处理数据中的设计缺陷,就能够用攻击者准备好的数据几乎任意修改内核的数据、代码,进而发起攻击。
其中最危险的是攻击导致超越授权,例如:
1、超越授权读取用户数据(包括内存和外设的数据)。
2、超越授权写入(包括篡改、删除)用户数据。
3、超越授权执行系统调用。
4、超越授权执行应用程序。
一旦攻击者完成了上述动作,同时由于现有操作系统中仅有极为有限的检查机制,攻击者实质上就获得了对计算机任意访问的权限。
特别是在硬件设计层面,没有从架构层面,在设计的初期就考虑安全问题,更加剧了信息安全风险。现有体系架构的实现,只考虑功能实现、效率提高等使用方面的问题,并没有从体系架构的设计基点开始就专门的考虑安全问题;即便有些设计,如特权级、分页等,客观上在一定程度上为计算的提供了安全保障,但其设计的出发点仍然是为了使用而非安全,这导致安全保障不成体系,进而不足以消除攻击成立所需的必要条件。在攻击条件下,仍然存在重大安全隐患。
发明内容
为了解决现有体系架构的设计初衷没有系统性的考虑安全的问题,本发明公开了一种安全装置,在设计基点上,就系统性的解决安全问题,同时优选的,公开一种保障装置,来保障即便在攻击状态下,安全装置也能保持有效。
进一步的,考虑到技术方案的可实施性,安全装置及保障装置的设计,也最大限度的与现有硬件体系流水线机制相配合,确保在解决安全问题的同时,不影响流水线的整体设计,进而保证执行效率。
针对现有技术的问题,本发明公开了一种装置,其特征在于:
包括安全装置,和/或,保障装置;
进一步的,所述安全装置基于硬件针对MSU进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令。
所述安全装置,包括:拦截非法跨越MSU边界的访问;提供合法跨越MSU边界的方式;和/或,限制MSU中指令访问存储设施的能力,和/或,限制MSU执行特定指令的能力。
所述MSU边界是指:处理器认定的由内存地址值所构成的MSU边界,和/或,处理器认定的由页面标识信息所标定的MSU边界。
所述拦截非法跨越MSU边界的访问,包括:如果待执行的指令所在地址超出处理器认定的MSU边界,处理器报异常;如果数据读写目标的地址超出读写指令匹配的MSU边界,处理器报异常。
所述提供合法跨越MSU边界的方式,包括:执行专用的跨MSU转移指令或发生中断/异常时,必须先转移至中转MSU,由中转MSU中程序检查跨MSU转移的合法性,如非法,进入异常处理流程,如合法,再由此MSU中代码进行边界切换并转移至最终的目标;特别的,如果二者转移到相同中转MSU的共同代码位置,由硬件提供标识信息,以区别转移是由执行跨MSU转移指令引起还是由产生中断/异常引起;中断返回也会导致跨MSU转移。
所述限制MSU中指令访问存储设施的能力,包括:对现有部分存储设施的访问权限做限制,只允许特定MSU中指令才能访问被限制访问权限的存储设施,特别的,对于没有做访问权限限制的存储设施,任何MSU中指令都可以访问。
所述限制MSU执行特定指令的能力,包括:对现有部分指令的执行权限做限制,只允许特定MSU才能执行被限制执行权限的指令,对于没有做执行权限限制的指令,在任何MSU中都可以执行。
所述保障装置,包括:仅在中转MSU中,和/或,跨MSU转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,和/或,设定存储设施的访问权限,和/或,设定指令执行权限;仅有跨MSU转移指令执行,和/或,中断/异常产生,和/或,中断返回导致跨MSU转移。
优选的,在装置中设置安全功能,和/或,保障功能的开关,如关闭该开关,则装置失效。
一种安全装置的制作方法,包括:制作MSU边界检查装置和提供合法跨越MSU边界的方法,和/或,提供限制MSU中指令访问存储设施能力的方法,和/或,提供限制MSU执行特定指令能力的方法,和/或,跨越MSU合法性检查程序的生成方法以及生效方法。
所述制作MSU边界检查装置的方法包括:制作指令边界检查装置的方法和制作数据边界检查装置的方法。
所述制作指令边界检查装置的方法包括:由处理器认定当前MSU边界范围,并判断待执行指令所在地址是否在所述范围之内,如在,可正常取址,如不在,处理器报出异常;
具体的,由处理器认定当前MSU边界范围,并判断待执行指令所在地址是否在所述范围之内,可以采用多种方法,一种优选的方法为:处理器设置专用存储设施保存当前MSU边界地址值,在执行指令时,判断处理器的程序计数器的地址值是否在当前MSU边界地址值范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;另一种优选的方式为:在内存页面的属性中添加标识信息,记录页面所属MSU的页面标识信息,在执行指令时,判断处理器中程序计数器存储的地址值所在的页面所属MSU的页面标识信息,是否与当前MSU页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围。
所述制作数据边界检查装置的方法包括:由处理器认定若干组数据存储MSU边界,针对每组MSU设置与之匹配的读写指令,在对数据进行读写时,根据不同的读写指令判断操作地址是否在与之匹配MSU边界中,如在,可正常访问,如不在,则报出异常。设置多组MSU的目的是为了区分指令,和/或,数据所在MSU、栈数据所在MSU、保险箱MSU、以及用作其他用途的独立MSU。
具体的,处理器判断数据读写指令操作的目标地址是否在与之匹配的MSU边界内,可以采用有多种方法:一种优选的方法为:处理器设置若干组专用存储设施保存不同类型MSU边界地址值,在执行读写指令时,判断指令操作的目标地址是否在与指令匹配的MSU边界范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;另一种优选的方法为:在内存页面的属性中添加标识信息,记录页面所属MSU的页面标识信息,在执行读写指令时,判断指令操作的目标地址所在的页面所属MSU的标识信息,是否与指令所匹配的MSU的页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围。
优选的:如果安全装置包含开关,在开关处于关状态时,不进行指令边界检查和数据边界检查。
所述提供合法跨越MSU边界的方法包括:提供专用的跨MSU转移指令,执行此类指令时,转移至中转MSU;提供专用转移指令,执行此类指令时,完成由中转MSU到目标MSU的转移;在中断/异常发生时,通过处理器硬件机制转移至中转MSU;在中断返回时,通过中断指令执行从中转MSU返回中断现场,恢复现场信息。
所述提供专用的跨MSU转移指令,执行此类指令时,转移至中转MSU;提供专用转移指令,执行此类指令时,完成由中转MSU到目标MSU的转移;进一步包括:
所述跨MSU转移指令,简称第一类指令,此类指令执行时转移到中转MSU入口位置,指令同时将当前MSU边界切换为中转MSU边界,和/或,同时也将当前可访问的数据MSU边界切换为中转MSU中代码可访问的数据MSU边界,如果不在第一类指令中对当前MSU边界进行切换,处理器需在第一类指令执行后忽略指令边界检查,优选的,中转MSU入口位置可以通过默认的固定存储设施来存储,不必出现在第一类指令中;优选的,转移目标地址可以通过第一类指令的操作数指定,也可以通过特定的专用寄存器来指定;
所述专用转移指令,简称第二类指令,此类指令用于从中转MSU转移到指定地址;和/或,指令同时将当前MSU边界切换为目标地址所属MSU边界,和/或,同时也将中转MSU可访问的数据MSU边界切换为目标MSU中代码可访问的数据MSU边界;优选的,第二类指令的目标地址应为第一类指令指定的转移目标地址,二者协同完成MSU间的转移,优选的,如果第一类指令执行会导致处理器不进行指令边界检查,那么第二类指令则应指定是否恢复指令边界检查,优选的,转移目标地址可以通过第二类指令操作数指定,也可以通过特定的专用寄存器来指定。
优选的:如果安全装置包含开关,则在开关处于关状态时,不能够执行第一类指令、第二类指令,执行会报出异常。
在中断、异常发生时,由处理器进行MSU间的转移,进一步包括:在产生中断/异常后,先保存中断现场的确保安全装置有效所需信息,然后将当前MSU边界设置为中转MSU边界,和/或,同时也将当前MSU可访问的数据MSU边界切换为中转MSU代码可访问的数据MSU边界,并转移至指定的指令位置,优选的,如果不在中断/异常产生时对当前MSU边界进行切换,处理器需在中转MSU中忽略指令边界检查。
中断/异常的指定转移位置可以有多种选择,一种可选方法为:与第一类指令的转移到相同的中转MSU,可选的,转移到同一地址,那么处理器需提供信息标识当前是由哪种触发方式导致执行到指定转移位置;另一种可选方式为:为中断/异常单独设置一个中转MSU,那么这个中转MSU的入口地址应被记入特定存储设施中。
在中断返回时,中断指令执行回到中断现场,进一步包括:恢复中断现场的确保安全装置有效所需信息,这个信息在发生中断时被记录在特定存储设施中。
优选的:如果安全装置包含开关,仅在开关处于开状态时,执行以上关于中断、异常、中断返回的操作。
所述提供限制MSU中指令访问存储设施能力的方法包括:对需要限制访问权限的存储设施设置特定标识,并通过硬件保证,只有访问存储设施能力不受限制的MSU中指令,才能访问被限制了访问权限的存储设施,访问存储设施能力受限制的MSU中指令,不能访问此类存储设施,特别的,对于不需要限制访问权限的存储设施,任何MSU中指令都可以访问。
所述提供限制MSU执行特定指令能力的方法包括:对需要限制执行权限的指令设置特定标识,并通过硬件保证,只有指令执行能力不受限制的MSU,才能能执行被限制了执行权限的指令,指令执行能力受限制的MSU,不能执行此类指令,特别的,对于不需要限制执行权限的指令,任何MSU中都可以执行。
所述跨越MSU合法性检查程序的生成方法以及生效方法包括:制作MSU信息记录单元;生成MSU访问控制逻辑;编译包含MSU的源程序;运行时阶段对MSU信息的处理;
所述制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于中转MSU数据区域中;
所述生成MSU访问控制逻辑,包括:第一类指令执行的访问控制逻辑,和/或,中断/异常产生及中断返回的访问控制逻辑。
所述第一类指令执行的访问控制逻辑,进一步包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查、端口匹配检查;检查不通过,进入异常处理流程,如通过,执行第二类指令转移到目标MSU;优选的,进入中转MSU后,设定中转MSU边界及中转MSU可访问数据MSU边界;优选的,设定目标MSU边界及目标MSU可访问数据MSU边界,之后第二类指令执行转移到目标MSU。
所述中断/异常产生及中断返回的访问控制逻辑,进一步包括:保存确保安全装置有效所需的中断现场信息,设置中转MSU边界为当前MSU边界,及设置中转MSU可访问数据MSU边界为当前MSU可访问数据MSU边界;通过执行中断返回指令实现中断返回;中断返回前,恢复确保安全装置有效所需的中断现场信息,之后执行中断返回指令。
所述编译包含MSU的源程序,进一步包括:提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令。
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令。
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
所述运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化安全装置所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU边界,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
一种保障装置的制作方法包括:将确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,保存在专用存储设施中;设置专用存储设施标记各个专用存储设施的访问状态;处理器根据访问状态信息确保,只有在中转MSU中,和/或,跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问这些存储设置;第二类指令仅可在第一类指令转移到的中转MSU中执行。
所述确保安全装置有效所需的信息包括:MSU的边界信息;栈数据所在MSU的边界信息;其它种类数据所在MSU边界信息;保险箱MSU的边界信息;MSU间转移指令所需中转代码的首地址;转移指令所需中转MSU的边界信息;中断/异常所需中转代码的首地址;中断/异常服务程序所需中转MSU的边界信息;中断/异常产生现场MSU边界信息;安全装置开启/关闭标识信息;限制MSU中指令访问存储设置能力的标识信息;限制MSU执行特定指令的能力的标识信息;优选的,当前MSU所属用户标识信息;当前MSU所属用户类型标识信息;优选的,转移指令和中断/异常的中转区域可以相同,所需中转代码的首地址也可以相同。
所述所需中转代码的首地址是指当执行第一类指令转移指令或发生中断/异常时,必须转移到的位置。
所述中转MSU是指:当执行第一类指令转移指令或发生中断/异常时,转移地址所在MSU,转移地址被记录在装置中,特别的:中转MSU中的指令执行时不进行指令边界检查。
所述保障装置所需的状态数据包括:是否处于转移指令所需的中转MSU;是否处于中断/异常所需的中转MSU;
从上述发明内容可知,安全装置是通过硬件和中转MSU中程序两部分内容联合实现的,相应的,硬件设计方法不同,中转MSU中程序设计方案也会随之调整,同时,又因为保障装置用来保障安全装置在攻击状态下不受破坏,所以,安全装置的制作方法不同,保障装置的制作方法也会相应的做调整。
安全装置在拦截非法跨越MSU边界的访问方面,硬件设计差异体现为:处理器对边界信息的认定方式,一种是认定地址值包围而成的边界,另一种是认定页面标识信息,因此需要分别设计与这两种认定方法相配合的中转MSU的程序;在提供合法跨越MSU边界的方法方面,硬件设计差异体现为:用于转移的特定指令和中断/异常产生后转移的MSU,可以是同一MSU,也可以是不同MSU,因此需要分别设计共同的中转MSU和不同的中转MSU以及相应程序;保障装置针对这两方面四种设计差异,也要做出相应的调整,这样就形成了4套安全装置制作方法和与之匹配的保障装置制作方法。
下面分别列举实现上述安全装置以及保障装置的四种制作方式:
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M1:
所述制作方法M1的特征为:MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录确保安全装置有效所需信息和确保保障装置有效所需的状态数据,本制作方法优选的存储设施为:专用寄存器。
安全装置的制作方法:
M-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息。
设置专用寄存器,记录指令,和/或,数据所在MSU边界地址信息,处理器据此检查指令以及数据访问是否跨MSU边界;
设置专用寄存器,记录栈数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,记录保险箱MSU边界地址,处理器据此检查保险箱中数据访问是否跨MSU边界;
设置专用寄存器,记录其它种类数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,临时记录中断/异常产生时,MSU现场边界地址信息,在中断返回时,处理器据此恢复MSU现场边界信息;
设置专用寄存器,记录中断中转MSU边界地址信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录指令中转MSU边界地址信息;
设置专用寄存器,记录限制MSU中指令访问存储设置能力的标识信息;
设置专用寄存器,记录限制MSU执行特定指令的能力的标识信息;
优选的:
设置专用寄存器,记录当前MSU所属用户标识信息;
设置专用寄存器,记录当前MSU所属用户类型标识信息;
M-A-A2、识别与安全装置不相关寄存器的方式:
通过识别寄存器编址信息来认定与存储确保安全装置有效所需信息无关的寄存器属性,此类寄存器简称不相关寄存器。优选的,将不相关寄存器中同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-A-A3、访问安全装置不相关寄存器时增加访问控制的功能:
对于不相关寄存器中不能任意访问的寄存器,简称受约束寄存器,只有安全装置关闭,或安全装置开启且当前处于有能力访问受约束寄存器的MSU中时,才能访问,否则访问报异常。
M-A-A3-a、限制MSU执行权限受限指令的功能:
对于不能任意执行的指令,简称权限受限指令,只有安全装置关闭,或安全装置开启且当前处于有能力执行权限受限指令的MSU中时,才能执行,否则执行报异常。
M-A-A4、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能
处理器根据程序计数器中的数值进行取址,判断该值是否超越了专用寄存器中保存的指令所在MSU边界地址值,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-A-A5、在安全装置中增加检查数据访问是否跨MSU边界的功能
专用边界寄存器中保存不同种类数据MSU的边界地址,包括:普通数据所在MSU、栈数据所在MSU、保险箱MSU、其它种类数据所在MSU等,每种数据MSU匹配不同的读写指令,执行MSU读写指令时,根据该指令匹配的数据MSU类型选择匹配的MSU边界地址,判断当前待操作的地址是否在匹配的MSU内,如是,可执行;如不是,处理器报出异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-A-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨MSU的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为第一类指令转移所需的指令中转MSU的边界地址值,和/或,将相应专用寄存器的值设置为指令中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为指令中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为指令中转MSU可访问的其它类型数据所在MSU边界地址值;将程序计数器的值设置为中转MSU入口地址,这个地址记录在安全装置的专用寄存器中。
所述指令中转MSU包括:专门承载转移控制程序的MSU,程序内容进一步包括:MSU间转移合法性检查、设置目标MSU边界信息以及完成转移至目标MSU。
优选的,可在第一类指令执行时不切换边界地址值,为此需要添加标识信息表明中转MSU中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-A-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的指令中转MSU向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换MSU边界地址值,边界地址值包括指令,和/或,数据MSU边界地址值,和/或,目标MSU可访问栈数据梭所在MSU边界地址值,和/或,目标MSU程序可访问保险箱MSU边界地址值,和/或,目标MSU程序可访问的其它类型数据所在MSU边界地址值,用专用寄存器保存所述边界地址值。
优选的,如果第一类指令执行时标明指令中转MSU中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-A-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断中转MSU中是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断中转MSU的边界地址信息;和/或,将相应专用寄存器的值设置为中断中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为中断中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为中断中转MSU可访问的其它类型数据所在MSU边界地址值;转移至中断中转MSU的入口地址;其余操作与现有中断、异常的处理一致。
所述中断中转MSU包括:专门承载中断响应程序的MSU,程序内容进一步包括:MSU间转移合法性检查、设置目标MSU边界信息以及完成转移至目标MSU。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-A-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
M-A-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
为指令中转MSU制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界地址信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于中转MSU数据区域中。
在指令中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查,属性、端口匹配检查;检查不通过,进入异常处理流程,如通过,执行第二类指令转移到目标MSU;优选的,进入中转MSU后,设定指令中转MSU边界地址,和/或,指令中转MSU可访问栈数据MSU边界地址,和/或,指令中转MSU可访问保险箱MSU边界地址,和/或,指令中转MSU可访问其它种类数据MSU边界地址;优选的,设定目标MSU边界地址及目标MSU可访问数据MSU边界地址,和/或,目标MSU可访问的栈数据MSU边界地址,和/或,目标MSU可访问的保险箱MSU边界地址,和/或,目标MSU可访问的其它种类数据MSU边界地址,之后第二类指令执行转移到目标MSU。
在中断中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
保存中断/异常产生时,确保安全装置有效所需现场信息,设置中断中转MSU边界地址,和/或,中断中转MSU可访问的栈数据MSU边界地址,和/或,中断中转MSU可访问的保险箱MSU边界地址,和/或,中断中转MSU可访问的其它种类数据MSU边界地址,将边界地址值存入专用寄存器;中断返回前,恢复确保安全装置有效所需现场信息,之后执行中断返回指令。
编译包含MSU的源程序,包括:
提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令;
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令;
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化确保安全装置有效所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU边界地址,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
保障装置的制作方法:
M-A-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
设置专用寄存器,记录当前是否处于第一类指令转移到的指令中转MSU;
设置专用寄存器,记录当前是否处于中断、异常产生转移到的中断中转MSU;
M-A-A12、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-A-A13、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-A-A14、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移到的指令中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;优选的,不允许执行中断返回指令;
在中断/异常产生转移到的中断中转MSU中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转MSU中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令。
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M2:
所述制作方法M2的特征为:MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。二者可以转移至共同中转MSU的相同地址或不同地址,本制作方法优选转移到共同地址。
安全装置的制作方法:
M-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息。
设置专用寄存器,记录指令,和/或,数据所在MSU边界地址信息,处理器据此检查指令以及数据访问是否跨MSU边界;
设置专用寄存器,记录栈数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,记录保险箱MSU边界地址,处理器据此检查保险箱中数据访问是否跨MSU边界;
设置专用寄存器,记录其它种类数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,临时记录中断/异常产生时,MSU现场边界地址信息,在中断返回时,处理器据此恢复MSU现场边界信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值所在MSU边界地址信息。
设置专用寄存器,记录限制MSU中指令访问存储设置能力的标识信息;
设置专用寄存器,记录限制MSU执行特定指令的能力的标识信息;
优选的:
设置专用寄存器,记录当前MSU所属用户标识信息;
设置专用寄存器,记录当前MSU所属用户类型标识信息;
M-B-A2、识别与安全装置不相关寄存器的方式:
通过识别寄存器编址信息来认定与存储安全装置所需信息无关的寄存器属性,此类寄存器简称不相关寄存器。优选的,将不相关寄存器中同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-B-A3、访问安全装置不相关寄存器时增加访问控制的功能:
对于不相关寄存器中不能任意访问的寄存器,简称受约束寄存器,只有安全装置关闭,或安全装置开启且当前处于有能力访问受约束寄存器的MSU中时,才能访问,否则访问报异常。
M-B-A3-a、限制MSU执行权限受限指令的功能:
对于不能任意执行的指令,简称权限受限指令,只有安全装置关闭,或安全装置开启且当前处于有能力执行权限受限指令的MSU中时,才能执行,否则执行报异常。
M-B-A4、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能
处理器根据程序计数器中的数值进行取址,判断该值是否超越了专用寄存器中保存的指令所在MSU边界地址值,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-B-A5、在安全装置中增加检查数据访问是否跨MSU边界的功能
专用边界寄存器中保存不同种类数据MSU的边界地址,包括:普通数据所在MSU、栈数据所在MSU、保险箱MSU、其它种类数据所在MSU等,每种数据MSU匹配不同的读写指令,执行MSU读写指令时,根据该指令匹配的数据MSU类型选择匹配的MSU边界地址,判断当前待操作的地址是否在匹配的MSU内,如是,可执行;如不是,处理器报出异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-B-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨MSU的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为第一类指令转移和中断/异常转移共同中转MSU的边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU可访问的其它类型数据所在MSU边界地址值;处理器需提供信息标识,表明当前由第一类指令执行导致转移,标识信息被记录在安全装置的专用寄存器中;将程序计数器的值设置为共同中转MSU入口地址,这个地址记录在安全装置的专用寄存器中。
所述共同中转MSU包括:专门承载转移控制程序的MSU,程序内容包括:第一类指令执行的控制程序和中断/异常指令执行的控制程序,对于第一类指令执行的转移控制,进一步包括:MSU间转移合法性检查、设置目标MSU边界信息以及完成转移至目标MSU;对于中断/异常产生的转移控制,进一步包括:
优选的,可在第一类指令执行时不切换边界地址值,为此需要添加标识信息表明中转MSU中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-B-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的共同中转MSU向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换MSU边界地址值,边界地址值包括指令,和/或,数据MSU边界地址值,和/或,目标MSU可访问栈数据梭所在MSU边界地址值,和/或,目标MSU程序可访问保险箱MSU边界地址值,和/或,目标MSU程序可访问的其它类型数据所在MSU边界地址值,用专用寄存器保存所述边界地址值。
优选的,如果第一类指令执行时标明共同中转MSU中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-B-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存共同中转MSU中是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为共同中转MSU的边界地址信息;和/或,将相应专用寄存器的值设置为共同中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU可访问的其它类型数据所在MSU边界地址值;转移至共同中转MSU的入口地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-B-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
M-B-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
为共同中转MSU制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界地址信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于共同中转MSU数据区域中。
在共同中转MSU中,对转移进行分类处理的控制逻辑,包括:根据硬件提供标识,识别出转移至共同中转MSU的原因,是由于中断/异常产生导致转移,还是由于第一类指令执行导致转移,根据不同情况,分别转入各自的访问控制逻辑。
在共同中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查,属性、端口匹配检查;检查不通过,进入异常处理流程,如通过,通过端口信息进一步检查,如果源MSU出口信息为中断返回,则进入中断返回处理流程;否则,执行第二类指令转移到目标MSU;优选的,进入共同中转MSU后,设定共同中转MSU边界地址,和/或,共同中转MSU可访问栈数据MSU边界地址,和/或,共同中转MSU可访问保险箱MSU边界地址,和/或,共同中转MSU可访问其它种类数据MSU边界地址;优选的,设定目标MSU边界地址,和/或,栈数据MSU边界地址,和/或,保险箱MSU边界地址,和/或,其它种类数据MSU边界地址,之后第二类指令执行转移到目标MSU。
在共同中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
保存中断/异常产生时,确保安全装置有效所需现场信息,设置共同中转MSU边界地址,和/或,共同中转MSU可访问栈数据MSU边界地址,和/或,共同中转MSU可访问保险箱MSU边界地址,和/或,共同中转MSU可访问其它种类数据MSU边界地址,将边界地址值存入专用寄存器;中断返回前,恢复确保安全装置有效所需现场信息,之后执行中断返回指令。
编译包含MSU的源程序,包括:
提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令;
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令;
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化确保安全装置有效所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU边界地址,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
保障装置的制作方法:
M-B-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
设置专用寄存器,记录当前是否处于第一类指令执行转移和中断/异常产生转移到的共同中转MSU;
M-B-A12、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-B-A13、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-B-A14、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移和中断/异常产生转移的共同中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非共同中转MSU中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令。
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M3:
所述制作方法M3的特征为:MSU边界信息由页面标识值,和/或,边界地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:MSU边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在MSU边界信息以页面标识的方式记录,栈数据所在MSU边界信息,和/或,保险箱MSU边界信息,和/或,其它用途数据所在MSU边界信息以内存地址值方式记录。
安全装置的制作方法:
M-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息。
设置专用寄存器,记录指令,和/或,数据所在MSU页面标识信息,处理器据此检查指令以及数据访问是否跨MSU边界;
设置专用寄存器,记录栈数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,记录保险箱MSU边界地址,处理器据此检查保险箱中数据访问是否跨MSU边界;
设置专用寄存器,记录其它种类数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,临时记录中断/异常产生时,MSU现场边界地址信息,在中断返回时,处理器据此恢复MSU现场边界信息;
设置专用寄存器,记录中断中转MSU边界地址信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录指令中转MSU边界地址信息;
设置专用寄存器,记录限制MSU中指令访问存储设置能力的标识信息;
设置专用寄存器,记录限制MSU执行特定指令的能力的标识信息;
优选的:
设置专用寄存器,记录当前MSU所属用户标识信息;
设置专用寄存器,记录当前MSU所属用户类型标识信息;
M-C-A2、识别与安全装置不相关寄存器的方式:
通过识别寄存器编址信息来认定与存储安全装置所需信息无关的寄存器属性,此类寄存器简称不相关寄存器。优选的,将不相关寄存器中同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-C-A3、访问安全装置不相关寄存器时增加访问控制的功能:
对于不相关寄存器中不能任意访问的寄存器,简称受约束寄存器,只有安全装置关闭,或安全装置开启且当前处于有能力访问受约束寄存器的MSU中时,才能访问,否则访问报异常。
M-C-A3-a、限制MSU执行权限受限指令的功能:
对于不能任意执行的指令,简称权限受限指令,只有安全装置关闭,或安全装置开启且当前处于有能力执行权限受限指令的MSU中时,才能执行,否则执行报异常。
M-C-A4、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
M-C-A5、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能
处理器根据程序计数器中的数值进行取址,判断该值所在页面所属MSU页面标识值是否与了专用寄存器中保存的MSU页面标识值不一致,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-C-A6、在安全装置中增加检查数据访问是否跨MSU边界的功能
专用边界寄存器中保存不同种类数据MSU的边界,包括:普通数据MSU、栈数据所在MSU、保险箱MSU、其它数据所在MSU等,每种数据MSU匹配不同的读写指令,执行普通数据MSU读写指令时,判断当前待操作的地址所在页面所属MSU页面标识值,是否与专用寄存器中保存的MSU页面标识值一致,如是,可执行;如不是,处理器报出异常;执行栈数据所在MSU,和/或,保险箱MSU,和/或,其它数据所在MSU等读写指令时,根据该指令匹配的数据区类型选择匹配的MSU边界地址,判断当前待操作的地址是否在匹配的MSU内,如是,可执行;如不是,处理器报出异常;
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-C-A7、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨MSU的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为第一类指令转移所需的指令中转MSU的页面标识值,和/或,将相应专用寄存器的值设置为指令中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为指令中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为指令中转MSU可访问的其它类型数据所在MSU边界地址值;将程序计数器的值设置为中转MSU入口地址,这个地址记录在安全装置的专用寄存器中。
优选的,可在第一类指令执行时不切换边界地址值,和/或,页面标识,为此需要添加标识信息表明中转MSU中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-C-A8、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的指令中转MSU向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换MSU边界信息,边界信息包括指令,和/或,数据MSU页面标识值,和/或,目标MSU可访问栈数据梭所在MSU边界地址值,和/或,目标MSU程序可访问保险箱MSU边界地址值,和/或,目标MSU程序可访问的其它类型数据所在MSU边界地址值,用专用寄存器保存所述边界信息。
优选的,如果第一类指令执行时标明指令中转MSU中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-C-A9、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断中转MSU中是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断中转MSU的页面标识信息;和/或,将相应专用寄存器的值设置为中断中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为中断中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为中断中转MSU可访问的其它类型数据所在MSU边界地址值;转移至中断中转MSU的入口地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-C-A10、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
M-C-A11、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
为指令中转MSU制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界地址,和/或,页面标识信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于中转MSU数据区域中。
在指令中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查,属性、端口匹配检查;检查不通过,进入异常处理流程,如通过,执行第二类指令转移到目标MSU;优选的,进入中转MSU后,设定指令中转MSU页面标识,和/或,指令中转MSU可访问栈数据MSU边界地址,和/或,指令中转MSU可访问保险箱MSU边界地址,和/或,指令中转MSU可访问其它种类数据MSU边界地址;优选的,设定目标MSU页面标识及目标MSU可访问数据MSU页面标识,和/或,目标MSU可访问的栈数据MSU边界地址,和/或,目标MSU可访问的保险箱MSU边界地址,和/或,目标MSU可访问的其它种类数据MSU边界地址,之后第二类指令执行转移到目标MSU。
在中断中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
保存中断/异常产生时,确保安全装置有效所需现场信息,设置中断中转MSU页面标识,和/或,中断中转MSU可访问的栈数据MSU边界地址,和/或,中断中转MSU可访问的保险箱MSU边界地址,和/或,中断中转MSU可访问的其它种类数据MSU边界地址,将边界地址值存入专用寄存器;中断返回前,恢复确保安全装置有效所需现场信息,之后执行中断返回指令。
编译包含MSU的源程序,包括:
提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令;
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令;
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化确保安全装置有效所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU边界地址,和/或,页面标识,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
保障装置的制作方法:
M-C-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
设置专用寄存器,记录当前是否处于第一类指令转移到的指令中转MSU;
设置专用寄存器,记录当前是否处于中断/异常产生转移到的中断中转MSU;
M-C-A13、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-C-A14、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-C-A15、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移到的指令中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;优选的,不允许执行中断返回指令;
在中断/异常产生转移到的中断中转MSU中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转MSU中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令。
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M4:
所述制作方法M4的特征为:MSU边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。二者可以转移至共同中转MSU的相同地址或不同地址,本制作方法优选转移到共同地址。特别的:MSU边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在MSU边界信息以页面标识的方式记录,栈数据所在MSU边界信息,和/或,保险箱MSU边界信息,和/或,其它用途数据所在MSU边界信息以内存地址值方式记录。
安全装置的制作方法:
M-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息。
设置专用寄存器,记录指令,和/或,数据所在MSU页面标识信息,处理器据此检查指令以及数据访问是否跨MSU边界;
设置专用寄存器,记录栈数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,记录保险箱MSU边界地址,处理器据此检查保险箱中数据访问是否跨MSU边界;
设置专用寄存器,记录其它种类数据所在MSU边界地址,处理器据此检查栈数据访问是否跨MSU边界;
设置专用寄存器,临时记录中断/异常产生时,MSU现场边界地址信息,和/或,页面标识信息,在中断返回时,处理器据此恢复MSU现场边界信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值所在MSU页面标识信息。
设置专用寄存器,记录限制MSU中指令访问存储设置能力的标识信息;
设置专用寄存器,记录限制MSU执行特定指令的能力的标识信息;
设置专用寄存器,记录当前MSU所属用户标识信息;
设置专用寄存器,记录当前MSU所属用户类型标识信息;
M-D-A2、识别与安全装置不相关寄存器的方式:
通过识别寄存器编址信息来认定与存储安全装置所需信息无关的寄存器属性,此类寄存器简称不相关寄存器。优选的,将不相关寄存器中同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-D-A3、访问安全装置不相关寄存器时增加访问控制的功能:
对于不相关寄存器中不能任意访问的寄存器,简称受约束寄存器,只有安全装置关闭,或安全装置开启且当前处于有能力访问受约束寄存器的MSU中时,才能访问,否则访问报异常。
M-D-A3-a、限制MSU执行权限受限指令的功能:
对于不能任意执行的指令,简称权限受限指令,只有安全装置关闭,或安全装置开启且当前处于有能力执行权限受限指令的MSU中时,才能执行,否则执行报异常。
M-D-A4、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
M-D-A5、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能
处理器根据程序计数器中的数值进行取址,判断该值所在页面所属MSU页面标识值是否与了专用寄存器中保存的MSU页面标识值不一致,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-D-A6、在安全装置中增加检查数据访问是否跨MSU边界的功能
专用边界寄存器中保存不同种类数据MSU的边界,包括:普通数据MSU、栈数据所在MSU、保险箱MSU、其它数据所在MSU等,每种数据MSU匹配不同的读写指令,执行普通数据MSU读写指令时,判断当前待操作的地址所在页面标识信息,是否与专用寄存器中保存的MSU页面标识值一致,如是,可执行;如不是,处理器报出异常;执行栈数据所在MSU,和/或,保险箱MSU,和/或,其它数据所在MSU等读写指令时,根据该指令匹配的数据区类型选择匹配的MSU边界地址,判断当前待操作的地址是否在匹配的MSU内,如是,可执行;如不是,处理器报出异常;
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-D-A7、在安全装置中增加第一类指令:
优选的,指令操作数包含:转移目标
指令功能:发起跨MSU的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为第一类指令转移和中断/异常转移共同中转MSU的页面标识值,和/或,将相应专用寄存器的值设置为共同中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU可访问的其它类型数据所在MSU边界地址值;处理器需提供信息标识,表明当前由第一类指令执行导致转移,标识信息被记录在安全装置的专用寄存器中;将程序计数器的值设置为共同中转MSU入口地址,这个地址记录在安全装置的专用寄存器中。
优选的,可在第一类指令执行时不切换边界地址,和/或,页面标识值,为此需要添加标识信息表明中转MSU中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-D-A8、在安全装置中增加第二类指令:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的共同中转MSU向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换MSU边界信息,边界信息包括指令,和/或,数据MSU页面标识值,和/或,目标MSU可访问栈数据梭所在MSU边界地址值,和/或,目标MSU程序可访问保险箱MSU边界地址值,和/或,目标MSU程序可访问的其它类型数据所在MSU边界地址值,用专用寄存器保存所述边界信息。
优选的,如果第一类指令执行时标明共同中转MSU中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-D-A9、在安全装置中增加中断/异常产生时的功能:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存共同中转MSU中是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为共同中转MSU的页面标识信息;和/或,将相应专用寄存器的值设置为共同中转MSU中程序可访问栈数据所在MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU程序可访问保险箱MSU边界地址值,和/或,将相应专用寄存器的值设置为共同中转MSU可访问的其它类型数据所在MSU边界地址值;转移至共同中转MSU的入口地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断/异常处理不同的部分。
M-D-A10、在安全装置中增加中断返回时的功能:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
M-D-A11、在安全装置中增加中转MSU程序及提供生效方式:
为共同中转MSU制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU页面标识信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于共同中转MSU数据区域中。
在共同中转MSU中,对转移进行分类处理的控制逻辑,包括:根据硬件提供标识,识别出转移至共同中转MSU的原因,是由于中断/异常产生导致转移,还是由于第一类指令执行导致转移,根据不同情况,分别转入各自的访问控制逻辑。
在共同中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查,属性、端口匹配检查;检查不通过,进入异常处理流程,如通过,通过端口信息进一步检查,如果源MSU出口信息为中断返回,则进入中断返回处理流程;否则,执行第二类指令转移到目标MSU;优选的,进入共同中转MSU后,设定共同中转MSU页面标识,和/或,共同中转MSU可访问栈数据MSU边界地址,和/或,共同中转MSU可访问保险箱MSU边界地址,和/或,共同中转MSU可访问其它种类数据MSU边界地址;优选的,设定目标MSU页面标识,和/或,栈数据MSU边界地址,和/或,保险箱MSU边界地址,和/或,其它种类数据MSU边界地址,之后第二类指令执行转移到目标MSU。
在共同中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
保存中断/异常产生时,确保安全装置有效所需现场信息,设置共同中转MSU页面标识,和/或,共同中转MSU可访问的栈数据MSU边界地址,和/或,共同中转MSU可访问的保险箱MSU边界地址,和/或,共同中转MSU可访问的其它种类数据MSU边界地址,将边界地址值存入专用寄存器;中断返回前,恢复确保安全装置有效所需现场信息,之后执行中断返回指令。
编译包含MSU的源程序,包括:
提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令;
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令;
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化确保安全装置有效所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU页面标识,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
保障装置的制作方法:
M-D-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
设置专用寄存器,记录当前是否处于第一类指令执行转移和中断/异常产生转移到的共同中转MSU;
M-D-A13、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-D-A14、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-D-A15、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移和中断/异常产生转移的共同中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非共同中转MSU中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令。
一种访问控制机制,其特征在于:使用所述的装置或方法。
一种安全操作系统,其特征在于:使用所述的装置或方法。
通过上述方法,本发明能够起到以下技术效果:
设置专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息,处理器通过寄存器时时获取这些信息,以此确保安全装置有效。特别的,专用寄存器组为基于保证信息安全目的访问控制提供了更为方便、有效的识别特征。
通过从寄存器中获取的MSU边界信息,处理器可以通过它和当前程序计数器中地址值做比对,来进行指令边界检查。
通过从寄存器中获取的数据MSU边界信息,以及设定的与不同种类数据MSU匹配的读写指令,处理器可以据此判定数据访问是否超越MSU边界。
安全装置还提出了MSU间合法的转移方式:通过增加的第一类指令,可以发起跨MSU转移动作,并转移到中转MSU;通过增加的第二类指令,可以从中转MSU中转移到目标MSU;中断/异常产生时保护安全装置现场信息,中断返回时恢复安全装置现场信息,可以确保安全装置在中断现场有效。
在中转MSU中,可以把本该由第一类指令完成的MSU间转移的合法性检查工作,通过软件程序实现,这极大的降低了第一类指令的执行周期,为融入现有流水线整体设计,创造了基础。
保障装置的核心任务就是记录当前是否处于中转MSU中,而且确保,只有在中转MSU中,才能访问确保安全装置和保障装置有效的专用寄存器,同时限定第一类、第二类指令能否在中转MSU、非中转MSU中执行。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1:利用编址范围区分控制状态寄存器示意图
图2:指令中转专用MSU对失效位检查示意图
图3:指令中转专用MSU对属性匹配检查示意图
图4:指令中转专用MSU对端口匹配检查示意图
图5:调整MSU栈边界和保险箱MSU栈边界示意图
图6:恢复源MSU栈边界和保险箱MSU栈边界示意图
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下通过具体实施方式来具体说明本发明的技术方案。
实施例1:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S1:
所述实施方式S1的特征为:在RISC-V体系下,MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。
安全装置的实施方式:
S-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息
处理器在运行过程中需动态获得一些数据以保证安全装置的正常运行,因此添加一些寄存器供处理器使用。在精简指令集RSIC-V中,有4096个预设控制状态寄存器供使用,我们选择其中的一些作为增设的控制状态寄存器。
我们将RSIC-V中控制状态寄存器分为两类,一类用来保存确保安全装置有效所需的信息,增设的寄存器中,除了用来保存保险箱MSU当前栈顶地址值的CSR_BESP寄存器外,其它的寄存器都属于这一类,简称为:与安全装置相关寄存器;另一类不用来保存确保安全装置有效所需的信息,RSIC-V中现有寄存器,以及增设的CSR_BESP寄存器,都属于这一类,简称为:与安全装置不相关寄存器。
相关寄存器的访问,由保障装置控制,而不相关寄存器的访问,由安全装置控制,我们将不相关寄存器又分为两类,其中对一类寄存器的访问,可能对安全装置或保障装置的工作造成影响甚至破坏,我们认定RSIC-V中现有控制状态寄存器都属于这一类,这一类简称为:受约束寄存器;对另一类寄存器的访问,不会对安全装置或保障装置的工作造成任何影响,增设的CSR_BESP寄存器属于这一类,简称为:不受约束寄存器。我们为针对这两类寄存器的访问制定了规则,即,只有在能力不受限制的MSU中,才能访问这两类寄存器,否则,如果MSU能力受限制,则不允许访问受约束寄存器,通过安全装置中增设寄存器,来记录当前MSU能力是否受限制的标识。
增设寄存器:CSR_EMSUR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来标识不同模式下安全装置是否生效。
寄存器中各个位信息含义:
0位(表示U模式下是否开启安全装置):
为0,表示关闭
为1,表示开启
1位:(表示S模式下是否开启安全装置)
为0,表示关闭
为1,表示开启
增设寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来标识当前是否检查指令边界
寄存器中各个位信息含义:
0位(是否检查指令边界标识位):
为0,表示需要检查
为1,表示不需要检查
2位(能力不受限/能力受限):
为1,代表当前MSU能力不受限制
为0,代表当前MSU能力受限制
增设寄存器:CSR_CUR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前用户ID号
增设寄存器:CSR_CPR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关;
功能描述:用来保存当前用户类型
增设寄存器:CSR_CMSLSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU低端地址值。
增设寄存器:CSR_CMSHSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU高端地址值。
增设寄存器:CSR_CMSEBP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU可访问栈数据所在MSU高端地址值。
增设寄存器:CSR_CMSESP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU可访问栈数据所在MSU低端地址值。
增设寄存器:CSR_CBMSEBP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU可访问保险箱高端地址值。
增设寄存器:CSR_CBMSESP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存当前MSU可访问保险箱低端地址值。
增设寄存器:CSR_BESP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:不相关
功能描述:用来保存保险箱MSU当前栈顶地址值
增设寄存器:CSR_MSCHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存第一类指令转移目标地址值。
增设寄存器:CSR_UTMSLSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在U模式下产生时,用来临时保存CSR_CMSLSIDE寄存器数值。
增设寄存器:CSR_UTMSHSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在U模式下产生时,用来临时保存CSR_CMSHSIDE寄存器数值。
增设寄存器:CSR_UTMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在U模式下产生时,用来临时保存CSR_CMSATTR寄存器数值。
增设寄存器:CSR_STMSLSIDE(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在S模式下产生时,用来临时保存CSR_CMSLSIDE寄存器数值。
增设寄存器:CSR_STMSHSIDE(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在S模式下产生时,用来临时保存CSR_CMSHSIDE寄存器数值。
增设寄存器:CSR_STMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:中断或异常在S模式下产生时,用来临时保存CSR_CMSATTR寄存器数值。
增设寄存器:CSR_SMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断中转MSU低端地址值。
增设寄存器:CSR_SMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断中转MSU高端地址值。
增设寄存器:CSR_UMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断中转MSU低端地址值。
增设寄存器:CSR_UMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断中转MSU高端地址值。
S-A-A2、识别与安全装置不相关寄存器的方式:
为了方便的识别到与安全装置不相关的控制状态寄存器中,受约束寄存器和不受约束寄存器,可通过编址范围加以区分,具体的处理方式为:
第一种:
如,在“R/W:可读写;Privilege:U;Standard/not:非标准”这一属性组合所对应的64个预设寄存器空间的某一空余的连续编址位置处,放置“R/W:可读写;Privilege:U;Standard/not:非标准”对应的与安全装置不相关的控制状态寄存器中,不受约束的寄存器;
硬件设备识别控制状态寄存器的时,只要判断是否处于特定的连续编址范围内,就可以分辨出此类寄存器。其余的都是受约束的寄存器。
第二种:
和第一种相比,为了更简化判断逻辑,把不受约束寄存器的编址位置从高地址往低地址连续排列,如(0位到5位:从111111往低地址排),这样只要识别5位为1,就可以识别到它,其余的都是受约束寄存器。
S-A-A3、访问不相关寄存器时增加访问控制的功能:
沿用并增加RISC-V体系下csrr、csrw、csrwi指令功能,具体实现方式包括:
对于不相关寄存器中受约束的寄存器,只有“当前模式安全装置关闭”或“当前模式安全装置开启且当前处于能力不受限制MSU中时,才可通过csrr、csrw、csrwi指令访问,否则访问报异常,即,只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为0,或者,CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1且CSR_CMSATTR寄存器2位为1,的情况下,才能通过csrr、csrw、csrwi指令访问受约束寄存器。
特别的:如果当前模式为M,默认安全装置失效。
S-A-A4、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,即检查当前程序计数器中数值是否处于处理器认定的当前MSU范围内,如果不超出范围,允许执行,否则报异常。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
优选的:进行边界检查时,安全机制开启/关闭检查、CSR_CMSATTR寄存器属性位检查、比较高端地址和低端地址的动作,可以通过增加流水线功能的方式同时进行,以此达到不增加流水线中指令执行周期,进而不降低流水线整体执行效率的目的。
S-A-A5、在安全装置中增加检查数据访问是否跨边界的功能
只有在当前模式开启安全装置的情况下,对访问普通数据MSU的特定指令,进行边界检查,即检查数据访问内存地址是否处于普通数据MSU内,如果不超出范围,允许执行,否则报异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果数据访问内存地址值小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。
只有在当前模式开启安全装置的情况下,对访问栈数据所在MSU的特定指令,进行边界检查,即检查数据访问内存地址是否处于栈数据所在MSU内,如果不超出范围,允许执行,否则报异常,具体包括:
增加sload、sstore指令:
格式和功能与risc-v现有体系下load、store指令一致。
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果访问内存地址值小于CSR_CMSESP寄存器中数值或大于等于CSR_CMSEBP寄存器中数值,报异常,否则正常执行。CSR_EMSUR寄存器为0时执行,报异常。
只有在当前模式开启安全装置的情况下,对访问保险箱MSU的特定指令,进行边界检查,即检查数据访问内存地址是否处于保险箱MSU内,如果不超出范围,允许执行,否则报异常,具体包括:
增加bload、bstore指令:
格式和功能与risc-v现有体系下load、store指令一致。
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果访问内存地址值小于CSR_CBMSESP寄存器中数值或大于等于CSR_CBMSEBP寄存器中数值,报异常,否则正常执行。CSR_EMSUR寄存器为0时执行,报异常。
优选的:进行边界检查时,安全装置开启/关闭检查、比较高端地址和低端地址的动作,可以通过增加流水线功能的方式同时进行,以此达到不增加流水线中指令执行周期,进而不降低流水线整体执行效率的目的。
S-A-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第一类指令可执行,不切换MSU边界地址值,并标识指令中转MSU中不做指令边界检查,保存下一条指令地址,并将程序计数器的值设置为指令中转MSU入口地址。具体包括:
指令格式:jalrmsu ra rs
功能:
只有在当前模式开启安全装置前提下,即只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,指令可执行,否则报异常;指令执行时,将CSR_CMSATTR寄存器0位置1,用PC+4设置rd,rd默认为x1,即ra,用CSR_MSCHADDR寄存器中数值设置PC。rs用来指定目标地址值。
S-A-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第二类指令可执行,不切换边界值,并标识从指令中转区域转移到目标MSU后,做指令边界检查,执行转移到的指令中转区域向外的转移。具体包括:
指令格式:jalrchmsu ra rs
功能:
只有在当前模式开启安全装置前提下,即只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,指令可执行,否则报异常;指令执行时,将CSR_CMSATTR寄存器0位置0,用rs寄存器中数值设置PC。
优选的,rs中保存B指令中指定的目标地址值。
S-A-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断中转MSU的边界;转移至中断服务程序的入口地址;其余操作与现有中断/异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,把CSR_CMSATTR寄存器0位置1,分别用CSR_UTMSLSIDE、CSR_UTMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,之后分别用CSR_UMSIRLADDR、CSR_UMSIRHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后沿用RISC-V现有规则转移至中断中转MSU入口地址;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,把CSR_CMSATTR寄存器0位置1,分别用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,之后分别用CSR_SMSIRLADDR、CSR_SMSIRHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后沿用RISC-V现有规则转移至中断中转MSU入口地址;
如果当前模式为S,且委托到的模式是S或U,则检查S模式是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,把CSR_CMSATTR寄存器0位置1,分别用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,之后分别用CSR_SMSIRLADDR、CSR_SMSIRHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后沿用RISC-V现有规则转移至中断中转MSU入口地址。
S-A-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
开启安全装置前提下,处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的前提下,指令执行时,如果当前模式为S,则用CSR_STMSATTR寄存器数值设置CSR_CMSATTR寄存器的数值,用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器恢复CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值;如果当前模式为U,则用CSR_UTMSATTR寄存器数值设置CSR_CMSATTR寄存器的数值,用CSR_UTMSLSIDE、CSR_UTMSHSIDE寄存器恢复CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值。
S-A-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
S-A-A10-1、为指令中转MSU制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界地址信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。将控制对照表设置于中转MSU数据区域中。
MSU控制对照表。
所述MSU控制对照表的信息包括:所有MSU的信息,具体包括:MSU的ID号、MSU的边界信息、属性信息、端口信息、生效/失效信息。优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息。
所述MSU边界信息,包括:指令区+数据区边界信息、堆区,在一个连续线性地址空间排列而形成的边界信息。
所述MSU属性信息:可以是普通MSU、检查MSU、终端MSU、共享数据MSU、空端口MSU、保险箱MSU、指令中转MSU、中断中转专用MSU中的一种。
所述MSU端口信息包括:MSU的出口信息和MSU的入口信息;
所述MSU的出口信息,包括:其出口号、出口地址值、调用/返回标识、目标MSU的ID号、目标入口号、目标入口地址值;
所述MSU的入口信息,包括:入口地址值;
S-A-A10-2、在指令中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
先用指令中转MSU低端边界值设置CSR_CMSLSIDE寄存器,再用中转专用MSU高端边界值设置CSR_CMSHSIDE寄存器,这两次设置是能够访问指令中转专用MSU数据区的基础;之后先将ra寄存器中保存地址值减去一条指令长度,获取源MSU出口地址值,再通过rs寄存器获取目标MSU入口地址值(ra、rs寄存器与前述jalrmsu指令格式中ra、rs寄存器一致);将CSR_CMSATTR寄存器2位置1,表明当前MSU是能力不受限制的MSU;之后在MSU控制对照表中找到源MSU对应的表项,再根据目标MSU入口地址值,在MSU控制对照表中找到目标MSU对应的表项,以此为基础完成后续检查工作和到目标MSU的转移工作:
·MSU描述符的生效/失效检查
源MSU表项和目标MSU表项中,只要有一个生效/失效字段标识为0,说明MSU无效,进入异常处理流程,如果都为1,再进行属性匹配检查。
图2表现了检查MSU生效/失效的技术效果。.
·MSU属性匹配检查
通过源MSU表项的出口信息中,确定出口性质是调用或返回,并在源MSU表项和目标MSU表项,获取属性信息,根据调用或返回的不同规则,进行MSU间属性匹配检查,如果属性匹配符合MSU属性匹配规则,再进行端口匹配检查,否则,进入异常处理流程。
图3表现了MSU属性匹配检查的技术效果。
·当出口为调用时,进行端口匹配检查的方式
在源MSU表项中,必须存在与源MSU出口地址值一致的出口;在端口匹配表中,与出口匹配的入口地址,必须与目标MSU的入口地址一致,两个条件只要有一个不成立,进入异常处理流程,如果全部成立,开始完成到目标MSU的调用工作。
图4表现了MSU端口匹配检查的技术效果。
·当出口为返回时,进行端口匹配检查的方式
在源MSU表项中,必须存在与源MSU出口地址值一致的出口;此条件只要不成立,进入异常处理流程,如果成立,开始完成到目标MSU的返回工作。
·完成到目标MSU的调用工作
步骤1:分别将返回地址、CSR_CBMSEBP寄存器中数值(即源MSU可访问的保险箱MSU栈底地址值)和CSR_CMSEBP寄存器中数值(即源MSU栈底地址值),保存在保险箱当前栈顶位置(通过CSR_BESP寄存器来认定栈顶位置),之后转到步骤2执行;
步骤2:用新的保险箱MSU栈顶地址值设置CSR_BESP寄存器,地址值为保险箱当前栈顶位置减去步骤1中保存三个数值占用空间大小的总和,之后转到步骤3执行;
步骤3:用新的保险箱MSU栈顶地址值设置CSR_CBMSEBP寄存器,以此确定目标MSU可访问的保险箱MSU的栈底地址值,之后转到步骤4执行;
步骤4:重新设置CSR_CMSEBP寄存器,以此确定目标MSU栈底地址值,之后转到步骤5执行;
图5表现了步骤1至步骤4中对MSU栈边界和保险箱MSU栈边界的调整情况,图5中上半部分表现了调整前的情况,下半部分表现了调整后的情况。
步骤5:重新设置sp寄存器,以此确定目标MSU栈顶位置,之后转到步骤6执行;
步骤6:用目标MSU入口地址值设置rs寄存器(rs寄存器与前述jalrchmsu指令格式中rs寄存器一致),之后转到步骤7执行;
步骤7:设置ra寄存器,由于ra寄存器中的数值,将在jalrchmsu指令执行时,用来设置CSR_CMSATTR寄存器,所以格式要和CSR_CMSATTR寄存器格式保持统一,根据前述控制对照表中目标MSU表项中信息的记录,来设置ra寄存器中“能力不受限/能力受限”相应的位,并将0位设置为0,为了目标MSU接受指令边界检查,之后转到步骤8执行;
步骤8:用目标MSU表项中MSU低端边界值,设置CSR_CMSLSIDE寄存器,以此确定目标MSU低端边界,之后转到步骤9执行;
步骤9:用目标MSU表项中MSU高端边界值,设置CSR_CMSHSIDE寄存器,以此确定目标MSU高端边界,之后转到步骤10执行;
步骤10:执行jalrchmsu指令,完成转移工作。
·完成到目标MSU的返回工作
步骤1:分别用保存在保险箱栈顶位置的返回地址值、MSU可访问的保险箱MSU栈底地址值和MSU栈底地址值,设置rs寄存器、CSR_CBMSEBP寄存器和CSR_CMSEBP寄存器(rs寄存器与前述jalrchmsu指令格式中rs寄存器一致),通过CSR_BESP寄存器来认定栈顶位置,之后转到步骤2执行;
步骤2:用新的保险箱MSU栈顶地址值设置CSR_BESP寄存器,地址值为保险箱当前栈顶位置加上步骤1中所述保存在保险箱栈顶的三个数值占用空间大小的总和,之后转到步骤3执行;
图6表现了步骤1至步骤2中对MSU栈边界和保险箱MSU栈边界的恢复情况,图6中上半部分表现了恢复前的情况,下半部分表现了恢复后的情况。
步骤3:重新设置sp寄存器,以此确定目标MSU栈顶位置,之后转到步骤4执行;
步骤4:设置ra寄存器,由于ra寄存器中的数值,将在jalrchmsu指令执行时,用来设置CSR_CMSATTR寄存器,所以格式要和CSR_CMSATTR寄存器格式保持统一,根据前述控制对照表中目标MSU表项中信息的记录,来设置ra寄存器中“能力不受限/能力受限”相应的位,并将0为设置为0,为了目标MSU接受指令边界检查,之后转到步骤5执行;
步骤5:用目标MSU表项中MSU低端边界值,设置CSR_CMSLSIDE寄存器,以此确定目标MSU低端边界,之后转到步骤6执行;
步骤6:用目标MSU表项中MSU高端边界值,设置CSR_CMSHSIDE寄存器,以此确定目标MSU高端边界,之后转到步骤7执行;
步骤7:执行jalrchmsu指令,完成转移工作。
S-A-A10-3、在中断中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
·中断或异常的处理
在中断中转MSU中添加逻辑为:
步骤1:将现场信息,包括通用寄存器信息和所有控制状态寄存器信息以及PC,保存到中断中转MSU的数据区,之后转到步骤2执行;
步骤2:重新设置CSR_CMSEBP、CSR_CMSESP、CSR_CBMSEBP、CSR_CBMSESP、CSR_BESP这几个寄存器,以重新确定中断服务程序能够访问的栈边界、保险箱边界以及保险箱当前栈顶位置,之后转到步骤3执行;
步骤3:把保存在数据区的现场信息,保存进保险箱当前栈顶位置处,并用新的保险箱MSU栈顶地址值设置CSR_BESP寄存器,地址值为保险箱当前栈顶位置减去保存的数据占用空间大小的总和,用CSR_BESP寄存器的值重新设置CSR_CMSEBP寄存器,以此重新确定当前MSU可访问的保险箱MSU栈底地址值,之后转到步骤4执行;
步骤4:开中断。
值得注意的是:如果中断中转专用MSU需要转移到非中转MSU执行,应通过jalrmsu指令完成转移。
·中断返回处理
在中断中转专用MSU中,中断返回指令前,添加软件逻辑为:
步骤1:通过CSR_BESP寄存器确认保险箱MSU栈顶位置,恢复各个控制状态寄存器的值(CSR_CMSATTR寄存器的值先不要恢复),根据risc-v现有规则恢复或设置通用寄存器,优选的,根据实际需要,对CSR_EMSUR寄存器进行设置,之后转到步骤2执行;
步骤2:执行中断返回指令。
优选的:
·为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理:
添加指令的逻辑是:
如果在MSU间转移的性质是调用,就在参数传递指令前添加指令,获取栈顶地址值,并将此地址值压入栈中,此地址值作为目标MSU的栈底地址值;进入指令中转MSU后,将CSR_CMSEBP寄存器中记录的源MSU栈底地址值,保存在保险箱MSU中以便返回时能恢复,之后用获取到的栈顶地址值设置CSR_CMSEBP寄存器,等转移到目标MSU后(即目标MSU就是当前MSU),CSR_CMSEBP寄存器中记录的栈底地址值,就是当前MSU的栈底地址值。
如果在MSU间转移的性质是返回,就在指令中转MSU处理返回工作的逻辑处添加指令,用保险箱MSU栈顶保存的栈底地址值恢复到CSR_CMSEBP寄存器,这个栈底地址值就是此时的目标MSU在之前进行调用时,指令中转MSU为它保存的栈底地址值。等转移到目标MSU后(即目标MSU就是当前MSU),CSR_CMSEBP寄存器中记录的栈底地址值,就是当前MSU的栈底地址值。
·为实现对当前用户、当前角色的控制:
当MSU间转移动作发生后,在指令中转MSU中,添加逻辑:用MSU控制对照表中目标MSU对应表项中的,“MSU所属用户类型”,“MSU所属用户标识”两项记录数值,分别设置CSR_CPR、CSR_CUR寄存器。以此认定目标MSU所属用户、角色,为当前用户、当前角色。
·IO访问控制
鉴于risc-v已经没有专用I/O指令,而是使用固定地址的方式对外设进行访问,所以对I/O访问的监控方案是:把固定地址圈定在I/O操作MSU的内部,这样就不用再另行检查了,执行前述边界检查即可。
S-A-A10-4、编译包含MSU的源程序,包括:
提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令;
所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令;
限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
S-A-A10-4-1、提取MSU信息,编写、编译包含MSU信息的源程序:
·一种增设语法规则的方式表达MSU信息
增设语法规则,使编程阶段完成准确保留程序设计中MSU信息,为了兼容性,本规则在C语言的基础上,增设如下语法规则:
MSU声明:
MSU类型 MSU名 能力受限制/能力不受限制标识符(可选)
{
数据声明
访问标识符:函数声明
};
访问标识符:
inner
port
MSU类型:
common_msu
check_msu
terminal_msu
nothing_msu
share_msu
ir_trans_msu
MSU能力不受限/能力受限标识符:
status1
status2
MSU空端口函数声明:
返回值类型 MSU名 函数名 形式参数类型列表;
MSU空端口函数定义:
返回值类型 MSU名 函数名 形式参数类型列表 复合语句
端口函数声明:
端口标识符 声明表 MSU名 函数名 形式参数类型列表;
端口函数定义:
声明表 MSU名 函数名 形式参数类型列表 复合语句
端口函数调用:
函数名 参数列表
指针区域类型 指针定义
指针区域类型:
data
stack
其中MSU类型代表MSU的属性:common_msu代表普通MSU、check_msu代表检查MSU、terminal_msu代表终端MSU、nothing_msu代表空端口MSU、share_msu代表共享数据MSU、ir_trans_msu代表中断中转专用MSU。当MSU类型为空端口MSU时,不需要定义函数的访问标识符。
MSU名代表MSU的标识信息;一对{}里面的数据和函数,从属于同一个MSU。
由inner这个访问标识符标识的函数为MSU内部函数;
由port这个访问标识符标识的函数为MSU端口函数;
能力不受限状态/能力受限状态标识符,标识着MSU中程序执行时访问受约束寄存器的能力是否受限制,status1代表能力不受限,status2代表能力受限,如果不做声明,默认为能力受限;
共享数据MSU中只允许定义数据。
指针区域类型:data标识的指针为MSU数据区或堆区指针;stack标识的指针为栈区指针;如果指针定义前不添加指针区域类型标识符,则默认指针为数据区或堆区指针。
通过增设语法规则实现的一个案例程序是:
编译器通过增设语法规则,识别出程序中保留的MSU信息,把信息保存在语法树上。供后续步骤使用。
·通过配置信息表达MSU信息
增设配置信息,能够使编程阶段完成准确保留程序设计中MSU信息:
把MSU的信息记录在配置文件中,编译器进行语法分析时,不仅要分析程序文件,还要分析配置文件,通过配置信息来认定程序文件中与MSU相关的信息,最终的信息要符合编译阶段对MSU信息的处理规则,符合,可生成语法树。供后续步骤使用。
增设的配置信息规则是:
MSU类型 MSU名 能力不受限/能力受限标识符(可选)
数据名
访问标识符:函数名
为源代码中定义的每一个数据指针指定其区域类型,如不指定,默认是MSU数据区指针。
访问标识符:
inner
port
MSU类型:
common_msu
check_msu
terminal_msu
nothing_msu
share_msu
ir_trans_msu
MSU能力不受限/能力受限标识符:
status1
status2
各个关键字作用与本案例前述增设语法规则中关键字作用一致。
用增设配置信息体现MSU信息的一种实施方式是:
MSU类型A status1
n;
data*p;//p为一个全局指针变量,指向全局数据区
stack*p1;//p1为一个全局指针变量,指向栈数据区
inner:
add1;
sub1;
port:
SetData1;
GetData1;
stack add1:*p1;//p1为函数add中的局部指针变量,指向栈数据区
MSU类型B
a;
inner:
add2;
sub2;
port:
SetData2;
·利用C语言语法规则
利用C语言语法规则,使编程阶段完成准确保留程序设计中MSU信息的方法是:
通过现有语法规则保留MSU信息的一种方法是:
定义在同一个.c文件中的数据、函数,默认属于同一个MSU;
通过特定的函数命名法,来标识此函数是MSU的空端口函数或端口函数,如:函数名字最开始5个字符为_PORT的函数为端口函数;函数名字最开始6个字符为_INNER的函数为空端口函数;指针名字最开始5个字符为_data的指针为指向数据区的指针;指针名字最开始6个字符为_stack的指针为指向栈区的指针;
通过宏定义的方式认定MSU属性;
编译器进行语法分析时,可通过上述三种规则分别认定程序中与MSU相关的信息,最终生成语法树、保存MSU信息,其余语法的编译技术与现有技术相同。
·内存布局及编址方式:
在编译链接阶段,把属于同一MSU的指令和数据,以页对齐的形式,分别密排链接,指令保存在指令区、数据保存在数据区。
在编译链接阶段,所有MSU在同一线性地址空间内,各个MSU的各个连续存储区,各自进行编址,其基址和长度写入对应的MSU控制对照表表项。
·提取并保存MSU信息:
在编译链接阶段,由编译器自动生成一个普通中转专用MSU,其中数据包括前述的MSU控制对照表、端口匹配表,并自动生成配套逻辑。
MSU控制对照表、端口匹配表中内容,通过语法树信息获取,其中MSU边界信息,通过统计编译生成的指令和数据占用空间大小来确定。
在目标代码生成阶段,将每个函数(端口函数除外,因为在普通中转专用MSU中已经设置存入保险箱MSU了)第一条指令设置为sstore指令,此指令将ra寄存器中地址(即函数返回地址),保存进CSR_BESP寄存器指向位置处,并增加指令,使CSR_BESP寄存器指向位置向低地址方向移动,移动大小为函数返回地址占用空间大小;在每个函数返回动作对应的跳转指令前,增加前述sload指令,此指令将CSR_BESP寄存器指向位置处数据,载入用于承载跳转目标地址的寄存器,并增加指令,使CSR_BESP寄存器指向位置向高地址方向移动,移动大小为函数返回地址占用空间大小。
自动生成的普通中转专用MSU保存到可执行文件内,并与操作系统约定在可执行文件中的位置,供加载时使用。
S-A-A10-4-2、限定MSU语法访问规则
编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
S-A-A10-4-3、生成与MSU访问相关的指令
与本实施例中介绍的增设指令及更改指令功能,以及增加csrr、csrw、csrwi指令功能中介绍的增加功能一致。
S-A-A10-5、运行时阶段对MSU信息的处理,包括:
开启安全装置及加载内核程序实现方式,包括:操作系统程序自身以MSU方式编译链接生成,加载后,在S模式下,在安全装置生效前,由特定程序初始化前述增设寄存器,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
安全装置开启前提下加载应用程序的实现方式,包括:
应用程序要以MSU方式编译链接生成,进程加载程序时,先由内核为其指定栈顶栈底边界、保险箱栈顶栈底边界、以及保险箱当前栈顶地址值,之后内核在程序可执行文件约定位置,找到指令中转MSU,通过指令中转MSU中MSU控制对照表找到程序入口对应MSU的边界信息,确定指令中转MSU入口地址值,把这些信息全都返回给中断中转MSU,它用这些信息,为进程程序的执行,设置各个前述专用寄存器,设置完毕后,执行中断返回指令,程序就可以执行了。
进程程序执行时,如果需要动态加载MSU,则需要通过系统调用,给内核传达需求,内核会通过一个指定的MSU,与进程程序的指令中转MSU共享数据物理页面,把要新加载的MSU信息写入控制对照表和端口匹配表,并为其加载MSU相关的指令和数据,这样新加载的MSU就可以使用了。
保障装置的实施方式:
S-A-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
沿用安全装置的寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与保障装置相关性:相关
功能描述:用来标识当前是否处于第一类指令转移到的指令中转MSU,是否处于中断/异常产生转移到的中断中转MSU。
寄存器中各个位信息含义:
0位(当前是否处于中转MSU标志位):
为0,表示当前不处于中转MSU
为1,表示当前处于中转MSU
1位(当前处于中转MSU种类标志位):
为0,表示当前处于指令中转MSU
为1,表示当前处于中断中转MSU
特别的:安全装置和保障装置共用CSR_CMSATTR寄存器,这是因为,安全装置中规定,只有在中转MSU中不进行指令边界检查;保障装置也通过当前是否处于中转MSU,来限制是否能访问与安全装置相关寄存器,以及是否能执行合法的跨MSU转移执行,这样,CSR_CMSATTR寄存器0位,用同样的数值,既可以标识当前是否不需要指令检查,又可以标识当前是否处于中转MSU,两者并不冲突。
S-A-A12、识别需要保障的寄存器的方式:
为了方便的识别到控制状态寄存器是否与安全装置相关,可通过编址范围加以区分,具体的处理方式为:
第一种:
如,在“R/W:可读写;Privilege:U;Standard/not:非标准”这一属性组合所对应的64个预设寄存器空间的某一空余的连续编址位置处,放置“R/W:可读写;Privilege:U;Standard/not:非标准”对应的与安全装置相关的控制状态寄存器;
硬件设备识别控制状态寄存器的时,只要判断是否处于特定的连续编址范围内,就可以分辨出与安全装置相关的控制状态寄存器,其余的都是不相关的。
图1上半部分表现了按照第一种处理方式,识别相关寄存器、不相关寄存器中受约束寄存器以及不受约束寄存器的技术效果。
第二种:
和第一种相比,为了更简化判断逻辑,把与安全装置相关控制状态寄存器的编址位置从高地址往低地址连续排列,如(0位到5位:从111111往低地址排),这样只要识别5位为1,就可以分辨出与安全装置相关的控制状态寄存器,其余的都是不相关的。
图1下半部分表现了按照第二种处理方式,识别相关寄存器、不相关寄存器中受约束寄存器以及不受约束寄存器的技术效果。
S-A-A13、访问专用寄存器时增加访问控制的功能:
沿用并增加RISC-V体系下csrr、csrw、csrwi指令功能,具体实现方式包括:
处理器通过增设寄存器中记录信息,来履行相关性规则,以及RISC-V中现有控制状态寄存器访问规则:只有“当前模式安全装置关闭”或“当前模式安全装置开启且当前处于中转MSU时,才可通过csrr、csrw、csrwi指令访问与安全装置相关的寄存器,否则访问报异常,即,只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为0,或者,CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1且CSR_CMSATTR寄存器0位为1,的情况下,才能通过csrr、csrw、csrwi指令访问相关寄存器;
特别的:如果当前模式为M,默认安全装置失效。
S-A-A14、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器,具体包括:在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为0的情况下,允许设置。
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器,具体包括:jalrmsu指令执行时以及中断/异常产生时,将CSR_CMSATTR寄存器0位置1;jalrchmsu指令执行时,用rd寄存器中数值设置CSR_CMSATTR寄存器,rd默认为x1,即ra,优选的,如果目标区域为非中转MSU,ra寄存器0位置0,1位置0,如果目标区域为中断中转MSU,ra寄存器0位置1,1位置1;中断返回时,恢复CSR_CMSATTR寄存器数值;允许通过csrr、csrw、csrwi指令访问增设寄存器。
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息,具体包括:保存的增设寄存器信息与安全装置和保障装置中保存增设寄存器信息一致。
其余情况下不得改写安全装置和保障装置的专用寄存器,具体包括:在安全装置开启的前提下,如果处于非中转MSU,不允许设置与安全装置相关的寄存器和保障装置的寄存器,即,在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为0,不允许设置相关寄存器。
在第一类指令执行转移到的指令中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为0,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令;
在中断/异常产生转移到的中断中转MSU中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括;在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为1,不允许执行jalrchmsu指令,允许执行jalrmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令;
在非中转MSU中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即,在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为0,允许执行jalrmsu指令,不允许执行jalrchmsu指令,不允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令。
实施例2:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S2:
所述实施方式S2的特征为:在RISC-V体系下,MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。二者可以转移至共同中转MSU的相同地址或不同地址,本制作方法优选转移到共同地址。
安全装置的实施方式:
S-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息
在实施例1中S-A-A1所述内容基础上
将:
“增设寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来标识当前是否检查指令边界
寄存器中各个位信息含义:
0位(是否检查指令边界标识位):
为0,表示需要检查
为1,表示不需要检查”
替换为:
“增设寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来标识当前是否检查指令边界,以及标识转移至共同中转MSU的原因
寄存器中各个位信息含义:
0位(是否检查指令边界标识位):
为0,表示需要检查
为1,表示不需要检查
1位(转移至共同中转MSU的原因):
为0,由于第一类指令执行转移至共同中转MSU
为1,由于中断/异常产生转移至共同中转MSU”
将:
“增设寄存器:CSR_MSCHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存第一类指令转移目标地址值。”
替换为:
“增设寄存器:CSR_UMSCHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常转移共同的目标地址值。
增设寄存器:CSR_SMSCHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常转移共同的目标地址值。”
将:
“增设寄存器:CSR_SMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断中转MSU低端地址值。
增设寄存器:CSR_SMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断中转MSU高端地址值。
增设寄存器:CSR_UMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断中转MSU低端地址值。
增设寄存器:CSR_UMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断中转MSU高端地址值。”
替换为:
“增设寄存器:CSR_SMSCHLADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常转移的共同中转MSU的低端地址值。
增设寄存器:CSR_SMSCHHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常转移的共同中转MSU的高端地址值。
增设寄存器:CSR_UMSCHLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常转移的共同中转MSU的低端地址值。
增设寄存器:CSR_UMSCHHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常转移的共同中转MSU的高端地址值。”
其余内容一致。
S-B-A2、识别与安全装置不相关寄存器的方式:
与实施例1中S-A-A2所述内容一致。
S-B-A3、访问不相关寄存器时增加访问控制的功能:
与实施例1中S-A-A3所述内容一致。
S-B-A4、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
与实施例1中S-A-A4所述内容一致。
S-B-A5、在安全装置中增加检查数据访问是否跨边界的功能
与实施例1中S-A-A5所述内容一致。
S-B-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第一类指令可执行,不切换MSU边界地址值,并标识指令中转MSU中不做指令边界检查,标识当前是第一类指令执行导致转移,保存下一条指令地址,并将程序计数器的值设置为指令中转MSU入口地址。具体包括:
指令格式:jalrmsu ra rs
功能:
只有在当前模式开启安全装置前提下,即只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,指令可执行,否则报异常;指令执行时,将CSR_CMSATTR寄存器0位置1,1位置0,用PC+4设置rd,rd默认为x1,即ra,用CSR_MSCHADDR寄存器中数值设置PC。rs用来指定目标地址值。
S-B-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
与实施例1中S-A-A7所述内容一致。
S-B-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存共同中转MSU中是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为共同中转MSU的边界地址信息;转移至共同中转MSU的入口地址;其余操作与现有中断、异常的处理一致。
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,分别用CSR_UTMSLSIDE、CSR_UTMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,之后分别用CSR_UMSCHLADDR、CSR_UMSCHHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后用CSR_UMSCHADDR寄存器中数值设置PC;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,分别用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,之后分别用CSR_SMSCHLADDR、CSR_SMSCHHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后用CSR_SMSCHADDR寄存器中数值设置PC;
如果当前模式为S,且委托到的模式是S或U,则检查S模式是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,分别用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器保存CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后分别用CSR_SMSCHLADDR、CSR_SMSCHHADDR这两个寄存器的值设置CSR_CMSLSIDE、CSR_CMSHSIDE寄存器,最后用CSR_SMSCHADDR寄存器中数值设置PC。
S-B-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
开启安全装置前提下,处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的前提下,指令执行时,如果当前模式为S,则用CSR_STMSATTR寄存器数值设置CSR_CMSATTR寄存器的数值,用CSR_STMSLSIDE、CSR_STMSHSIDE寄存器恢复CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值;如果当前模式为U,则用CSR_UTMSATTR寄存器数值设置CSR_CMSATTR寄存器的数值,用CSR_UTMSLSIDE、CSR_UTMSHSIDE寄存器恢复CSR_CMSLSIDE、CSR_CMSHSIDE寄存器的数值。
S-B-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
S-B-A10-1、为共同中转MSU制作MSU信息记录单元,包括:
在实施例1中S-A-A10-1所述内容基础上,将:
“所述MSU属性信息:可以是普通MSU、检查MSU、终端MSU、共享数据MSU、空端口MSU、保险箱MSU、指令中转MSU、中断中转专用MSU中的一种。”
替换为
“所述MSU属性信息:可以是普通MSU、检查MSU、终端MSU、共享数据MSU、空端口MSU、保险箱MSU、第一类指令转移和中断/异常转移共同中转MSU中的一种。”
将:
“所述MSU的出口信息,包括:其出口号、出口地址值、调用/返回标识、目标MSU的ID号、目标入口号、目标入口地址值;”
替换为:
“所述MSU的出口信息,包括:其出口号、出口地址值、调用/返回标识/中断返回标识、目标MSU的ID号、目标入口号、目标入口地址值;”
其余内容一致。
S-B-A10-2、在共同中转MSU中,对转移进行分类处理的控制逻辑,包括:
先判断CSR_CMSATTR寄存器1位的数值,如果是1,说明当前是由于产生了中断或异常而进入共同中转MSU,则转入中断或异常的访问控制逻辑;如果是0,说明当前是由于第一类指令执行进入共同中转MSU,则转入第一类指令执行的访问控制逻辑。
在表项的出口信息中,确定出口性质是调用或返回或中断返回,如果是中断返回,则转入中断返回的流程,否则,转入MSU间指令转移处理流程。
S-B-A10-3、在共同中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
先用共同中转MSU低端边界值设置CSR_CMSLSIDE寄存器,再用中转专用MSU高端边界值设置CSR_CMSHSIDE寄存器(当前处于哪种模式,就用相应的共同中转MSU边界设置寄存器),这两次设置是能够访问共同中转MSU数据区的基础;之后将CSR_CMSATTR寄存器2位设置为1,表明当前MSU能力不受限制,之后,先将ra寄存器中保存地址值减去一条指令长度,获取源MSU出口地址值,在MSU控制对照表中找到源MSU对应的表项,之后通过rs寄存器获取目标MSU入口地址值(ra、rs寄存器与前述jalrmsu指令格式中ra、rs寄存器一致);再根据目标MSU入口地址值,在MSU控制对照表中找到目标MSU对应的表项,以此为基础完成后续检查工作和到目标MSU的转移工作。
·MSU描述符的生效/失效检查
与实施例1中S-A-A10-2的“MSU描述符的生效/失效检查”所述内容一致。
·MSU属性匹配检查
与实施例1中S-A-A10-2的“MSU属性匹配检查”一致。
·当出口为调用时,进行端口匹配检查的方式
与实施例1中S-A-A10-2的“当出口为调用时,进行端口匹配检查的方式”所述内容一致。
·当出口为返回时,进行端口匹配检查的方式
与实施例1中S-A-A10-2的“当出口为返回时,进行端口匹配检查的方式”所述内容一致。
·当出口为中断返回时,进行端口匹配检查的方式
在源MSU表项中,必须存在与源MSU出口地址值一致的出口;此条件只要不成立,进入异常处理流程,如果成立,转入中断返回处理流程。
·完成到目标MSU的调用工作
将实施例1中S-A-A10-2的“完成到目标MSU的调用工作”所述内容一致。
·完成到目标MSU的返回工作
将实施例1中S-A-A10-2的“完成到目标MSU的返回工作”所述内容一致。
S-B-A10-4、在共同中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
·中断或异常的处理
步骤1:将现场信息,包括通用寄存器信息和所有控制状态寄存器信息以及PC,保存到共同中转MSU的数据区,之后转到步骤2执行;
步骤2:重新设置CSR_CMSEBP、CSR_CMSESP、CSR_CBMSEBP、CSR_CBMSESP、CSR_BESP这几个寄存器,以重新确定当前MSU能够访问的栈边界、保险箱边界以及保险箱当前栈顶位置,之后转到步骤3执行;
步骤3:把保存在数据区的现场信息,保存进保险箱当前栈顶位置处,并用新的保险箱MSU栈顶地址值设置CSR_BESP寄存器,地址值为保险箱当前栈顶位置减去保存的数据占用空间大小的总和,用CSR_BESP寄存器的值重新设置CSR_CMSEBP寄存器,以此重新确定当前MSU可访问的保险箱MSU栈底地址值,之后转到步骤4执行;
步骤4:重新设置sp寄存器,以此确定目标MSU(即中断服务程序所在MSU)栈顶位置,(优选的,把该MSU需要的参数保存入栈,使sp指向栈顶,)之后转到步骤5执行;
步骤6:设置ra寄存器,由于ra寄存器中的数值,将在jalrchmsu指令执行时,用来设置CSR_CMSATTR寄存器,所以格式要和CSR_CMSATTR寄存器格式保持统一,根据前述控制对照表中对中断服务程序所在MSU表项中信息的记录,来设置ra寄存器中“能力不受限/能力受限”相应的位,并将0位设置为0,为了该MSU接受指令边界检查,之后转到步骤7执行;
步骤7:用中断服务程序所在MSU的低端边界值,设置CSR_CMSLSIDE寄存器,以此确定其低端边界,之后转到步骤8执行;
步骤8:用中断服务程序所在MSU的高端边界值,设置CSR_CMSHSIDE寄存器,以此确定其高端边界,之后转到步骤9执行;
步骤9:执行jalrchmsu指令,转移到中断服务程序所在MSU。
·完成中断返回
步骤1:通过CSR_BESP寄存器确认保险箱MSU栈顶位置,恢复各个控制状态寄存器的值(CSR_CMSATTR寄存器的值先不要恢复),根据risc-v现有规则恢复或设置通用寄存器,(优选的,根据实际需要,对CSR_EMSUR寄存器进行设置)之后转到步骤2执行;
步骤2:执行中断返回指令。
优选的:
·为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理:
在实施例1“为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理”所述内容基础上,将“指令中转MSU”,替换为,“共同中转MSU”,其余内容一致。
·为实现对当前用户、当前角色的控制:
在实施例1“为实现对当前用户、当前角色的控制”所述内容基础上,将“指令中转MSU”,替换为,“共同中转MSU”,其余内容一致。
·IO访问控制
与在实施例1“IO访问控制”所述内容一致。
S-B-A10-5、编译包含MSU的源程序,包括:
在实施1S-A-A10-4所述内容基础上,将ir_trans_msu关键字及相应描述内容删除,其余内容一致。
S-B-A10-6、运行时阶段对MSU信息的处理,包括:
在实施1S-A-A10-5所述内容基础上,将“指令中转MSU”,替换为,“共同中转MSU”,其余内容一致。
保障装置的实施方式:
S-B-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
沿用安全装置的寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与保障装置相关性:相关
功能描述:用来标识当前是否处于共同中转MSU。
寄存器中各个位信息含义:
0位(当前是否处于共同中转MSU标志位):
为0,表示当前不处于共同中转MSU
为1,表示当前处于共同中转MSU
特别的:安全装置和保障装置共用CSR_CMSATTR寄存器,这是因为,安全装置中规定,只有在中转MSU中不进行指令边界检查;保障装置也通过当前是否处于中转MSU,来限制是否能访问与安全装置相关寄存器,以及是否能执行合法的跨MSU转移执行,这样,CSR_CMSATTR寄存器0位,用同样的数值,既可以标识当前是否不需要指令检查,又可以标识当前是否处于中转MSU,两者并不冲突。
S-B-A12、识别需要保障的寄存器的方式:
与实施例1中S-A-A12所述内容一致。
S-B-A13、访问专用寄存器时增加访问控制的功能:
与实施例1中S-A-A13所述内容一致。
S-B-A14、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
在实施例1中S-A-A14所述内容基础上:
将:
“优选的,如果目标区域为非中转MSU,ra寄存器0位置0,1位置0,如果目标区域为中断中转MSU,ra寄存器0位置1,1位置1;”
替换为:
“优选的,ra寄存器0位置0;”
将:
“在第一类指令执行转移到的指令中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为0,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令;
在中断/异常产生转移到的中断中转MSU中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括;在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为1,不允许执行jalrchmsu指令,允许执行jalrmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令;”
替换为:
“在第一类指令执行转移和中断/异常产生转移的共同中转MSU中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令。”
其余内容一致。
实施例3:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S3:
所述制作方法S3的特征为:在RISC-V体系下,MSU边界信息由页面标识值,和/或,边界地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:MSU边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在MSU边界信息以页面标识的方式记录,栈数据所在MSU边界信息,和/或,保险箱MSU边界信息,和/或,其它用途数据所在MSU边界信息以内存地址值方式记录。
安全装置的实施方式:
S-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息
在实施例1中S-A-A1所述内容基础上:
将:
CSR_CMSLSIDE、CSR_CMSHSIDE、CSR_UTMSLSIDE、CSR_UTMSHSIDE、CSR_STMSLSIDE、CSR_STMSHSIDE、CSR_SMSIRLADDR、CSR_SMSIRHADDR、CSR_UMSIRLADDR、CSR_UMSIRHADDR寄存器删除。
增设寄存器:CSR_SMSIRID(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断/异常产生后转移地址所在MSU的ID。
增设寄存器:CSR_UMSIRID(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断/异常产生后转移地址所在MSU的ID。
增加CSR_CMSATTR寄存器信息:
除0、1、2位外,其它位用来记录PC即程序计数器中地址值所属页面对应MSU的ID。
其余内容一致。
S-C-A2、识别与安全装置不相关寄存器的方式:
与实施例1中S-A-A2所述内容一致。
S-C-A3、访问不相关寄存器时增加访问控制的功能:
与实施例1中S-A-A3所述内容一致。
S-C-A4、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
S-C-A5、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
在实施例1中S-A-A4所述内容基础上:
将:
“只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,即检查当前程序计数器中数值是否处于处理器认定的当前MSU范围内,如果不超出范围,允许执行,否则报异常。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。”
替换为:
“只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,判断该指令地址值所在页面对应的MSU的ID,是否与增设寄存器中保存的当前MSU的ID不一致,如是,处理器报出异常,如不是,可正常取址。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC所处页面对应页表项对应数据结构中记录MSU的ID,与CSR_CMSATTR寄存器中记录的MSU的ID不一致,报异常,否则正常执行。”
其余内容一致。
S-C-A6、在安全装置中增加检查数据访问是否跨边界的功能
在实施例1中S-A-A5所述内容基础上:
将:
“只有在当前模式开启安全装置的情况下,对访问普通数据MSU的特定指令,进行边界检查,即检查数据访问内存地址是否处于普通数据MSU内,如果不超出范围,允许执行,否则报异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果数据访问内存地址值小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。”
替换为:
“只有在当前模式开启安全装置的情况下,对访问普通数据MSU的特定指令,进行边界检查,即检查当前待操作的地址所在页面对应的MSU的ID,是否与增设寄存器中保存的MSU的ID一致,如是,可执行;如不是,处理器报出异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:访问内存地址值所处页面对应页表项对应数据结构中记录的MSU的ID,与CSR_CMSATTR寄存器中记录的MSU的ID是否一致,一致,正常执行,否则,报异常。”
其余内容一致。
S-C-A7、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
与实施例1中S-A-A6所述内容一致。
S-C-A8、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
与实施例1中S-A-A7所述内容一致。
S-C-A9、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中边界寄存器的值,设置为中断中转MSU的ID值;转移至中断中转MSU的入口地址;其余操作与现有中断/异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,则,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_UMSIRID寄存器中保存的U模式下中断/异常产生后转移地址所在MSU的ID值,设置CSR_CMSATTR寄存器中MSU的ID值相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_SMSIRID寄存器中保存的S模式下中断/异常产生后转移地址所在MSU的ID信息,设置CSR_CMSATTR寄存器中MSU的ID相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址;
如果当前模式为S,且委托到的模式是S或U,则检查S模式是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_SMSIRID寄存器中保存的S模式下中断/异常产生后转移地址所在MSU的ID信息,设置CSR_CMSATTR寄存器中MSU的ID相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址。
S-C-A10、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
开启安全装置前提下,处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的前提下,如果当前模式为S,则用CSR_STMSATTR寄存器数值恢复CSR_CMSATTR寄存器的数值;如果当前模式为U,则用CSR_UTMSATTR寄存器数值恢复CSR_CMSATTR寄存器的数值。
S-C-A11、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法:
S-C-A11-1、为指令中转MSU制作MSU信息记录单元,包括:
与实施例1中S-A-A10-1所述内容一致.
S-C-A11-2、在指令中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
通过CSR_CMSATTR寄存器获取源MSU的ID,并将CSR_CMSATTR寄存器2位设置为1,表明当前MSU是能力不受限制的MSU,并用指令中转MSU的ID号设置其它位;之后先将ra寄存器中保存地址值减去一条指令长度,获取源MSU出口地址值,再通过rs寄存器获取目标MSU入口地址值(ra、rs寄存器与前述jalrmsu指令格式中ra、rs寄存器一致);之后在MSU控制对照表中找到源MSU对应的表项,再根据目标MSU入口地址值,在MSU控制对照表中找到目标MSU对应的表项,以此为基础完成后续检查工作和到目标MSU的转移工作:
·MSU描述符的生效/失效检查
与实施例1中S-A-A10-2的“MSU描述符的生效/失效检查”所述内容一致。
·MSU属性匹配检查
与实施例1中S-A-A10-2的“MSU属性匹配检查”一致。
·当出口为调用时,进行端口匹配检查的方式
与实施例1中S-A-A10-2的“当出口为调用时,进行端口匹配检查的方式”所述内容一致。
·当出口为返回时,进行端口匹配检查的方式
与实施例1中S-A-A10-2的“当出口为返回时,进行端口匹配检查的方式”所述内容一致。
·完成到目标MSU的调用工作
在实施例1中S-A-A10-2的“完成到目标MSU的调用工作”所述内容基础上,将步骤8、步骤9删除,其余内容一致。
·完成到目标MSU的返回工作
在实施例1中S-A-A10-2的“完成到目标MSU的返回工作”所述内容基础上,将步骤5、步骤6删除,其余内容一致。
S-C-A11-3、在中断中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
与实施例1中S-A-A10-3所述内容一致。
优选的:
·为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理:
与实施例1“为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理”所述内容一致。
·为实现对当前用户、当前角色的控制:
与实施例1“为实现对当前用户、当前角色的控制”所述内容一致。
·IO访问控制
与在实施例1“IO访问控制”所述内容一致。
S-C-A11-4、编译包含MSU的源程序,包括:
与实施例1中S-A-A10-4所述内容一致。
S-C-A11-5、运行时阶段对MSU信息的处理,包括:
在实施例1中S-A-A10-5所述内容基础上,添加功能:“加载页面时,把当前MSU的ID号记入页表项对应结构中”。
保障装置的实施方式:
S-C-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
与实施例1中S-A-A11所述内容一致。
S-C-A13、识别需要保障的寄存器的方式:
与实施例1中S-A-A12所述内容一致。
S-C-A14、访问专用寄存器时增加访问控制的功能:
与实施例1中S-A-A13所述内容一致。
S-C-A15、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
与实施例1中S-A-A14所述内容一致。
实施例4:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S4:
所述制作方法S4的特征为:在RISC-V体系下,MSU边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。二者可以转移至共同中转MSU的相同地址或不同地址,本制作方法优选转移到共同地址。特别的:MSU边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在MSU边界信息以页面标识的方式记录,栈数据所在MSU边界信息,和/或,保险箱MSU边界信息,和/或,其它用途数据所在MSU边界信息以内存地址值方式记录。
安全装置的实施方式:
S-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息
在实施例1中S-B-A1所述内容基础上:
将:
CSR_CMSLSIDE、CSR_CMSHSIDE、CSR_UTMSLSIDE、CSR_UTMSHSIDE、CSR_STMSLSIDE、CSR_STMSHSIDE、CSR_SMSCHLADDR、CSR_SMSCHHADDR、CSR_UMSCHLADDR、CSR_UMSCHHADDR寄存器删除。寄存器删除。
增设寄存器:CSR_SMSCHID(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常产生后转移地址所在页面所属共同中转MSU的ID信息。
增设寄存器:CSR_UMSCHID(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常产生后转移地址所在页面所属共同中转MSU的ID信息。
增加CSR_CMSATTR寄存器信息:
除0、1、2位外,其它位用来记录PC即程序计数器中地址值所在MSU的ID信息。
其余内容一致。
S-D-A2、识别与安全装置不相关寄存器的方式:
与实施例2中S-B-A2所述内容一致。
S-D-A3、访问不相关寄存器时增加访问控制的功能:
与实施例2中S-B-A3所述内容一致。
S-D-A4、增加页表项内容
与实施例3中S-C-A4所述内容一致。
S-D-A5、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
与实施例3中S-C-A5所述内容一致。
S-D-A6、在安全装置中增加检查数据访问是否跨边界的功能
与实施例3中S-C-A6所述内容一致。
S-D-A7、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息:
与实施例2中S-B-A6所述内容一致。
S-D-A8、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息:
与实施例2中S-B-A7所述内容一致。
S-D-A9、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转MSU的ID信息;转移至第一类指令转移和中断/异常转移共同的转移地址;其余操作与现有中断、异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后用CSR_UMSIRID寄存器中保存的U模式下第一类指令转移和中断/异常产生后转移地址所在共同中转MSU的ID信息,设置CSR_CMSATTR寄存器中MSU的ID信息相应的位,最后用CSR_UMSCHADDR寄存器中数值设置PC;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后用CSR_SMSIRID寄存器中保存的S模式下第一类指令转移和中断/异常产生后转移地址所在共同中转MSU的ID信息,设置CSR_CMSATTR寄存器中MSU的ID信息相应的位,最后用CSR_SMSCHADDR寄存器中数值设置PC;
如果当前模式为S,且委托到的模式是S或U,则检查S模式是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后用CSR_SMSIRID寄存器中保存的S模式下第一类指令转移和中断/异常产生后转移地址所在共同中转MSU的ID信息,设置CSR_CMSATTR寄存器中MSU的ID信息相应的位,最后用CSR_SMSCHADDR寄存器中数值设置PC。
S-D-A10、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
与实施例3中S-C-A10所述内容一致。
S-D-A11、在安全装置中增加中转MSU程序及提供生效方式:
S-D-A11-1、为指令中转MSU制作MSU信息记录单元,包括:
在实施例2中S-B-A10-1所述内容一致。
S-D-A11-2、在共同中转MSU中,对转移进行分类处理的控制逻辑,包括:
在实施例2中S-B-A10-2所述内容一致。
S-D-A11-3、在共同中转MSU中,生成第一类指令执行的MSU访问控制逻辑,包括:
在实施例3中S-C-A11-2所述内容基础上,将“指令中转MSU”替换为“共同中转MSU”,其余内容一致。
S-D-A11-4、在共同中转MSU中,生成中断/异常产生及中断返回的MSU访问控制逻辑,包括:
与在实施例3中S-C-A11-3所述内容一致。
优选的:
·为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理:
在实施例3“为保证当前MSU栈底地址值的正确,需对应的在软件中增加的处理”所述内容一致。
·为实现对当前用户、当前角色的控制:
在实施例3“为实现对当前用户、当前角色的控制”所述内容一致。
·IO访问控制
与在实施例3“IO访问控制”所述内容一致。
S-D-A11-5、编译包含MSU的源程序,包括:
在实施2中S-B-A10-5所述内容一致。
S-D-A11-6、运行时阶段对MSU信息的处理,包括:
在实施2中S-B-A10-6所述内容一致。
保障装置的实施方式:
S-D-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU:
与实施例2中S-B-A11所述内容一致。
S-D-A13、识别需要保障的寄存器的方式:
与实施例2中S-B-A12所述内容一致。
S-D-A14、访问专用寄存器时增加访问控制的功能:
与实施例2中S-B-A13所述内容一致。
S-D-A15、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件:
与实施例2中S-B-A14所述内容一致。
实施例5:
一种MSU的机制的实现方式:
针对现有技术不能在运行时对访问行为进行有效控制的缺陷,特别是无法对可能涉及超越授权的访问行为进行运行时控制的缺陷,本发明公开了一种运行时访问控制方法及其对应的计算装置。
为达到上述目的,本发明公开了一种内存系统装置,所述内存系统装置中的某个具体单元可以称作内存系统单元(Memory System Unit),所述内存系统单元称作MSU,所述内存系统装置是指特定访问控制的集合及其控制的访问区域。
除非特别指明,本发明中MSU这一缩写对应的就是内存系统单元(Memory SystemUnit)。
所述区域,包括:由一组边界包围而成的处理器可寻址存储空间,区域必须由访问控制集合认定,所述认定是指将区域的信息记录在MSU信息中。所述访问控制集合,包括:MSU信息,对区域进行访问的允许机制,和/或对区域进行访问的禁止机制。所述可寻址存储空间可以存放数据和/或指令。优选的,全部软件的数据、代码都按设计要求分别放入指定的MSU之中,即没有代码、数据放在MSU之外。
所述处理器是指中央处理器。
进一步,区域由同一个线性地址空间中的一个或多个连续存储区组成,每个连续存储区由两端的地址标识界定,所有前述的地址标识的集合构成区域的边界。对于由多个连续存储区组成的区域的优选方案是区域中的连续存储区之间互不相交。其中存储数据、代码的存储区分别被称作数据区、指令区。不同MSU的区域互不相交。
进一步的,所述MSU信息包括:MSU边界信息、MSU端口信息、MSU属性信息。作为一种可选的实现方式,可以设置空端口MSU,所述空端口MSU其MSU端口信息为空,仍具有MSU边界信息、MSU属性信息。
优选的,所述MSU信息进一步包括:MSU用户信息。
进一步的,所述允许机制包括:允许区域内的非转移指令、中断指令及目标地址在当前区域内(不超越当前区域)的转移指令执行,允许区域内的指令访问当前区域内的数据。进一步的,允许机制包括:允许区域间,不论是区域内到区域外或区域外到区域内,通过传参的方式传递数据;允许区域间通过共享物理内存的方式传递数据,优选的,传递大量的数据时采用共享物理内存的方式;对区域间,即超出或进入本区域,进行访问的允许机制,进一步包括:MSU间必须经过端口执行转移指令,并且属性信息、端口信息必须匹配。
所述禁止机制包括,禁止在区域中的数据区执行指令。除允许机制之外,对一切由区域内向区域外或由区域外向区域内的跨区域执行指令(包括非转移指令、转移指令及不匹配情形),跨区域操作访问数据都产生异常。
一个特例是共享数据MSU,其特征是只包含被其他MSU共享的数据,没有指令;允许其他MSU通过约定的指令操作数据。
在本发明的一种具体实现方式中,将内核栈和/或用户栈置于共享数据MSU中,栈所属的MSU必须为共享数据MSU,其他MSU通过约定的指令操作栈中的数据。
所述MSU边界信息包括:由访问控制集合认定的区域中,所有连续存储区的边界信息构成的集合。存储上述信息的数据结构简称边界数据,所述边界数据的地址被关联到内存系统装置中并为其可识别。当需要查找区域的边界时,所述装置可以根据边界数据的地址找到数据结构,即可获得所有的边界信息。
所述MSU端口信息包括入口和/或出口。在访问控制集合认定的区域范围内的指令地址区域中指定有限个指令地址为入口或出口,其中每一个指令地址为一个入口或出口。可选的入口为:区域中MSU间转移指令的目标地址;可选的出口为:MSU间转移指令的所在地址。
所述MSU属性信息包括:MSU标识信息,MSU类型信息。所述MSU标识信息是指区别于其它MSU的唯一标识。所述MSU的类型信息可以是普通MSU、共享数据MSU中的一种。
优选的,所述MSU属性信息还可包括:MSU所属用户类型信息,MSU所属用户标识信息。所述MSU所属用户类型信息是指这个MSU所属用户的类型,在一些应用场景中,用户类型即为用户角色,所述MSU所属用户标识信息是指MSU所属用户的唯一标识。
优选的,所述MSU属性信息开可以包括:MSU生效/失效信息、。所述MSU生效/失效信息是指这个MSU中程序是否允许执行,生效为允许执行,失效位禁止执行;
优选的,可以将前述的边界信息和/或属性信息和/或MSU端口信息合成为一个更方便使用的、完整的数据结构。
所述MSU端口信息匹配、所述MSU属性信息匹配是指:在程序初始化阶段,将转移指令执行所需MSU的出口、入口、边界、标识信息、类型信息记录在MSU描述符表中,在程序运行时,将转移指令包含的信息,分别与MSU描述符表中的端口信息、属性信息做对比,如果结果匹配,视为合法,允许转移指令执行,反之,视为非法,报异常。
优选的:对于MSU出口,还要记录其具体性质,包括是调用或返回或中断返回,根据具体性质执行不同的处理规则。
进一步的,在MSU类型信息中增加一种检查MSU。类型信息被标记为“检查MSU”的MSU被视为检查MSU。当所述装置包含检查MSU时,不允许非检查MSU直接调用另外一个非检查MSU,必须由源MSU先调用检查MSU,再由检查MSU调用目标MSU;目标MSU返回时,先返回到检查MSU,再由检查MSU返回到源MSU。所述非检查MSU指除了检查MSU外的任何其它类型的MSU。
进一步的,在MSU类型信息中增加一种终端MSU。类型信息标记为“终端MSU”的MSU只可被其它MSU调用,不可调用其它MSU。
进一步的,在MSU类型信息中增加一种空端口MSU。类型信息被标记为“空端口MSU”的MSU没有端口,其它MSU可以通过端口调用任意空端口MSU的函数,但不可直接访问空端口MSU的数据。空端口MSU调用其它MSU必须通过其端口进入该MSU。不同的空端口MSU之间可以任意进行函数调用,但不可访问数据。当终端MSU存在时,空端口MSU不可调用终端MSU。
进一步的,在MSU类型信息中增加一种保险箱MSU。此类MSU不允许包含指令区。只有某些需要保存状态信息的操作,才可访问该MSU。优选的,所述状态信息可以是返回地址、中断现场等。
进一步的,在MSU类型信息中增加一种IO指令MSU。当所述装置包含IO指令MSU时,仅允许这类MSU内执行IO操作相关的特殊指令。此类MSU的属性匹配检查规则与终端MSU相同。
在装置中,可不支持检查MSU、终端MSU、空端口MSU、保险箱MSU、IO指令MSU的实现,也可支持其中的一种或几种。
一种内存系统装置的制作方式及基于该制作方式的访问控制方法:
所述内存系统装置的制作,包括:制作MSU信息记录单元和MSU安全装置单元。所述信息记录单元是指在内存系统装置中记录和识别MSU信息;所述访问控制单元是指根据具体的运行时信息和信息记录单元中的MSU信息,依据所述允许机制和所述禁止机制对区域的访问进行控制。
所述内存系统装置信息包括MSU区域信息、MSU属性信息、MSU端口信息、MSU用户信息;
所述允许机制包括:允许MSU之间通过符合匹配规范的端口转移;允许其它MSU通过特定指令访问共享数据MSU的数据;
所述禁止机制包括:禁止所有不经过端口直接跨越边界的指令,禁止MSU之间虽然通过端口但不符合匹配规范的相互访问,禁止MSU访问除自身和共享MSU之外的其他MSU的数据;
所述对MSU的访问进行控制包括:符合允许机制的的,通过;属于禁止机制的,报异常。
所述基于该内存系统装置制作方式的访问控制应用方式,包括:增加语法规则和/或利用已有语法规则和/或利用配置信息,编写符合MSU规则的源代码,在编译、链接的过程中提取、记录MSU信息,将MSU访问动作生成为对应的指令,按照内存系统装置的特征分配页面布局及确定编址方式,按照内存系统装置的要求生成可执行程序,加载该程序时,将MSU信息载入上述内存系统装置中的信息记录单元,并执行该程序。其中提取、记录的MSU信息的具体格式依赖于内存系统装置的信息记录单元特性。
在本发明的一种具体实现方式中,所述内存系统装置的通用制作方法,包括:
A1、内存系统装置的制作,具体包括:
A1-1、制作MSU信息记录单元,进一步包括:
将前述MSU信息保存为MSU控制对照表。使内存系统装置可找到所述MSU控制对照表。
保存当前MSU标识信息,使内存系统装置可获知当前MSU。
优选的,记录当前MSU可访问的栈底位置。优选的,所述当前MSU的栈底位置为:整个栈区的栈底位置值,或调用它的MSU在传参之前的栈顶位置。
A1-2、制作MSU安全装置单元,进一步包括:
所述安全装置单元依据MSU的访问控制规则生成;
作为一种具体的实现方式,所述访问控制规则包括:
对于MSU访问控制:非转移指令的下一条指令地址、以及MSU内转移指令的目标地址、数据访问指令的目标地址,只要不超过MSU边界,一律允许执行,否则报异常;
MSU间区域的调用指令的目标必须是入口;进一步的,MSU间的调用及返回指令所在位置必须是出口;进一步的,出口和入口的对应关系必须事先指定,MSU间调用时需符合预设的对应关系;
特例是,当目标为空端口MSU时,不需对入口进行匹配;当主调方为空端口MSU时,不需对出口进行匹配;
MSU中的指令可以访问本MSU中的数据,其中,特定指令可访问共享数据MSU的数据;
进一步的,在栈区中,为每个MSU划分只属于自己的空间,具体是指:本MSU的栈底位置至整个栈空间的栈顶位置,所述本MSU的栈底位置为:调用它的MSU在传参之前的栈顶位置或整个栈区的栈底位置值;
进一步的,不允许某个MSU访问其它MSU的栈空间。
图1表示了在运行过程中,随着MSU的调用,栈中可被当前MSU访问的区域也在发生变化:
系统最初始时,设当前MSU为A,A可访问整个栈区间;A调用了MSU B,A在给B传实参之前标记了栈顶位置,执行到B时,B的可访问栈区间为标记的位置到整个栈区间的栈顶方向边界;B又调用了MSU C,同样才传实参之前标记当前栈顶位置,C的可访问栈区间为刚才标记的位置到整个栈区间的栈顶方向边界;当C返回到B时,B可访问的栈区间与未调用C时相同。
MSU间的访问控制规则为:
除共享数据MSU之外:
MSU之间通过MSU间的跳转指令完成调用和返回;
当存在检查MSU时,其余MSU之间一律不允许直接调用、返回,需通过检查MSU之间完成调用、返回,即先由源MSU调用检查MSU,再由检查MSU调用目标MSU,目标MSU工作完成后,由目标MSU返回到检查MSU,再由检查MSU返回到源MSU;
当存在终端MSU时或IO MSU时,终端MSU及IO MSU均不允许调用其它任何类型的MSU;
当存在“普通中转专用MSU”时,不允许在MSU间跳转指令中显示跳转到普通中转专用MSU;
当存在“中断中转专用MSU”时,不允许在MSU间跳转指令中显示跳转到中断中转专用MSU,其执行操作由中断、异常自动触发;
当存在中转专用MSU时,不允许在MSU间跳转指令中显示跳转到中转专用MSU;
当存在中断MSU时,不允许在MSU间跳转指令中显示跳转到中转专用MSU,其执行操作由中断、异常自动触发;
对于只包括属性为普通MSU的访问控制规则是:仅允许普通MSU间调用、返回;
对于只包括属性为普通MSU、检查MSU的访问控制规则:仅允许普通MSU与检查MSU间调用、返回;
对于只包括属性为普通MSU、终端MSU的访问控制规则:仅允许:普通MSU间调用、返回;普通MSU到终端MSU调用;终端MSU到普通MSU返回;
对于只包括属性为普通MSU、检查MSU、终端MSU的访问控制规则:仅允许:普通MSU与检查MSU间调用、返回;检查MSU到终端MSU调用;终端MSU到检查MSU返回;
对于只包括属性为普通MSU、空端口MSU的访问控制规则:仅允许:普通MSU间调用、返回;空端口MSU间调用、返回;普通MSU与空端口MSU间调用、返回;
对于只包括属性为普通MSU、检查MSU、空端口MSU的访问控制规则:仅允许:普通MSU与检查MSU间调用、返回;空端口MSU与检查MSU间调用、返回;
对于只包括属性为普通MSU、终端MSU、空端口MSU的访问控制规则:仅允许:普通MSU间调用、返回;空端口MSU间调用、返回;普通MSU与空端口间调用、返回;普通MSU到终端MSU调用;终端MSU到普通MSU返回;
对于只包括属性为普通MSU、检查MSU、终端MSU、空端口MSU的访问控制规则:仅允许:普通MSU与检查MSU间调用、返回;空端口MSU与检查MSU间调用、返回;检查MSU到终端MSU调用;终端MSU到检查MSU返回;
IO指令MSU的调用、返回访问控制规则与终端MSU相同。
A2、运行时阶段对MSU信息的比对
用指令中携带的信息和数据结构中记载的MSU信息作对比,如果比对结果符合MSU访问规则,则放行,否则拦截。
基于该内存系统装置制作方式的访问控制方法,包括:
B1、编译包含MSU的源程序,具体包括:
B1-1、提取MSU信息,具体包括:
通过新语法规则或已有语法规则或配置信息的支持,使编程阶段能够完整准确的表达并保留程序设计中的MSU信息,进一步包括:
通过新语法规则或已有语法规则或配置信息,指定函数、数据所属的MSU;MSU的类型和标识;函数中哪些是MSU内部函数,哪些是端口函数,以及哪些端口函数间存在着调用、返回关系;
编译器把提取的信息以语法树的形式记载下来;
根据语法树的信息,确立程序的内存布局,对指令和数据进行编址,并提取边界信息、端口信息的地址;
根据语法树的信息,提取属性信息、MSU的ID号;
编译器将MSU信息保存为符合内存系统装置中的MSU控制对照表的结构。
B1-2、限定MSU语法访问规则:
编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序。
所述MSU访问规则,包括:
在MSU内部,函数之间可以互相调用、可以访问属于本MSU的全局数据;在MSU之间,仅允许MSU的函数调用其它MSU的端口函数;不允许通过函数指针的方式进行调用;进一步的,仅允许MSU的端口函数调用其它MSU的端口函数;进一步的,仅允许IO指令MSU使用特定的IO指令,例如INTEL体系下的in、out指令;MSU的代码不可访问除共享数据MSU外的其它MSU的数据;一个特例是,允许其他类型的MSU调用空端口MSU的任意函数。
进一步的,可以对不同属性的MSU,对MSU间调用、返回的语法规则进一步限定,具体包括:
除共享数据MSU之外:
对于只包括属性为普通MSU的语法规则是:仅允许普通MSU间调用、返回;
对于只包括属性为普通MSU、检查MSU的语法规则:仅允许普通MSU与检查MSU间调用、返回;
对于只包括属性为普通MSU、终端MSU的语法规则:仅允许:普通MSU间调用、返回;普通MSU调用终端MSU;终端MSU返回到普通MSU;
对于只包括属性为普通MSU、检查MSU、终端MSU的语法规则:仅允许:普通MSU与检查MSU间调用、返回;检查MSU调用终端MSU;终端MSU返回到检查MSU;
对于只包括属性为普通MSU、空端口MSU的语法规则:仅允许:普通MSU间调用、返回;空端口MSU间调用、返回;普通MSU与空端口MSU间调用、返回;
对于只包括属性为普通MSU、检查MSU、空端口MSU的语法规则:仅允许:普通MSU与检查MSU间调用、返回;空端口MSU与检查MSU间调用、返回;
对于只包括属性为普通MSU、终端MSU、空端口MSU的语法规则:仅允许:普通MSU间调用、返回;空端口MSU间调用、返回;普通MSU与空端口间调用、返回;普通MSU调用终端MSU;终端MSU返回到普通MSU;
对于只包括属性为普通MSU、检查MSU、终端MSU、空端口MSU的语法规则:仅允许:普通MSU与检查MSU间调用、返回;空端口MSU与检查MSU间调用、返回;检查MSU调用终端MSU;终端MSU返回到检查MSU;
IO指令MSU的调用、返回规则与终端MSU相同。
B1-3、生成与MSU访问相关的指令,具体包括:
将MSU的访问信息,保存成处理器可识别的指令。
B2、运行时阶段对MSU信息的处理
从可执行程序中约定的位置读取MSU控制对照表,并加载到内存中;
将只有在运行时才能确认的信息(如栈区边界信息,堆区边界信息,用户信息等)提取出来,并保存在MSU控制对照表中;
加载进程时,为每个特权级建立一个栈,将该特权级的栈的区域,设置为该共享数据MSU的区域,以实现不同的MSU都可以访问栈中的数据;
当MSU信息在运行时发生变化或添加新的MSU时,在MSU控制对照表中修改相应信息。

Claims (46)

1.一种装置,其特征在于:
包括安全装置,和/或,保障装置;
所述安全装置基于硬件针对MSU进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令。
2.根据权利要求1所述的装置,其特征在于:所述安全装置,包括:拦截非法跨越MSU边界的访问;提供合法跨越MSU边界的方式;和/或,限制MSU中指令访问存储设施的能力,和/或,限制MSU执行特定指令的能力;
所述MSU边界是指:处理器认定的由内存地址值所构成的MSU边界,和/或,处理器认定的由页面标识信息所标定的MSU边界。
3.根据权利要求2所述的装置,其特征在于:所述拦截非法跨越MSU边界的访问,包括:如果待执行的指令所在地址超出处理器认定的MSU边界,处理器报异常;如果数据读写目标的地址超出读写指令匹配的MSU边界,处理器报异常。
4.根据权利要求2所述的装置,其特征在于:所述提供合法跨越MSU边界的方式,包括:执行专用的跨MSU转移指令或发生中断/异常时,必须先转移至中转MSU,由中转MSU中程序检查跨MSU转移的合法性,如非法,进入异常处理流程,如合法,再由此MSU中代码进行边界切换并转移至最终的目标;特别的,如果二者转移到相同中转MSU的共同代码位置,由硬件提供标识信息,以区别转移是由执行跨MSU转移指令引起还是由产生中断/异常引起;中断返回也会导致跨MSU转移。
5.根据权利要求2所述的装置,其特征在于:所述限制MSU中指令访问存储设施的能力,包括:对现有部分存储设施的访问权限做限制,只允许特定MSU中指令才能访问被限制访问权限的存储设施,特别的,对于没有做访问权限限制的存储设施,任何MSU中指令都可以访问。
6.根据权利要求2所述的装置,其特征在于:所述限制MSU执行特定指令的能力,包括:对现有部分指令的执行权限做限制,只允许特定MSU才能执行被限制执行权限的指令,对于没有做执行权限限制的指令,在任何MSU中都可以执行。
7.根据权利要求1所述的装置,其特征在于:所述保障装置,包括:仅在中转MSU中,和/或,跨MSU转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,和/或,设定存储设施的访问权限,和/或,设定指令执行权限;仅有跨MSU转移指令执行,和/或,中断/异常产生,和/或,中断返回导致跨MSU转移。
8.根据权利要求1所述的装置,其特征在于:在装置中设置安全功能,和/或,保障功能的开关,如关闭该开关,则装置失效。
9.一种安全装置的制作方法,包括:制作MSU边界检查装置和提供合法跨越MSU边界的方法,和/或,提供限制MSU中指令访问存储设施能力的方法,和/或,提供限制MSU执行特定指令能力的方法,和/或,跨越MSU合法性检查程序的生成方法以及生效方法。
10.根据权利要求9所述的方法,其特征在于:所述制作MSU边界检查装置的方法包括:制作指令边界检查装置的方法和制作数据边界检查装置的方法。
11.根据权利要求10所述的方法,其特征在于:所述制作指令边界检查装置的方法包括:由处理器认定当前MSU边界范围,并判断待执行指令所在地址是否在所述范围之内,如在,可正常取址,如不在,处理器报出异常。
12.根据权利要求11所述的方法,其特征在于:所述由处理器认定当前MSU边界范围,并判断待执行指令所在地址是否在所述范围之内,可采用:
处理器设置专用存储设施保存当前MSU边界地址值,在执行指令时,判断处理器的程序计数器的地址值是否在当前MSU边界地址值范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;
或;
在内存页面的属性中添加标识信息,记录页面所属MSU的页面标识信息,在执行指令时,判断处理器中程序计数器存储的地址值所在的页面所属MSU的页面标识信息,是否与当前MSU页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围。
13.根据权利要求12所述的方法,其特征在于:所述制作数据边界检查装置的方法包括:由处理器认定若干组数据存储MSU边界,针对每组MSU设置与之匹配的读写指令,在对数据进行读写时,根据不同的读写指令判断操作地址是否在与之匹配MSU边界中,如在,可正常访问,如不在,则报出异常。设置多组MSU的目的是为了区分指令,和/或,数据所在MSU、栈数据所在MSU、保险箱MSU、以及用作其他用途的独立MSU。
14.根据权利要求13所述的方法,其特征在于:所述处理器判断数据读写指令操作的目标地址是否在与之匹配的MSU边界内,可采用:
处理器设置若干组专用存储设施保存不同类型MSU边界地址值,在执行读写指令时,判断指令操作的目标地址是否在与指令匹配的MSU边界范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;
或;
在内存页面的属性中添加标识信息,记录页面所属MSU的页面标识信息,在执行读写指令时,判断指令操作的目标地址所在的页面所属MSU的标识信息,是否与指令所匹配的MSU的页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围。
15.根据权利要求9所述的方法,其特征在于:在安全装置设置开关,在所述开关处在关状态时,不进行指令边界检查和数据边界检查。
16.根据权利要求9所述的方法,其特征在于:所述提供合法跨越MSU边界的方法包括:提供专用的跨MSU转移指令,执行此类指令时,转移至中转MSU;提供专用转移指令,执行此类指令时,完成由中转MSU到目标MSU的转移;在中断/异常发生时,通过处理器硬件机制转移至中转MSU;在中断返回时,通过中断指令执行从中转MSU返回中断现场,恢复现场信息。
17.根据权利要求16所述的方法,其特征在于:提供专用的跨MSU转移指令,执行此类指令时,转移至中转MSU;提供专用转移指令,执行此类指令时,完成由中转MSU到目标MSU的转移;进一步包括:
所述跨MSU转移指令,简称第一类指令,此类指令执行时转移到中转MSU入口位置,指令同时将当前MSU边界切换为中转MSU边界,和/或,同时也将当前可访问的数据MSU边界切换为中转MSU中代码可访问的数据MSU边界,如果不在第一类指令中对当前MSU边界进行切换,处理器需在第一类指令执行后忽略指令边界检查,优选的,中转MSU入口位置可以通过默认的固定存储设施来存储,不必出现在第一类指令中;转移目标地址可以通过第一类指令的操作数指定,也可以通过特定的专用寄存器来指定;
所述专用转移指令,简称第二类指令,此类指令用于从中转MSU转移到指定地址;和/或,指令同时将当前MSU边界切换为目标地址所属MSU边界,和/或,同时也将中转MSU可访问的数据MSU边界切换为目标MSU中代码可访问的数据MSU边界;优选的,第二类指令的目标地址应为第一类指令指定的转移目标地址,二者协同完成MSU间的转移,优选的,如果第一类指令执行会导致处理器不进行指令边界检查,那么第二类指令则应指定是否恢复指令边界检查,优选的,转移目标地址可以通过第二类指令操作数指定,也可以通过特定的专用寄存器来指定。
18.根据权利要求16所述的方法,其特征在于:如果安全装置包含开关,则开关处于关状态时,不能够执行第一类指令、第二类指令,执行会报出异常。
19.根据权利要求16所述的方法,其特征在于:
在中断、异常发生时,由处理器进行MSU间的转移,进一步包括:在产生中断/异常后,先保存中断现场的确保安全装置有效所需信息,然后将当前MSU边界设置为中转MSU边界,和/或,同时也将当前MSU可访问的数据MSU边界切换为中转MSU代码可访问的数据MSU边界,并转移至指定的指令位置,优选的,如果不在中断/异常产生时对当前MSU边界进行切换,处理器需在中转MSU中忽略指令边界检查。
20.根据权利要求19所述的方法,其特征在于:所述中断/异常的指定转移位置可以是与第一类指令的转移到相同的中转MSU,可选的,转移到同一地址,那么处理器需提供信息标识当前是由哪种触发方式导致执行到指定转移位置;另一种可选方式为:为中断/异常单独设置一个中转MSU,那么这个中转MSU的入口地址应被记入特定存储设施中。
21.根据权利要求19所述的方法,其特征在于:所述在中断返回时,中断指令执行回到中断现场,进一步包括:恢复中断现场的确保安全装置有效所需信息,这个信息在发生中断时被记录在特定存储设施中。
22.根据权利要求21所述的方法,其特征在于:如果安全装置包含开关设置,仅在安全功能开启时执行以上关于中断、异常、中断返回的操作。
23.根据权利要求9所述的方法,其特征在于:
所述提供限制MSU中指令访问存储设施能力的方法包括:对需要限制访问权限的存储设施设置特定标识,并通过硬件保证,只有访问存储设施能力不受限制的MSU中指令,才能访问被限制了访问权限的存储设施,访问存储设施能力受限制的MSU中指令,不能访问此类存储设施,特别的,对于不需要限制访问权限的存储设施,任何MSU中指令都可以访问。
24.根据权利要求9所述的方法,其特征在于:
所述提供限制MSU执行特定指令能力的方法包括:对需要限制执行权限的指令设置特定标识,并通过硬件保证,只有指令执行能力不受限制的MSU,才能能执行被限制了执行权限的指令,指令执行能力受限制的MSU,不能执行此类指令,特别的,对于不需要限制执行权限的指令,任何MSU中都可以执行。
25.根据权利要求9所述的方法,其特征在于:
所述跨越MSU合法性检查程序的生成方法以及生效方法包括:
制作MSU信息记录单元;生成MSU访问控制逻辑;编译包含MSU的源程序;运行时阶段对MSU信息的处理。
26.根据权利要求25所述的方法,其特征在于:
所述制作MSU信息记录单元,包括:
建立控制对照表,具体信息包含:MSU边界信息、MSU属性信息、端口信息、生效/失效、MSU的ID号,MSU访问访问寄存器及执行指令的能力限定信息,优选的,还包括MSU所属用户类型信息,MSU所属用户标识信息,将控制对照表设置于中转MSU数据区域中。
27.根据权利要求25所述的方法,其特征在于:所述生成MSU访问控制逻辑,包括:第一类指令执行的访问控制逻辑,和/或,中断/异常产生及中断返回的访问控制逻辑。
28.根据权利要求27所述的方法,其特征在于:所述第一类指令执行的访问控制逻辑,进一步包括:
通过控制对照表确认源MSU和目标MSU的表项;进行MSU生效/失效检查、端口匹配检查;检查不通过,进入异常处理流程,如通过,执行第二类指令转移到目标MSU;优选的,进入中转MSU后,设定中转MSU边界及中转MSU可访问数据MSU边界;优选的,设定目标MSU边界及目标MSU可访问数据MSU边界,之后第二类指令执行转移到目标MSU。
29.根据权利要求27所述的方法,其特征在于:所述中断/异常产生及中断返回的访问控制逻辑,进一步包括:保存确保安全装置有效所需的中断现场信息,设置中转MSU边界为当前MSU边界,及设置中转MSU可访问数据MSU边界为当前MSU可访问数据MSU边界;通过执行中断返回指令实现中断返回;中断返回前,恢复确保安全装置有效所需的中断现场信息,之后执行中断返回指令。
30.根据权利要求25所述的方法,其特征在于:所述编译包含MSU的源程序,进一步包括:提取MSU信息;限定MSU语法访问规则;生成与MSU访问相关的指令。
31.根据权利要求30所述的方法,其特征在于:所述提取MSU信息,进一步包括:通过程序,和/或,配置信息,完整准确保留MSU信息;同一程序中的MSU在同一线性地址空间内进行编址;指定不同种类数据访问标识信息,以生成针对不同数据MSU进行访问的不同指令。
32.根据权利要求30所述的方法,其特征在于:限定MSU语法访问规则,进一步包括:编译器分析语法树中记载的信息,对不符合MSU访问规则的代码不予生成可执行程序,如符合,进入后续的生成汇编代码、链接的流程。
33.根据权利要求30所述的方法,其特征在于:所述运行时阶段对MSU信息的处理,包括:开启安全装置及加载内核程序实现方式;安全装置开启前提下加载应用程序的实现方式。
34.根据权利要求33所述的方法,其特征在于:所述开启安全装置及加载内核程序实现方式,包括:内核程序要以MSU方式编译链接生成,在安全装置生效前,由特定程序初始化安全装置所需信息,数值为约定数值,并把内核程序载入,之后开启安全装置,内核程序就可以在安全装置保护下执行了。
35.根据权利要求33所述的方法,其特征在于:安全装置开启前提下加载应用程序的实现方式,包括:应用程序要以MSU方式编译链接生成,加载时,由内核为其设定MSU边界,并在可执行文件中与内核约定中转MSU程序位置,内核从中获取MSU信息,初始化确保安全装置有效所需信息,以支持程序执行。程序执行时如需引入新MSU,则应向内核提出请求,由内核为其增设表项。
36.一种保障装置的制作方法,其特征在于:将确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,保存在专用存储设施中;设置专用存储设施标记各个专用存储设施的访问状态;处理器根据访问状态信息确保,只有在中转MSU中,和/或,跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问这些存储设置;第二类指令仅可在第一类指令转移到的中转区域中执行。
37.根据权利要求36所述的方法,其特征在于:所述确保安全装置有效所需的信息包括:MSU的边界信息;栈数据所在MSU的边界信息;其它种类数据所在MSU边界信息;保险箱MSU的边界信息;MSU间转移指令所需中转代码的首地址;转移指令所需中转MSU的边界信息;中断/异常所需中转代码的首地址;中断/异常服务程序所需中转MSU的边界信息;中断/异常产生现场MSU边界信息;安全装置开启/关闭标识信息;限制MSU中指令访问存储设置能力的标识信息;限制MSU执行特定指令的能力的标识信息;优选的,当前MSU所属用户标识信息;当前MSU所属用户类型标识信息;优选的,转移指令和中断/异常的中转区域可以相同,所需中转代码的首地址也可以相同。
38.根据权利要求36所述的方法,其特征在于:所述所需中转代码的首地址是指当执行第一类指令转移指令或发生中断/异常时,必须转移到的位置。
39.根据权利要求36所述的方法,其特征在于:所述中转MSU是指:当执行第一类指令转移指令或发生中断/异常时,转移地址所在MSU,转移地址被记录在装置中,特别的:中转MSU中的指令执行时不进行指令边界检查。
40.根据权利要求36所述的方法,其特征在于:所述保障装置所需的状态数据包括:是否处于转移指令所需的中转MSU;是否处于中断/异常所需的中转MSU。
41.一种安全装置,和/或,以及与之匹配的保障装置的制作方法,其特征在于:
MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录确保安全装置有效所需信息和确保保障装置有效所需的状态数据;
所述安全装置的制作方法包括:
M-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息;
M-A-A2、识别与安全装置不相关寄存器的方式;
M-A-A3、访问安全装置不相关寄存器时增加访问控制的功能;
M-A-A3-a、限制MSU执行权限受限指令的功能;
M-A-A4、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能;
M-A-A5、在安全装置中增加检查数据访问是否跨MSU边界的功能;
M-A-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息;
M-A-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息;
M-A-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-A-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
M-A-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法;
所述保障装置的制作方法包括:
M-A-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU;
M-A-A12、识别需要保障的寄存器的方式;
M-A-A13、访问专用寄存器时增加访问控制的功能;
M-A-A14、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件。
42.一种安全装置,和/或,以及与之匹配的保障装置的制作方法,其特征在于:
MSU边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。二者可以转移至共同中转MSU的相同地址或不同地址,本制作方法优选转移到共同地址;
所述安全装置的制作方法,包括:
M-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息;
M-B-A2、识别与安全装置不相关寄存器的方式;
M-B-A3、访问安全装置不相关寄存器时增加访问控制的功能;
M-B-A3-a、限制MSU执行权限受限指令的功能;
M-B-A4、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能;
M-B-A5、在安全装置中增加检查数据访问是否跨MSU边界的功能;
M-B-A6、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息;
M-B-A7、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息;
M-B-A8、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-B-A9、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
M-B-A10、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法;
所述保障装置的制作方法,包括:
M-B-A11、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU;
M-B-A12、识别需要保障的寄存器的方式;
M-B-A13、访问专用寄存器时增加访问控制的功能;
M-B-A14、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件。
43.一种安全装置,和/或,以及与之匹配的保障装置的制作方法,其特征在于:
MSU边界信息由页面标识值,和/或,边界地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转MSU,为不同的中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据;
所述安全装置的制作方法,包括:
M-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息;
M-C-A2、识别与安全装置不相关寄存器的方式;
M-C-A3、访问安全装置不相关寄存器时增加访问控制的功能;
M-C-A3-a、限制MSU执行权限受限指令的功能;
M-C-A4、增加页表项内容;
M-C-A5、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能;
M-C-A6、在安全装置中增加检查数据访问是否跨MSU边界的功能;
M-C-A7、在安全装置中增加第一类指令,发起跨MSU的转移动作及设置确保安全装置有效所需信息;
M-C-A8、在安全装置中增加第二类指令,完成到目标MSU的转移及设置确保安全装置有效所需信息;
M-C-A9、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-C-A10、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
M-C-A11、在安全装置中增加跨越MSU合法性检查程序的生成方法以及生效方法;
所述保障装置的制作方法,包括:
M-C-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU;
M-C-A13、识别需要保障的寄存器的方式;
M-C-A14、访问专用寄存器时增加访问控制的功能;
M-C-A15、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件。
44.一种安全装置,和/或,以及与之匹配的保障装置的制作方法,其特征在于:
MSU边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至共同中转MSU,为共同中转MSU设计不同的处理逻辑及生效方式,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,二者可以转移至共同中转MSU的相同地址或不同地址;
所述安全装置的制作方法,包括:
M-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类MSU边界信息、中断现场信息、跨MSU所需特定地址信息、安全装置开启/关闭标识信息、限制MSU访问寄存器能力,和/或,执行指令能力标识信息;
M-D-A2、识别与安全装置不相关寄存器的方式;
M-D-A3、访问安全装置不相关寄存器时增加访问控制的功能;
M-D-A3-a、限制MSU执行权限受限指令的功能;
M-D-A4、增加页表项内容;
M-D-A5、在安全装置中增加检查待执行的指令的地址是否跨MSU边界的功能;
M-D-A6、在安全装置中增加检查数据访问是否跨MSU边界的功能;
M-D-A7、在安全装置中增加第一类指令;
M-D-A8、在安全装置中增加第二类指令;
M-D-A9、在安全装置中增加中断/异常产生时的功能;
M-D-A10、在安全装置中增加中断返回时的功能;
M-D-A11、在安全装置中增加中转MSU程序及提供生效方式;
所述保障装置的制作方法,包括:
M-D-A12、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转MSU;
M-D-A13、识别需要保障的寄存器的方式;
M-D-A14、访问专用寄存器时增加访问控制的功能;
M-D-A15、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨MSU转移执行和专用寄存器访问指令的条件。
45.一种访问控制机制,其特征在于:使用权利要求1-44之一的装置或方法。
46.一种安全操作系统,其特征在于:使用权利要求1-44之一装置或方法。
CN201910278180.2A 2019-04-09 2019-04-09 一种运行时访问控制方法及计算装置 Active CN110162965B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910278180.2A CN110162965B (zh) 2019-04-09 2019-04-09 一种运行时访问控制方法及计算装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910278180.2A CN110162965B (zh) 2019-04-09 2019-04-09 一种运行时访问控制方法及计算装置

Publications (2)

Publication Number Publication Date
CN110162965A true CN110162965A (zh) 2019-08-23
CN110162965B CN110162965B (zh) 2021-10-01

Family

ID=67638515

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910278180.2A Active CN110162965B (zh) 2019-04-09 2019-04-09 一种运行时访问控制方法及计算装置

Country Status (1)

Country Link
CN (1) CN110162965B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114237708A (zh) * 2021-09-23 2022-03-25 武汉深之度科技有限公司 一种多处理器的指令执行方法、计算设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186959A1 (en) * 2003-03-20 2004-09-23 Takuji Kawamoto Data memory cache unit and data memory cache system
CN1564130A (zh) * 2004-04-06 2005-01-12 中兴通讯股份有限公司 一种判别嵌入式系统内存大小的方法
CN104169891A (zh) * 2013-10-29 2014-11-26 华为技术有限公司 一种访问内存的方法及设备
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式系统内存安全访问控制的技术实现方法
CN108460287A (zh) * 2018-03-21 2018-08-28 南通大学 内存保护单元中用户控制区域的划分方法及内存保护系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040186959A1 (en) * 2003-03-20 2004-09-23 Takuji Kawamoto Data memory cache unit and data memory cache system
CN1564130A (zh) * 2004-04-06 2005-01-12 中兴通讯股份有限公司 一种判别嵌入式系统内存大小的方法
CN104169891A (zh) * 2013-10-29 2014-11-26 华为技术有限公司 一种访问内存的方法及设备
CN105787360A (zh) * 2016-03-02 2016-07-20 杭州字节信息技术有限公司 一种嵌入式系统内存安全访问控制的技术实现方法
CN108460287A (zh) * 2018-03-21 2018-08-28 南通大学 内存保护单元中用户控制区域的划分方法及内存保护系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
NOVOTNY R等: "NAND Flash Memory Organization and Operations", 《网页在线公开:HTTPS://WWW.LONGDOM.ORG/OPEN-ACCESS/NAND-FLASH-MEMORY-ORGANIZATION-AND-OPERATIONS-2165-7866-1000139.PDF》 *
胡丽辉等: "带内存保护的FreeRTOS在TMS570上的移植", 《单片机与嵌入式系统应用》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114237708A (zh) * 2021-09-23 2022-03-25 武汉深之度科技有限公司 一种多处理器的指令执行方法、计算设备及存储介质

Also Published As

Publication number Publication date
CN110162965B (zh) 2021-10-01

Similar Documents

Publication Publication Date Title
CN101351774B (zh) 将存储页面与程序相关联的页面着色的方法、装置和系统
CN100524224C (zh) 用于在安全模式和非安全模式间切换处理器的装置和方法
CN101281506B (zh) 数据处理系统内基于存储器域的安全控制
CN109558211A (zh) 保护可信应用与普通应用的交互完整性和保密性的方法
CN100353278C (zh) 用于类型安全语言环境的方法、处理器和系统
CN100428165C (zh) 用于控制子上下文之间的存储器访问的装置、系统和方法
CN107667350A (zh) 基于虚拟化的平台保护技术
CN110598405B (zh) 一种运行时访问控制方法及计算装置
CN109643290A (zh) 用于具用扩展分段的面向对象的存储器管理的技术
CN103080871B (zh) 用于解决计算机系统中的资源管理和安全性的系统及方法
CN100458741C (zh) 数据处理装置和用于在其中控制对存储器访问的方法
TW201935306A (zh) 用於安全初始化的策略連結及/或載入之系統和方法
CN105980993A (zh) 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作
CN102763092A (zh) 根据硬件模式和安全标志限制用于指令读取的存储器区域
TW200412105A (en) Virtual to physical memory address mapping within a system having a secure domain and a non-secure domain
US20080052709A1 (en) Method and system for protecting hard disk data in virtual context
CN109359487A (zh) 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
CN104364771A (zh) 修改来自较小特权状态的运行时间仪表控制
WO2019213061A1 (en) Systems and methods for checking safety properties
CN105264540A (zh) 数据处理设备中的软件库的安全保护
CN104364768A (zh) 确定运行时间仪表控制的状态
US20230236925A1 (en) Tag checking apparatus and method
CN107577925A (zh) 基于双重ARM指令虚拟的Android应用程序保护方法
CN110162965A (zh) 一种运行时访问控制方法及计算装置
CN107430664A (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
GR01 Patent grant
GR01 Patent grant