一种用于总线及存储单元数据块实时校验的装置与方法与流程

文档序号:13661054阅读:162来源:国知局
一种用于总线及存储单元数据块实时校验的装置与方法与流程

本发明涉及安全芯片设计技术领域,尤其是安全芯片设计的防御物理攻击技术。



背景技术:

该方案的设计初衷是在安全芯片设计中防御物理攻击(主要是指故障注入)。主要包括以下几种情况:数据在写入存储器的过程中被篡改,存储器冗余仅能解决数据被储存后的安全,但对写过程不能保护。数据在读过程,或是存储过程中被篡改;指令在取指过程中受到攻击,被跳转至其它非法程序。

如图1所示,为现有的防御安全芯片存储器物理攻击示意图。目前主流的防御措施是存储器冗余。在数据被写入存储器时,计算该数据的冗余校验码,并写入存储器。在读出数据时,再次计算读出数据的冗余校验码,与数据冗余校验码进行比较,如果一致,则认为该数据可信,否则认为数据被攻击。此种防御措施仅可防御途中(e)、(f)两种存储器本身被攻击的情况。而对于(b)、(c)、(d)、(h)、(g)几个点的攻击时不能防御的。原因是(b)、(c)、(d)受到攻击时,系统写数据时用于计算正确冗余校验码的数据已经被破坏,因此系统写入了错误数据计算的冗余校验码,读出时校验冗余校验码一定是一致的。但是系统未知。同理,(h)、(g)点受到攻击时,存储器冗余已经校验完毕,也无法发现系统受到攻击,也就是说,存储器冗余仅能保护数据被写入存储器后的数据安全,而对于存储器读写过程中的数据安全不能保护。



技术实现要素:

针对上述现有技术中存在的不足,本发明的目的是提供一种用于总线及存储单元数据块实时校验的装置与方法,针对存储器的写过程,存储器中的数据以及存储器的读过程均进行了保护,具有冗余数据校验安全、高效的特点。

为了达到上述技术目的,本发明所采用的技术方案是:

一种用于总线及存储单元数据块实时校验装置,该装置由总线控制单元、寄存器配置单元、冗余校验码计算单元和比较输出单元组成,其中,

寄存器配置单元通过总线配置数据块的地址范围,配置冗余校验码存放的地址,并使该装置能;

冗余校验码计算单元利用总线上出现的所述地址范围内的数据来计算冗余校验码;

当所述地址范围内所有数据被读/写完毕时,总线控制单元占用总线,并读出所指定的冗余校验码存放地址的数据,或将冗余校验码写入所指定的冗余校验码存放地址;

比较输出单元将冗余校验码计算单元的计算结果与总线控制单元读取到的冗余校验码相比较,并将比较结果作为报警信号输出,如果比较结果一致,报警信号为0;如果比较结果不一致,则报警信号为1。

一种使用权利要求1所述的用于总线及存储单元数据块实时校验装置的方法,包括写过程和读/取指过程两个步骤,所述写过程的步骤为:

步骤1:(1)中央处理器配置寄存器单元的装置使能为写使能;

(2)中央处理器配置寄存器单元的敏感数据首尾地址;

(3)中央处理器配置寄存器单元的冗余校验码存放地址;

步骤2:中央处理器执行写敏感数据的操作;

步骤3:冗余校验码计算单元判断写操作的地址是否属于定义的敏感数据地址范围(是否大于等于步骤1.(2)定义的首地址,并小于等于步骤1.(2)定义的尾地址);

如果不属于该范围,则继续执行步骤2,如果属于该范围,则执行步骤4;

步骤4:冗余校验码计算单元判断总线地址是否小于步骤1.(2)定义的尾地址;

如果小于,则执行步骤5;否则执行步骤6;

步骤5:冗余校验码计算单元利用步骤2中的写数据计算冗余校验码;

步骤6:总线控制单元将步骤5计算的冗余校验码写入步骤1.(3)定义的指定位置。

所述读/取指过程的步骤为:

步骤1:(1)中央处理器配置寄存器单元的模块使能为写使能;

(2)中央处理器配置寄存器单元的敏感数据首尾地址;

(3)中央处理器配置寄存器单元的冗余校验码存放地址;

步骤2:中央处理器执行读敏感数据的操作;

步骤3:冗余校验码计算单元判断读操作的地址是否属于定义的敏感数据地址范围(是否大于等于步骤1.(2)定义的首地址,并小于等于步骤1.(2)定义的尾地址);

如果不属于该范围,则继续执行步骤2,如果属于该范围,则执行步骤4;

步骤4:冗余校验码计算单元判断总线地址是否小于步骤1.(2)定义的尾地址;

如果小于,则执行步骤5;否则执行步骤6;

步骤5:冗余校验码计算单元利用步骤2中的读数据计算冗余校验码;

步骤6:总线控制单元读出步骤1.(3)定义的指定位置所存放的冗余校验码;

步骤7:比较输出单元将步骤5中计算的冗余校验码的值与步骤6中读到的冗余校验码的值进行比较;并将比较结果以报警信号的形式输出,一致则报警信号为0,否则为1。

本发明由于采用了上述用于总线及存储单元数据块实时校验装置及其方法,所获得的有益效果是:与其它冗余校验方式相比,该方案的优势在于:

1.该方案不仅能检查存储器存储数据是否正确,还可以检查数据在总线上传输时是否正确;

2.该方案仅在数据块读写结束时占用一个总线传输的周期,其余时间不占用总线资源,提高了芯片的工作效率;

3.该方案还可以检查软件程序是否被攻击篡改。

下面结合附图和具体实施方式对本发明做进一步说明。

附图说明

图1是现有的防御安全芯片物理攻击示意图。

图2是本发明的防御安全芯片物理攻击示意图。

图3是本发明的用于总线及存储单元数据块实时校验装置结构示意图。

图4是本发明具体实施例的用于总线及存储单元数据块实时校验方法之写过程流程图。

图5是本发明具体实施例的用于总线及存储单元数据块实时校验方法之读过程流程图。

具体实施方式

参看图2,为本发明的防御安全芯片物理攻击示意图。写过程中,如图2所示,当攻击发生在(a)点时,则用于计算冗余校验码的数据是错误的,所以计算出的冗余校验码也是错误的,该错误冗余校验码与正确的数据共同存入存储器。当读出数据时,利用正确数据进行冗余校验码的计算,计算结果与之前计算的错误冗余校验码进行比较,比较结果不一致会报警。写过程中,如图2所示,当攻击发生在(b)、(c)或(d)点时,则用于计算冗余校验码的数据是正确的,计算出的冗余校验码也是正确的,而写入存储器的数据是错误的,当读出数据时,错误数据进行冗余校验码的计算,计算结果与之前计算的正确冗余校验码进行比较,比较结果不一致会报警。在读过程中,如图2所示,当攻击发生在(e)、(f)、(h)、(g)点时,用于计算冗余校验码的数据是错误的,但读出的所储存的冗余校验码是正确的,两个冗余校验码进行比较,比较结果不一致会报警。

参看图3,为本发明的用于总线及存储单元数据块实时校验装置结构示意图。该装置由总线控制单元、寄存器配置单元、冗余校验码计算单元和比较输出单元组成,其中,寄存器配置单元通过总线配置数据块的地址范围,配置冗余校验码存放的地址,并使该装置能;冗余校验码计算单元利用总线上出现的所述地址范围内的数据来计算冗余校验码;当所述地址范围内所有数据被读/写完毕时,总线控制单元占用总线,并读出所指定的冗余校验码存放地址的数据,或将冗余校验码写入所指定的冗余校验码存放地址;比较输出单元将冗余校验码计算单元的计算结果与总线控制单元读取到的冗余校验码相比较,并将比较结果作为报警信号输出,如果比较结果一致,报警信号为0;如果比较结果不一致,则报警信号为1。

参看图4,为本发明具体实施例的用于总线及存储单元数据块实时校验方法之写过程流程图。中央处理器首先通过总线写sfr(specialfunctionregister)配置是否使能用于总线及存储单元数据块实时校验装置功能,是针对写数据进行操作还是读数据进行比较,所需保护的敏感数据块将要写入或读出的地址的首地址与尾地址,以及所计算的冗余校验码存储的地址,这些信息存放在寄存器中待用;当用于总线及存储单元数据块实时校验装置写使能时,会比较总线上传输的地址,当总线上传输的有效写地址在配置的敏感数据块的使该装置能的范围中配置中时,用于总线及存储单元数据块实时校验装置将总线上该地址对应的总线写数据输入冗余校验码计算单元用于计算冗余校验码;冗余校验码计算单元利用有效数据进行计算,通常采用crc16或crc32(可以为其它)的冗余校验码进行计算;当总线地址为配置的数据块的尾地址时,证明数据块的数据接收结束,冗余校验码计算单元会将计算结果输出给总线控制单元;总线控制单元这时将输出总线状态信号,表明此时用于总线及存储单元数据块实时校验装置占用总线,并按照总线写时序的要求输出总线写操作,将冗余校验码写入指定的冗余校验码存放地址。

具体的写过程步骤为:

步骤1:(1)中央处理器配置寄存器单元的装置使能为写使能;

(2)中央处理器配置寄存器单元的敏感数据首尾地址;

(3)中央处理器配置寄存器单元的冗余校验码存放地址;

步骤2:中央处理器执行写敏感数据的操作;

步骤3:冗余校验码计算单元判断写操作的地址是否属于定义的敏感数据地址范围(是否大于等于步骤1.(2)定义的首地址,并小于等于步骤1.(2)定义的尾地址);

如果不属于该范围,则继续执行步骤2,如果属于该范围,则执行步骤4;

步骤4:冗余校验码计算单元判断总线地址是否小于步骤1.(2)定义的尾地址;

如果小于,则执行步骤5;否则执行步骤6;

步骤5:冗余校验码计算单元利用步骤2中的写数据计算冗余校验码;

步骤6:总线控制单元将步骤5计算的冗余校验码写入步骤1.(3)定义的指定位置。

参看图5,为本发明具体实施例的用于总线及存储单元数据块实时校验方法之读过程流程图。当用于总线及存储单元数据块实时校验装置读使能(代表中央处理器在读数据或者取指)时,会比较总线上传输的地址,当总线上传输的有效读地址在配置的敏感数据块的使该装置能范围中配置时,总线及存储单元数据块实时校验装置将总线上该地址对应的总线读数据输入冗余校验码计算单元用于计算冗余校验码,冗余校验码计算单元利用有效数据进行计算,通常采用crc16或crc32(可以为其它)的冗余校验码进行计算;当总线地址为配置的数据块的尾地址时,证明数据块的数据接收结束,冗余校验码计算单元会将计算结果输出给总线控制单元;总线控制单元这时将输出总线状态信号,表明此时总线及存储单元数据块实时校验装置占用总线,并按照总线写时序的要求输出总线读操作,将冗余校验码从中央处理器配置寄存器单元的冗余校验码存放地址中读出,并输送给比较输出单元;比较输出单元将冗余校验码计算单元计算所得的值与总线控制单元输送的冗余校验码进行比较,如果两个值一致,则输出的报警信号为0,否则为1。

具体的读/取指过程步骤为:

步骤1:(1)中央处理器配置寄存器单元的模块使能为写使能;

(2)中央处理器配置寄存器单元的敏感数据首尾地址;

(3)中央处理器配置寄存器单元的冗余校验码存放地址;

步骤2:中央处理器执行读敏感数据的操作;

步骤3:冗余校验码计算单元判断读操作的地址是否属于定义的敏感数据地址范围(是否大于等于步骤1.(2)定义的首地址,并小于等于步骤1.(2)定义的尾地址);

如果不属于该范围,则继续执行步骤2,如果属于该范围,则执行步骤4;

步骤4:冗余校验码计算单元判断总线地址是否小于步骤1.(2)定义的尾地址;

如果小于,则执行步骤5;否则执行步骤6;

步骤5:冗余校验码计算单元利用步骤2中的读数据计算冗余校验码;

步骤6:总线控制单元读出步骤1.(3)定义的指定位置所存放的冗余校验码;

步骤7:比较输出单元将步骤5中计算的冗余校验码的值与步骤6中读到的冗余校验码的值进行比较;并将比较结果以报警信号的形式输出,一致则报警信号为0,否则为1。

以上已针对实施例来说明本发明,针对该发明思路的其他拓展,例如,不仅是crc冗余校验码(算法),也可以示其它形式的冗余校验码(算法),以及总线控制单元的使用或者不使用等,故凡依本发明的概念与精神所为之均等变化或修饰,均应包括于本发明的权利要求书的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1