首页> 中国专利> 基于ECC密码模块的防攻击方法及装置

基于ECC密码模块的防攻击方法及装置

摘要

本发明提供了一种基于ECC密码模块的防攻击方法及装置。所述方法包括:当执行至第一条件跳转指令时,对第三数据执行第一运算指令;所述第一条件跳转指令包括:在输入私钥的比特位d

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-22

    授权

    授权

  • 2016-12-21

    实质审查的生效 IPC(主分类):H04L9/32 申请日:20150331

    实质审查的生效

  • 2016-11-23

    公开

    公开

说明书

技术领域

本发明涉及数据安全技术领域,特别涉及一种基于ECC密码模块的防攻击方法及装置。

背景技术

椭圆曲线密码体制(Elliptic Curve Cryptosystem,ECC)是基于椭圆曲线数学的一种公钥密码体制。相对于目前通用的公钥密码体制,它可以更短的密钥提供更高等级的安全。

基于ECC的密码模块在对输入的私钥进行运算的过程中,需要调用二进制点乘算法进行多次二进制点乘运算。每次二进制点乘运算的过程中,由于存在条件跳转指令,即根据私钥比特位取值的不同,执行不同的流程,导致对应的能量迹不同。因此,攻击者在攻击基于ECC的密码模块时,可以采用简单功耗分析等攻击手段,通过区分私钥不同比特位对应的能量迹的差别,破解出私钥。

目前,为了抵抗简单功耗分析等攻击手段,出现了大量的防护方法,例如,在二进制点乘算法中,嵌套总是倍点点加算法或蒙哥马利点乘算法来抵抗攻击。然而,在具体实现时,采用上述防护方法的二进制点乘算法仍不可避免地需要根据私钥比特位的取值决定部分指令的执行,攻击者通过分析私钥不同比特位对应的能量迹的细微差别,仍能破解出私钥。

发明内容

本发明解决的问题是如何防止攻击者通过区分析私钥不同比特位对应的能量迹的细微差别而破解私钥。

为解决上述问题,本发明实施例提供一种基于ECC密码模块的防攻击方法,所述方法包括:

当执行至第一条件跳转指令时,对第三数据执行第一运算指令;所述第一条件跳转指令包括:在输入私钥的比特位di=0时,对第一数据执行第一运算指令,否则,对第二数据执行所述第一运算指令;其中:在di=0时,所述第一运算指令在对所述第三数据执行时的参数与对所述第一数据执行时的参数相同;在di=1时,所述第一运算指令对所述第三数据执行时的参数与对所述第二数据执行时的参数相同;i为正整数。

可选地,所述第一运算指令在对所述第三数据执行时的参数,等于所述第一运算指令对所述第一数据执行时对应的参数以及对所述第二数据执行时的参数中至少一个与所述di进行运算后的结果。

可选地,所述第一运算指令在对所述第三数据执行时的参数包括:第一参数和第二参数,在对所述第二数据执行时的参数对应包括:第三参数和第四参数,在对所述第一数据执行时的参数对应包括:第五参数和第六参数,所述第一参数等于所述第三参数和第五参数中的至少一个与所述di进行运算后的结果,所述第二参数等于所述第四参数和第六参数中的至少一个与所述di进行运算后的结果。

可选地,所述第一参数等于所述第三参数与第五参数之差与所述di的乘积再与第五参数求和。

可选地,所述第二参数等于所述第四参数与第六参数之差与所述di的乘积再与第六参数求和。

可选地,所述第一运算指令包括以下任一种:模乘运算指令,模加运算指令和模减运算指令。

本发明实施例还提供了一种基于ECC密码模块的防攻击装置,所述装置包括:

判断单元,用于判断是否执行至第一条件跳转指令,所述第一条件跳转指令包括:在输入私钥的比特位di=0时,对第一数据执行第一运算指令,否则对第二数据执行所述第一运算指令,其中,i为正整数;

执行单元,用于当执行至第一条件跳转指令时,对第三数据执行第一运算指令;其中:在di=0,所述第一运算指令在对所述第三数据执行时的参数与对所述第一数据执行时的参数相同;在di=1时,所述第一运算指令对所述第三数据执行时的参数与对所述第二数据执行时的参数相同。

可选地,所述第一运算指令在对所述第三数据执行时的参数,等于所述第一运算指令对所述第一数据执行时对应的参数以及对所述第二数据执行时对应的参数中的至少一个与所述di进行运算后的结果。

可选地,所述第一运算指令在对所述第三数据执行时的参数包括:第一参数和第二参数,在对所述第二数据执行时的参数对应包括:第三参数和第四参数,在对所述第一数据执行时的参数对应包括:第五参数和第六参数,所述第一参数等于所述第三参数和第五参数中的至少一个与所述di进行运算后的结果,所述第二参数等于所述第四参数和第六参数中的至少一个与所述di进行运算后的结果。

可选地,所述第一参数等于所述第三参数与第五参数之差与所述di的乘积再与第五参数求和。

可选地,所述第二参数等于所述第四参数与第六参数之差与所述di的乘积再与第六参数求和。

可选地,所述第一运算指令包括以下任一种:模乘运算指令,模加运算指令和模减运算指令。

与现有技术相比,本发明的实施例具有以下优点:通过对是否执行至第一条件跳转指令进行判断,并在执行至第一条件跳转指令时,对第三数据执行第一运算指令,而无须执行第一条件跳转指令,可以从根本上消除因私钥比特位取值的不同所导致的指令执行的不同,也就可以避免由此产生的功耗差异,故可以防止攻击者通过分析上述功耗差异对基于ECC密码模块进行攻击,提高所述基于ECC密码模块的安全性。

附图说明

图1是本发明实施例中基于ECC密码模块的防攻击方法的流程图;

图2是本发明实施例中基于ECC密码模块的防攻击装置的结构示意图。

具体实施方式

基于ECC的密码模块在对输入的私钥进行运算的过程中,需要根据私钥的比特长度并调用二进制点乘算法进行多轮运算,其中,每一轮运算针对私钥的一比特位进行。

通常情况下,二进制点乘算法中可以包括倍点运算和点加运算,对私钥的一比特位di进行运算时,在di=0时,仅做一次倍点运算即可完成该轮运算,而在di=1时,做完一次倍点运算后,还需要再做一次点加运算,才可完成该轮的运算。也就是说,私钥比特位di的取值决定了是否执行点加运算,以及倍点运算和点加运算的执行顺序。由于所述密码模块在执行点加运算和倍点运算时的功耗不同,因此,攻击者往往可以采用简单功耗分析等手段,对所述密码模块在每轮运算过程中的功耗进行分析,最终破解出私钥。

为了抵抗简单功耗分析等攻击手段,通常在二进制点乘算法中嵌套总是倍点点加算法或蒙哥马利点乘算法来完成对私钥某一比特位的运算。无论是在二进制点乘算法中嵌套总是倍点点加算法还是蒙哥马利点乘算法,均可以使得每一轮运算在执行完倍点运算后,执行点加运算,而无须根据私钥比特位的取值来决定是否执行点加运算以及倍点运算和点加运算的执行顺序,从而可以减小由此导致的功耗差异,有效抵抗攻击者的攻击。

在具体实施中,二进制点乘算法通常是由软件调度相关的硬件基本运算单元来实现的,尽管在二进制点乘算法中嵌套了总是倍点点加算法或者蒙哥马利点乘算法,然而,在依靠软件调度相关的硬件基本运算单元实现总是倍点点加算法或者蒙哥马利点乘算法时,部分硬件基本运算单元的参数仍需要根据私钥比特位的取值来决定,即仍存在条件跳转指令,从而导致每轮运算的执行仍存在细微的差异。因此,攻击者通过分析二进制点乘算法每轮运算执行的细微差异,仍可以破解出私钥。

针对上述问题,本发明的实施例提供了一种基于ECC密码模块的防攻击方法。所述方法通过判断是否执行至第一条件跳转指令,并在执行至第一条件跳转指令时,对第三数据执行第一运算指令,从而无须执行第一条件跳转指令,因此可以从根本上消除因私钥比特位取值的不同所导致的指令执行的不同,避免由此产生的功耗差异,有效防止攻击者利用上述功耗差异对所述密码模块进行攻击,提高所述基于ECC密码模块的安全性。

为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细地说明。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还可以采用其他不同于在此描述的其它方式来实施,因此本发明不受下面公开的具体实施例的限制。

本发明的实施例提供了一种基于ECC密码模块的防攻击方法,在具体实施中,所述方法可适于所述基于ECC密码模块运行二进制点乘算法的过程中,所述方法防攻击方法具体可以包括如下步骤:

步骤101,判断是否执行至第一条件跳转指令。

本发明的实施例中,基于ECC密码模块的输入私钥为d,私钥d可以包括n个比特位,其中di表示第i个比特位,1≤i≤n,i与n均为正整数。

为了避免因执行倍点运算和点加运算所导致的功耗差异,可以在二进制点乘算法中嵌套总是倍点点加算法或蒙哥马利点乘算法,使得二进制点乘算法的每轮运算中,无论di的值为0还是1,均在执行一次倍点运算后,再执行一次点加运算。

在具体执行倍点运算或者点加运算时,需要软件调度多个硬件基本运算单元来实现,而部分硬件基本运算单元的参数仍取决于比特位di的值,由此导致功耗上的差异。其中,所述硬件基本运算单元可以为模乘运算单元、模加运算单元或者模减运算单元等。例如,在执行倍点运算时,其中一模加运算单元的参数在di=0时分别为0x1fc8和0x03010102,而在di=1时则分别为0x1c81和0x03010203。所述条件跳转指令的存在会引起功耗的细微差异。

为了避免引起上述功耗上的差异,在具体实施时,先判断是否执行至第一条件跳转指令,并在执行至第一条件跳转指令时,执行步骤102。其中,所述第一条件跳转指令包括:在输入私钥d的比特位di=0时,对第一数据执行第一运算指令,否则,对第二数据执行所述第一运算指令。

在具体实施中,所述第一运算指令与所述硬件基本运算单元相对应,比如,所述第一运算指令可以为模乘运算指令,也可以为模加运算指令,还可以为模减运算指令。所述第一运算指令的参数与具体执行的数据相对应,可以通过改变参数的方式来对不同的数据执行相应的运算。例如,当第一运算指令的参数为0x1fc8和0x03010102时,对第一数据执行模加运算。当第一运算指令的参数为0x1c81和0x03010203,则对第二数据执行模加运算。

步骤102,当执行至第一条件跳转指令时,对第三数据执行第一运算指令。

也就是说,在二进制点乘算法的执行过程中,执行至第一条件跳转指令时,直接对第三数据执行第一运算指令,而不再执行所述第一条件跳转指令。因此可以避免因执行第一条件跳转指令所引起的功耗差异。

在具体实施中,若di=0,则所述第一运算指令对第三数据执行时的参数与对第一数据执行时的参数相同。若di=1,则所述第一运算指令对第三数据执行时的参数与对第二数据执行时的参数相同。由于所述第一运算指令的参数与具体执行的数据相对应,当所述第一运算指令对第三数据执行时的参数与对第一数据执行时的参数相同时,可以使得所述第三数据与所述第一数据相同。同理,当所述第一运算指令对第三数据执行时的参数与对第二数据执行时的参数相同,可以使得所述第三数据与所述第二数据相同。

在具体实施中,可以采用多种方式获得不同情况下所述第一运算指令对第三数据执行时的参数。例如,所述第一运算指令对第三数据执行时的参数可以为所述第一运算指令对第一数据执行时对应的参数与di进行运算后的结果,也可以为所述第一运算指令对第二数据执行时对应的参数与di进行运算后的结果,还可以为所述第一运算指令对第一数据执行时的对应的参数以及对第二数据执行时对应的参数与di进行运算后的结果。

下面以所述第一运算指令包括两个参数为例,对上述获得所述第一运算指令对第三数据执行时的参数进行说明:

所述第一运算指令对第三数据执行时的参数分别为:第一参数和第二参数,对第二数据执行时的参数对应为:第三参数和第四参数,对第一数据执行时的参数对应为:第五参数和第六参数。其中,所述第一参数可以为所述第三参数与di进行运算后的结果,也可以为第五参数与di进行运算后的结果,还可以为第三参数以及第五参数与di进行运算后的结果。所述第二参数可以为所述第四参数与di进行运算后的结果,也可以为第六参数与di进行运算后的结果,还可以为第四参数以及第六参数与di进行运算后的结果。

在具体实施中,所述与比特位di进行运算后的结果可以为与di进行一种运算的结果,也可以为与di两种运算的结果,还可以为与di进行多种运算的结果。所述运算可以为加法运算,也可以为减法运算,还可以为其他运算。

在具体实施中,所述第一参数可以等于所述第三参数与第五参数之差与所述di的乘积再与第五参数求和。所述第二参数可以等于所述第四参数与第六参数之差与所述di的乘积再与第六参数求和。比如,当第三参数等于0x1c81,第四参数等于0x03010203,第五参数等于0x1fc8,第六参数等于0x03010102时,所述第一参数等于(0x1fc8+di*(0x1c81-0x1fc8)),所述第二参数等于(0x03010102+di*(0x03010203-0x03010102))。

由步骤101和步骤102可以看出,本发明实施例中的方法,通过先判断是否执行至第一条件跳转指令,并在执行至第一条件跳转指令时,对第三数据执行第一运算指令,而不再执行第一条件跳转指令,因此可以避免因执行第一条件跳转指令所引起的功耗差异,防止攻击者利用上述功耗差异对密码模块进行攻击,提高基于ECC密码模块的安全性。

可以理解的是,具体实施时,在所述基于ECC密码模块调用二进制点乘算法进行运算的过程中,所述防攻击方法可能运行一次,也可能会运行多次,具体运行次数与所述条件跳转指令的数目有关,只要执行至所述条件跳转指令,即可采用所述防攻击方法。

为了使本领域技术人员更好地理解和实现本发明,以下对基于ECC密码模块的防攻击方法对应的装置进行详细描述。

如图2所示,本发明的实施例提供了一种基于ECC密码模块的防攻击装置20,所述防攻击装置20可以包括:判断单元201及执行单元202。其中,所述判断单元201可以用于判断是否执行至第一条件跳转指令。所述执行单元202可以用于在执行至第一条件跳转指令时,对第三数据执行第一运算指令。

在具体实施中,所述第一条件跳转指令可以包括:在输入私钥的比特位di=0时,对第一数据执行所述第一运算指令,否则对第二数据执行所述第一运算指令,其中,i为正整数。所述第一运算指令可以为模乘运算指令,模加运算指令或者模减运算指令等。在di=0时,所述第一运算指令在对所述第三数据执行时的参数与对第一数据执行时的参数相同。在di=1时,所述第一运算指令对所述第三数据执行时的参数与对所述第二数据执行时的参数相同。

在具体实施中,可以采用多种方式获得不同情况下所述第一运算指令对第三数据执行时的参数。例如,所述第一运算指令对第三数据执行时的参数可以为所述第一运算指令对第一数据执行时对应的参数与di进行运算后的结果,也可以为所述第一运算指令对第二数据执行时对应的参数与di进行运算后的结果,还可以为所述第一运算指令对第一数据执行时的对应的参数以及对第二数据执行时对应的参数与di进行运算后的结果。

当所述第一运算指令包括两个参数时,比如所述第一运算指令对第三数据处理时的参数分别为:第一参数及第二参数,对第二数据处理时的参数分别为:第三参数及第四参数,对第一数据处理时的参数分别为:第五参数及第六参数,则所述第一参数可以为所述第三参数与di进行运算后的结果,也可以为第五参数与di进行运算后的结果,还可以为第三参数以及第五参数与di进行运算后的结果。所述第二参数可以为所述第四参数与di进行运算后的结果,也可以为第六参数与di进行运算后的结果,还可以为第四参数以及第六参数与di进行运算后的结果。

在具体实施中,所述第一参数可以等于所述第三参数与第五参数之差与di的乘积再与第五参数求和。所述第二参数等于所述第四参数与第六参数之差与di的乘积再与第六参数求和。

通过本发明实施例中的防攻击装置20,在判断单元201判断执行至第一条件跳转指令时,由执行单元202对第三数据执行第一运算指令,而不再执行第一条件跳转指令,可以从根本上去除条件跳转指令,避免因执行条件跳转指令所引起的功耗差异,因此可以防止攻击者对所述密码模块进行攻击。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:ROM、RAM、磁盘或光盘等。

虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号