一种安全芯片及其对错误注入攻击的防御方法和装置与流程

文档序号:11842842阅读:283来源:国知局
一种安全芯片及其对错误注入攻击的防御方法和装置与流程

本发明涉及信息安全技术领域,尤其涉及一种安全芯片及其对错误注入攻击的防御方法和装置。



背景技术:

随着安全技术的迅猛发展,与之相伴的攻击技术也不断发展变化,两者相伴相生。这越发说明,信息安全在人类生活中的作用越来越重要,从而对信息安全芯片产品的要求也越来越高。安全算法引擎作为安全芯片中的核心部件,其安全性至关重要。以安全算法引擎中的对称算法为例,攻击者通过激光照射芯片中的算法引擎,采取在运算中注入特定错误(开始和结束阶段最有效)的技术手段,从得到的错误运算结果进行分析,可最终得到用户密钥等关键信息,造成严重后果。

针对上述攻击手段,业内不断探索解决之道。其中,一种解决方案是,在芯片中额外放置一个甚至多个算法引擎,各算法引擎分别计算;运算结束后,比较各引擎计算结果是否一致,如果一致,说明运算正确,则输出结果;如果不一致,说明算法引擎可能受到攻击,则报警给系统做处理。所述系统是指安全芯片自身的系统,系统收到报警表明受到了攻击。显然,此种方案是在增加芯片面积和功耗的前提下实施的,这必然导致增加产品成本,降低产品竞争力。还有一种解决方案是,在做完正常算法运算后(例 如加密),安全芯片系统的软件程序将结果重新输入到算法引擎,再做一次逆运算(解密),逆运算结束后,将逆运算结果和正常运算的初始数据进行比较,如果逆运算结果正确,则输出结果;如果不正确,说明算法引擎可能受到攻击,报警给系统做处理。由于此方案需要对在整个运算完成后对运算结果进行完整的逆运算,因而大大增加了运算时间,从而使产品性能显著下降。

当前,缺少一种既不需要增加芯片面积也不显著降低芯片性能的针对错误注入攻击的防御技术。



技术实现要素:

本发明提供一种安全芯片及其对错误注入攻击的防御方法和装置,能在基本不牺牲芯片的面积和性能的前提下,增强算法引擎和芯片系统的安全性,节省产品成本,提升产品竞争力。

本发明的技术方案是这样设计的:

本发明实施例提供一种对错误注入攻击的防御方法,该安全芯片中的算法引擎执行N轮运算,N为大于1的整数,该方法包括:

存储所述N轮运算的中间运算结果;

预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;

在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;

当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,继续执行所述回滚轮之后的操作;否则,向系统报警,并 停止执行后续操作。

上述方案中,当所述回滚轮为第N轮时,

所述继续执行所述回滚轮之后的操作为:输出运算结果;或者

所述停止执行后续操作为:停止输出运算结果。

上述方案中,当所述回滚轮不为第N轮时,

所述继续执行所述回滚轮之后的操作为:继续执行所述回滚轮之后的运算;或者

所述停止执行后续操作为:停止执行后续运算。

上述方案中,所述方法包括:

预设n=2,且第1回滚轮预设为第4轮,第2回滚轮为第N轮;

预设M1=M2=2;

在第4滚轮执行完本轮运算后,执行2轮逆运算,得到第1回滚结果;

当所述第1回滚结果与所述存储的所述第4滚轮之前2轮的中间运算结果相同时,继续执行第4轮之后的运算;否则,向系统报警,并停止执行后续运算;

在第N滚轮执行完本轮运算后,执行2轮逆运算,得到第2回滚结果;

当所述第2回滚结果与所述存储的所述第N轮之前2轮的中间运算结果相同时,输出运算结果;否则,向系统报警,并停止输出运算结果。

上述方案中,所述算法引擎执行的运算为对称算法。

本发明实施例还提供一种对错误注入攻击的防御装置,所述安全芯片中的算法引擎执行N轮运算,N为大于1的整数,该装置包括:存储模块、状态控制模块和运算模块;其中,

存储模块,用于存储所述N轮运算的中间运算结果;

状态控制模块,用于预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;所述状态控制模块还用于控制运算模块在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;并用于当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,控制运算模块继续执行所述回滚轮之后的操作;否则,向系统报警,并控制运算模块停止执行后续操作;

运算模块,用于根据状态控制模块的指令,在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,返回第i回滚结果;当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,继续执行所述回滚轮之后的操作;否则,停止执行后续操作。

上述方案中,所述状态控制模块包括:

配置单元,用于预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;

控制状态单元,用于根据所述配置单元,控制运算模块在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;并用于当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,控制运算模块继续执行所述回滚轮之后的操作;否则,向系统报警,并控制运算模块停止执行后续操作。

上述方案中,所述运算模块包括:

运算单元,用于当所述第i回滚轮不是第N轮,并且所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,根据所述状态控制模块的指令,继续执行所述回滚轮之后的运算;

逆运算单元,用于在第i回滚轮执行完本轮运算后,执行Mi轮逆运算;

结果返回单元,用于返回所述N轮运算的中间运算结果至所述存储模块;返回所述回滚结果至所述状态控制模块;并用于当所述第i回滚轮是第N轮,并且所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,返回第N轮运算结果至系统。

上述方案中,所述控制状态单元采用控制状态机实现。

本发明实施例还提供一种安全芯片,该安全芯片中的包括上述任一种方案所述的防御装置。

本发明实施例提供的安全芯片及其对错误注入攻击的防御方法和装置,不需要额外放置算法引擎,节省芯片面积和功耗;也无需软件重复搬移数据和启动硬件算法运算,节省时间。整个过程对用户透明,基本不牺牲面积和性能的前提下增强算法和系统安全性,节省产品成本,提升产品竞争力。

附图说明

在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。

图1为本发明实施例提供的防御方法的实现流程示意图;

图2为本发明实施例1的运算与回滚的关系示意图;

图3为本发明实施例提供的防御装置的组成结构示意图。

具体实施方式

本发明实施例中,安全芯片中内置有安全算法引擎(简称算法引擎),可用于执行加密或解密运算,并且算法引擎执行的运算是N轮运算,即一个完整的运算过程包括N轮子运算,每轮子运算都将产生中间结果,其中,所述N为大于1的整数。在一个实施例中,N=16。算法引擎执行的算法(运算)是存在逆运算的算法(运算),而算法引擎本身即可执行正运算(例如加密运算),也可以执行逆运算(例如解密运算)。在某些实施例中,算法引擎执行的算法为对称算法。算法引擎可能遭遇错误注入攻击,所述错误注入攻击是指在算法引擎中注入特定的错误,例如:将初始运算值或中间结果由0变1,或由1变0,使得算法引擎的运算发生错误。为了防御此类攻击,本发明实施例提供一种可用于安全芯片的防御方法。

图1为本发明实施例提供的防御方法的实现流程示意图,如图1所示,该方法包括以下步骤:

步骤101,存储所述N轮运算的中间运算结果;

具体的,安全芯片根据需要存储算法引擎在一轮运算中计算出的中间运算结果,以备与后续回滚轮逆运算后的结果进行核对。

步骤102,预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;

具体的,根据需求可为安全芯片预设n个回滚轮,其中n为大于1的整数,n≤N;所述回滚轮是指在该轮正运算执行完成后,针对此轮运算的 中间结果需要进行逆运算的轮;在实际应用中,n的大小(即回滚轮的数量)、回滚的时机(即在第几轮进行回滚)可在安全芯片的配置文件中设置,也可以在实际使用芯片时由外部指定;而针对任意一个回滚轮——第i回滚轮,都对应预设回滚数Mi,其中i=1,2,…,n,Mi为大于1的整数,Mi≤N;所述回滚数是指在回滚轮进行逆运算的轮数,即向前回滚的轮数;在实际应用中,Mi的大小可根据经验在安全芯片的配置文件中设置,也可以在实际使用安全芯片时由外部指定。这里,回滚轮数量n的大小主要根据系统对安全要求的高低决定,对安全要求高即安全等级高,则设置的回滚轮数量多,即n越大;对安全要求低即安全等级低,则设置的回滚轮数量少,即n越小。比如安全要求一般则可以只在最后进行一次回滚即可;如果安全要求高,可在开始、结束、中间都设定回滚。在实施例1中,n=2,第1回滚轮预设为第4轮,第2回滚轮为第N轮(即最后一轮正运算),而M1=M2=2。

步骤103,在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;

具体的,安全芯片在第i回滚轮执行完本轮正运算后,执行Mi轮逆运算,即进行回滚,从而得到第i回滚轮所对应的计算结果,称之为第i回滚结果。

步骤104,当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,继续执行所述回滚轮之后的操作;否则,向系统报警,并停止执行后续操作;

具体的,在执行步骤103而得到第i回滚结果后,安全芯片将第i回滚结果与已在步骤101中存储的第i回滚轮之前Mi轮的中间结果进行核对;如果二者相同,说明安全芯片的算法引擎工作正常,因此,可以继续执行 该回滚轮之后的操作;而如果二者不相同,说明安全芯片的算法引擎工作不正常,可能受到了攻击,因此,需向系统报警,并停止后续操作。

进一步的,根据回滚时机的不同,回滚轮之后的操作也不相同,当所述回滚轮为第N轮时,即回滚轮是最后一轮,如果算法引擎工作正常的情况下,回滚轮之后的操作为输出运算结果;而如果算法引擎工作不正常的情况下,安全芯片将不输出运算结果。

相对的,当所述回滚轮不为第N轮时,即回滚轮不是最后一轮时,如果算法引擎工作正常的情况下,回滚轮之后的操作为继续执行下一轮的正运算;而如果算法引擎工作不正常的情况下,回滚轮之后的操作为停止执行后续的逆运算。

实施例1

如前所述,n=2,即预设两个回滚轮,且第1回滚轮预设为第4轮,第2回滚轮为第N轮(即最后一轮正运算),而M1=M2=2;如图2所示:

安全芯片在第4滚轮执行完本轮运算后,执行2轮逆运算,得到第1回滚结果;

当所述第1回滚结果与所述存储的所述第4滚轮之前2轮的中间运算结果相同时,安全芯片继续执行第4轮之后的运算;否则,安全芯片向系统报警,并停止执行后续运算;

安全芯片在第N轮(即第2回滚轮)执行完本轮运算后,执行2轮逆运算,得到第2回滚结果;

当所述第2回滚结果与所述存储的所述第N轮之前2轮的中间运算结果相同时,安全芯片输出运算结果;否则,安全芯片向系统报警,并停止输出运算结果。

图3为本发明实施例提供的防御装置的组成结构示意图,如图3所示,该防御装置包括:存储模块301、状态控制模块302和运算模块303;其中,

存储模块301,用于存储所述N轮运算的中间运算结果;

状态控制模块302,用于预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;所述状态控制模块302还用于控制运算模块303在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;并用于当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,控制运算模块303继续执行所述回滚轮之后的操作;否则,向系统报警,并控制运算模块303停止执行后续操作;

运算模块303,用于根据状态控制模块302的指令,在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,返回第i回滚结果;当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,继续执行所述回滚轮之后的操作;否则,停止执行后续操作。

进一步的,上述防御装置中,状态控制模块302包括:

配置单元,用于预设n个回滚轮,第i回滚轮对应的回滚数预设为Mi;其中,n为大于1的整数,n≤N,i=1,2,…,n,Mi为大于1的整数,Mi≤N;

控制状态单元,用于根据所述配置单元,控制运算模块303在第i回滚轮执行完本轮运算后,执行Mi轮逆运算,得到第i回滚结果;并用于当所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,控制运算模块303继续执行所述回滚轮之后的操作;否则,向系统报警,并控制运算模块303停止执行后续操作。

进一步的,上述防御装置中,运算模块303包括:

运算单元,用于当所述第i回滚轮不是第N轮,并且所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,根据所述状态控制模块302的指令,继续执行所述回滚轮之后的运算;

逆运算单元,用于在第i回滚轮执行完本轮运算后,执行Mi轮逆运算;

结果返回单元,用于返回所述N轮运算的中间运算结果至所述存储模块301;返回所述回滚结果至所述状态控制模块302;并用于当所述第i回滚轮是第N轮,并且所述第i回滚结果与所述存储的所述第i回滚轮之前Mi轮的中间运算结果相同时,返回第N轮运算结果至系统。

进一步的,上述防御装置中,所述控制状态单元采用控制状态机实现。

上述各个模块及各个单元在实际应用中,均可由位于安全芯片中的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)实现。

本发明实施例还提供一种安全芯片,该安全芯片中的包括上述任一种方案所述的防御装置。

以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

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