本发明涉及存储器的安全防护设计技术领域,尤其涉及一种存储系统及其故障防御方法、装置。
背景技术:
移动互联网的发展,使得移动支付手段不断丰富。金融安全、通信安全已经成为全球性的问题,安全芯片被广泛应用,随之而来的用于攻击安全芯片的攻击技术也层出不穷,如微探测技术攻击,故障注入攻击,功耗分析等。然而,快速发展的半导体工艺技术的更新换代,使得芯片的集成度不断提高,尤其是存储器的集成度以超摩尔定律的速度攀升。芯片特征尺寸的缩小对侵入式攻击提出了苛刻的要求,由于所需设备昂贵与攻击成功率的下降,侵入式攻击已显得捉襟见肘。与侵入式攻击相比,半侵入式攻击具有成本优势和不俗的成功率,已经成为攻击高集成度芯片的主要手段。光故障注入攻击作为一种典型的半侵入式故障攻击手段,被广泛用于攻击安全类芯片。例如,用激光照射存储器,可改变存储器中的比特状态,一般是从当前比特值翻转为相反的比特值。
存储器被广泛应用于安全芯片,用来存储程序代码与数据,然而如何安全读取其存储的内容已成为影响该类芯片安全性的重要因素。存储器易受到光、热、电、辐射等物理条件的影响,基于这些物理手段已形成了多种故障注入攻击技术,这些攻击技术已严重的威胁到安全芯片的安全性,特别是存储器数据存储与读取的安全性。
存储器作为程序代码与数据的源头,如何防范存储器受到故障注入攻击,确保其存储与读取的安全显得尤为重要。
现有一种采用交织重复读取的方式来防范安全数据读取免受故障攻击。这 种方法检测故障注入攻击至少需要延时两个存储器读取周期,数据在未经过读取检测时已发送至总线,具有一定的安全隐患。还有的方案通过在芯片的各个区域中加入光线检测元件,这些光线检测单元被接入逻辑检测单元通过逻辑电路判断芯片各区域是否受到激光攻击。这一方案能有效的检测芯片的各区域的寄存器单元是否受到激光攻击,但是,光线检测单元的插入增加了芯片的面积,重要的是该方案无法防范存储器被光攻击。
技术实现要素:
本发明期望提供一种存储系统及其故障防御方法、装置,能及时检测对存储器的故障注入攻击,保证系统可以安全的读取存储器的内容,提升安全芯片防御故障注入攻击的能力。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种存储系统的故障防御方法,该方法包括:
接收并解析读指令,产生读使能信号和存储器目标地址;
根据所述存储器目标地址、存储器类型和选择的地址生成模式,产生相邻地址集合;
获取并检测所述存储器目标地址和相邻地址集合所对应的存储数据;
当所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测时,返回所述存储器目标地址对应的存储数据;否则,启动应急措施。
上述方案中,所述启动应急措施包括:
当所述存储器目标地址对应的存储数据未通过检测时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作;
当所述相邻地址集合所对应的存储数据中存在未通过检测数据时,再次读取所述存储器目标地址对应的存储数据;当两次读取的所述存储器目标地址对应的存储数据相一致时,返回所述存储器目标地址对应的存储数据;当两次读 取的所述存储器目标地址对应的存储数据不一致时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作。
上述方案中,所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测包括:
检测完所述存储器目标地址和相邻地址集合所对应的存储数据后,再次读取所述存储器目标地址对应的存储数据;
当两次读取的所述存储器目标地址对应的存储数据相一致时,返回所述存储器目标地址对应的存储数据;当两次读取的所述存储器目标地址对应的存储数据不一致时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作。
上述方案中,所述应急操作包括:
中断当前读取操作、中断当前任务操作、系统复位操作或删除当前数据并系统复位操作。
上述方案中,所述地址生成模式包括:
菱形法模式,即所述目标地址与选取的相邻地址集合组成一个菱形区;
或者
矩形法模式,即所述目标地址与选取的相邻地址集合组成一个矩形区。
上述方案中,所述矩形法模式包括:
正方形右下角法模式、正方形左上角法模式、正方形左下角法模式、正方形右上角法模式或正方形中心法模式,即所述目标地址与选取的相邻地址集合组成一个正方形区,而所述目标地址位于所述正方形区的右下角、左上角、左下角、右上角或中心。
上述方案中,所述存储器目标地址对应的存储数据安全级别越高,所述存储器目标地址对应的相邻地址集合中的元素数量越多。
上述方案中,所述检测所述存储器目标地址和相邻地址集合所对应的存储数据包括:
采用奇偶校验或校验和校验方法检测所述存储器目标地址和相邻地址集合所对应的存储数据。
本发明实施例还提供了一种存储系统的故障防御装置,该装置包括:控制单元、地址产生单元、检测单元以及应急处理单元;其中,
控制单元,用于接收并解析读指令,产生读使能信号和存储器目标地址;还用于当所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测时,返回所述存储器目标地址对应的存储数据;
地址产生单元,用于根据所述存储器目标地址、存储器类型和选择的地址生成模式,产生相邻地址集合;
检测单元,用于获取并检测所述存储器目标地址和相邻地址集合所对应的存储数据;
应急处理单元,用于启动应急措施。
本发明实施例还提供了一种存储系统,该系统包括:上述存储系统的故障防御装置和存储器,所述故障防御装置位于所述存储器的存取通路上。
本发明技术方案的有益效果在于:通过实时监测从存储器中读取的数据(包括目标地址中的数据与相邻地址中的数据),根据所读取数据的异常表现检测存储器的目标地址区域是否受到故障注入攻击;进一步的,可根据安全芯片所需的安全防护等级调整需要读取的存储器阵列的大小,以应对各种光斑面积的光故障注入攻击。
附图说明
图1为本发明实施例提供的存储系统的组成结构示意图;
图2为典型的SRAM(8X8Bit)存储器的物理布局示意图;
图3为典型的EEPROM(128X8Bit)存储器的物理布局示意图;
图4为本发明实施例提供的存储系统的故障防御方法的流程示意图。
具体实施方式
为了更清楚地说明本发明实施例和技术方案,下面将结合附图及实施例对本发明的技术方案进行更详细的说明,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明的实施例,本领域普通技术人员在不付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的存储系统的组成结构示意图,如图1所示,该系统包括:故障防御装置10和存储器11,其中,故障防御装置10位于存储器11的存取通路上,故障防御装置10包括:控制单元101、地址产生单元102、检测单元103以及应急处理单元104;其中,
控制单元101,用于接收并解析读指令,产生读使能信号和存储器目标地址;还用于当所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测时,返回所述存储器目标地址对应的存储数据;
地址产生单元102,用于根据所述存储器目标地址、存储器类型和选择的地址生成模式,产生相邻地址集合;
检测单元103,用于获取并检测所述存储器目标地址和相邻地址集合所对应的存储数据;
应急处理单元104,用于启动应急措施。
具体的,故障防御装置10通过解析数据请求者发出的读指令,将要读取的目标地址发送给地址产生单元102,地址产生单元102根据存储器11的类型产生需要读取并检测的存储器单元。从这些存储器单元读取的数据被传送至检测 单元103,检测单元103根据模式选择信号选择数据检测方法来判断目标地址区域是否受到故障攻击并将其判断结果发送给应急处理单元104。故障防御装置10将安全读取的数据返回给数据请求者;而应急处理单元104在收到存在故障攻击指示后立即启动应急措施。
奇偶校验、校验和等现有数据校验方法在一定程度上可防范光故障注入攻击,该方法被广泛应用于存储器中,但这些校验方法本身也具有理论上的检测限制。例如,奇偶校验码可以检测出奇数个比特位出错,但无法检测出偶数个比特位出错的情况。
由于存储器具有高密度和高集成度,而光故障注入攻击的光斑大小大于存储器的一个存储单元,故当存储器的某一存储单元受到光故障注入攻击时,不可避免的也会影响与其相邻的存储单元。
当存储器受到光故障注入攻击时,一般是将存储单元状态从当前比特值翻转为相反的比特值,造成的错误通常是临时的,即存在时间长度,故可以拉长存储器读取的时间或增加读取的次数。
基于以上三个因素,本故障防御装置10通过在读取目标地址数据时,加入相邻地址的读取以及目标地址的重读,同时利用检错码以及目标地址数据的多次校验机制,保障了数据的可靠性,实现了对光故障注入攻击的检测。如前所述,故障防御装置10由4部分构成:控制单元101,地址产生单元102、检测单元103,应急处理单元104。
其中:
控制单元101主要对数据请求者发出的读指令进行解析,产生读使能信号、存储器的目标地址;并根据存储器11的类型控制地址产生单元输出需要检测的存储器11的相邻地址;以及根据模式选择信号选择数据检测方法来控制检测单元103执行数据检测;根据模式选择信号控制地址产生其它必要的时序与使能信号。为了进一步提高存储器11读取安全性,控制单元101可控制各单元首先读取目标地址数据并校验数据,并将其暂存起来,随后读取相邻地址数据并进行检测,最后再读取目标地址数据并与之前暂存的目标地址数据做比较,判断 存储器是否受到故障攻击。
地址产生单元102根据存储器的目标地址以及存储器11类型产生需要检测的存储器的相邻地址。以典型的8X8Bit大小的静态随机存取存储器(Static Random Access Memory,SRAM)为例,其存储器的物理布局如图2所示。SRAM的行地址与列地址与字线WL和位线BL存在对应关系。对于8X8Bit大小的SRAM共有4个WL(WL0~WL3)线和16个BL(BL00~BL07,BL10~BL17)线,图中每一个交叉点都代表1Bit值。当读取地址0时,选中WL0和BL00~BL07,输出数据为A0[7:0]即A0[7]~A0[0];当读取地址1时,选中WL0和BL10~BL17,输出数据为A1[7:0];读取当地址2时,选中WL1和BL00~BL07,输出数据为A2[7:0];当读取地址3时,选中WL1和BL10~BL17,输出数据为A3[7:0],以此类推。
以180nm工艺为例,一个通用的SRAM单元(即上图中的1Bit值)的大小约为1.5um2,而一个光斑的大小约为6um2~60um2,故当光故障注入攻击SRAM时,不仅会改变SRAM一个地址数据出错,也会造成与它相邻的地址中的数据出错。例如,当光斑的中心照射在A3[0]处,不可避免的与其相邻的Bit值也会受到影响,如A2[0],A2[1],A1[0],A5[0]等。所以当读取的目标地址为地址3时,地址产生单元102不仅会重复读取地址3的数据,也会将与其相邻的地址1,地址2,地址5数据均读出来送到检测单元103进行检测,读取顺序可以是任意排序。此读取方法的数据地址构成了一个菱形,称之为菱形法,该菱形的选取范围可扩大。
以读取目标地址为地址3举例,选取相邻地址为地址0、地址1、地址2,与目标地址结合构成了一个正方形,此法称为正方形法。其目标地址所在位置为正方形的右下角,称之为正方形右下角法。同理,也可以选取目标地址所在位置为左上角地址,左下角地址,右上角地址,或以其为中心的相邻地址。它们分别命名为正方形左上角法,正方形左下角法,正方形右上角法,正方形中 心法。此外,依据这些方法选取的相邻地址不限于一定与目标地址紧邻,也可以以目标地址为中心或以目标地址为一角向外选取更大的相邻范围。同时,在故障防御装置中设置安全防护等级,根据读取方法的不同以及读取范围的不同定义不同的安全防护等级,范围选取越大,安全防护等级越高,保护能力越强。
不同存储器的类型,会有不同的物理布局,图3以典型的128X8Bit大小的电可擦可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)为例,它的物理布局与SRAM不同。对于128X8Bit大小的EEPROM,共有4个WL(WL0~WL7)线和256个BL(BL0~BL256)线,图中每一个交叉点都代表1Bit值。当读取地址0时,选中WL0和BL0~BL7,输出数据为A0[7:0];当读取地址1时,选中WL0和BL8~BL15,输出数据为A1[7:0],以此类推。如上所述的菱形法和正方形法依然适用于EEPROM,举例读取的目标地址为地址32,若采用菱形法,则选取的相邻地址为地址0,地址64,地址32,地址33;若采用正方形右下角法,则选取的相邻地址为地址0。
检测单元103根据模式选择信号选择数据检测方法。数据检测方法可以是奇偶校验,校验和等,存储器中需要存储根据数据检测方法生成的检错码。检测单元收到控制单元发出的数据检测指示后,检测从存储器目标地址、地址产生单元选择的相邻地址中读取的数据以及检错码,并采用相应的数据检测方法执行校验,若发现数据校验结果与检错码不一致,则认定为当前地址受到故障注入攻击。目标地址与相邻地址中数据的校验顺序可以任意组合,如可先校验目标地址数据并暂存起来,随之校验相邻地址数据,最后再读取目标地址数据并与之前暂存的数据做比较。
以上提及的各种检错码一定程度上可防范光故障注入攻击,但其本身也具有理论上的检测限制。例如,奇偶校验码可以检测出奇数个比特位出错,但无法检测出偶数个比特位出错的情况。本检测单元根据控制单元的控制时序可首先检测目标地址读取的数据并将其暂存起来,接着检测相邻地址的读取的数据,最后检测重复读取的目标地址中的数据,并与之前暂存的数据做比较检测其一 致性。
应急处理单元104根据检测单元的检测结果与目标地址数据安全级别执行不同的应急处理措施。若检测到目标地址受到故障注入攻击,应急处理单元根据目标地址中数据的安全级别分别执行中断当前读取操作、中断当前任务操作、系统复位操作或删除当前数据并系统复位操作等。若检测到相邻地址受到故障注入攻击,应急处理单元返回指示信号给控制单元,告知控制单元再次读取目标地址中的数据,并检测与之前读出的数据做比较,确认目标地址是否受到故障注入攻击。若两次读取的目标地址中的数据通过检测单元的检测,且两次读取的数据一致,则认为读取过程安全。若未通过检测或读取数据不一致,则判定为受到故障注入攻击,则执行以上描述的应急处理措施。
综合而言,本发明还提供一种存储系统的故障防御方法,如图4所示,该方法包括:
步骤201,接收并解析读指令,产生读使能信号和存储器目标地址;
步骤202,根据所述存储器目标地址、存储器类型和选择的地址生成模式,产生相邻地址集合;
步骤203,获取并检测所述存储器目标地址和相邻地址集合所对应的存储数据;
步骤204,当所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测时,返回所述存储器目标地址对应的存储数据;否则,启动应急措施。
上述方法中,所述启动应急措施包括:
当所述存储器目标地址对应的存储数据未通过检测时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作;
当所述相邻地址集合所对应的存储数据中存在未通过检测数据时,再次读取所述存储器目标地址对应的存储数据;当两次读取的所述存储器目标地址对应的存储数据相一致时,返回所述存储器目标地址对应的存储数据;当两次读 取的所述存储器目标地址对应的存储数据不一致时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作。
上述方法中,所述存储器目标地址和相邻地址集合所对应的存储数据全部通过检测包括:
检测完所述存储器目标地址和相邻地址集合所对应的存储数据后,再次读取所述存储器目标地址对应的存储数据;
当两次读取的所述存储器目标地址对应的存储数据相一致时,返回所述存储器目标地址对应的存储数据;当两次读取的所述存储器目标地址对应的存储数据不一致时,根据所述存储器目标地址对应的存储数据的安全级别启动应急操作。
上述方法中,所述应急操作包括:
中断当前读取操作、中断当前任务操作、系统复位操作或删除当前数据并系统复位操作。
上述方法中,所述地址生成模式包括:
菱形法模式,即所述目标地址与选取的相邻地址集合组成一个菱形区;
或者
矩形法模式,即所述目标地址与选取的相邻地址集合组成一个矩形区。
上述方法中,所述矩形法模式包括:
正方形右下角法模式、正方形左上角法模式、正方形左下角法模式、正方形右上角法模式或正方形中心法模式,即所述目标地址与选取的相邻地址集合组成一个正方形区,而所述目标地址位于所述正方形区的右下角、左上角、左下角、右上角或中心。
上述方法中,所述存储器目标地址对应的存储数据安全级别越高,所述存储器目标地址对应的相邻地址集合中的元素数量越多。
上述方法中,所述检测所述存储器目标地址和相邻地址集合所对应的存储数据包括:
采用奇偶校验或校验和校验方法检测所述存储器目标地址和相邻地址集合所对应的存储数据。
本实施例的存储系统的故障防御装置的各个单元对应执行上述故障防御方法实施例所描述的步骤,因此具有相同的有益效果。另外,应该理解到,以上所描述的存储系统的故障防御装置的实施方式仅仅是示意性的,所描述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。另外,单元相互之间的耦合或通信连接可以是通过一些接口,也可以是电性或其它的形式。
上述各个功能单元作为故障防御装置的组成部分,可以是或者也可以不是物理框,既可以位于一个地方,也可以分布到多个电路单元上,既可以采用硬件的形式实现,也可以采用软件功能框的形式实现。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储系统和光学存储系统等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结 合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储系统中,使得存储在该计算机可读存储系统中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
再次说明,以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,例如各实施例之间技术特征的相互结合,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。