CN110008726B - 一种运行时访问控制装置和方法 - Google Patents
一种运行时访问控制装置和方法 Download PDFInfo
- Publication number
- CN110008726B CN110008726B CN201910278179.XA CN201910278179A CN110008726B CN 110008726 B CN110008726 B CN 110008726B CN 201910278179 A CN201910278179 A CN 201910278179A CN 110008726 B CN110008726 B CN 110008726B
- Authority
- CN
- China
- Prior art keywords
- instruction
- boundary
- safety device
- register
- area
- 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.)
- Active
Links
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/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Automation & Control Theory (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种运行时访问控制的装置及方法,涉及信息技术,特别是信息安全技术,所述装置包括安全装置和保障装置,所述安全装置基于硬件针对内存区域进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令;所述安全装置提供合法跨越内存区域边界的方式,包括执行专用的跨区域转移指令或发生中断/异常时,必须先转移至中转区域,再由此区域中代码进行边界切换并转移至最终的目标地址;特别的,如果二者转移到相同中转区域的共同代码位置,由硬件提供标识信息,以区别转移是由执行跨区域转移指令引起还是由产生中断/异常引起;中断返回也会导致跨区域转移。
Description
技术领域
本申请涉及信息技术领域,特别涉及一种运行时隔离方法,以及一种运行时访问控制方法及计算装置。
背景技术
现有技术中,特别是现有操作***和处理器体系架构技术中,对于内存及其使用的设计更多的考虑是紧凑、方便、高效,这样的设计使得各个功能的代码之间有着错综复杂的相互联系,数据几乎没有任何封装,或者仅在高级语言的语法编译阶段具有有限的封装,而在运行时实际上可以不受任何检查的随意访问。
具体的,对语法的检查只能保证源码中不包含语法所不允许的非法访问,但在运行时,攻击者有可能通过某种手段改变程序的执行序或者是数据访问对象,从而打破语法规则的封装。比如,C++语言规定了类中的私有成员不可被其他类对象访问,但是如果程序被攻击,攻击者在运行时改变了函数的转移目标,就可以打破这种保护。
特别是对于操作***内核而言,现有技术的上述缺陷,实质上导致内核空间是平坦的,一旦攻击者借助如果攻击者借助用户态和内核态之间的数据传输,利用内核态代码在传输、处理数据中的设计缺陷,就能够用攻击者准备好的数据几乎任意修改内核的数据、代码,进而发起攻击。
其中最危险的是攻击导致超越授权,例如:
1、超越授权读取用户数据(包括内存和外设的数据)。
2、超越授权写入(包括篡改、删除)用户数据。
3、超越授权执行***调用。
4、超越授权执行应用程序。
一旦攻击者完成了上述动作,同时由于现有操作***中仅有极为有限的检查机制,攻击者实质上就获得了对计算机任意访问的权限。
特别是在硬件设计层面,没有从架构层面,在设计的初期就考虑安全问题,更加剧了信息安全风险。现有体系架构的实现,只考虑功能实现、效率提高等使用方面的问题,并没有从体系架构的设计基点开始就专门的考虑安全问题;即便有些设计,如特权级、分页等,客观上在一定程度上为计算的提供了安全保障,但其设计的出发点仍然是为了使用而非安全,这导致安全保障不成体系,进而不足以消除攻击成立所需的必要条件。在攻击条件下,仍然存在重大安全隐患。
发明内容
为了解决现有体系架构的设计初衷没有***性的考虑安全的问题,本发明公开了一种安全装置,在设计基点上,就***性的解决安全问题,同时优选的,公开一种保障装置,来保障即便在攻击状态下,安全装置也能保持有效。
进一步的,考虑到技术方案的可实施性,安全装置及保障装置的设计,也最大限度的与现有硬件体系流水线机制相配合,确保在解决安全问题的同时,不影响流水线的整体设计,进而保证执行效率。
一种装置,其特征在于:
包括安全装置,和/或,保障装置;
所述安全装置基于硬件针对内存区域进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令。
优选的,所述装置可以称为内存***装置。
所述安全装置,包括:拦截非法跨越内存区域边界的访问;提供合法跨越内存区域边界的方式。
所述内存区域边界是指:处理器认定的由内存地址值所构成的区域边界,和/或,处理器认定的由页面标识信息所标定的区域边界。
所述拦截非法跨越内存区域边界的访问,包括:如果待执行的指令地址超出处理器认定的内存区域边界,处理器报异常;如果数据读写目标匹配的地址超出读写指令对应的内存区域边界,处理器报异常。
所述提供合法跨越内存区域边界的方式,包括:执行专用的跨区域转移指令或发生中断/异常时,必须先转移至中转区域,再由此区域中代码进行边界切换并转移至最终的目标地址;特别的,如果二者转移到相同中转区域的共同代码位置,由硬件提供标识信息,以区别转移是由执行跨区域转移指令引起还是由产生中断/异常引起;中断返回也会导致跨区域转移。
所述保障装置,包括:仅在中转区域中,和/或,跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问确保安全装置有效所需的信息和确保保障装置有效所需的状态数据;仅有跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回导致跨区域转移。
优选的,在装置中设置安全功能,和/或,保障功能的开关,如关闭该开关,则装置失效。
一种安全装置的制作方法,包括:制作边界检查装置的方法和提供合法跨越内存区域边界的方法。
所述制作边界检查装置的方法包括:制作指令边界检查装置的方法和指令数据边界检查装置的方法。
所述制作指令边界检查装置的方法包括:由处理器认定当前内存区域范围,并判断待执行指令所在地址是否在此区域范围之内,如在,可正常取址,如不在,处理器报出异常;
具体的,由处理器认定当前内存区域范围,并判断待执行指令所在地址是否在此范围之内,可以采用多种方法,一种优选的方法为:处理器设置专用存储设施保存当前内存区域边界地址值,在执行指令时,判断处理器的程序计数器的地址值是否在边界范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;另一种优选的方法为:在内存页面的属性中添加标识信息,处理器记录当前页面标识信息,在执行指令时,判断处理器中程序计数器所存地址所在的页面标识信息是否与当前的页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围。
所述制作数据边界检查装置的方法包括:由处理器认定若干组数据存储区域边界,针对每组数据区域匹配不同的读写指令,在对内存进行读写时,根据不同的读写指令判断操作地址是否在匹配的数据边界中,如在,可正常访问,如不在,则报出异常。设置多组数据区的目的是为了区分程序的数据区、栈区以及用作其他用途的独立数据区。
具体的,处理器判断数据操作目标是否在匹配边界内,可以采用有多种方法:一种优选的方法为:处理器设置若干组专用存储设施保存不同类型数据区的边界地址值,在执行读写指令时,判断操作目标地址是否在指令匹配的边界范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;另一种优选的方法为:在内存页面的属性中添加标识信息,处理器记录若干组可访问的数据区域的页面标识信息,在执行读写指令时,判断操作目标地址所在的页面标识信息是否与匹配区域类型的页面标识信息一致,一致表明在可读写数据区域中,否则不在区域中。
优选的:在安全装置设置开关,在所述开关处在关状态时,不进行指令边界检查和数据边界检查。
所述提供合法跨越内存区域边界的方法包括:提供专用的跨区域转移指令,执行此类指令时,转移至中转区域;提供专用转移指令,执行此类指令时,完成由中转区域到目标区域的转移;在中断/异常发生时,通过处理器硬件机制转移至中转区域;在中断返回时,通过中断指令执行从中转区域返回中断现场,恢复现场信息。
所述提供专用的跨区域转移指令,执行此类指令时,转移至中转区域;提供专用转移指令,执行此类指令时,完成由中转区域到目标区域的转移;进一步包括:
所述跨区域转移的指令,简称第一类指令,此类指令执行时转移到中转区域入口位置,指令同时将当前区域边界切换为中转区域边界,和/或,同时也将当前可访问的数据区域边界切换为中转区域中代码可访问的数据区域边界,如果不在第一类指令中对当前区域边界进行切换,处理器需在第一类指令执行后忽略指令边界检查,优选的,中转区域入口位置可以通过默认的固定存储设施来存储,不必出现在第一类指令中;优选的,转移目标地址可以通过第一类指令的操作数指定,也可以通过特定的专用寄存器来指定;
所述专用转移指令,简称第二类指令,此类指令用于从中转区域转移到指定地址;和/或,指令同时将当前区域边界切换为目标地址所属区域边界,和/或,同时也将中转区域可访问的数据区域边界切换为目标区域中代码可访问的数据区域边界;优选的,第二类指令的目标地址应为第一类指令指定的转移目标地址,二者协同完成区域间的转移,优选的,如果第一类指令执行会导致处理器不进行指令边界检查,那么第二类指令则应指定是否恢复指令边界检查,优选的,转移目标地址可以通过第二类指令操作数指定,也可以通过特定的专用寄存器来指定。
优选的:如果安全装置包含开关,则开关处于关状态时,不能够执行第一类指令、第二类指令,执行会报出异常。
所述在中断/异常发生时,通过处理器硬件机制转移至中转区域,进一步包括:在产生中断/异常后,先保存中断现场的确保安全装置有效所需信息,然后将当前区域边界设置为中转区域边界,和/或,同时也将当前区域可访问的数据区域边界切换为中转区域代码可访问的数据区域边界,并转移至指定的指令位置,优选的,如果不在中断/异常产生时对当前区域边界进行切换,处理器需在中转区域中忽略指令边界检查。
中断/异常的指定转移位置可以有多种选择,一种可选方法为:与第一类指令的转移到相同的中转区域,可选的,转移到同一地址,那么处理器需提供信息标识当前是由哪种触发方式导致执行到指定转移位置;另一种可选方式为:为中断/异常单独设置一个中转区域,那么这个中转区域的入口地址应被记入特定存储设施中。
在中断返回时,中断指令执行回到中断现场,进一步包括:恢复中断现场的确保安全装置有效所需信息,这个信息在发生中断时被记录在特定存储设施中。
优选的:如果安全装置包含开关,仅在开关处于开状态时,执行以上关于中断、异常、中断返回的操作。
一种保障装置的制作方法:将确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,保存在专用存储设施中;设置专用存储设施标记各个专用存储设施的访问状态;处理器根据访问状态信息确保,只有在中转区域中,和/或,跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回时,才能访问这些存储设施;第二类指令仅可在第一类指令转移到的中转区域中执行。
所述确保安全装置有效所需的信息包括:全局数据所在内存区域的边界信息;栈数据所在内存区域的边界信息;其它种类数据所在内存区域边界信息;转移指令所需中转代码的首地址;转移指令所需中转区域的边界信息;中断/异常所需中转代码的首地址;中断/异常服务程序所需中转区域的边界信息;安全装置开启/关闭标识信息;优选的,转移指令和中断/异常的中转区域可以相同,所需中转代码的首地址也可以相同。
所述所需中转代码的首地址是指当执行第一类指令或发生中断/异常时,必须转移到的位置。
所述中转区域是指:当执行第一类指令或发生中断/异常时,转移地址所在区域,转移地址被记录在装置中,特别的:中转区域中的指令执行时不进行指令边界检查。
所述保障装置所需的状态数据包括:是否处于转移指令所需的中转区域;是否处于中断/异常所需的中转区域。
从上述发明内容可知,保障装置用来保障安全装置在攻击状态下不受破坏,因此,安全装置的制作方法不同,保障装置的制作方法也会相应的做调整;安全装置在拦截非法跨越内存区域边界的访问方面,设计差异体现为:处理器对边界信息的认定方法,一种是认定地址值包围而成的边界,另一种是认定页面标识信息;在提供合法跨越内存区域边界的方式方面,设计差异体现为用于转移的特定指令和中断/异常产生后转移的中转区域,可以是同一内存区域,也可以是不同内存区域;保障装置针对这两方面四种设计差异,也要做出相应的调整,这样就形成了4套安全装置制作方法和与之匹配的保障装置制作方法。
下面分别列举实现上述安全装置以及保障装置的四种制作方式:
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M1:
所述制作方法M1的特征为:内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。
安全装置的制作方法:
M-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
设置专用寄存器,记录指令,和/或,数据所在内存区域边界信息,处理器据此检查指令以及数据访问是否跨边界;
设置专用寄存器,记录栈数据所在内存区域边界,处理器据此检查栈数据访问是否跨边界;
设置专用寄存器,记录其它用途数据所在内存区域边界,处理器据此检查其它用途数据访问是否跨边界;
设置专用寄存器,临时记录中断/异常产生时,现场边界信息,在中断返回时,处理器据此恢复现场边界信息;
设置专用寄存器,记录中断/异常服务程序所在内存区域边界信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录第一类指令转移的特定位置地址所在内存区域边界信息。
M-A-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
处理器根据程序计数器中的数值进行取址,判断该值是否超越了专用寄存器中保存的内存区域边界值,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-A-A3、在安全装置中增加检查数据访问是否跨边界的功能
专用边界寄存器中保存不同种类数据区的边界,包括:普通数据区、栈区、其它数据区等,每种数据区匹配不同的读写指令,执行内存读写指令时,根据该指令匹配的数据区类型选择匹配的区域边界,判断当前待操作的地址是否在匹配的区域内,如是,可执行;如不是,处理器报出异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-A-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨区域的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为转移指令所需中转区域的边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问其它用途数据所在区域边界值;将程序计数器的值设置为中转代码的首地址,这个地址记录在安全装置的专用寄存器中。
优选的,可在第一类指令执行时不切换边界值,为此需要添加标识信息表明中转区域中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-A-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的中转区域向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换区域边界值,边界值包括指令,和/或,数据区域边界值,和/或,可访问栈区域边界值,和/或,可访问其它用途数据所在区域边界值。
优选的,如果第一类指令执行时标明中转区域中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-A-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断/异常转移中转区域的边界信息;和/或,将相应专用寄存器的值设置中转区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置中转区域程序可访问其它用途数据所在区域边界值,转移至中断服务程序的入口地址;其余操作与现有中断/异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-A-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
保障装置的制作方法:
M-A-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
设置专用寄存器,记录当前是否处于第一类指令转移到的中转区域;
设置专用寄存器,记录当前是否处于中断/异常产生转移到的中转区域;
M-A-A9、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-A-A10、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-A-A11、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移到的中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;优选的,不允许执行中断返回指令;
在中断/异常产生转移到的中转区域中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转区域中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令;
一种安全装置,和/或,与之匹配的保障装置的制作方法M2:
所述制作方法M2的特征为:内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域,优选的,转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。
安全装置的制作方法:
M-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
设置专用寄存器,记录指令,和/或,数据所在内存区域边界信息,处理器据此检查指令以及数据访问是否跨边界;
设置专用寄存器,记录栈数据所在内存区域边界,处理器据此检查栈数据访问是否跨边界;
设置专用寄存器,记录其它用途数据所在内存区域边界,处理器据此检查其它用途数据访问是否跨边界;
设置专用寄存器,临时记录中断/异常产生时,现场边界信息,在中断返回时,处理器据此恢复现场边界信息;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录第一类指令转移和中断/异常转移共同中转区域的边界信息。
M-B-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
处理器根据程序计数器中的数值进行取址,判断该值是否超越了专用寄存器中保存的内存区域边界值,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-B-A3、在安全装置中增加检查数据访问是否跨边界的功能
专用边界寄存器中保存不同种类数据区的边界,包括:普通数据区、栈区、其它数据区等,每种数据区匹配不同的读写指令,执行内存读写指令时,根据该指令匹配的数据区类型选择匹配的区域边界,判断当前待操作的地址是否在匹配的区域内,如是,可执行;如不是,处理器报出异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-B-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨区域的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问其它用途数据所在区域边界值;处理器需提供信息标识,表明当前由第一类指令执行导致转移,标识信息被记录在安全装置的专用寄存器中;将程序计数器的值设置为中转代码的首地址,这个地址记录在安全装置的专用寄存器中,即第一类指令转移和中断/异常转移的共同地址值。
优选的,可在第一类指令执行时不切换边界值,为此需要添加标识信息表明中转区域中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-B-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令转移和中断/异常转移共同的中转区域向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换区域边界值,边界值包括指令,和/或,数据区域边界值,和/或,可访问栈区域边界值,和/或,可访问其它用途数据所在区域边界值。
优选的,如果第一类指令执行时标明共同的中转区域中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-B-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的边界值,和/或,将相应专用寄存器的值设置中转区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置中转区域程序可访问其它用途数据所在区域边界值;转移至第一类指令转移和中断/异常转移共同的转移地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-B-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
保障装置的制作方法:
M-B-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
设置专用寄存器,记录当前是否处于第一类指令转移和中断/异常转移共同的中转区域;
M-B-A9、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-B-A10、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-B-A11、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移和中断/异常产生转移的共同中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转区域中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令;
一种安全装置,和/或,以及与之匹配的保障装置的制作方法M3:
所述制作方法M3的特征为:内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:内存区域边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在内存区域边界信息以页面标识的方式记录,栈区域以及其它用途数据所在内存区域边界信息以内存地址值方式记录。
安全装置的制作方法:
M-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
设置专用寄存器,记录指令,和/或,数据所在内存区域页面标识信息,处理器据此检查指令以及数据访问是否跨边界;
设置专用寄存器,记录栈数据所在内存区域边界,处理器据此检查栈数据访问是否跨边界;
设置专用寄存器,记录其它用途数据所在内存区域边界,处理器据此检查其它用途数据访问是否跨边界;
设置专用寄存器,临时记录中断/异常产生时,现场边界,和/或,页面标识信息,在中断返回时,处理器据此恢复现场边界,和/或,页面标识信息;
设置专用寄存器,记录中断/异常服务程序所在内存区域页面标识信息;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录第一类指令转移的特定位置地址所在内存区域页面标识信息。
M-C-A2、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
M-C-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
处理器根据程序计数器中的数值进行取址,判断该值所在页面标识值是否与了专用寄存器中保存的内存区域页面标识值不一致,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-C-A4、在安全装置中增加检查数据访问是否跨边界的功能
专用边界寄存器中保存不同种类数据区的边界,包括:普通数据区、栈区、其它数据区等,每种数据区对应不同的读写指令,执行普通数据区读写指令时,判断当前待操作的地址所在页面标识信息,是否与专用寄存器中保存的数据区所在内存区域页面标识值一致,如是,可执行;如不是,处理器报出异常;执行栈区、其它数据区等读写指令时,根据该指令匹配的数据区类型选择匹配的区域边界,判断当前待操作的地址是否在匹配的区域内,如是,可执行;如不是,处理器报出异常;
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-C-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨区域的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值设置为转移指令所需中转区域的页面标识值,和/或,将相应专用寄存器的值设置为该区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问其它用途数据所在区域边界值;将程序计数器的值设置为中转代码的首地址,这个地址记录在安全装置的专用寄存器中。
优选的,可在第一类指令执行时不切换页面标识值,为此需要添加标识信息表明中转区域中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-C-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令执行转移到的中转区域向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换区域边界值,边界值包括指令,和/或,数据区域页面标识值,和/或,可访问栈区域边界地址值,和/或,可访问其它用途数据所在区域边界地址值。
优选的,如果第一类指令执行时标明中转区域中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-C-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断/异常转移中转区域的页面标识信息;和/或,将相应专用寄存器的值设置中转区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置中转区域程序可访问其它用途数据所在区域边界值;转移至中断服务程序的入口地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-C-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息,和/或,页面标识信息。
保障装置的制作方法:
M-C-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
设置专用寄存器,记录当前是否处于第一类指令转移到的中转区域;
设置专用寄存器,记录当前是否处于中断/异常产生转移到的中转区域;
M-C-A10、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-C-A11、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-C-A12、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移到的中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;优选的,不允许执行中断返回指令;
在中断/异常产生转移到的中转区域中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转区域中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令;
一种安全装置,和/或,与之匹配的保障装置的制作方法M4:
所述制作方法M4的特征为:内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域,优选的,转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:内存区域边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在内存区域边界信息以页面标识的方式记录,栈区域以及其它用途数据所在内存区域边界信息以内存地址值方式记录。
安全装置的制作方法:
M-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
设置专用寄存器,记录指令,和/或,数据所在内存区域页面标识信息,处理器据此检查指令以及数据访问是否跨边界;
设置专用寄存器,记录栈数据所在内存区域边界,处理器据此检查栈数据访问是否跨边界;
设置专用寄存器,记录其它用途数据所在内存区域边界,处理器据此检查其它用途数据访问是否跨边界;
设置专用寄存器,临时记录中断/异常产生时,现场边界,和/或,页面标识信息,在中断返回时,处理器据此恢复现场边界,和/或,页面标识信息;
设置专用寄存器,记录第一类指令转移和中断/异常转移的共同地址值;
设置专用寄存器,记录安全装置开启/关闭的标识信息;
设置专用寄存器,记录第一类指令转移的特定位置地址值;
设置专用寄存器,记录第一类指令转移和中断/异常转移共同中转区域的页面标识信息。
M-D-A2、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
M-D-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
处理器根据程序计数器中的数值进行取址,判断该值所在页面标识值是否与了专用寄存器中保存的内存区域页面标识值不一致,如是,处理器报出异常,如不是,可正常取址。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行指令边界检查。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
M-D-A4、在安全装置中增加检查数据访问是否跨边界的功能
专用边界寄存器中保存不同种类数据区的边界,包括:普通数据区、栈区、其它数据区等,每种数据区匹配不同的读写指令,执行普通数据区读写指令时,判断当前待操作的地址所在页面标识信息,是否与专用寄存器中保存的数据区所在内存区域页面标识值一致,如是,可执行;如不是,处理器报出异常;执行栈区、其它数据区等读写指令时,根据该指令匹配的数据区类型选择匹配的区域边界,判断当前待操作的地址是否在匹配的区域内,如是,可执行;如不是,处理器报出异常;
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时进行数据边界检查。
M-D-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:发起跨区域的转移
指令动作包括:自动保存下一条指令地址;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的页面标识值,该值被记录在安全装置的专用寄存器中,和/或,将相应专用寄存器的值设置为该区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置为该区域程序可访问其它用途数据所在区域边界值;处理器需提供信息标识,表明当前由第一类指令执行导致转移,标识信息被记录在安全装置的专用寄存器中;将程序计数器的值设置为中转代码的首地址,这个地址记录在安全装置的专用寄存器中,即第一类指令转移和中断/异常转移的共同地址值。
优选的,可在第一类指令执行时不切换页面标识值,为此需要添加标识信息表明中转区域中不需要指令边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第一类指令,执行则报出异常。
M-D-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
优选的,指令操作数包含:转移目标
指令功能:第一类指令转移和中断/异常转移共同的中转区域向外的转移
指令动作包括:将转移目标的值赋给程序计数器,和/或,同时切换区域边界值,边界值包括指令,和/或,数据区域页面标识值,和/或,可访问栈区域边界地址值,和/或,可访问其它用途数据所在区域边界地址值。
优选的,如果第一类指令执行时标明中转区域中不需要指令边界检查,则第二类指令执行时,要标明恢复边界检查,标识信息存储进专用寄存器。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,在寄存器标识安全功能关闭时不允许执行第二类指令,执行则报出异常。
M-D-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的页面标识值,和/或,将相应专用寄存器的值设置中转区域程序可访问栈区域边界值,和/或,将相应专用寄存器的值设置中转区域程序可访问其它用途数据所在区域边界值;转移至第一类指令转移和中断/异常转移共同的转移地址;其余操作与现有中断、异常的处理一致。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时进行与现有中断、异常处理不同的部分。
M-D-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。
优选的,如果安全装置包含专用寄存器指定安全功能是否开启,仅在寄存器标识安全功能开启时,恢复确保安全装置有效所需中断/异常现场信息。
保障装置的制作方法:
M-D-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
设置专用寄存器,记录当前是否处于第一类指令转移和中断/异常转移共同的中转区域;
M-D-A10、识别需要保障的寄存器的方式:
通过识别寄存器编址信息来认定同类寄存器属性。优选的,将同类寄存器安排在连续编址范围内,通过识别高低端编址信息来认定同类寄存器。优选的,将寄存器安排在特定的连续编址范围内,通过识别编址信息中特定位类认定寄存器属性。
M-D-A11、访问专用寄存器时增加访问控制的功能:
通过特定指令对专用寄存器进行访问,优选的,仍沿用现有寄存器访问指令,并为其增加功能,以便能够即兼容现有访问规则,又兼顾寄存器访问规则。
进一步的:处理器通过专用寄存器当前是否可访问这一属性信息,来认定专用寄存器当前是否可访问,如果可访问,允许特定指令执行,否则报异常。
优选的,如果安全装置包含用于开关设置的专用寄存器,仅在专用寄存器标识为开启时履行更改的指令执行规则,否则沿用现有规则。
M-D-A12、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器;
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器;
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息;
其余情况下不得改写安全装置和保障装置的专用寄存器。
在第一类指令执行转移和中断/异常产生转移的共同中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令;允许执行中断返回指令;
在非中转区域中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令。优选的,不允许执行中断返回指令。
通过上述方法,本发明能够起到以下技术效果:
设置专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息,处理器通过寄存器时时获取这些信息,以此确保安全装置有效。特别的,专用寄存器组为基于保证信息安全目的访问控制提供了更为方便、有效的识别特征。
通过从寄存器中获取的内存区域边界信息,处理器可以通过它和当前程序计数器中地址值做比对,来进行指令边界检查。
通过从寄存器中获取的数据内存区域边界信息,以及设定的与不同种类数据区域匹配的读写指令,处理器可以据此判定数据访问是否超越区域边界。
安全装置还提出了区域间合法的转移方式:通过增加的第一类指令,可以发起跨区域转移动作,并转移到中转区域;通过增加的第二类指令,可以从中转区域中转移到目标区域;中断/异常产生时保护安全装置现场信息,中断返回时恢复安全装置现场信息,可以确保安全装置在中断现场有效。
中转区域的提出,可以把本该由第一类指令完成的区域间转移的合法性检查工作,转交中转区域中软件程序实现,这极大的降低了第一类指令的执行周期,为融入现有流水线整体设计,创造了基础。
保障装置的核心任务就是记录当前是否处于中转区域中,而且确保,只有在中转区域中,才能访问确保安全装置和保障装置有效的专用寄存器,同时限定第一类、第二类指令能否在中转区域、非中转区域中执行。
具体实施方式
下面对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下通过具体实施方式来具体说明本发明的技术方案。
实施例1:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S1:
所述实施方式S1的特征为:在RISC-V体系下,内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本实施例优选的存储设施为:专用寄存器。
安全装置的实施方式:
S-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
处理器在运行过程中需动态获得一些数据以保证安全装置的正常运行,因此添加一些寄存器供处理器使用。在精简指令集RSIC-V中,有4096个预设控制状态寄存器供使用,我们选择其中的一些作为增设的控制状态寄存器。为了与RSIC兼容,除了满足其寄存器的编码规则与使用规范外,还为寄存器增添一种属性,即,与安全装置相关性,所述相关性是指:如果寄存器与安全装置相关,则对该寄存器的访问属性增加内容为:只有“当前模式安全装置失效”或“当前模式安全装置生效且当前处于中转区域”时,可访问,否则访问报异常;如果寄存器与安全装置不相关,则按照RSIC-V现有规则对寄存器进行访问。
增设寄存器: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,表示不需要检查
增设寄存器:CSR_CMSLSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存连续内存区域低端地址值。
增设寄存器:CSR_CMSHSIDE(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存连续内存区域高端地址值。
增设寄存器:CSR_CMSEBP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存栈区域高端地址值。
增设寄存器:CSR_CMSESP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存栈区域低端地址值。
增设寄存器:CSR_CBMSEBP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存其它种类数据所在连续内存区域高端地址值。
增设寄存器:CSR_CBMSESP(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存其它种类数据所在连续内存区域低端地址值。
增设寄存器: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模式下中断服务程序内存区域低端地址值。
增设寄存器:CSR_SMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断服务程序内存区域高端地址值。
增设寄存器:CSR_UMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断服务程序内存区域低端地址值。
增设寄存器:CSR_UMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断服务程序内存区域高端地址值。
S-A-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,即检查当前程序计数器中数值是否处于处理器认定的内存区域范围内,如果不超出范围,允许执行,否则报异常。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。
检查时机:优选的,处理器通过TLB(Translation Lookaside Buffer)识别到本次处理指令地址值与上次处理的指令地址值不属同一页面时或每次使用程序计数器的值时校验其合法性,二者选一。
优选的:进行边界检查时,安全机制开启/关闭检查、CSR_CMSATTR寄存器属性位检查、比较高端地址和低端地址的动作,可以通过增加流水线功能的方式同时进行,以此达到不增加流水线中指令执行周期,进而不降低流水线整体执行效率的目的。
S-A-A3、在安全装置中增加检查数据访问是否跨边界的功能
只有在当前模式开启安全装置的情况下,对访问普通数据区域的特定指令,进行边界检查,即检查数据访问目标地址是否处于普通数据区域内,如果不超出范围,允许执行,否则报异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果数据访问内存地址值小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。
只有在当前模式开启安全装置的情况下,对访问栈区域的特定指令,进行边界检查,即检查数据访问目标地址是否处于栈区域内,如果不超出范围,允许执行,否则报异常,具体包括:
增加sload、sstore指令:
格式和功能与risc-v现有体系下load、store指令一致。
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果访问内存地址值小于CSR_CMSESP寄存器中数值或大于等于CSR_CMSEBP寄存器中数值,报异常,否则正常执行。CSR_EMSUR寄存器为0时执行,报异常。
只有在当前模式开启安全装置的情况下,对访问其它种类数据所在区域的特定指令,进行边界检查,即检查数据访问目标地址是否处于其它种类数据所在区域内,如果不超出范围,允许执行,否则报异常,具体包括:
增加bload、bstore指令:
格式和功能与risc-v现有体系下load、store指令一致。
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果访问内存地址值小于CSR_CBMSESP寄存器中数值或大于等于CSR_CBMSEBP寄存器中数值,报异常,否则正常执行。CSR_EMSUR寄存器为0时执行,报异常。
优选的:进行边界检查时,安全装置开启/关闭检查、比较高端地址和低端地址的动作,可以通过增加流水线功能的方式同时进行,以此达到不增加流水线中指令执行周期,进而不降低流水线整体执行效率的目的。
S-A-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第一类指令可执行,不切换边界值,并标识中转区域中不做指令边界检查,保存下一条指令地址,并将程序计数器的值设置为中转代码的首地址。具体包括:
指令格式: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-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第二类指令可执行,不切换边界值,并标识从中转区域转移到外部区域后,做指令边界检查,执行转移到的中转区域向外的转移。具体包括:
指令格式:jalrchmsu ra rs
功能:
只有在当前模式开启安全装置前提下,即只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,指令可执行,否则报异常;指令执行时,将CSR_CMSATTR寄存器0位置0,用rs寄存器中数值设置PC。
优选的,rs中保存B指令中指定的目标地址值。
S-A-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中专用边界寄存器的值,设置为中断/异常转移中转区域的边界信息;转移至中断服务程序的入口地址;其余操作与现有中断、异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为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现有规则转移至中断服务程序入口地址;
如果委托到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现有规则转移至中断服务程序入口地址;
如果当前模式为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现有规则转移至中断服务程序入口地址。
S-A-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在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-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
沿用安全装置的寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与保障装置相关性:相关
功能描述:用来标识当前是否处于第一类指令转移到的中转区域,是否处于中断/异常产生转移到的中转区域。
寄存器中各个位信息含义:
0位(当前是否处于中转区域标志位):
为0,表示当前不处于中转区域
为1,表示当前处于中转区域
1位(当前处于中转区域种类标志位):
为0,表示当前处于第一类指令转移到的中转区域
为1,表示处于中断/异常产生转移到的中转区域
特别的:安全装置和保障装置共用CSR_CMSATTR寄存器,这是因为,安全装置中规定,只有在中转区域中不进行指令边界检查;保障装置也通过当前是否处于中转区域,来限制是否能访问与安全装置相关寄存器,以及是否能执行合法的跨区域转移执行,这样,CSR_CMSATTR寄存器0位,用同样的数值,既可以标识当前是否不需要指令检查,又可以标识当前是否处于中转区域,两者并不冲突。
S-A-A9、识别需要保障的寄存器的方式:
为了方便的识别到控制状态寄存器是否与安全装置相关,具体的处理方式为:
第一种:
在“R/W:可读写;Privilege:S;Standard/not:非标准”这一属性组合所对应的64个预设寄存器空间的某一空余的连续编址位置处,放置“R/W:可读写;Privilege:S;Standard/not:非标准”对应的与安全装置相关的控制状态寄存器;
硬件设备识别控制状态寄存器的时,只要判断是否处于特定的连续编址范围内,就可以分辨出与安全装置相关的控制状态寄存器。
第二种:
和第一种相比,为了更简化判断逻辑,把与安全装置相关控制状态寄存器的编址位置从高地址往低地址连续排列,如(0位到5位:从111111往低地址排),这样只要识别5位为1,就可以识别出它与安全装置相关。
S-A-A10、访问专用寄存器时增加访问控制的功能:
沿用并增加RISC-V体系下csrr、csrw、csrwi指令功能,具体实现方式包括:
处理器通过增设寄存器中记录信息,来履行相关性规则,以及RISC-V中现有控制状态寄存器访问规则:只有“当前模式安全装置关闭”或“当前模式安全装置开启且当前处于中转区域时,才可通过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-A11、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
允许在关闭安全装置时设置安全装置和保障装置的专用寄存器,具体包括:在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为0的情况下,允许设置。
允许第一类指令、第二类指令、中断/异常、中断返回、专用寄存器访问指令,设置安全装置和保障装置的专用寄存器,具体包括:jalrmsu指令执行时以及中断/异常产生时,将CSR_CMSATTR寄存器0位置1;jalrchmsu指令执行时,用rd寄存器中数值设置CSR_CMSATTR寄存器,rd默认为x1,即ra,优选的,如果目标区域为非中转区域,ra寄存器0位置0,1位置0,如果目标区域为中断/异常转移中转区域,ra寄存器0位置1,1位置1;中断返回时,恢复CSR_CMSATTR寄存器数值;允许通过csrr、csrw、csrwi指令访问增设寄存器。
允许中断/异常保存中断现场的安全装置和保障装置的专用寄存器中信息,具体包括:保存的增设寄存器信息与安全装置和保障装置中保存增设寄存器信息一致。
其余情况下不得改写安全装置和保障装置的专用寄存器,具体包括:在安全装置开启的前提下,如果处于非中转区域,不允许设置与安全装置和保障装置相关的寄存器,即,在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为0,不允许设置相关寄存器。
在第一类指令执行转移到的中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为0,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令;
在中断/异常产生转移到的中转区域中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括;在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为1,不允许执行jalrchmsu指令,允许执行jalrmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令;
在非中转区域中,允许执行第一类指令,不允许执行第二类指令,不允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即,在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为0,允许执行jalrmsu指令,不允许执行jalrchmsu指令,不允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令。
实施例2:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S2:
所述实施方式S2的特征为:在RISC-V体系下,内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域,优选的,转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本实施例优选的存储设施为:专用寄存器。二者可以转移至共同中转区域的相同地址或不同地址,本制作方法优选转移到共同地址。
安全装置的实施方式:
S-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
在实施例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:非标准;与安全装置相关性:相关
功能描述:用来标识当前是否检查指令边界,以及标识转移至中转区域的原因
寄存器中各个位信息含义:
0位(是否检查指令边界标识位):
为0,表示需要检查
为1,表示不需要检查
1位(转移至中转区域的原因):
为0,由于第一类指令执行转移至中转区域
为1,由于中断/异常产生转移至中转区域”
将:
“增设寄存器: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模式下中断服务程序内存区域低端地址值。
增设寄存器:CSR_SMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下中断服务程序内存区域高端地址值。
增设寄存器:CSR_UMSIRLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断服务程序内存区域低端地址值。
增设寄存器:CSR_UMSIRHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断服务程序内存区域高端地址值。”
替换为:
“增设寄存器:CSR_SMSCHLADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常转移的中转区域的低端地址值。
增设寄存器:CSR_SMSCHHADDR(32/64位)
访问属性:R/W:可读写;Privilege:S;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存S模式下第一类指令转移和中断/异常转移的中转区域的高端地址值。
增设寄存器:CSR_UMSCHLADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常转移的中转区域的低端地址值。
增设寄存器:CSR_UMSCHHADDR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常转移的中转区域的高端地址值。”
其余内容一致。
S-B-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
与实施例1中S-A-A2所述内容一致。
S-B-A3、在安全装置中增加检查数据访问是否跨边界的功能
与实施例1中S-A-A3所述内容一致。
S-B-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
采用优选方案,开启安全装置前提下,第一类指令可执行,不切换边界值,并标识中转区域中不做指令边界检查,标识当前是第一类指令执行导致转移,保存下一条指令地址,并将程序计数器的值设置为中转代码的首地址。具体包括:
指令格式: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-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
与实施例1中S-A-A5所述内容一致。
S-B-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的边界值;转移至第一类指令转移和中断/异常转移共同的转移地址;其余操作与现有中断、异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为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-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在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-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
沿用安全装置的寄存器:CSR_CMSATTR(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与保障装置相关性:相关
功能描述:用来标识当前是否处于共同中转区域。
寄存器中各个位信息含义:
0位(当前是否处于中转区域标志位):
为0,表示当前不处于共同中转区域
为1,表示当前处于共同中转区域
特别的:安全装置和保障装置共用CSR_CMSATTR寄存器,这是因为,安全装置中规定,只有在共同的中转区域中不进行指令边界检查;保障装置也通过当前是否处于共同中转区域,来限制是否能访问与安全装置相关寄存器,以及是否能执行合法的跨区域转移执行,这样,CSR_CMSATTR寄存器0位,用同样的数值,既可以标识当前是否不需要指令检查,又可以标识当前是否处于共同中转区域,两者并不冲突。
S-B-A9、识别需要保障的寄存器的方式:
与实施例1中S-A-A9所述内容一致。
S-B-A10、访问专用寄存器时增加访问控制的功能:
与实施例1中S-A-A10所述内容一致。
S-B-A11、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
在实施例1中S-A-A11所述内容基础上:
将:
“优选的,如果目标区域为非中转区域,ra寄存器0位置0,1位置0,如果目标区域为中断/异常转移中转区域,ra寄存器0位置1,1位置1;”
替换为:
“优选的,ra寄存器0位置0;”
将:
“在第一类指令执行转移到的中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,不允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为0,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,不允许执行中断返回指令;
在中断/异常产生转移到的中转区域中,不允许执行第二类指令;允许执行第一类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括;在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,1位为1,不允许执行jalrchmsu指令,允许执行jalrmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令。”
替换为:
“在第一类指令执行转移和中断/异常产生转移的共同中转区域中,不允许执行第一类指令;允许执行第二类指令;允许执行专用寄存器访问指令,允许执行中断返回指令,具体包括:在安全装置开启的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,如果CSR_CMSATTR寄存器0位为1,不允许执行jalrmsu指令,允许执行jalrchmsu指令,允许执行csrr、csrw、csrwi指令,允许执行中断返回指令。”
其余内容一致。
实施例3:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S3:
所述实施方式S3的特征为:在RISC-V体系下,内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:内存区域边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在内存区域边界信息以页面标识的方式记录,栈区域以及其它用途数据所在内存区域边界信息以内存地址值方式记录。
安全装置的实施方式:
S-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
在实施例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模式下中断/异常产生后转移地址所在页面标识信息。
增设寄存器:CSR_UMSIRID(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下中断/异常产生后转移地址所在页面标识信息。
增加CSR_CMSATTR寄存器信息:
除0、1、2位外,其它位用来记录PC即程序计数器中地址值所在页面标识信息。
其余内容一致。
S-C-A2、增加页表项内容
在现有页表结构的基础上,建立与其对应的数据结构,其中的每一项都对应一个页表项,结构中记录该页表项对应页面标识信息。将此结构体现在处理器的TLB中。
S-C-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
在实施例1中S-A-A2所述内容基础上:
将:
“只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,即检查当前程序计数器中数值是否处于处理器认定的内存空间范围内,如果不超出范围,允许执行,否则报异常。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。”
替换为:
“只有在当前模式开启安全装置,且当前需要进行指令边界检查时,进行边界检查,判断该指令地址值所在页面标识值是否与增设寄存器中保存的在内存区域页面标识值不一致,如是,处理器报出异常,如不是,可正常取址。具体包括:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1,且CSR_CMSATTR寄存器0位为0,的情况下,进行边界检查,检查内容是:如果PC所处页面对应页表项对应数据结构中记录页面标识信息,与CSR_CMSATTR寄存器中记录的页面标识信息不一致,报异常,否则正常执行。”
其余内容一致。
S-C-A4、在安全装置中增加检查数据访问是否跨边界的功能
在实施例1中S-A-A3所述内容基础上:
将:
“只有在当前模式开启安全装置的情况下,对访问普通数据区域的特定指令,进行边界检查,即检查数据访问内存地址是否处于普通数据区域内,如果不超出范围,允许执行,否则报异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:如果数据访问内存地址值小于CSR_CMSLSIDE寄存器中数值或大于等于CSR_CMSHSIDE寄存器中数值,报异常,否则正常执行。”
替换为:
“只有在当前模式开启安全装置的情况下,对访问普通数据区域的特定指令,进行边界检查,即检查当前待操作的地址所在页面标识信息,是否与增设寄存器中保存的数据区所在内存区域页面标识值一致,如是,可执行;如不是,处理器报出异常,具体包括:
增加load、store指令功能:
增加功能为:
只有在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的情况下,进行边界检查,检查内容是:访问内存地址值所处页面对应页表项对应数据结构中记录的页面标识信息,与CSR_CMSATTR寄存器中记录的页面标识信息是否一致,一致,正常执行,否则,报异常。”
其余内容一致。
S-C-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
与实施例1中S-A-A4所述内容一致。
S-C-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
与实施例1中S-A-A5所述内容一致。
S-C-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;将装置中边界寄存器的值,设置为中断/异常转移中转区域的页面标识信息;转移至中断服务程序的入口地址;其余操作与现有中断、异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,则,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_UMSIRID寄存器中保存的U模式下中断/异常产生后转移地址所在页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_SMSIRID寄存器中保存的S模式下中断/异常产生后转移地址所在页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址;
如果当前模式为S,且委托到的模式是S或U,则检查S模式是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,则,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,之后用CSR_SMSIRID寄存器中保存的S模式下中断/异常产生后转移地址所在页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,并把CSR_CMSATTR寄存器0位置1;最后沿用RISC-V现有规则转移至中断服务程序入口地址。
S-C-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
处理器根据专用寄存器中保存现场信息,恢复确保安全装置有效所需中断/异常现场信息到相应的专用寄存器,优选的,还要恢复中断/异常发生时是否需要检查指令边界标识信息。具体包括:
在当前模式打开安全装置的前提下,即在CSR_EMSUR寄存器(如果当前S模式,1位,如果当前U模式,0位)为1的前提下,如果当前模式为S,则用CSR_STMSATTR寄存器数值恢复CSR_CMSATTR寄存器的数值;如果当前模式为U,则用CSR_UTMSATTR寄存器数值恢复CSR_CMSATTR寄存器的数值。
保障装置的实施方式:
S-C-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
与实施例1中S-A-A8所述内容一致。
S-C-A10、识别需要保障的寄存器的方式:
与实施例1中S-A-A9所述内容一致。
S-C-A11、访问专用寄存器时增加访问控制的功能:
与实施例1中S-A-A10所述内容一致。
S-C-A12、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
与实施例1中S-A-A11所述内容一致。
实施例4:
在RISC-V体系下,一种安全装置,和/或,以及与之匹配的保障装置的具体实施方式S4:
所述实施方式S4的特征为:内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域,优选的,转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据,本制作方法优选的存储设施为:专用寄存器。特别的:内存区域边界信息可以以内存地址值,和/或,以页面标识的方式记录,本制作方法优选的记录方式为:指令,和/或,数据所在内存区域边界信息以页面标识的方式记录,栈区域以及其它用途数据所在内存区域边界信息以内存地址值方式记录。
安全装置的实施方式:
S-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息
在实施例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模式下第一类指令转移和中断/异常产生后转移地址所在共同的页面标识信息。
增设寄存器:CSR_UMSCHID(32/64位)
访问属性:R/W:可读写;Privilege:U;Standard/not:非标准;与安全装置相关性:相关
功能描述:用来保存U模式下第一类指令转移和中断/异常产生后转移地址所在共同的页面标识信息。
增加CSR_CMSATTR寄存器信息:
除0、1、2位外,其它位用来记录PC即程序计数器中地址值所在页面标识信息。
其余内容一致。
S-D-A2、增加页表项内容
与实施例3中S-C-A2所述内容一致。
S-D-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能
与实施例3中S-C-A3所述内容一致。
S-D-A4、在安全装置中增加检查数据访问是否跨边界的功能
与实施例3中S-C-A4所述内容一致。
S-D-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息:
与实施例2中S-B-A4所述内容一致。
S-D-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息:
与实施例2中S-B-A5所述内容一致。
S-D-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息:
将中断/异常发生时,将确保安全装置有效所需现场信息,保存进安全装置中相应的专用寄存器,优选的,还要保存中断/异常发生时是否需要检查指令边界标识信息;处理器需提供信息标识,表明当前由中断/异常产生导致转移,标识信息被记录在安全装置的专用寄存器中;将装置中专用边界寄存器的值,设置为第一类指令转移和中断/异常转移共同中转区域的页面标识信息;转移至第一类指令转移和中断/异常转移共同的转移地址;其余操作与现有中断、异常的处理一致。具体包括:
中断或异常产生时:
如果当前模式为U,则检查中断委托到的模式:
如果委托到U模式,则检查U模式下是否打开安全装置,即检查CSR_EMSUR寄存器0位是否为1,如果为1,用CSR_UTMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后用CSR_UMSIRID寄存器中保存的U模式下第一类指令转移和中断/异常产生后转移地址所在共同的页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,最后用CSR_UMSCHADDR寄存器中数值设置PC;
如果委托到S模式,则检查S模式下是否打开安全装置,即检查CSR_EMSUR寄存器1位是否为1,如果为1,用CSR_STMSATTR寄存器保存CSR_CMSATTR寄存器的数值,将CSR_CMSATTR寄存器0位置1,1位置1,之后用CSR_SMSIRID寄存器中保存的S模式下第一类指令转移和中断/异常产生后转移地址所在共同的页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,最后用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模式下第一类指令转移和中断/异常产生后转移地址所在共同的页面标识信息,设置CSR_CMSATTR寄存器中页面标识信息相应的位,最后用CSR_SMSCHADDR寄存器中数值设置PC。
S-D-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息:
与实施例3中S-C-A8所述内容一致。
保障装置的实施方式:
S-D-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域:
与实施例2中S-B-A8所述内容一致。
S-D-A10、识别需要保障的寄存器的方式:
与实施例2中S-B-A9所述内容一致。
S-D-A11、访问专用寄存器时增加访问控制的功能:
与实施例2中S-B-A10所述内容一致。
S-D-A12、允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件:
与实施例2中S-B-A11所述内容一致。
Claims (32)
1.一种计算装置,其特征在于:包括安全装置和保障装置;
所述安全装置基于硬件针对内存区域进行访问控制;所述保障装置基于硬件确保只有在特定状态下才能设置使所述安全装置有效的控制状态数据和执行使所述安全装置有效的特定指令;
所述保障装置,包括:仅在中转区域中,发生跨区域转移指令执行、中断/异常产生或中断返回时,才能访问确保安全装置有效所需的信息和确保保障装置有效所需的状态数据。
2.根据权利要求1所述的装置,其特征在于:所述安全装置,包括:拦截非法跨越内存区域边界的访问;提供合法跨越内存区域边界的方式;
所述内存区域边界是指:处理器认定的由内存地址值所构成的区域边界或处理器认定的由页面标识信息所标定的区域边界。
3.根据权利要求2所述的装置,其特征在于:所述拦截非法跨越内存区域边界的访问,包括:如果待执行的指令地址超出处理器认定的内存区域边界,处理器报异常;如果数据读写目标的地址超出读写指令匹配的内存区域边界,处理器报异常。
4.根据权利要求2所述的装置,其特征在于:所述提供合法跨越内存区域边界的方式,包括:执行专用的跨区域转移指令或发生中断/异常时,必须先转移至中转区域,再由此区域中代码进行边界切换并转移至最终的目标地址。
5.根据权利要求4所述的装置,其特征在于,如果二者转移到相同中转区域的共同代码位置,由硬件提供标识信息,以区别转移是由执行跨区域转移指令引起还是由产生中断/异常引起;中断返回也会导致跨区域转移。
6.根据权利要求1所述的装置,其特征在于:仅有跨区域转移指令执行,和/或,中断/异常产生,和/或,中断返回导致跨区域转移。
7.根据权利要求1所述的装置,其特征在于:在安全装置中设置安全功能,和/或,在保障装置中设置保障功能的开关,关闭该开关,则装置失效。
8.一种安全装置的制作方法,包括:制作边界检查装置的方法和提供合法跨越内存区域边界的方法;
所述制作边界检查装置的方法包括:制作指令边界检查装置的方法和指令数据边界检查装置的方法;
所述提供合法跨越内存区域边界的方法包括:提供专用的跨区域转移指令,执行此类指令时,转移至中转区域。
9.根据权利要求8所述的方法,其特征在于:所述制作指令边界检查装置的方法包括:由处理器认定当前内存区域范围,并判断待执行指令所在地址是否在此区域范围之内,如在,可正常取址,如不在,处理器报出异常。
10.根据权利要求8所述的方法,其特征在于:制作指令数据边界检查装置的方法包括:由处理器认定若干组数据存储区域边界,针对每组数据区域匹配不同的读写指令,在对内存进行读写时,根据不同的读写指令判断操作地址是否在匹配的数据边界中,如在,可正常访问,如不在,则报出异常;设置多组数据区的目的是为了区分程序的数据区、栈区以及用作其他用途的独立数据区。
11.根据权利要求9所述的方法,其特征在于:由处理器认定当前内存区域范围,并判断待执行指令所在地址是否在此范围之内的可采用:
处理器设置专用存储设施保存当前内存区域边界地址值,在执行指令时,判断处理器的程序计数器的地址值是否在边界范围中,如在,表明没有超出所述范围,如不在,表明超出所述范围;
或,
在内存页面的属性中添加标识信息,处理器记录当前页面标识信息,在执行指令时,判断处理器中程序计数器所存地址所在的页面标识信息是否与当前的页面标识信息一致,如一致,表明没有超出所述范围,否则表明超出所述范围的方式实现。
12.根据权利要求11所述的方法,其特征在于:在安全装置设置开关,在所述开关处在关状态时,不进行指令边界检查和数据边界检查。
13.根据权利要求8所述的方法,其特征在于:提供专用转移指令,执行此类指令时,完成由中转区域到目标区域的转移;在中断返回时,通过中断指令执行从中转区域返回中断现场,恢复现场信息。
14.根据权利要求8所述的方法,其特征在于:
所述跨区域转移的指令,简称第一类指令,此类指令执行时转移到中转区域入口位置,指令同时将当前区域边界切换为中转区域边界,和/或,同时也将当前可访问的数据区域边界切换为中转区域中代码可访问的数据区域边界,如果不在第一类指令中对当前区域边界进行切换,处理器需在第一类指令执行后忽略指令边界检查。
15.根据权利要求14所述的方法,其特征在于,中转区域入口位置通过默认的固定存储设施来存储,不必出现在第一类指令中。
16.根据权利要求14所述的方法,其特征在于,转移目标地址通过第一类指令的操作数指定,或通过特定的专用寄存器来指定。
17.根据权利要求13所述的方法,其特征在于:
所述专用转移指令,简称第二类指令,此类指令用于从中转区域转移到指定地址;和/或,指令同时将当前区域边界切换为目标地址所属区域边界,和/或,同时也将中转区域可访问的数据区域边界切换为目标区域中代码可访问的数据区域边界。
18.根据权利要求17所述的方法,其特征在于,第二类指令的目标地址应为第一类指令指定的转移目标地址,二者协同完成区域间的转移。
19.根据权利要求17所述的方法,其特征在于,如果第一类指令执行会导致处理器不进行指令边界检查,那么第二类指令则应指定是否恢复指令边界检查。
20.根据权利要求17所述的方法,其特征在于,转移目标地址通过第二类指令操作数指定,或通过特定的专用寄存器来指定。
21.根据权利要求13所述的方法,其特征在于:在中断、异常发生时,通过处理器硬件机制转移至中转区域,进一步包括:在产生中断/异常后,先保存中断现场的确保安全装置有效所需信息,然后将当前区域边界设置为中转区域边界,同时也将当前区域可访问的数据区域边界切换为中转区域代码可访问的数据区域边界,并转移至指定的指令位置。
22.根据权利要求21所述的方法,其特征在于,如果不在中断/异常产生时对当前区域边界进行切换,处理器需在中转区域中忽略指令边界检查。
23.根据权利要求13所述的方法,其特征在于:如果所述安全装置包含开关,则开关处于关状态时,不能够执行第一类指令、第二类指令,执行会报出异常。
24.一种保障装置的制作方法,其特征在于:
将确保安全装置有效所需的信息和确保保障装置有效所需的状态数据,保存在专用存储设施中;
设置专用存储设施标记各个专用存储设施的访问状态;处理器根据访问状态信息确保,只有在中转区域中,发生跨区域转移指令执行、中断/异常产生或中断返回时,才能访问这些存储设施;第二类指令仅可在第一类指令转移到的中转区域中执行;
所述确保安全装置有效所需的信息包括:全局数据所在内存区域的边界信息;栈数据所在内存区域的边界信息;其它种类数据所在内存区域边界信息;转移指令所需中转代码的首地址;转移指令所需中转区域的边界信息;中断/异常所需中转代码的首地址;中断/异常服务程序所需中转区域的边界信息;安全装置开启/关闭标识信息。
25.根据权利要求24所述的方法,其特征在于:所述所需中转代码的首地址是指当执行第一类指令或发生中断/异常时,必须转移到的位置。
26.根据权利要求25所述的方法,其特征在于:所述中转区域是指:当执行第一类指令或发生中断/异常时,转移地址所在区域,转移地址被记录在装置中。
27.根据权利要求26所述的方法,其特征在于,中转区域中的指令执行时不进行指令边界检查。
28.根据权利要求25所述的方法,其特征在于:所述保障装置所需的状态数据包括:转移指令所需的中转区域;或,中断/异常所需的中转区域。
29.一种安全装置和与之匹配的保障装置的制作方法,其特征在于:内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据;
所述安全装置的制作方法,包括:
M-A-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息;
M-A-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能;
M-A-A3、在安全装置中增加检查数据访问是否跨边界的功能;
M-A-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息;
M-A-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息;
M-A-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-A-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
所述保障装置的制作方法,包括:
M-A-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域;
M-A-A9、识别需要保障的寄存器的方式;
M-A-A10、访问专用寄存器时增加访问控制的功能;
M-A-A11、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件。
30.一种安全装置和与之匹配的保障装置的制作方法,其特征在于:内存区域边界信息由内存地址值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域;转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据;
所述安全装置的制作方法,包括:
M-B-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息;
M-B-A2、在安全装置中增加检查待执行的指令的地址是否跨边界的功能;
M-B-A3、在安全装置中增加检查数据访问是否跨边界的功能;
M-B-A4、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息;
M-B-A5、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息;
M-B-A6、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-B-A7、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
所述保障装置的制作方法,包括:
M-B-A8、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域;
M-B-A9、识别需要保障的寄存器;
M-B-A10、访问专用寄存器时增加访问控制的功能;
M-B-A11、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件。
31.一种安全装置和与之匹配的保障装置的制作方法,其特征在于:
内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至不同中转区域,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据;
所述安全装置的制作方法,包括:
M-C-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息;
M-C-A2、增加页表项内容;
M-C-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能;
M-C-A4、在安全装置中增加检查数据访问是否跨边界的功能;
M-C-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息;
M-C-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息;
M-C-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-C-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
所述保障装置的制作方法,包括:
M-C-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域;
M-C-A10、识别需要保障的寄存器;
M-C-A11、访问专用寄存器时增加访问控制的功能;
M-C-A12、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件。
32.一种安全装置和与之匹配的保障装置的制作方法,其特征在于:
内存区域边界信息由内存地址值,和/或,页面标识值构成,第一类指令执行和中断/异常产生分别转移至相同中转区域;转移到共同代码位置,并通过专用存储设施记录安全装置所需信息和保障装置所需的状态数据;
所述安全装置的制作方法,包括:
M-D-A1、设置记录确保安全装置有效所需信息的专用寄存器组,用以记录各类内存区域边界信息、中断现场信息、跨区域所需特定地址信息、安全装置开启/关闭标识信息;
M-D-A2、增加页表项内容;
M-D-A3、在安全装置中增加检查待执行的指令的地址是否跨边界的功能;
M-D-A4、在安全装置中增加检查数据访问是否跨边界的功能;
M-D-A5、在安全装置中增加第一类指令,发起跨区域的转移动作及设置确保安全装置有效所需信息;
M-D-A6、在安全装置中增加第二类指令,完成到目标区域的转移及设置确保安全装置有效所需信息;
M-D-A7、在安全装置中增加中断/异常产生时的功能,保存确保安全装置有效的现场信息及设置确保安全装置有效所需信息;
M-D-A8、在安全装置中增加中断返回时的功能,恢复确保安全装置有效的现场信息;
所述保障装置的制作方法,包括:
M-D-A9、设置记录保障装置所需的状态数据的专用寄存器组,记录当前是否处于中转区域;
M-D-A10、识别需要保障的寄存器;
M-D-A11、访问专用寄存器时增加访问控制的功能;
M-D-A12、设置允许及限制访问安全装置和保障装置的专用寄存器以及执行跨区域转移执行和专用寄存器访问指令的条件。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110928253.5A CN113626843A (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
CN201910278179.XA CN110008726B (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910278179.XA CN110008726B (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110928253.5A Division CN113626843A (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110008726A CN110008726A (zh) | 2019-07-12 |
CN110008726B true CN110008726B (zh) | 2021-08-20 |
Family
ID=67170339
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910278179.XA Active CN110008726B (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
CN202110928253.5A Pending CN113626843A (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110928253.5A Pending CN113626843A (zh) | 2019-04-09 | 2019-04-09 | 一种运行时访问控制装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN110008726B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 南通大学 | 内存保护单元中用户控制区域的划分方法及内存保护*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7203798B2 (en) * | 2003-03-20 | 2007-04-10 | Matsushita Electric Industrial Co., Ltd. | Data memory cache unit and data memory cache system |
-
2019
- 2019-04-09 CN CN201910278179.XA patent/CN110008726B/zh active Active
- 2019-04-09 CN CN202110928253.5A patent/CN113626843A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 (1)
Title |
---|
带内存保护的FreeRTOS在TMS570上的移植;胡丽辉等;《单片机与嵌入式***应用》;20150325;第15卷(第2期);第1.2-3.5节及图2及表1 * |
Also Published As
Publication number | Publication date |
---|---|
CN110008726A (zh) | 2019-07-12 |
CN113626843A (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI726925B (zh) | 用於管理有界指標的裝置和方法 | |
US8010772B2 (en) | Protected function calling | |
US20070050586A1 (en) | Memory access control apparatus | |
US8234476B2 (en) | Information processing apparatus and method of updating stack pointer | |
CN105980993A (zh) | 用于辨识对应目标内存地址的内存属性单元的区域的区域辨识操作 | |
CN105787360A (zh) | 一种嵌入式***内存安全访问控制的技术实现方法 | |
JP7128206B2 (ja) | 機能の使用を管理するための装置および方法 | |
US11347508B2 (en) | Apparatus and method for managing a capability domain | |
US20050257016A1 (en) | Digital signal controller secure memory partitioning | |
CN114902178A (zh) | 域转换禁用配置参数 | |
US6519684B1 (en) | Low overhead method for selecting and updating an entry in a cache memory | |
US11080058B2 (en) | Apparatus and method for controlling a change in instruction set | |
JP2010186386A (ja) | プロセッサ | |
CN110647764B (zh) | 针对用户态非易失性内存文件***的保护方法及*** | |
KR100791815B1 (ko) | 컴퓨터 시스템 및 컴퓨터 시스템에서 인스트럭션을 실행하는 방법 | |
CN110008726B (zh) | 一种运行时访问控制装置和方法 | |
WO2019237865A1 (zh) | 一种数据保护方法及计算装置 | |
CN100354829C (zh) | 安全处理***内的异常类型 | |
CN110162965B (zh) | 一种运行时访问控制方法及计算装置 | |
CN106919366B (zh) | 实现堆栈自适应保护的处理器 | |
TW202131191A (zh) | 用於控制對一組記憶體映射的控制暫存器的存取的設備及方法 | |
TW202418067A (zh) | 堆疊指標切換有效性檢查 | |
CN114902180A (zh) | 模间调用分支指令 | |
TW202318210A (zh) | 用於處理密封能力之技術 | |
JPH01180656A (ja) | メモリ保護装置 |
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 |