一种用于加解密引擎的防止攻击的方法和装置以及芯片与流程

文档序号:14292442阅读:190来源:国知局

本发明涉及计算机技术领域,尤其涉及一种用于加解密引擎的防止攻击的方法和装置以及芯片。



背景技术:

现在的手机芯片、智能卡、加密存储卡、物联网芯片、路由器芯片、机顶盒芯片等芯片或采用倒装芯片(英文名称:flipchip)等独特封装,或采用16纳米(英文全称:nanometer,英文简称:nm)工艺等高工艺设计,这些芯片的安全系统只是芯片中的一小部分且通常放置在布线的中间层,以上各种特点造成攻击者对手机芯片等各类芯片进行侵入式攻击(例如:剖片攻击等)的难度严重加大。所以攻击者开始尝试其它可用的攻击方法。其中利用侧信道攻击进行破解密钥的方法已经成为攻击者破解加解密引擎最有效最流行的方法。因为手机芯片等各类芯片在运行过程中,会通过侧信道泄露芯片密钥相关的功耗信息,这些功耗信息和密钥严重相关,使得攻击者有机会利用这些功耗信息破解芯片密钥,且这种攻击方法有着低成本、高成功率的特点。

因此,防止侧信道攻击已经成为了安全系统的一个重要防攻击需求。目前这些芯片受限于芯片整体功耗、整体成本的原因,普遍采用在加解密引擎中加入多种防攻击算法的技术来对抗侧信道攻击。但是随着计算能力越来越强,侧信道攻击算法越来越强大,而且防攻击算法始终落后于攻击算法。所以采用防攻击算法的设计不能及时的对抗新的侧信道攻击算法,现有技术存在安全系统密钥被新的侧信道攻击算法攻破的可能性,导致现有技术中的芯片的安全性不高。



技术实现要素:

本发明实施例提供了一种用于加解密引擎的防止攻击的方法和装置以及芯片,用于防止芯片受到侧信道攻击,提高芯片的安全性。

为解决上述技术问题,本发明实施例提供以下技术方案:

第一方面,本发明实施例提供一种用于加解密引擎的防止攻击的方法,包括:获取为加解密引擎配置的第一启动运行条件,所述加解密引擎设置在芯片上;根据所述第一启动运行条件为所述芯片上设置的加扰模块配置第二启动运行条件,所述第二启动运行条件用于在按照所述第一启动运行条件启动所述加解密引擎进行数据加解密处理的过程中,使所述加扰模块处于产生功耗和电磁波的工作状态;当达到所述第二启动运行条件的要求时控制所述加扰模块开始运行,所述加扰模块运行时会产生功耗和电磁波;以及,当达到所述第一启动运行条件的要求时控制所述加解密引擎启动,由所述加解密引擎开始进行数据加解密处理。

在本发明实施例中,在芯片上设置有加解密引擎和加扰模块,首先获取为加解密引擎配置的第一启动运行条件,然后可以根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态,当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。因此本发明实施例中加扰模块能够在加解密引擎进行数据加解密处理的过程中产生功耗和电磁波,从而加扰模块能够将芯片内加解密引擎产生的功耗和电磁波掩盖,使得侧信道攻击无法正确寻找到芯片内的加解密引擎,从侧信道攻击的根源上解除了利用侧信道攻击芯片的可能性,防止芯片受到侧信道攻击,提高芯片的安全性。

结合第一方面,在第一方面的第一种可能的实现方式中,所述第一启动运行条件包括:第一启动运行时刻;所述根据所述第一启动运行条件为所述芯片上设置的加扰模块配置第二启动运行条件,包括:根据所述加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取所述芯片上设置的加扰模块的第二启动运行时刻。以启动运行条件具体为启动运行时刻为例进行说明,预先配置启动时刻间隔,然后根据加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取芯片上设置的加扰模块的第二启动运行时刻,结合第一启动运行时刻和启动时刻间隔可以配置第二启动运行时刻,在时间轴先确定出第一启动运行时刻,再以启动时刻间隔为单位来滑动就可以从时间轴上确定下来第二启动运行时刻,从而通过启动时刻的配置来确定加扰模块的启动时刻,从而使得加扰模块能够按照该第二启动运行时刻进行启动工作。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述根据所述加解密引擎的启动运行时刻和预置的启动时刻间隔获取所述芯片上的加扰模块的启动运行时刻,包括:当所述启动时刻间隔的取值为小于0的时刻值时,将所述第一启动运行时刻提前所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,当所述启动时刻间隔的取值为大于0的时刻值时,将所述第一启动运行时刻延迟所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,当所述启动时刻间隔的取值为0时,将所述第一启动运行时刻配置为所述第二启动运行时刻。具体的,启动时刻间隔可以配置为正、负、零等时刻值,从而确定加扰模块在多种启动时刻间隔时的具体启动方式,从而使得加扰模块能够按照该第二启动运行时刻进行启动工作。

结合第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,所述当达到所述第二启动运行条件的要求时控制所述加扰模块开始运行,包括:在所述加解密引擎启动数据加解密处理之前,控制所述芯片上设置的加扰模块开始运行;或,在所述加解密引擎正在进行数据加解密处理的过程中,控制所述芯片上设置的加扰模块开始运行;或,在所述加解密引擎启动数据加解密处理的同时,控制所述芯片上设置的加扰模块开始运行。具体的,加扰模块可以先于加解密引擎开始运行,通过先运行的加扰模块可以对加解密引擎的正常工作进行更有效的加扰和掩盖。加扰模块也可以在加解密引擎已经开始工作之后开始运行,加扰模块运行起来后可以对加解密引擎的正常工作进行加扰和掩盖。加扰模块和加解密引擎还可以同时开始工作,加扰模块与加解密引擎的同步运行使得侧信道攻击无法通过功耗和电磁波来正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。

结合第一方面或第一方面的第一种可能或第二种可能或第三种可能的实现方式,在第一方面的第四种可能的实现方式中,所述当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,所述方法还包括:在所述加解密引擎完成数据加解密处理之后控制所述加扰模块停止运行。其中,加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎完成数据加解密处理之后控制加扰模块停止运行,从而降低整个系统的功耗。在实际应用中,正常加解密结束后,可以关闭也可以不关闭用于功耗加扰的加扰模块,优选的,关闭加扰模块可以降低系统功耗。

结合第一方面或第一方面的第一种可能或第二种可能或第三种可能的实现方式,在第一方面的第五种可能的实现方式中,所述当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,所述方法还包括:在所述加解密引擎开始进行数据加解密处理之后的关闭时刻间隔达到时,控制所述加扰模块停止运行,或者控制所述加扰模块降低功耗。加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎开始进行数据加解密处理时进行计时,当达到关闭时刻间隔时,控制加扰模块停止运行,或者控制加扰模块降低功耗,降低整个系统的功耗。例如关闭时刻间隔可以具体应用场景来设置,在加解密引擎开始进行数据加解密处理时开始进行计时,当达到关闭时刻间隔时,说明已经满足加扰模块的关闭条件可以关闭掉加扰模块。

结合第一方面或第一方面的第一种可能或第二种可能或第三种可能的实现方式,在第一方面的第六种可能的实现方式中,所述加扰模块包括:在所述加解密引擎进行数据加解密处理的过程中处于空闲状态的所述芯片上设置的空闲模块,或者所述芯片上设置的对所述加解密引擎具有功耗加扰和电磁波加扰的冗余模块,或者所述加解密引擎内的在所述加解密引擎进行数据加解密处理的过程中的空闲逻辑单元或者冗余逻辑单元。本发明实施例提供的加扰模块可以设置在加解密引擎外部,也可以设置在加解密引擎内部,对于加扰模块的多种实现方式,都可以实现对加解密引擎进行数据加解密处理的过程中的功耗干扰和电磁波干扰。

第二方面,本发明实施例还提供一种用于加解密引擎的防止攻击的装置,包括:获取模块,用于获取为加解密引擎配置的第一启动运行条件,所述加解密引擎设置在芯片上;条件配置模块,用于根据所述第一启动运行条件为所述芯片上设置的加扰模块配置第二启动运行条件,所述第二启动运行条件用于在按照所述第一启动运行条件启动所述加解密引擎进行数据加解密处理的过程中,使所述加扰模块处于产生功耗和电磁波的工作状态;控制模块,用于当达到所述第二启动运行条件的要求时控制所述加扰模块开始运行,所述加扰模块运行时会产生功耗和电磁波;以及,当达到所述第一启动运行条件的要求时控制所述加解密引擎启动,由所述加解密引擎开始进行数据加解密处理。

在本发明实施例中,在芯片上设置有加解密引擎和加扰模块,首先获取为加解密引擎配置的第一启动运行条件,然后可以根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态,当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。因此本发明实施例中加扰模块能够在加解密引擎进行数据加解密处理的过程中产生功耗和电磁波,从而加扰模块能够将芯片内加解密引擎产生的功耗和电磁波掩盖,使得侧信道攻击无法正确寻找到芯片内的加解密引擎,从侧信道攻击的根源上解除了利用侧信道攻击芯片的可能性,防止芯片受到侧信道攻击,提高芯片的安全性。

结合第二方面,在第二方面的第一种可能的实现方式中,所述第一启动运行条件包括:第一启动运行时刻;所述条件配置模块,具体用于根据所述加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取所述芯片上设置的加扰模块的第二启动运行时刻。以启动运行条件具体为启动运行时刻为例进行说明,预先配置启动时刻间隔,然后根据加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取芯片上设置的加扰模块的第二启动运行时刻,结合第一启动运行时刻和启动时刻间隔可以配置第二启动运行时刻,在时间轴先确定出第一启动运行时刻,再以启动时刻间隔为单位来滑动就可以从时间轴上确定下来第二启动运行时刻,从而通过启动时刻的配置来确定加扰模块的启动时刻,从而使得加扰模块能够按照该第二启动运行时刻进行启动工作。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述条件配置模块,具体为:第一时刻配置单元,或第二时刻配置单元,或第三时刻配置单元,其中,所述第一时刻配置单元,用于当所述启动时刻间隔的取值为小于0的时刻值时,将所述第一启动运行时刻提前所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,所述第二时刻配置单元,用于当所述启动时刻间隔的取值为大于0的时刻值时,将所述第一启动运行时刻延迟所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,所述第三时刻配置单元,用于当所述启动时刻间隔的取值为0时,将所述第一启动运行时刻配置为所述第二启动运行时刻。具体的,启动时刻间隔可以配置为正、负、零等时刻值,从而确定加扰模块在多种启动时刻间隔时的具体启动方式,从而使得加扰模块能够按照该第二启动运行时刻进行启动工作。

结合第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,所述控制模块,具体为:第一模块触发单元,或第二模块触发单元,或第三模块触发单元,其中,所述第一模块触发单元,具体用于在所述加解密引擎启动数据加解密处理之前,控制所述芯片上设置的加扰模块开始运行;或,所述第二模块触发单元,具体用于在所述加解密引擎正在进行数据加解密处理的过程中,控制所述芯片上设置的加扰模块开始运行;或,所述第三模块触发单元,具体用于在所述加解密引擎启动数据加解密处理的同时,控制所述芯片上设置的加扰模块开始运行。具体的,加扰模块可以先于加解密引擎开始运行,通过先运行的加扰模块可以对加解密引擎的正常工作进行更有效的加扰和掩盖。加扰模块也可以在加解密引擎已经开始工作之后开始运行,加扰模块运行起来后可以对加解密引擎的正常工作进行加扰和掩盖。加扰模块和加解密引擎还可以同时开始工作,加扰模块与加解密引擎的同步运行使得侧信道攻击无法通过功耗和电磁波来正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。

结合第二方面或第二方面的第一种可能或第二种可能或第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述控制模块,还用于当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,在所述加解密引擎完成数据加解密处理之后控制所述加扰模块停止运行。其中,加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎完成数据加解密处理之后控制加扰模块停止运行,从而降低整个系统的功耗。在实际应用中,正常加解密结束后,可以关闭也可以不关闭用于功耗加扰的加扰模块,优选的,关闭加扰模块可以降低系统功耗。

结合第二方面或第二方面的第一种可能或第二种可能或第三种可能的实现方式,在第二方面的第五种可能的实现方式中,所述控制模块,还用于当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,在所述加解密引擎开始进行数据加解密处理之后的关闭时刻间隔达到时,控制所述加扰模块停止运行,或者控制所述加扰模块降低功耗。加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎开始进行数据加解密处理时进行计时,当达到关闭时刻间隔时,控制加扰模块停止运行,或者控制加扰模块降低功耗,降低整个系统的功耗。例如关闭时刻间隔可以具体应用场景来设置,在加解密引擎开始进行数据加解密处理时开始进行计时,当达到关闭时刻间隔时,说明已经满足加扰模块的关闭条件可以关闭掉加扰模块。

结合第二方面或第二方面的第一种可能或第二种可能或第三种可能的实现方式,在第二方面的第六种可能的实现方式中,所述加扰模块包括:在所述加解密引擎进行数据加解密处理的过程中处于空闲状态的所述芯片上设置的空闲模块,或者所述芯片上设置的对所述加解密引擎具有功耗加扰和电磁波加扰冗余模块,或者所述加解密引擎内的在所述加解密引擎进行数据加解密处理的过程中的空闲逻辑单元或者冗余逻辑单元。本发明实施例提供的加扰模块可以设置在加解密引擎外部,也可以设置在加解密引擎内部,对于加扰模块的多种实现方式,都可以实现对加解密引擎进行数据加解密处理的过程中的功耗干扰和电磁波干扰。

第三方面,本发明实施例还提供一种防止攻击的芯片,所述芯片包括:加解密引擎、加扰模块,用于加解密引擎的防止攻击的装置,其中,所述加解密引擎、所述加扰模块分别和用于加解密引擎的防止攻击的装置建立有通信连接,所述用于加解密引擎的防止攻击的装置如前述第二方面中任一项所述的装置。

在本发明实施例中,在芯片上设置有加解密引擎和加扰模块,首先获取为加解密引擎配置的第一启动运行条件,然后可以根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态,当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。因此本发明实施例中加扰模块能够在加解密引擎进行数据加解密处理的过程中产生功耗和电磁波,从而加扰模块能够将芯片内加解密引擎产生的功耗和电磁波掩盖,使得侧信道攻击无法正确寻找到芯片内的加解密引擎,从侧信道攻击的根源上解除了利用侧信道攻击芯片的可能性,防止芯片受到侧信道攻击,提高芯片的安全性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的技术人员来讲,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种用于加解密引擎的防止攻击的方法的流程方框示意图;

图2为本发明实施例提供的芯片的硬件结构示意图;

图3为本发明实施例提供的加扰模块对加解密引擎产生的功耗和电磁波进行掩盖的场景示意图;

图4为本发明实施例提供的一种用于加解密引擎的防止攻击的装置的组成结构示意图;

图5为本发明实施例提供的一种防止攻击的芯片的组成结构示意图。

具体实施方式

本发明实施例提供了一种用于加解密引擎的防止攻击的方法和装置以及芯片,用于防止芯片受到侧信道攻击,提高芯片的安全性。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域的技术人员所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本发明的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。

本发明针对侧信道攻击利用功耗进行攻击的特点,提出了一种扰乱、隐藏加解密引擎的工作功耗的实现方案,简便易行同时会使得攻击者无法正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。

以下分别进行详细说明,本发明实施例应用于芯片内,可以通过对芯片内设置的加扰模块的控制运行,实现对芯片内安装的加解密引擎产生的功耗和电磁波进行有效掩盖,请参阅图1所示,本发明一个实施例提供的用于加解密引擎的防止攻击的方法,可以包括如下步骤:

101、获取为加解密引擎配置的第一启动运行条件,加解密引擎设置在芯片上。

在本发明实施例中,芯片上设置有加解密引擎,该芯片不局限于手机芯片、智能卡、加密存储卡、物联网芯片、路由器芯片、机顶盒芯片、汽车芯片、无人机芯片等芯片,芯片上安装的加解密引擎在正常工作中不可避免的会产生功耗以及电磁波,从而攻击者能够对芯片内的加解密引擎进行侧信道攻击,为解决该问题,本发明实施例中在芯片内除了设置加解密引擎之外,还设置有加扰模块,该加扰模块能够对加解密引擎的正常工作进行掩盖,从而使得攻击者无法通过功耗和电磁波来对判断出芯片内的加解密引擎,详见后续实施例的说明。优选的,加扰模块和加解密引擎具有相似功耗,或者加扰模块的功耗较大,从而通过加扰模块的运行可以对加解密引擎的正常工作进行掩盖,从而可以有效的对抗侧信道攻击。

在本发明实施例中,加解密引擎可以指一个或多个加解密模块,或加解密逻辑的部分全部逻辑,可以执行加解密、签名验签、密钥生成的部分或全部功能。加解密引擎的运行可以通过启动运行条件来触发,为了区别不同设备的启动运行条件,本发明实施例中为加解密引擎配置的启动运行条件定义为“第一启动运行条件”,该第一启动运行条件可以指的是第一启动运行时刻,即通过时钟的触发作为加解密引擎的启动运行条件,不限定的是,第一启动运行条件还可以指的是为加解密引擎配置的触发指令,该触发指令可以是特定格式或特定字段的指令,或者第一启动运行条件还可以指的是为加解密引擎配置的特定信号,当检测到该特定信号产生时可以启动加解密引擎。

102、根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件。

其中,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态。

在本发明实施例中,芯片上设置有加解密引擎,还设置有加扰模块,该加扰模块是指设置在芯片内能够产生功耗和电磁波的模块,加扰模块的实现方式可以有多种,其中一种可实现的应用场景下,加扰模块可以包括:在加解密引擎进行数据加解密处理的过程中处于空闲状态的芯片上设置的空闲模块,或者芯片上设置的对加解密引擎具有功耗加扰和电磁波加扰的冗余模块,或者加解密引擎内的在加解密引擎进行数据加解密处理的过程中的空闲逻辑单元或者冗余逻辑单元。

举例说明如下,该加扰模块可以是设置在芯片上的空闲模块或者冗余模块,其中,空闲模块是指芯片内相对于加解密引擎而言的处于空闲状态的模块,该空闲模块可以由芯片上已经设置的在加解密引擎工作时并不工作的模块来实现,例如空闲模块是在加解密引擎进行数据加解密处理的过程中处于空闲状态的真随机数生成器(truerandomnumbergenerator,trng),trng设置在芯片上,trng本身可以进行真随机数的计算,但是在加解密引擎进行数据加解密处理的过程中trng本身并不工作,因此可以作为空闲模块,用于对加解密引擎的功耗加扰和电磁波加扰。该空闲模块也可以是在加解密引擎进行数据加解密处理的过程中处于空闲状态的动态编程器(onetimeprogrammer,otp)、内存加解密(memoryencryptanddecrypt,med)模块、传感器(sensor)、哈希计算(hash)模块等,这些模块本身也设置在芯片上,但是在芯片上的加解密引擎正在进行数据加解密处理时并不工作,因此可以用于本发明实施例中的加扰模块,起到对加解密引擎的功耗加扰和电磁波加扰作用。冗余模块是指设置在芯片内的相对于芯片实现正常功能之外的起到对加解密引擎的功耗加扰和电磁波加扰作用的模块,例如冗余模块是为了实现本发明实施例中对加解密引擎的功耗加扰和电磁波加扰而设置的不同于芯片的原有功能的额外增加的模块。空闲模块和冗余模块设置在芯片上,空闲模块和冗余模块只需要与芯片上的cpu相连接即可,空闲模块和冗余模块可以与加解密引擎相连接,也可以不与加解密引擎相连接,此处不做限定。前述描述的空闲模块和冗余模块是指设置在芯片上独立于加解密引擎的模块,不限定的是,本发明实施例提供的加扰模块可以设置在加解密引擎外部,也可以设置在加解密引擎内部,例如,设置在加解密引擎内的在加解密引擎进行数据加解密处理的过程中的空闲逻辑单元或者冗余逻辑单元,这些空闲逻辑单元或者冗余逻辑单元可以通过电路和加解密引擎的加解密处理单元相连接,从而在加解密处理单元对数据进行加解密处理时能够产生功耗和电磁波。例如,对于加解密引擎,为了实现对数据的加解密处理设置有功能单元a和功能单元b,对于不同应用场景下的加解密引擎,功能单元a和功能单元b的具体实现可以不同,此处只是举例说明,在加解密引擎内除了功能单元a和功能单元b还设置有空闲逻辑单元或者冗余逻辑单元,这些空闲逻辑单元或者冗余逻辑单元可以作为本发明前述实施例中提供的加扰模块,从而实现对加解密引擎的功耗加扰和电磁波加扰。

在本发明实施例中,获取到为加解密引擎配置的第一启动运行条件之后,再根据该第一启动运行条件为加扰模块配置第二启动运行条件,其中为加扰模块配置的第二启动运行条件可以有多种配置方式,使得配置的第二启动运行条件可以用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中使加扰模块处于产生功耗和电磁波的工作状态,该第二启动运行条件可以是为加扰模块配置的启动运行时刻,或触发指令,或特定信号等,例如第二启动运行条件可以是触发指令,例如具有特定格式或特定字段的指令,或者第二启动运行条件是为加扰模块配置的特定信号,具体实现方式不做限定。

在本发明的一些实施例中,以启动运行条件具体为启动运行时刻为例进行说明,即为加解密引擎配置的第一启动运行条件包括第一启动运行时刻,为加扰模块配置的第二启动运行条件包括第二启动运行时刻,第二启动运行时刻的实现可以通过如下方式来实现,步骤102根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,包括如下步骤:

a1、根据加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取芯片上设置的加扰模块的第二启动运行时刻。

其中,预先配置启动时刻间隔,然后根据加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取芯片上设置的加扰模块的第二启动运行时刻,结合第一启动运行时刻和启动时刻间隔可以配置第二启动运行时刻,在时间轴先确定出第一启动运行时刻,再以启动时刻间隔为单位来滑动就可以从时间轴上确定下来第二启动运行时刻。

在本发明的一些实施例中,步骤a1根据加解密引擎的启动运行时刻和预置的启动时刻间隔获取芯片上的加扰模块的启动运行时刻,包括:

a11、当启动时刻间隔的取值为小于0的时刻值时,将第一启动运行时刻提前启动时刻间隔之后得到的时刻值作为第二启动运行时刻;或,

a12、当启动时刻间隔的取值为大于0的时刻值时,将第一启动运行时刻延迟启动时刻间隔之后得到的时刻值作为第二启动运行时刻;或,

a13、当启动时刻间隔的取值为0时,将第一启动运行时刻配置为第二启动运行时刻。

具体的,启动时刻间隔可以配置为正、负、零等时刻值。举例说明如下,在时间轴先确定出第一启动运行时刻,再以启动时刻间隔为单位来滑动就可以从时间轴上确定下来第二启动运行时刻。例如启动时刻间隔的取值为小于0的时刻值,在时间轴上从第一启动运行时刻向左滑动后就可确定出第二启动运行时刻,第二启动运行时刻要早于第一启动运行时刻,又如启动时刻间隔的取值为大于0的时刻值,在时间轴上从第一启动运行时刻向右滑动后就可确定出第二启动运行时刻,第二启动运行时刻要晚于第一启动运行时刻,又如启动时刻间隔的取值为0,在时间轴上的第一启动运行时刻就等于第二启动运行时刻,即可以将第一启动运行时刻配置为第二启动运行时刻。可以理解的是,加扰模块的第二启动运行时刻可以结合应用场景来确定,此处不做限定。

在本发明实施例中,为加扰模块配置第二启动运行条件之后,需要实时检测是否满足第一启动运行条件,以及检测是否满足第二启动运行条件,若满足第一启动运行条件则触发后续步骤104执行,若满足第二启动运行条件则触发后续步骤103执行,在实际应用中,步骤103和步骤104之间可以采用多种时序关系,例如可以先执行步骤103再执行步骤104,还可以先执行步骤104再执行步骤103,还可以同时执行步骤103和步骤104,具体实现方式不做限定,图1中以先执行步骤103再执行步骤104为例进行说明。

103、当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,

104、当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。

在本发明实施例中,获取到第一启动运行条件和第二启动运行条件之后,需要实时检测是否满足第一启动运行条件,以及检测是否满足第二启动运行条件,在满足哪个启动运行条件的要求时就控制该条件触发的模块开始运行,例如,达到第二启动运行条件的要求时控制加扰模块开始运行,达到第一启动运行条件的要求时控制加解密引擎启动。加解密引擎的正常工作就是进行数据加解密处理,加扰模块运行会产生功耗和电磁波,从而对加解密引擎的正常工作起到掩盖作用,使侧信道攻击无法成功。

在本发明的一些实施例中,步骤103当达到第二启动运行条件的要求时控制加扰模块开始运行,具体可以为:

b1、在加解密引擎启动数据加解密处理之前,控制芯片上设置的加扰模块开始运行;或,

b2、在加解密引擎正在进行数据加解密处理的过程中,控制芯片上设置的加扰模块开始运行;或,

b3、在加解密引擎启动数据加解密处理的同时,控制芯片上设置的加扰模块开始运行。

其中,在第二启动运行条件通过前述步骤a11实现的场景下,具体可以执行步骤b1,也就是说,加扰模块先于加解密引擎开始运行,通过先运行的加扰模块可以对加解密引擎的正常工作进行更有效的加扰和掩盖。在第二启动运行条件通过前述步骤a12实现的场景下,具体可以执行步骤b2,也就是说,加扰模块在加解密引擎已经开始工作之后开始运行,加扰模块运行起来后可以对加解密引擎的正常工作进行加扰和掩盖。在第二启动运行条件通过前述步骤a13实现的场景下,具体可以执行步骤b3,也就是说,加扰模块和加解密引擎同时开始工作,加扰模块与加解密引擎的同步运行使得侧信道攻击无法通过功耗和电磁波来正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。

在本发明的一些实施例中,步骤104当达到第一启动运行条件的要求时控制加解密引擎启动之后,本发明实施例提供的方法还可以包括如下步骤:

c1、在加解密引擎完成数据加解密处理之后控制加扰模块停止运行。

其中,加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎完成数据加解密处理之后控制加扰模块停止运行,从而降低整个系统的功耗。在实际应用中,正常加解密结束后,可以关闭也可以不关闭用于功耗加扰的加扰模块(如电路中的冗余逻辑或其他未使用的模块),优选的,关闭加扰模块可以降低系统功耗。

在本发明的另一些实施例中,步骤104当达到第一启动运行条件的要求时控制加解密引擎启动之后,本发明实施例提供的方法还可以包括如下步骤:

d1、在加解密引擎开始进行数据加解密处理之后的关闭时刻间隔达到时,控制加扰模块停止运行,或者控制加扰模块降低功耗。

其中,加解密引擎在第一启动运行条件的触发下开始正常工作,在加解密引擎开始进行数据加解密处理时进行计时,当达到关闭时刻间隔时,控制加扰模块停止运行,或者控制加扰模块降低功耗,降低整个系统的功耗。例如关闭时刻间隔可以具体应用场景来设置,在加解密引擎开始进行数据加解密处理时开始进行计时,当达到关闭时刻间隔时,说明已经满足加扰模块的关闭条件可以关闭掉加扰模块。

通过前述实施例对本发明的举例说明可知,在芯片上设置有加解密引擎和加扰模块,首先获取为加解密引擎配置的第一启动运行条件,然后可以根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态,当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。因此本发明实施例中加扰模块能够在加解密引擎进行数据加解密处理的过程中产生功耗和电磁波,从而加扰模块能够将芯片内加解密引擎产生的功耗和电磁波掩盖,使得侧信道攻击无法正确寻找到芯片内的加解密引擎,从侧信道攻击的根源上解除了利用侧信道攻击芯片的可能性,防止芯片受到侧信道攻击,提高芯片的安全性。

为便于更好的理解和实施本发明实施例的上述方案,下面举例相应的应用场景来进行具体说明。

本发明针对侧信道攻击利用功耗进行攻击的特点,提出了一种扰乱、隐藏加解密引擎的工作功耗的方法,简便易行同时会使得攻击者无法正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。其中,功耗消耗即能量消耗,多表现为电流消耗或功率消耗。本发明提出一种扰乱、隐藏加解密引擎的工作功耗的方法,使用该方法后该加解密引擎的功耗信息不再有特定的规律和特征,会使得攻击者无法正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法,具有简便易行,降低功耗加扰、功耗隐藏设计难度的优点。

请参阅如图2所示,为本发明实施例提供的芯片的硬件结构示意图,在该芯片内设置加解密引擎和加扰模块,图2中对该芯片的硬件结构进行了举例说明。本发明实施例的应用场景中,使用加扰模块对加解密引擎进行加扰、隐藏。其中,加扰模块是个统称,只要能扰乱正常运算产生的功耗信息,使得真正的运算功耗被隐藏或扰乱,都属于加扰模块。

图2所示的一个硬件构成实施例如下:主要由中央处理单元(英文全称:centralprocessingunit,英文简称:cpu)、总线、加解密引擎模块、加扰模块组成。其中,加解密引擎可以有多种实现方式,例如,a类为对称加解密算法引擎(symmetricencryptengine,简称sce),b类指非对称加解密算法引擎(publickeyengine,简称pke)。其中,加扰模块是指除过sce、pke外的任何模块,例如,可以是系统中的时钟加扰模块、trng、otp、med模块、传感器、哈希计算模块、或者专用于对加解密引擎产生功耗加扰和电磁波加扰的模块和逻辑单元等。例如,图2中所示的加扰模块指系统中任何其他空闲模块或者空闲逻辑单元或者冗余模块。需要说明的是,图2中以加扰模块独立于加解密引擎的独立模块为例进行说明,不限定的是,在本发明的一些实施例中加扰模块也可以设置在加解密引擎内部,因为多数引擎本身也具有加扰逻辑或者某个模块中的空闲逻辑冗余逻辑。文中所有的加解密引擎指一个或多个加解密模块,或加解密逻辑的部分全部逻辑,可以执行加解密、签名验签、密钥生成的部分或全部功能。加解密引擎的正常工作指业务运行时需要工作的模块,空闲指该模块没有正常工作。加扰模块在空闲的时候都可以启动起来用以产生加扰功耗,对加解密引擎模块的正常工作功耗进行干扰、掩盖。加扰模块可以自动运行也可以由软件配置运行,其中,干扰、隐藏、扰乱等让攻击者不能轻易看到正常功耗的方式都可以认为是干扰。

需要说明的是,本发明实施例中,目前的系统中已经有很多模块,在加解密引擎运行时,也可能会天然的干扰加解密引擎的功耗,但是这些模块可以被屏蔽或者不使能,让该模块不能工作,从而不能起到干扰的作用。但是本发明实施例中提供的加扰模块重点指不能被屏蔽,不能被使能掉的模块,同时需要通过软件配置等手段让加扰模块(例如空闲或冗余模块)运行起来。本发明实施例的加扰模块是与加解密引擎具有强制运行配合关系的,该加扰模块不会被cpu被使能掉。

接下来对本发明实施例中防止攻击的芯片的功耗加扰的运行过程举例说明:

1、在运行加解密引擎之前,先运行一个和该引擎相似功耗或功耗较大的加扰模块(比如电路中的冗余逻辑或其他未使用的模块),另外也可以在引擎工作期间打开加扰模块。

2、紧接着运行正常加解密的加解密引擎。

3、正常加解密结束后,可以关闭也可以不关闭加扰模块。建议关闭,可以用于降低系统功耗。另外,也可以在加解密引擎没有结束加解密处理时就提前关闭,只要能干扰加解密引擎的正常运行功耗即可,一般在引擎运行结束后关闭加扰逻辑,这样加扰逻辑的覆盖时间更长。另外,加解密引擎的加解密过程外部可控制,在底层软件或者芯片设计时,可以同时可以让加扰模块也运行起来,加扰模块可以和引擎几乎同时运行。

在运行某加解密引擎之前,先运行一个和该引擎相似功耗或功耗较大的逻辑。在需要进行对有效数据进行加解密或者签名验签前,cpu先配置并启动加扰模块的一部分或全部分。加扰逻辑在芯片中可能集中在某一块,也可能分散在各个模块中。cpu配置并启动紧接着运行正常加解密或者签名验签的加解密引擎。正常加解密结束后,可以关闭也可以不关闭用于功耗加扰的加扰模块(比如电路中的冗余逻辑或其他未使用的模块)。如图3所示,din表述输入,dout表示输出,在现有技术中,加解密引擎不带功耗扰乱功能,加解密引擎的输出功耗如图3中所示的实线,在本发明实施例中,加解密引擎带功耗扰乱功能,即在芯片上配置有加解密引擎和加扰模块,加解密引擎的输出功耗如图3中所示的实线,加扰模块的输出功耗如图3中所示的虚线,则通过实线和虚线的叠加,通过带功耗加扰的加解密引擎后,加解密引擎原来的功耗曲线(图中的实线)已经被加扰模块的功耗曲线(图中的虚线)掩盖,从而达到功耗隐藏的目的。会使得攻击者无法正确的分析、获取加解密引擎的功耗轨迹,极大的增加了攻击者的攻击难度,成为一种有效对抗侧信道攻击的有效方法。

本发明实施例中,只在加解密引擎工作时,进行功耗加扰,不会引起整芯片的功耗过大。具体的,一方面,本发明实施例可以保护安全系统的加解密引擎,不会在运行中泄露出和密钥相关的功耗特征。成本低、使用方便、功耗加扰、隐藏效果明显。使用加扰模块进行加扰,实现方案简单。如果加扰模块的功耗波动范围大,功耗的均值和峰值大的话,功耗加扰、隐藏效果更佳。典型的如时钟加扰模块、trng、otp、sensor、med、hash计算模块,或者sce\pke内等。

另一方面,本发明实施例可以克服防功耗攻击算法总是落后新的功耗攻击算法的现状。能及时有效的对抗新的攻击算法,侧信道攻击方法需要依赖模块正常工作时泄露出来的功耗或者电磁信息,但此方法加扰、隐藏了模块正常工作时的功耗,破坏了侧信道攻击成功的前提,所以对任何侧信道攻击方法均有用,可以抵抗不断推陈出新的侧信道攻击算法。

再一方面,本发明实施例中只在加解密引擎工作时,进行功耗加扰。不会引起整芯片的功耗长时间过大。对于对功耗比较敏感的应用场景,在加解密引擎正常工作后,可以选择及时关掉功耗加扰模块,在带来安全性提高的同时不会造成整芯片或这个设备的功耗长时间过大。

本发明实施例使用了芯片或产品中当前空闲的模块或冗余的模块或者冗余的逻辑。当采用了此方法后,芯片加解密引擎正常运行前芯片或产品功耗会突然抬高。使用了产品中空闲的模块或冗余的模块或冗余的逻辑。当采用了此方法后,芯片加解密引擎正常运行时功耗会突然抬高。在引擎正常运行后,可以通过软件配置的方式,对功耗加扰模块全部或者部分关闭降低功耗。此时芯片的功耗会对应的突然剧烈降低或微小降低。因此,本发明实施例中加解密引擎进行加解密计算、签名验签、密钥生成的整个过程中均运行有加扰模块,从而可以有效的对抗侧信道攻击。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。

请参阅图4所示,本发明实施例提供的一种用于加解密引擎的防止攻击的装置400,可以包括:获取模块401、条件配置模块402和控制模块403,其中,

获取模块401,用于获取为加解密引擎配置的第一启动运行条件,所述加解密引擎设置在芯片上;

条件配置模块402,用于根据所述第一启动运行条件为所述芯片上设置的加扰模块配置第二启动运行条件,所述第二启动运行条件用于在按照所述第一启动运行条件启动所述加解密引擎进行数据加解密处理的过程中,使所述加扰模块处于产生功耗和电磁波的工作状态;

控制模块403,用于当达到所述第二启动运行条件的要求时控制所述加扰模块开始运行,所述加扰模块运行时会产生功耗和电磁波;以及,当达到所述第一启动运行条件的要求时控制所述加解密引擎启动,由所述加解密引擎开始进行数据加解密处理。

在本发明的一些实施例中,所述第一启动运行条件包括:第一启动运行时刻;

所述条件配置模块402,具体用于根据所述加解密引擎的第一启动运行时刻和预置的启动时刻间隔获取所述芯片上设置的加扰模块的第二启动运行时刻。

在本发明的一些实施例中,所述条件配置模块402,具体为:第一时刻配置单元,或第二时刻配置单元,或第三时刻配置单元,其中,

所述第一时刻配置单元,用于当所述启动时刻间隔的取值为小于0的时刻值时,将所述第一启动运行时刻提前所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,

所述第二时刻配置单元,用于当所述启动时刻间隔的取值为大于0的时刻值时,将所述第一启动运行时刻延迟所述启动时刻间隔之后得到的时刻值作为所述第二启动运行时刻;或,

所述第三时刻配置单元,用于当所述启动时刻间隔的取值为0时,将所述第一启动运行时刻配置为所述第二启动运行时刻。

在本发明的一些实施例中,所述控制模块403,具体为:第一模块触发单元,或第二模块触发单元,或第三模块触发单元,其中,

所述第一模块触发单元,具体用于在所述加解密引擎启动数据加解密处理之前,控制所述芯片上设置的加扰模块开始运行;或,

所述第二模块触发单元,具体用于在所述加解密引擎正在进行数据加解密处理的过程中,控制所述芯片上设置的加扰模块开始运行;或,

所述第三模块触发单元,具体用于在所述加解密引擎启动数据加解密处理的同时,控制所述芯片上设置的加扰模块开始运行。

在本发明的一些实施例中,所述控制模块403,还用于当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,在所述加解密引擎完成数据加解密处理之后控制所述加扰模块停止运行。

在本发明的一些实施例中,所述控制模块403,还用于当达到所述第一启动运行条件的要求时控制所述加解密引擎启动之后,在所述加解密引擎开始进行数据加解密处理之后的关闭时刻间隔达到时,控制所述加扰模块停止运行,或者控制所述加扰模块降低功耗。

在本发明的一些实施例中,所述加扰模块包括:所述芯片上设置的在所述加解密引擎进行数据加解密处理的过程中处于空闲状态的空闲模块,或者所述芯片上设置的冗余模块,或者所述加解密引擎内的在所述加解密引擎进行数据加解密处理的过程中的空闲逻辑单元或者冗余逻辑单元。

通过前述实施例对本发明的举例说明可知,在芯片上设置有加解密引擎和加扰模块,首先获取为加解密引擎配置的第一启动运行条件,然后可以根据第一启动运行条件为芯片上设置的加扰模块配置第二启动运行条件,第二启动运行条件用于在按照第一启动运行条件启动加解密引擎进行数据加解密处理的过程中,使加扰模块处于产生功耗和电磁波的工作状态,当达到第二启动运行条件的要求时控制加扰模块开始运行,加扰模块运行时会产生功耗和电磁波;以及,当达到第一启动运行条件的要求时控制加解密引擎启动,由加解密引擎开始进行数据加解密处理。因此本发明实施例中加扰模块能够在加解密引擎进行数据加解密处理的过程中产生功耗和电磁波,从而加扰模块能够将芯片内加解密引擎产生的功耗和电磁波掩盖,使得侧信道攻击无法正确寻找到芯片内的加解密引擎,从侧信道攻击的根源上解除了利用侧信道攻击芯片的可能性,防止芯片受到侧信道攻击,提高芯片的安全性。

请参阅图5所示,本发明实施例提供一种防止攻击的芯片500,所述芯片包括:加解密引擎501、加扰模块502,用于加解密引擎的防止攻击的装置503,其中,所述加解密引擎501、所述加扰模块502分别和用于加解密引擎的防止攻击的装置503建立有通信连接,用于加解密引擎的防止攻击的装置503如前述图4所述的装置。

需要说明的是,上述装置各模块/单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其带来的技术效果与本发明方法实施例相同,具体内容可参见本发明前述所示的方法实施例中的叙述,此处不再赘述。

另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用cpu、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本发明而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

综上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照上述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对上述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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