公开/公告号CN106156614A
专利类型发明专利
公开/公告日2016-11-23
原文格式PDF
申请/专利号CN201510133390.4
申请日2015-03-25
分类号G06F21/55;
代理机构北京中誉威圣知识产权代理有限公司;
代理人郭振兴
地址 100192 北京市海淀区西小口路66号中关村东升科技园C区2号楼305室
入库时间 2023-06-19 00:57:41
法律状态公告日
法律状态信息
法律状态
2019-05-28
著录事项变更 IPC(主分类):G06F21/55 变更前: 变更后: 申请日:20150325
著录事项变更
2018-12-28
授权
授权
2016-12-21
实质审查的生效 IPC(主分类):G06F21/55 申请日:20150325
实质审查的生效
2016-11-23
公开
公开
技术领域
本发明涉及安全芯片领域,具体地,涉及一种抵抗故障攻击的防护方法和装置。
背景技术
随着信息技术和计算机技术的发展和广泛应用,信息安全越来越受到人们的重视。近年来一些常用的攻击技术也趋于成熟,如侧信道攻击、故障攻击、物理攻击等,这些都对芯片的安全防护提出更高要求。于是,人们越来越关注芯片的设计,尤其是芯片中针对各种攻击的防护措施。侧信道攻击主要是利用芯片的功耗、电磁等信息进行攻击,如SPA、DPA、CPA等方法。故障攻击主要通过一些手段诱导运行过程中的芯片产生错误,改变芯片的行为和运行结果,如DFA等。物理攻击则是通过对芯片进行掀盖、腐蚀等操作,进而通过逆向工程等方法进行攻击。现在比较成熟的芯片硬件的防护主要是引入噪声、时钟扰乱和对密码模块加入掩码等方法。
故障攻击最重要的操作是需要得到故障注入后的结果,如果防故障攻击方法能够判断出芯片遭遇了故障攻击,就可以不输出结果,攻击者也就无法继续攻击。现有抵抗故障攻击的方法是将两次运算结果直接进行比较,由于攻击者可以利用激光等手段攻击CPU的比较结果,使得现有方法仍然不能有效抵抗故障攻击。
发明内容
本发明是为了克服现有抵抗故障攻击的方法仍然不能有效抵抗故障攻击的缺陷,根据本发明的一个方面,提出一种抵抗故障攻击的防护方法。
本发明实施例提供的一种抵抗故障攻击的防护方法,包括:获取第一运算结果和第二运算结果,并将第一运算结果存储于第一寄存器,将第二运算结果存储于第二寄存器;读取第一存储器中的第一运算结果,并将第一运算结果存储于第三存储器;读取第二存储器中的第二运算结果,并将第二运算结果存储于第四存储器;判断存储有第一运算结果的存储器中的第一运算结 果与存储有第二运算结果的存储器中的第二运算结果是否相同,当判断结果为第一运算结果与第二运算结果均相同时,输出运算结果。
在上述技术方案中,该方法还包括:读取第三存储器中的第一运算结果,并将第一运算结果存储于第五存储器;读取第四存储器中的第二运算结果,并将第二运算结果存储于第六存储器。
在上述技术方案中,判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同,包括:
判断第一存储器中的第一运算结果与第二存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;或
判断第一存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第二存储器中的第二运算结果是否相同。
在上述技术方案中,同时执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤;或
按照先后顺序依次执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤。
本发明是为了克服现有抵抗故障攻击的方法仍然不能有效抵抗故障攻击的缺陷,根据本发明的一个方面,提出一种抵抗故障攻击的防护装置。
本发明实施例提供的一种抵抗故障攻击的防护装置,包括:
预处理模块,用于获取第一运算结果和第二运算结果,并将第一运算结果存储于第一寄存器,将第二运算结果存储于第二寄存器;
多级存储模块,用于读取第一存储器中的第一运算结果,并将第一运算结果存储于第三存储器;读取第二存储器中的第二运算结果,并将第二运算结果存储于第四存储器;
多级判断模块,用于判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同,当判断结果为第一运算结果与第二运算结果均相同时,输出运算结果。
在上述技术方案中,多级存储模块还用于:读取第三存储器中的第一运算结果,并将第一运算结果存储于第五存储器;读取第四存储器中的第二运算结果,并将第二运算结果存储于第六存储器。
在上述技术方案中,多级判断模块具体用于:
判断第一存储器中的第一运算结果与第二存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;或
判断第一存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第二存储器中的第二运算结果是否相同。
在上述技术方案中,多级判断模块具体用于:
同时执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤;或
按照先后顺序依次执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤。
本发明实施例提供的一种抵抗故障攻击的防护方法和装置,采用多级存储的方式存储运算结果,并分别进行多次比较判断,只有在所有判断结果均相同时才输出运算结果,从而加大了攻击者的攻击难度,该方法可以有效抵抗多点的故障攻击,提高安全性。同时,该装置不需要增加芯片面积和功耗,抵抗故障攻击效果显著。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1为本发明实施例中抵抗故障攻击的防护方法的流程图;
图2为实施例一中抵抗故障攻击的防护方法的流程图;
图3为实施例一中抵抗故障攻击的防护方法的流程示意图;
图4为本发明实施例中抵抗故障攻击的防护装置的结构图。
具体实施方式
下面结合附图,对本发明的具体实施方式进行详细描述,但应当理解本发明的保护范围并不受具体实施方式的限制。
根据本发明实施例,提供了一种抵抗故障攻击的防护方法,图1为该方法的流程图,具体包括:
步骤101:获取第一运算结果和第二运算结果,并将第一运算结果存储于第一寄存器,将第二运算结果存储于第二寄存器。
其中,上述第一运算结果和第二运算结果均为对同一明文进行正常加密运算后的结果,该结果即为明文加密后的密文。
步骤102:读取第一存储器中的第一运算结果,并将第一运算结果存储于第三存储器;读取第二存储器中的第二运算结果,并将第二运算结果存储于第四存储器。
本发明实施例中,采用多级存储的方式存储运算结果。其还可以包括第五存储器和第六存储器,具体的:读取第三存储器中的第一运算结果,并将第一运算结果存储于第五存储器;读取第四存储器中的第二运算结果,并将第二运算结果存储于第六存储器。存储的级数越多,判断的次数越多,故障攻击的难度越大。
步骤103:判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同,当上述判断结果为第一运算结果与第二运算结果均相同时,输出运算结果。
本发明实施例中,由于采用多级存储的方式存储运算结果,相应的可以有多次判断步骤。具体的,步骤103中的判断步骤包括两种判断方式:顺序判断方式和交叉判断方式。具体的,在步骤103中:
顺序判断方式为:判断第一存储器中的第一运算结果与第二存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第四存储器中的第二运算结果是否相同。
交叉判断方式为:判断第一存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第二存储器中的第二运算结果是否相同。
同时,由于可以存在多次判断步骤,该多次判断步骤可以同时进行,也可以按照顺序依次进行判断。同时执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤;或按照先后顺序依次执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤。当同时执行判断步骤时,攻击者需要同时攻击判断结果,攻击手段更难实现。
本发明实施例中,无论采用哪种判断方式,只有在第一运算结果和第二运算结果均相同时才会输出运算结果。以顺序判断方式为例,只有在第一存储器中的第一运算结果与第二存储器中的第二运算结果相同,而且第三存储器中的第一运算结果与第四存储器中的第二运算结果相同时,才输出运算结果。该运算结果为加密运算的结果,具体可以为上述的第一运算结果或第二运算结果。
当攻击者采用现有攻击方法在运算过程中注入故障时,第一寄存器和第二寄存器中存储的结果就会不一样,其中有一个是错误的。虽然攻击者可以利用激光等手段攻击CPU的第一次判断结果,强制让CPU的比较结果满足相等条件,但是因为第一寄存器和第二寄存器的数据又被存储到第三寄存器和第四寄存器中,后两个寄存器的数据和第一寄存器和第二寄存器的数据相同。当采用本发明实施例公开的防护方法时,攻击者如果想得到输出结果就必须继续强制改变第二次判断的结果,这样就大大增加了攻击难度;如果采用三级或三级以上的存储方式,故障攻击会更加难以实现。
本发明实施例提供的一种抵抗故障攻击的防护方法,采用多级存储的方式存储运算结果,并分别进行多次比较判断,只有在所有判断结果均相同时才输出运算结果,从而加大了攻击者的攻击难度,该方法可以有效抵抗多点的故障攻击,提高安全性。同时,该方法不需要增加芯片面积和功耗,抵抗故障攻击效果显著。
下面通过一个实施例详细介绍该防护方法的流程。
实施例一
在实施例一中,采用二级存储的方式,采用顺序判断的方式依次判断运算结果是否一致,方法流程参见图2和图3所示,具体包括:
步骤201:获取第一运算结果和第二运算结果,并将第一运算结果存储于第一寄存器,将第二运算结果存储于第二寄存器。
步骤202:读取第一存储器中的第一运算结果,并将第一运算结果存储于第三存储器。
步骤203:读取第二存储器中的第二运算结果,并将第二运算结果存储于第四存储器。
步骤204:判断第一存储器中的第一运算结果与第二存储器中的第二运算结果是否相同,当运算结果相同时,继续步骤205,否则继续步骤207。
步骤205:判断第三存储器中的第一运算结果与第四存储器中的第二运算结果是否相同,当运算结果相同时,继续步骤206,否则继续步骤207。
步骤206:输出运算结果。
步骤207:输出错误提示。
在实施例一中,如果同时执行判断步骤,则同时执行步骤204和步骤205,当二者的判断结果均相同时,继续步骤206;只要存在一个判断结果不相同,则继续步骤207。
以上详细介绍了该抵抗故障攻击的防护方法的详细方法流程,该方法也可以通过相应的装置实现,下面详细介绍该装置的结构和功能。
本发明实施例提供的一种抵抗故障攻击的防护装置,参见图4所示,该装置包括:预处理模块401、多级存储模块402和多级判断模块。
预处理模块401,用于获取第一运算结果和第二运算结果,并将第一运算结果存储于第一寄存器,将第二运算结果存储于第二寄存器;
多级存储模块402,用于读取第一存储器中的第一运算结果,并将第一运算结果存储于第三存储器;读取第二存储器中的第二运算结果,并将第二运算结果存储于第四存储器;
多级判断模块403,用于判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同,当判断结果为第一运算结果与第二运算结果均相同时,输出运算结果。
优选的,多级存储模块402还用于:读取第三存储器中的第一运算结果,并将第一运算结果存储于第五存储器;读取第四存储器中的第二运算结果,并将第二运算结果存储于第六存储器。
优选的,多级判断模块403具体用于:
判断第一存储器中的第一运算结果与第二存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;或
判断第一存储器中的第一运算结果与第四存储器中的第二运算结果是否相同;判断第三存储器中的第一运算结果与第二存储器中的第二运算结果是否相同。
优选的,多级判断模块403具体用于:
同时执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤;或
按照先后顺序依次执行判断存储有第一运算结果的存储器中的第一运算结果与存储有第二运算结果的存储器中的第二运算结果是否相同中的判断步骤。
本发明实施例提供的一种抵抗故障攻击的防护方法和装置,采用多级存储的方式存储运算结果,并分别进行多次比较判断,只有在所有判断结果均相同时才输出运算结果,从而加大了攻击者的攻击难度,该方法可以有效抵抗多点的故障攻击,提高安全性。同时,该装置不需要增加芯片面积和功耗,抵抗故障攻击效果显著。
本发明能有多种不同形式的具体实施方式,上面以图1-图4为例结合附图对本发明的技术方案作举例说明,这并不意味着本发明所应用的具体实例只能局限在特定的流程或实施例结构中,本领域的普通技术人员应当了解,上文所提供的具体实施方案只是多种优选用法中的一些示例,任何体现本发明权利要求的实施方式均应在本发明技术方案所要求保护的范围之内。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内, 所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
机译: 侧信道攻击抵抗力评估设备,侧信道攻击抵抗力评估方法和侧信道攻击抵抗力评估程序
机译: 网络攻击防护方法,网络攻击防护装置和网络攻击防护程序
机译: 侧通道攻击抵抗力评估装置,侧通道攻击抵抗力评估方法及其程序