CN106874796B - 系统运行中指令流的安全检测和容错方法 - Google Patents

系统运行中指令流的安全检测和容错方法 Download PDF

Info

Publication number
CN106874796B
CN106874796B CN201710083965.5A CN201710083965A CN106874796B CN 106874796 B CN106874796 B CN 106874796B CN 201710083965 A CN201710083965 A CN 201710083965A CN 106874796 B CN106874796 B CN 106874796B
Authority
CN
China
Prior art keywords
block
instruction
instruction stream
error correction
multiple error
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
Application number
CN201710083965.5A
Other languages
English (en)
Other versions
CN106874796A (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.)
ZHONGYUN XIN'AN (SHENZHEN) TECHNOLOGY Co.,Ltd.
Original Assignee
Zhongyun Xin'an Shenzhen Technology Co ltd
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 Zhongyun Xin'an Shenzhen Technology Co ltd filed Critical Zhongyun Xin'an Shenzhen Technology Co ltd
Priority to CN201710083965.5A priority Critical patent/CN106874796B/zh
Publication of CN106874796A publication Critical patent/CN106874796A/zh
Application granted granted Critical
Publication of CN106874796B publication Critical patent/CN106874796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions

Abstract

本发明公开了一种系统运行中指令流的安全检测和容错方法,该方法在原始指令流和执行指令流之间增加了一级作为缓冲的指令流,被称为中间指令流,设置PRAM存储中间指令流,PFLASH中存储原始指令流,FLASH和CPU之间增加一级缓存中间指令流,缓存的采用类Cache的结构,不需要编址,指令流的存储和检测都由硬件自动完成。可以方便对原始指令流的读写和权限进行管理,还可以将攻击产生的故障隔离在原始指令流之外,更方便的对攻击进行安全检测和容错管理。

Description

系统运行中指令流的安全检测和容错方法
技术领域
本发明属于指令流技术领域,特别涉及系统运行中指令流的安全检测和容错技术。
背景技术
指令流是CPU要运行的指令集合,决定着CPU执行的功能。如果指令流有故障,则CPU将执行错误的指令,引起系统功能紊乱或崩溃。所以,在系统运行中保证指令流的可靠性和正确性是CPU正确运行的前提。同时,指令流也是各种攻击的重点和目标,它们需要篡改指令,挟持CPU,进行攻击。
由此可见,保证指令流的可靠性和正确性是保证系统可靠性和安全性的关键,而且,对指令流进行监控和安全检测可以对绝大部分的攻击起到有效的防护作用。
如专利申请201210057989.0公开了一种用于基于由计算单元在执行程序期间被执行的指令算出签名的设备和方法。该方法包括:当接收到中断请求时从签名模块中借助与中断请求相关的中断例程的程序语句读出与所中断的程序相关的签名,借助中断例程的程序语句存储该签名并且在离开中断例程之前借助中断例程的程序语句将所存储的签名写到签名模块中,或者当对子函数进行调用时,在调用子函数之前借助引起签名相对改变的程序语句使签名寄存器中的签名与子函数的签名相适配,以及在从子函数返回到程序的从中实现子函数的调用的程序段之后,借助其他的引起签名相对改变的程序语句来使签名寄存器中的签名与所述程序段的签名相适配。
然而,由于该方法是通过执行例程的中断请求结合签名,进行认证,调用相关子函数,具有一定的安全检测功能,但是并具备容错功能,且该方法效率不高,且并不能避免软件的攻击。
发明内容
针对上述问题,本发明提供了一种系统运行中指令流的安全检测和容错方法,该方法FLASH和CPU之间增加一级缓存,既可以方便对原始指令流的读写和权限进行管理,还可以将攻击产生的故障隔离在原始指令流之外,更方便的对攻击进行安全检测和容错管理。
本发明的另一个目的在于提出一种系统运行中指令流的安全检测和容错方法,该方法实现简便,安全可靠,且能够有效地避免外来攻击。
为实现上述目的,本发明的技术方案为:
一种系统运行中指令流的安全检测和容错方法,其特征在于在FLASH等非挥发性存储器中存储的经过安全认证的指令流称为原始指令流,将CPU接收到的实际执行的指令流称为执行指令流,在原始指令流和执行指令流之间增加了一级作为缓冲的指令流,被称为中间指令流,设置PRAM存储中间指令流,PFLASH中存储原始指令流,FLASH和CPU之间增加一级缓存中间指令流,缓存的采用类Cache的结构,不需要编址,指令流的存储和检测都由硬件自动完成。可以方便对原始指令流的读写和权限进行管理,还可以将攻击产生的故障隔离在原始指令流之外,更方便的对攻击进行安全检测和容错管理。
为了实现对指令流的安全检测和容错,我们将指令流分级处理。在原始指令流和执行指令流之间增加了一级作为缓冲的中间指令流,原始指令流在输出给CPU成为执行指令流之前,先进行一步缓存,通过中间指令流既可以方便对原始指令流的读写和权限进行管理,还可以将攻击产生的故障隔离在原始指令流之外,更方便的对攻击进行安全检测和容错管理。
系统的原始指令流和原始数据流存储在非挥发的FLASH中,为了方便系统运行时对指令流的动态安全检测和容错,将非挥发FLASH分成若干块,且每个块的大小一样,同时,满足每一个块不能把程序和数据混存,即一个块内要么都是程序,要么都是数据,不能既有程序又有数据。在实际存储中存储指令流的FLASH块和存储数据流的FLASH块都在同一块FLASH中,而且一个FLASH块是指令流FLASH块还是数据流FLASH块也可以根据需要确定和改变。简言之,FLASH可以分成两个组成部分,一个是存储原始指令流的PFLASH,另一个是存储原始数据流的DFLASH。
程序RAM和数据RAM,也叫PRAM和DRAM,是指令流的动态安全检测和容错的关键,它们实现了对指令流和数据流的分级管理,也是存储中间指令流的存储器。程序RAM和数据RAM不独立编址,它的读写和替换由硬件自动完成;同时因为安全检测和容错过程与软件无关,也增强了该方法对软件攻击的检测效果。程序RAM和数据RAM也分成若干块,块的大小和FLASH中块的大小相同,程序RAM中的块只存储程序;数据RAM中的块只存储数据。
所述PFLASH不能轻易被写入,只有经过认证的程序才能由DMA在特定的条件下才能将新程序写入PFLASH,否则,PFLASH不开放写权限。
PFLASH的读操作同样是由DMA发起的。在需要读PFLASH的时候,DMA将PFLASH中对应的一块指令流传输给PRAM,为了提高系统的速度,同时将CPU需要的指令发给CPU。
由于增加了读写访问的权限,软件攻击很难进入到PFLASH中,从而实现了PFLASH对软件攻击的静态防护。由于FLASH的特殊制作工艺,使FLASH的抗硬件攻击能力比RAM要强的多。在进行硬件攻击的时候,RAM比FLASH更敏感,通过对RAM的安全检测可以做到在FLASH出错前就检测出硬件攻击,达到对PFLASH防护的目的。
进一步,所述FLASH具有保护电路,且该FLASH保护电路具有权限管理模块及指令多重纠错码产生和状态维护模块,总线主机(可能是CPU也可能是DMA)先给FLASH传送一段验证码,FLASH保护电路的权限管理模块接收这段验证码,并进行验证。如果通过验证,权限管理模块输出允许写入信号,如果没有通过验证,权限管理模块输出报警信号。所述FLASH保护电路的权限管理模块同时维护着指令块、数据块的标志位。FLASH保护电路的权限保护电路管理模块产生的允许写入信号和接下来总线上传输的地址、数据和控制信号一起,输入给指令多重纠错码产生和状态维护模块。
更进一步,为了保证PFLASH可靠性和安全性,将块纠错码和指令纠错码联合使用,块纠错码在程序进行认证时产生,并和程序一起传输、存储。对于指令块,还需要保存它的块多重纠错码。在FLASH保护电路生成的多重纠错码是以指令为单位产生的纠错码。除了对指令流产生纠错码之外,对块多重纠错码也会产生指令多重纠错码,这样的双重保护可以保证块多重纠错码的可靠性和正确性。
在FLASH保护电路中同样维护这FLASH块的状态信息,如块有效标志位、块替换日志等等。
在指令流从FLASH中读出时,指令多重纠错码产生和状态维护模块计算读出指令流的指令多重纠错码,和写入时计算的纠错码值进行比较,如果一致说明指令流正确,如果不一致并不能纠正,说明指令流有纠正不了的故障,发出报警信号。如果块多重纠错码的指令多重纠错码显示有故障,则说明块多重纠错码已经失效,已经无法保证指令流动态安全检测的可靠性,发出报警信号,并停止运行指令流。
有了PFLASH的权限管理和联合多重纠错码的保护,可以保证FLASH的可靠性和正确性。
PRAM是存储中间指令流的地方,也是可以集中攻击产生的故障的地方。通过对PRAM的安全检测和容错就可以检测出大部分软件攻击和硬件攻击。PRAM以块为单位进行传输。当PRAM接收到CPU的取指信号和取指地址后,判断该指令所在的块是否已经在PRAM中。如果在,CPU取指执行;如果不在,DMA从PFLASH中搬运该块给PRAM,同时搬运该块的块多重纠错码,存储在保护电路中。在指令流被CPU执行的过程中,PRAM保护电路时刻检测发送给CPU的指令流的指令多重纠错码和存储在保护电路中的块多重纠错码,实现对执行指令流的动态实时监控。同时,通过监控PRAM中块执行和块替换日志,可以监控CPU的行为,检测一些系统异常,如侧信道攻击等。
进一步,对于PRAM,设有PRAM保护电路,用两种纠错码进行保护,一种是块多重纠错码,一种是指令多重纠错码。这两种纠错码其实都是多重纠错码,不同的是参与纠错的数据量不同。
更进一步,所述PRAM保护电路由块维护、动态保护模块和静态保护模块三部分构成;其中,块维护中包含块表、块替换等模块,块表中维护着FLASH地址和DRAM地址之间的映射块表,可以对块表进行查找和维护等,块替换是在DRAM已满时进行块替换的判断、选择和替换等;动态保护模块中存储着每个块的块多重纠错码,块多重纠错码和指令流一起从FLASH中传输到PRAM,并保存在动态保护模块的存储块多重纠错码中。
静态保护模块主要负责对指令流在PRAM中的改动进行安全检测。静态保护采用以指令为单位的多重纠错码,在指令写入PRAM时由静态保护电路计算该指令的多重纠错码,并将指令多重纠错码保存在PRAM中。
本发明通过这种全方位的指令流动态安全检测和容错策略,可以有效地保证指令流的安全,保证大部分攻击是可以被检测、识别和防护的。
附图说明
图1为本发明所实施的系统架构示意图。
图2为本发明所实施PFLASH的安全检测结构图。
图3为本发明所实施DRAM的安全检测结构图。
图4为本发明所实施PRAM保护电路的结构图。
图5为本发明所实施PRAM中动态保护模块的结构图。
图6为本发明所实施PRAM中静态保护模块的结构图。
图7本发明所实施高速RAM的安全检测结构图。
图8为本发明所实施CPU指令流执行流程图。
图9为本发明所实施PRAM故障检测流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
图1所示,为本发明所实现的系统运行中数据流的安全检测和容错方法,所述方法通过CPU执行系统指令,通过DMA完成系统中数据的搬运,并通过CPU总线和DMA总线与外设和存储器进行交互,其特征在于FLASH可以分成两个组成部分,一个是存储原始指令流的PFLASH,另一个是存储原始数据流的DFLASH;所述RAM分为程序RAM和数据RAM,也叫PRAM和DRAM,分别实现对指令流和数据流的分级管理;所述PFLASH、DFLASH、PRAM和DRAM均设有保护,在CPU运行程序时,将数据以块为单位传输到DRAM,CPU从DRAM中取数执行。
具体地说,在数据流安全检测和容错策略应用的系统结构中,有两条总线:一条是CPU总线,由CPU作为总线主机,其余设备,包括DMA、外设和存储器,都作为总线从机;另一条是DMA总线,由DMA作为总线主机负责在外设和存储器之间搬运数据,外设和存储器作为总线从机。两条总线的好处是CPU和DMA可以并行运行,提高系统的效率。
CPU是系统中执行指令,完成设计功能的主要部件,也是有效攻击的主要目标。在执行功能时,CPU发出取指地址,从存储器中取得一条指令执行,在将执行结果写入存储器中,同时生成下一条指令的地址。
DMA是系统中负责搬运数据的部件,它可以和CPU并行执行,在CPU执行指令功能的同时在外设和存储器之间或不同存储器之间搬运数据。由于DMA可以以块为单位进行数据搬运,所以,它的效率比较高。
算法子系统是进行加密和解密的模块,和CPU总线和DMA总线都相连。
接口、系统控制和系统运行参数配置等外设通过AHB总线与CPU总线和DMA总线相连。
系统的原始指令流和原始数据流存储在非挥发的FLASH中,为了方便系统运行时对指令流的动态安全检测和容错,将非挥发FLASH分成若干块,且每个块的大小一样,同时,满足每一个块不能把程序和数据混存,即一个块内要么都是程序,要么都是数据,不能既有程序又有数据。在实际存储中存储指令流的FLASH块和存储数据流的FLASH块都在同一块FLASH中,而且一个FLASH块是指令流FLASH块还是数据流FLASH块也可以根据需要确定和改变。简言之,FLASH可以分成两个组成部分,一个是存储原始指令流的PFLASH,另一个是存储原始数据流的DFLASH。
程序RAM和数据RAM,也叫PRAM和DRAM,是指令流的动态安全检测和容错的关键,它们实现了对指令流和数据流的分级管理,也是存储中间指令流的存储器。程序RAM和数据RAM不独立编址,它的读写和替换由硬件自动完成。这减少了软件程序员的工作量。同时因为安全检测和容错过程与软件无关,也增强了该方法对软件攻击的检测效果。程序RAM和数据RAM也分成若干块,块的大小和FLASH中块的大小相同。同时,程序RAM中的块只存储程序;数据RAM中的块只存储数据。
高速RAM是系统提供的用来进行系统和外设之间的数据交换的RAM。
设置PRAM存储中间指令流,可以方便的实现对指令流的动态安全检测和容错。
PFLASH中存储原始指令流,是安全防护的重点。因为,在没有冗余备份的情况下,PFLASH中的原始指令流一旦被破坏,就无法恢复。要保证PFLASH的安全,除了利用多重纠错码保护并检测之外,更重要的是提高PFLASH的权限,即限制PFLASH的读写。在本设计方案中,PFLASH不能轻易被写入,只有经过认证的程序才能由DMA在特定的条件下才能将新程序写入PFLASH,否则,PFLASH不开放写权限。同时,为了保证多重纠错码和认证的指令流是严格一致的,在程序认证的同时计算纠错码,并保存在指令流的相应位置。为了指令流在认证过程中的可靠性和完整性,可以同时采用哈希算法来避免软件攻击中途篡改程序。可以看出,系统写指令流到PFLASH要经过认证,只有系统认可的程序才能写入PFLASH,这就在极大程度上对软件攻击篡改FLASH进行了保护。同时,保证指令流和纠错码的一致性,可以准确的检测出与原始指令不一致的指令流。有了这两点,就可以保护FLASH中的原始指令流和它的纠错码是绝对正确的。
PFLASH的读操作同样是由DMA发起的。在需要读PFLASH的时候,DMA将PFLASH中对应的一块指令流传输给PRAM。为了提高系统的速度,同时,将CPU需要的指令发给CPU。
由于增加了读写访问的权限,软件攻击很难进入到PFLASH中,从而实现了PFLASH对软件攻击的静态防护。由于FLASH的特殊制作工艺,使FLASH的抗硬件攻击能力比RAM要强的多。在进行硬件攻击的时候,RAM比FLASH更敏感,通过对RAM的安全检测可以做到在FLASH出错前就检测出硬件攻击,达到对PFLASH防护的目的。
PRAM是存储中间指令流的地方,也是可以集中攻击产生的故障的地方。通过对PRAM的安全检测和容错就可以检测出大部分软件攻击和硬件攻击。PRAM以块为单位进行传输。当PRAM接收到CPU的取指信号和取指地址后,判断该指令所在的块是否已经在PRAM中。如果在,CPU取指执行;如果不在,DMA从PFLASH中搬运该块给PRAM,同时搬运该块的块多重纠错码,存储在保护电路中。在指令流被CPU执行的过程中,PRAM保护电路时刻检测发送给CPU的指令流的指令多重纠错码和存储在保护电路中的块多重纠错码,实现对执行指令流的动态实时监控。同时,通过监控PRAM中块执行和块替换日志,可以监控CPU的行为,检测一些系统异常,如侧信道攻击等。
高速RAM是外设和系统进行数据交换的存储器,一般由DMA读写。同时高速RAM也可以是新程序在认证之前暂存的存储器。对它的保护可以采用块多重纠错码和数据多重纠错码联合保护的方式。
有了这种全方位的指令流动态安全检测和容错策略,可以保证大部分攻击是可以被检测、识别和防护的。
在FLASH中指令块和数据块混合存储,有标志位标识该块是指令块还是数据块。对PFLASH的保护主要是多重纠错码的静态保护和权限管理。如图2所示。
在写PFLASH时,总线主机(可能是CPU也可能是DMA)先给FLASH传送一段验证码,FLASH保护电路的权限管理模块接收这段验证码,并进行验证。如果通过验证,权限管理模块输出允许写入信号,如果没有通过验证,权限管理模块输出报警信号。权限管理模块同时维护着指令块、数据块的标志位。权限保护电路产生的允许写入信号和接下来总线上传输的地址、数据和控制信号一起,输入给指令多重纠错码产生和状态维护模块。为了保证PFLASH可靠性和安全性,可以采用联合纠错码,即将块纠错码和指令纠错码联合使用。块纠错码在程序进行认证时产生,并和程序一起传输、存储。对于指令块,还需要保存它的块多重纠错码。在FLASH保护电路生成的多重纠错码是以指令为单位产生的纠错码。除了对指令流产生纠错码之外,对块多重纠错码也会产生指令多重纠错码,这样的双重保护可以保证块多重纠错码的可靠性和正确性。
在保护电路中同样维护这FLASH块的状态信息,如块有效标志位、块替换日志等等。
在指令流从FLASH中读出时,指令多重纠错码产生和状态维护模块计算读出指令流的指令多重纠错码,和写入时计算的纠错码值进行比较,如果一致说明指令流正确,如果不一致并不能纠正,说明指令流有纠正不了的故障,发出报警信号。如果块多重纠错码的指令多重纠错码显示有故障,则说明块多重纠错码已经失效,已经无法保证指令流动态安全检测的可靠性,发出报警信号,并停止运行指令流。
有了PFLASH的权限管理和联合多重纠错码的保护,可以保证FLASH的可靠性和正确性。
如图3所示,CPU从PRAM中取指执行,PRAM是存储中间指令流的地方,也是指令流动态安全检测和容错的关键点。对于PRAM,设有PRAM保护电路,用两种纠错码进行保护,一种是块多重纠错码,一种是指令多重纠错码。这两种纠错码其实都是多重纠错码,不同的是参与纠错的数据量不同。因为多重纠错码可以评估纠错能力和故障类型,所以,采用多重纠错码可以判断出纠错后能不能得到原始的正确数据。块多重纠错码以一块的数据为单位,是指令流动态检测的一种手段,检测原始指令流和执行指令流是否一致。指令纠错码以一条指令为单位,是PRAM的静态检测手段,主要检测指令在PRAM中有没有不合法的改动。
如图4所示,PRAM保护电路由块维护、动态保护模块和静态保护模块三部分构成。块维护中包含块表、块替换等模块。
块表中维护着FLASH地址和DRAM地址之间的映射块表,可以对块表进行查找和维护等,块替换是在DRAM已满时进行块替换的判断、选择和替换等。
由于PRAM不独立编址,它接收到的CPU取指地址实际上是FLASH的地址。通过查找块维护中的映射块表,判断这个地址是否已经在PRAM中,如果已经在PRAM中,则对FLASH的地址进行转换,得到该指令在PRAM中的地址。如果不在PRAM中,则发出失效中断,同时给出FLASH的地址。CPU接收到失效中断,暂停取指操作,给DMA发送指令,将FLASH中该指令所在的块整体搬移到PRAM中。DMA接收到CPU的搬移指令和PRAM发出的FLASH地址后,准备进行块搬移。块替换模块接收到失效中断,经过替换算法,判断PRAM中哪一块将被新块替换掉,并将信息返还给块表模块。DMA的块搬移准备和PRAM的块替换可以并行进行。在PRAM写入一整块指令时,块表模块根据块替换的结果生成PRAM内部地址,将一整块指令写入PRAM中相应位置。
如图5所示,动态保护模块主要负责对指令流的动态安全检测。
动态保护模块中存储着每个块的块多重纠错码,块多重纠错码和指令流一起从FLASH中传输到PRAM,并保存在动态保护模块的存储块多重纠错码中。动态保护模块中也有一个表,维护着每个块中每条指令的已读情况。每一条指令在第一次读出执行的时候在计算纠错码模块计算这条指令所在块的部分块多重纠错码,计算出来的块多重纠错码存储在执行块多重纠错码中。当一个块内所有指令都读出执行结束,该块的执行块多重纠错码就计算出来了,此时,比较该块的执行块多重纠错码和存储块多重纠错码,如果不一致,发出PRAM改动报警。检测算法模块根据已读情况表中的数据,判断是否有PRAM块长时间没有读操作,并对长时间没有操作的块检测块多重纠错码。如果在检测算法判断一个块需要做检测的时候,或者一个块将要被替换出PRAM时,该块还有一些指令没有读出执行,就发出检测中断。CPU在接收到检测中断后暂停取指,动态保护模块根据已读情况表,向PRAM发出读地址,并将没有读出执行的指令读到动态保护模块中计算块多重纠错码。计算完成后检测该块的块多重纠错码,并恢复CPU功能。
如图6所示,静态保护模块主要负责对指令流在PRAM中的改动进行安全检测。静态保护采用以指令为单位的多重纠错码,在指令写入PRAM时由静态保护电路计算该指令的多重纠错码,并将指令多重纠错码保存在PRAM中。在每次CPU取指执行的时候,无论是否是第一次执行该指令,都计算并验证指令多重纠错码。静态保护可以检测并识别PRAM中非法的内容改动。它的优点是检测及时,缺点是无法检测通过合法手段进行的攻击。这个缺点就可以用动态保护来弥补。
图7所示,体现了高速RAM的保护策略,高速RAM是外设和系统进行数据交换的RAM。一般来说,外设的速度都比系统内运行速度慢,为了提高系统运行效率,设置高速RAM对外设的数据进行缓存。
图中计算指令纠错码、计算检验纠正因子和纠正数据是静态保护策略。静态保护策略以数据为单位,保证高速RAM中没有非法的内容改动,读出的数据和写入的数据相同。
在本设计中高速RAM还有一个任务。当新程序需要下载到该系统中时,新程序会在高速RAM中暂存,完成认证。为了保证程序在认证过程中和认证后被攻击软件篡改,可以采用哈希算法保证内存的完整性。认证后的程序将存储在FLASH中。
在程序从高速RAM转存到FLASH的过程中,根据读出数据计算新程序的块多重纠错码。将计算块多重纠错码的过程放在读高速RAM的时候,可以使块多重纠错码和认证的程序保持一致,防止攻击手段在中间篡改。计算后的块多重纠错码和程序一起写入FLASH。
图8所示,为CPU指令流执行流程图。图中,为了在系统运行中对指令流和数据流进行安全检测和容错,在CPU运行指令流的同时检测CPU接收到的指令流的块多重纠错码是否和FLASH中原始指令流的块多重纠错码一致。如果一致,说明CPU执行的指令流是原始指令流;如果不一致,说明CPU执行了有故障的指令流。
原始指令流的块多重纠错码和原始指令流一起传输,并存储在PRAM的动态保护模块。执行指令流的块多重纠错码需要在CPU读取PRAM中指令时进行计算。
在指令运行的时候,有些指令,如循环指令等,可以执行多次。对于这样的指令,只要在指令第一次执行的时候计算块多重纠错码就可以了,如果重复计算多次,会产生错误的块多重纠错码。
在PRAM读出一条指令给CPU执行后,如果该指令是一块中的最后一条指令,则表示该块内的所有指令都之行结束了,同时该块的块多重纠错码也计算出来了。此时可以比较根据执行指令流计算的块多重纠错码和原始指令流的块多重纠错码的一致性。
还有一些情况:由于跳转或条件选择等因素,一个块内有些指令在指令流执行时不执行。但是,如果一个块内有些指令不执行,就没有办法计算该块的块多重纠错码。这种情况下,如果该块在一定时间段内没有操作,或者,该块根据替换算法需要被替换,则在检测算法的指导下或在替换块之前,由动态检测模块中的检测算法模块向CPU发出检测中断,同时根据已读表生成检测PRAM地址给PRAM,读出那些还没有执行的指令。这些指令被读出后,没有放到总线上,而是直接读入动态检测模块中的计算块多重纠错码模块。待该块中所有的指令都被读出后,该块的块多重纠错码也已经计算完毕。此时可以比较根据执行指令流计算的块多重纠错码和原始指令流的块多重纠错码的一致性。
有些指令块在读入PRAM后可能长时间没有操作,这样的块容易被攻击者利用,在块内修改原始指令流。对于这种情况,在动态保护模块中的已读表模块内设置一个计数器。如果该块由操作,则计数器清0,同时其他块的计数器加1。当计数器的数值达到一定大小的时候,就表示这个块已经有一段时间没有操作了。则发送请求给动态检测模块中的检测算法模块。检测算法模块接收到该请求后,向CPU发出检测中断,同时根据已读表生成检测PRAM地址给PRAM,读出那些还没有执行的指令。这些指令被读出后,直接读入动态检测模块中的计算块多重纠错码模块。待该块中所有的指令都被读出后,该块的块多重纠错码也已经计算完毕。此时可以比较根据执行指令流计算的块多重纠错码和原始指令流的块多重纠错码的一致性。
当PRAM已满且CPU的取指指令不在PRAM时,PRAM块替换模块根据替换算法判断哪些块是要被替换的。在该块要被替换前,检测该块的块多重纠错码的一致性。
除了块多重纠错码,PRAM的静态保护模块在每一条指令被读出时计算该块的指令多重纠错码,同时和写入该指令时计算的指令多重纠错码进行比较,检测该指令在PRAM中的可靠性和正确性。
图9所示,当PRAM故障检测时,判断计算器的计数是否过大,然后检查块是否读完,并依据是否读完的结果进一步判断PRAM的故障。
总之,本发明通过这种全方位的指令流动态安全检测和容错策略,可以有效地保证指令流的安全,保证大部分攻击是可以被检测、识别和防护的。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (7)

1.一种系统运行中指令流的安全检测和容错方法,其特征在于在FLASH等非挥发性存储器中存储的经过安全认证的指令流称为原始指令流,将CPU接收到的实际执行的指令流称为执行指令流,在原始指令流和执行指令流之间增加了一级作为缓冲的指令流,被称为中间指令流,设置PRAM存储中间指令流,PFLASH中存储原始指令流,缓存中间指令流采用类Cache的结构,不需要编址,指令流的存储和检测都由硬件自动完成;
系统的原始指令流和原始数据流存储在非挥发的FLASH中,非挥发FLASH分成若干块,且每个块的大小一样,同时,一个块内要么都是程序,要么都是数据;
所述FLASH具有保护电路,且该FLASH保护电路具有权限管理模块及指令多重纠错码产生和状态维护模块,总线主机先给FLASH传送一段验证码,FLASH保护电路的权限管理模块接收这段验证码,并进行验证;所述FLASH保护电路的权限管理模块同时维护着指令块、数据块的标志位,FLASH保护电路的权限保护电路管理模块产生的允许写入信号和接下来总线上传输的地址、数据和控制信号一起,输入给指令多重纠错码产生和状态维护模块;
为了保证PFLASH可靠性和安全性,将块纠错码和指令多重纠错码联合使用,块纠错码在程序进行认证时产生,并和程序一起传输、存储;对于指令块,还需要保存它的块纠错码;在FLASH保护电路生成的多重纠错码是以指令为单位产生的指令多重纠错码;除了对指令流产生纠错码之外,对块多重纠错码也会产生指令多重纠错码,这样的双重保护可以保证块多重纠错码的可靠性和正确性。
2.如权利要求1所述的一种系统运行中指令流的安全检测和容错方法,其特征在于所述PFLASH不能轻易被写入,只有经过认证的程序才能由DMA在特定的条件下才能将新程序写入PFLASH,否则,PFLASH不开放写权限。
3.如权利要求2所述的一种系统运行中指令流的安全检测和容错方法,其特征在于程序RAM和数据RAM,也叫PRAM和DRAM,分别实现了对指令流和数据流的分级管理;程序RAM和数据RAM不独立编址,程序RAM和数据RAM也分成若干块,块的大小和FLASH中块的大小相同,程序RAM中的块只存储程序;数据RAM中的块只存储数据。
4.如权利要求1所述的一种系统运行中指令流的安全检测和容错方法,其特征在于在指令流从FLASH中读出时,指令多重纠错码产生和状态维护模块计算读出指令流的指令多重纠错码,和写入时计算的纠错码值进行比较,如果一致说明指令流正确,如果不一致并不能纠正,说明指令流有纠正不了的故障;如果块多重纠错码的指令多重纠错码显示有故障,则说明块多重纠错码已经失效,已经无法保证指令流动态安全检测的可靠性,发出报警信号,并停止运行指令流。
5.如权利要求3所述的一种系统运行中指令流的安全检测和容错方法,其特征在于PRAM以块为单位进行传输,当PRAM接收到CPU的取指信号和取指地址后,判断该指令所在的块是否已经在PRAM中;如果在,CPU取指执行;如果不在,DMA从PFLASH中搬运该块给PRAM,同时搬运该块的块多重纠错码,存储在保护电路中;在指令流被CPU执行的过程中,PRAM保护电路时刻检测发送给CPU的指令流的指令多重纠错码和存储在保护电路中的块多重纠错码,实现对执行指令流的动态实时监控。
6.如权利要求5所述的一种系统运行中指令流的安全检测和容错方法,其特征在于对于PRAM,设有PRAM保护电路,用两种纠错码进行保护,一种是块多重纠错码,一种是指令多重纠错码,这两种纠错码其实都是多重纠错码,不同的是参与纠错的数据量不同。
7.如权利要求6所述的一种系统运行中指令流的安全检测和容错方法,其特征在于所述PRAM保护电路由块维护、动态保护模块和静态保护模块三部分构成;其中,块维护中包含块表、块替换等模块,块表中维护着FLASH地址和DRAM地址之间的映射块表,对块表进行查找和维护,块替换是在DRAM已满时进行块替换的判断、选择和替换等;动态保护模块中存储着每个块的块多重纠错码,块多重纠错码和指令流一起从FLASH中传输到PRAM,并保存在动态保护模块的存储块多重纠错码中;静态保护模块主要负责对指令流在PRAM中的改动进行安全检测,静态保护采用以指令为单位的多重纠错码,在指令写入PRAM时由静态保护电路计算该指令的多重纠错码,并将指令多重纠错码保存在PRAM中。
CN201710083965.5A 2017-02-16 2017-02-16 系统运行中指令流的安全检测和容错方法 Active CN106874796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710083965.5A CN106874796B (zh) 2017-02-16 2017-02-16 系统运行中指令流的安全检测和容错方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710083965.5A CN106874796B (zh) 2017-02-16 2017-02-16 系统运行中指令流的安全检测和容错方法

Publications (2)

Publication Number Publication Date
CN106874796A CN106874796A (zh) 2017-06-20
CN106874796B true CN106874796B (zh) 2021-03-30

Family

ID=59166060

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710083965.5A Active CN106874796B (zh) 2017-02-16 2017-02-16 系统运行中指令流的安全检测和容错方法

Country Status (1)

Country Link
CN (1) CN106874796B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108923714B (zh) * 2018-08-20 2020-07-28 广东美的暖通设备有限公司 验证方法、验证装置、驱动系统、同步电机和存储介质
CN110224947A (zh) * 2019-06-05 2019-09-10 东软集团股份有限公司 一种多核转发系统中的报文处理方法、装置及设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1970247A (zh) * 2006-12-01 2007-05-30 南开大学 嵌入式移动机器人核心控制器
CN101082880A (zh) * 2006-06-02 2007-12-05 凌阳科技股份有限公司 加快从计算机下载数据到单片机目标存储器的方法及系统
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
CN101534299A (zh) * 2009-04-14 2009-09-16 公安部第一研究所 基于SD Memory/SDIO接口的信息安全设备及数据通信方法
CN101800077A (zh) * 2009-02-11 2010-08-11 北京芯技佳易微电子科技有限公司 一种对闪存进行数据编程的方法和装置
CN102368221A (zh) * 2011-08-30 2012-03-07 大连明江咨询服务有限公司 一种恢复交易数据的系统
CN203133823U (zh) * 2012-11-06 2013-08-14 无锡日松微电子有限公司 一种嵌入式在线仿真器
CN103714018A (zh) * 2013-12-11 2014-04-09 中国电子科技集团公司第三十研究所 芯片存储电路的安全访问控制方法
WO2014063329A1 (zh) * 2012-10-25 2014-05-01 华为技术有限公司 共享闪存的方法、控制器及系统
CN103778013A (zh) * 2014-01-24 2014-05-07 中国科学院空间应用工程与技术中心 一种多通道Nand Flash控制器及其控制方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5910356B2 (ja) * 2012-06-29 2016-04-27 富士通株式会社 電子装置、電子装置制御方法及び電子装置制御プログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101082880A (zh) * 2006-06-02 2007-12-05 凌阳科技股份有限公司 加快从计算机下载数据到单片机目标存储器的方法及系统
CN101187861A (zh) * 2006-09-20 2008-05-28 英特尔公司 用于执行点积运算的指令和逻辑
CN1970247A (zh) * 2006-12-01 2007-05-30 南开大学 嵌入式移动机器人核心控制器
CN101800077A (zh) * 2009-02-11 2010-08-11 北京芯技佳易微电子科技有限公司 一种对闪存进行数据编程的方法和装置
CN101534299A (zh) * 2009-04-14 2009-09-16 公安部第一研究所 基于SD Memory/SDIO接口的信息安全设备及数据通信方法
CN102368221A (zh) * 2011-08-30 2012-03-07 大连明江咨询服务有限公司 一种恢复交易数据的系统
WO2014063329A1 (zh) * 2012-10-25 2014-05-01 华为技术有限公司 共享闪存的方法、控制器及系统
CN203133823U (zh) * 2012-11-06 2013-08-14 无锡日松微电子有限公司 一种嵌入式在线仿真器
CN103714018A (zh) * 2013-12-11 2014-04-09 中国电子科技集团公司第三十研究所 芯片存储电路的安全访问控制方法
CN103778013A (zh) * 2014-01-24 2014-05-07 中国科学院空间应用工程与技术中心 一种多通道Nand Flash控制器及其控制方法

Also Published As

Publication number Publication date
CN106874796A (zh) 2017-06-20

Similar Documents

Publication Publication Date Title
US9063836B2 (en) Methods and apparatus to protect segments of memory
CA1235816A (en) Error recovery system in a data processor having a control storage
CN107949832B (zh) 用于仅执行事务存储器的技术
US20090055906A1 (en) Method and apparatus for embedded memory security
US20080133858A1 (en) Secure Bit
US8195946B2 (en) Protection of data of a memory associated with a microprocessor
CN110532767B (zh) 面向sgx安全应用的内部隔离方法
US20110035643A1 (en) System and Apparatus for Error-Correcting Register Files
CN106874796B (zh) 系统运行中指令流的安全检测和容错方法
US20220014356A1 (en) Seamless access to trusted domain protected memory by virtual machine manager using transformer key identifier
CN106803036B (zh) 系统运行中数据流的安全检测和容错方法
JP2018067047A (ja) 制御装置
CN112558884A (zh) 数据保护方法以及基于NVMe的存储设备
US8250452B2 (en) Method and apparatus for embedded memory security
KR102183649B1 (ko) 커널 무결성 검증 장치 및 그 방법
US10691586B2 (en) Apparatus and method for software self-test
US8447932B2 (en) Recover store data merging
CN111061591A (zh) 基于存储器完整性检查控制器实现数据完整性检查的系统和方法
US20120265904A1 (en) Processor system
CN111868722A (zh) 具有硬件支持的存储器缓冲区溢出检测的处理器
JP2891897B2 (ja) ストアインキャッシュの障害処理システム
Wang et al. A novel security validation in embedded system
WO2012137321A1 (ja) 情報処理装置、及びその方法
CN112988232A (zh) 使用可丢弃状态的执行电路
CN116805083A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 518000 room 205, 2nd floor, new generation maker Park, Xinwei Road, Jiangwei community, Matian street, Guangming District, Shenzhen City, Guangdong Province

Applicant after: Shenzhen Shuan Zhongyi Technology Co.,Ltd.

Address before: 518000 Room 201, building A, No. 1, Qian Wan Road, Qianhai Shenzhen Hong Kong cooperation zone, Shenzhen, Guangdong (Shenzhen Qianhai business secretary Co., Ltd.)

Applicant before: SHENZHEN QIANHAI SHENGSHENG TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20210226

Address after: 518000 Room 202, 2 / F, building 1, software industry base, 81, 83 and 85 Gaoxin South 10th Road, Binhai community, Yuehai street, Nanshan District, Shenzhen City, Guangdong Province

Applicant after: ZHONGYUN XIN'AN (SHENZHEN) TECHNOLOGY Co.,Ltd.

Address before: 518000 room 205, 2nd floor, new generation maker Park, Xinwei Road, Jiangwei community, Matian street, Guangming District, Shenzhen City, Guangdong Province

Applicant before: Shenzhen Shuan Zhongyi Technology Co.,Ltd.

GR01 Patent grant
GR01 Patent grant