密码操作的保护的制作方法

文档序号:33336106发布日期:2023-03-04 01:22阅读:25来源:国知局
密码操作的保护的制作方法

1.本公开一般涉及密码学领域,尤其涉及椭圆曲线或类似密码学领域。


背景技术:

2.椭圆曲线密码术(ecc)很好地适用于公共密钥密码术方法,因为它能够使用尺寸减小的密码密钥。
3.然而,在涉及密码密钥的密码操作期间执行的通过简单功率分析(spa)的攻击可使外部实体能够尤其在基于椭圆曲线的密码方法中推导出密码密钥的值。
4.期望使密码密钥的值在由电子器件执行涉及它的密码操作期间难以检测。


技术实现要素:

5.在一个实施例中,一种方法包括:使用密码电路装置将属于具有群组结构的数学集合的点与标量进行乘法运算;以及在所述乘法运算期间使用所述密码电路装置来保护所述标量。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述执行的操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。
6.在一个实施例中,一种器件包括:存储器;以及耦合到所述存储器的密码电路装置。所述密码电路装置在操作中将点与标量进行乘法运算,所述点属于具有群组结构的数学集合,并且在所述乘法运算期间保护所述标量,所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。
7.在一个实施例中,一种系统包括:主处理器;以及耦合到所述主处理器的密码协处理器,其中所述密码协处理器在操作中将点与标量进行乘法运算,所述点属于具有群组结构的数学集合,并且在所述乘法运算保护所述标量。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。
8.在一实施例中,一种非暂态计算机可读介质具有配置密码电路装置以将点与标量进行乘法运算、并且在所述乘法运算期间保护所述标量的内容,所述点属于具有群组结构的数学集合。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。
附图说明
9.前述特征和优点以及其他特征和优点将在以下具体实施例的描述中参考附图以
说明而非限制的方式给出,在附图中:
10.图1示意性地示出了所述实施例可以应用的类型的电子器件的示例;
11.图2是示出了图1中所示的器件在没有实现密钥保护的密码操作期间的电功率消耗的示例的图;
12.图3是示出插入虚设密码操作的示例的表;
13.图4是示出根据实施例的密码操作的实现方法的操作的流程图;
14.图5是示出根据另一实施例的密码操作的实现方法的操作的流程图;以及
15.图6示意性地示出了根据实施例的计算电路。
具体实施方式
16.除非上下文另有说明,否则在各个附图中相同的特征由相同的附图标记表示。特别地,在各个实施例中共同的结构和/或功能特征可以具有相同的附图标记,并且可以设置相同或相似的结构,尺寸和材料特性。
17.为了清楚起见,仅示出和详细描述了对理解本文所述的实施例有用的步骤和元件。特别地,不详细描述非相邻窗口形式的标量表示以及椭圆曲线上的翻倍、加法或frobenius运算。
18.除非另有说明,否则当提及连接在一起的两个元件时,这表示除了导体之外没有任何中间元件的直接连接,并且当提及耦合在一起的两个元件时,这表示这两个元件可以被连接或者它们可以经由一个或多个其它元件被耦合。
19.在以下公开中,除非另有说明,当提及绝对位置限定词时,例如术语“前”,“后”,“顶”,“底”,“左”,“右”等,或提及相对位置限定词时,例如术语“上”,“下”,“上”,“下”等,或提及取向限定词时,例如“水平”,“垂直”等,是指图中所示的取向。
20.图1示意性地示出了根据实施例的器件100。器件100例如是计算机、蜂窝电话或者甚至是集成电路卡。
21.器件100例如包括主处理器102(主处理器)和密码协处理器104(密码协处理器),主处理器102例如是器件100的主处理器或应用处理器。例如,主处理器102可以执行应用,该应用可以调用密码协处理器104,例如作为认证过程的一部分。器件100还包括存储用于控制主处理器102和密码协处理器104的指令108(instructions)的存储器106(memory)。通信接口110(通信接口)例如耦合到主处理器102,并且例如允许经由无线通信网络的无线通信,和/或例如通过lan(“局域网”,未示出)的有线通信。
22.器件100,特别是密码协处理器104,例如适于执行椭圆曲线加密操作。具体地,密码协处理器104例如被配置成执行与属于具有以下形式的椭圆曲线e的点p的标量k的乘法:
23.[数学式1]
[0024]
e:={(x,y)∈k
×
k;y2+a1xy+a3y=x3+a2x2+a4x+a6}
[0025]
其中k是有限域,例如kk=z/pz,p是质数或质数的幂,并且系数a1,a2,a3,a4属于域k。在另一示例中,点p属于超椭圆曲线,或属于另一类型的曲线,或属于具有群组结构的任何数学集,对于该群组结构,加法和减法在计算复杂度方面是可有效计算的。这种数学集的一个例子是例如edwards曲线。
[0026]
这种与标量相乘的操作例如在数据加密期间使用,标量k是密钥,并且例如通过执
行“翻倍与添加(double and add)”类型的算法来执行。这种类型的算法是迭代类型的,并且使用从最高有效位到最低有效位(或相反)的标量k的位,并且根据读取位的值对初始零电流值q执行运算。无论所读取的位的值如何,都执行所谓的翻倍操作(dbl),并且仅在所读取的位为非空的情况下,跟随所谓的加法操作(add)。
[0027]
在曲线(e)是koblitz曲线的情况下,具有以下形式:
[0028]
[数学式2]
[0029]
e:={(x,y)∈k
×
k:y2+xy=x3+ax2+1}
[0030]
其中a∈{0,1},翻倍操作(dbl)通常被frobenius操作代替。frobenius操作具有优于常规翻倍操作的优点,因为它执行起来更快并且更便宜。
[0031]
在执行翻倍与添加型算法期间,器件100的电功率消耗的分布根据所执行的操作是翻倍操作还是添加操作而不同。然后,通过简单功率分析的攻击可以使攻击者能够逐位地推导出与乘法相关联的标量k的值。在一些实施例中,标量k是密码密钥,因此应该保持秘密。
[0032]
在一些实施例中,标量是整数并且以非相邻形式(naf)记录。naf表示基于整数的带符号数字(-1,0和1)中的表示。于是,在算法执行期间读取的位不能严格地说是位,因为它们的值不限于0或1。在naf表示下,两个连续数字(“位”)的乘积为零,即,每个数字1或-1之前和之后是数字0。naf表示的优点在于,由于与二进制表示中的一半(one half)相比,非零数字的比例平均为三分之一,因此能够减少要执行的加法运算的数量。
[0033]
在其它实施例中,以参数w的非相邻窗口(nafw)形式记录标量,其中参数w是大于或等于2的整数。参数2的nafw表示对应于naf表示。在nafw形式中,对标量进行编码的数字具有{-2
w-1
+1,-2
w-1
+3,...,2
w-1-1}∪{0}中的值。此外,对于每组w个连续数字,至多单个数字是非零的。大于或等于2的参数w的nafw表示具有减少对标量进行编码的非零数字的数目的优点,并且因此减少将在乘法运算期间执行的加法操作的数目。
[0034]
在用frobenius运算代替翻倍运算(dbl)的情况下,上述表述“非相邻形式naf”和“非相邻窗口形式nafw”必须理解为非相邻二元(τ-adic)形式和非相邻窗口二元(τ-adic)形式。
[0035]
图2是示出在没有实现密钥保护的密码操作期间图1所示的器件100的电功率消耗的示例的图。
[0036]
图2的曲线图示出了在应用于椭圆曲线的点p和naf形式的标量k的翻倍与添加类型算法的执行期间,电功率消耗(纵坐标轴,w)随时间(横坐标轴,t)的变化的示例。功耗的变化包括由分别对应于翻倍操作(dbl)和加法操作(add)的执行的两个模式200和201形成的序列。
[0037]
在图2所示的示例中,由模式200可标识的翻倍操作(dbl)发生在时刻t0和t1,t2和t3,t3和t4,t4和t5,t6和t7,然后是t8和t9之间。由模式201可标识的加法操作(add)发生在时刻t1和t2,t5和t6,然后是t7和t8之间。当翻倍运算(dbl)之后是加法运算(add)时,这两个运算对应于标量(k)的naf表示中的非零数字(1或-1)。相反,当翻倍运算(dbl)之后是另一翻倍运算时,第一翻倍运算对应于标量(k)的naf表示中的零位。
[0038]
如图2中的功耗变化所示,攻击者可以从中推导出执行的操作,从而推导出密钥的值。
[0039]
根据实施例并且为了使器件100的电功率消耗的轮廓在攻击期间难以使用,在操作序列中插入虚设操作。虚设操作包括例如由密码协处理器104执行的一个或多个翻倍/或加法操作,而不对这些操作实际修改当前值q。
[0040]
图3是示出插入虚设密码操作的示例的表。在图3的例子中,标量(key)以naf形式示出。在该表示下,非零数字总是在零数字之前和之后。在图3的例子中,插入虚设操作,使得操作序列(pattern)、从而每个操作序列的消耗轮廓总是相同的。该序列例如是两个翻倍操作(dbl)和一个加法(add)的序列。标量(key)被分成一个或两个数字的组,使得每个非零数字是两个数字的组202中的第二个数字。因此,每个组202具有(0,1)或(0,-1)的形式。为了仍然能够使用两个翻倍操作和一个加法的序列,某些零位203被单独处理,而其它的在两个零位的组204中被处理。与组202相关联的操作(框205)不包括虚设操作。当零数字203被单独处理时,一个翻倍操作和一个加法操作(框206)是虚设操作。当组204处理两个零数字时,加法操作(块207)是虚设操作。
[0041]
然而,将标量(key)划分为非恒定大小的数字群组使得知道标量(key)的大小的攻击者能够从执行操作序列的次数中推导出单独处理的零数字的总数(框203)。
[0042]
下文描述的实施例能够通过将标量k划分成由相同数量的数字形成的组来克服上述缺点的全部或部分。
[0043]
例如,标量k处于naf形式并且被分成两个数字的多个群组。对于该特定情况,下表根据所考虑的组的数字值总结了非受保护操作序列(即,在没有插入虚设操作的情况下执行的操作序列)和受保护操作序列(即,根据所描述的实施例的在插入虚设操作的情况下执行的操作序列)的示例,以总是具有相同的操作序列。虚假操作用括号表示。
[0044]
表1
[0045][0046][0047]
可以设想其它受保护的操作序列。作为示例,在数字对(0,0)的情况下,可以使加法操作(add)和最后的翻倍操作(dbl)虚设操作,或者还可以使第一翻倍操作(dbl)以及加法操作(add)虚设操作。
[0048]
根据一个实施例,对于每一对数字,最多插入两个虚设操作。平均来说,三个中的一个加法操作是虚设,而三个中的一个翻倍操作是虚设。
[0049]
根据实施例,当所考虑的椭圆曲线是koblitz曲线时,用frobenius运算τ代替翻倍运算(dbl)。在这种情况下,操作序列例如是下表中所示的操作序列,其中虚假操作用括号表示:
[0050]
表2
[0051]
可能的数字对(0,0)(0,
±
1)(
±
1,0)受保护操作程序τ(τ)(add)τττadd(τ)τ(τ)addτ
[0052]
根据另一实施例,翻倍操作(dbl)由对点执行的任何单位操作代替,只要该操作允许根据“翻倍与添加”算法使点加倍,其中翻倍操作由所述操作代替,并且最终在已经将标量k转换为适当形式之后。
[0053]
图4是示出根据实施例的密码操作的示例的实现方法的操作的流程图。作为示例,该方法由器件100的密码协处理器104来实现。
[0054]
更具体地,加密操作是椭圆曲线e的点p乘以naf形式的标量k。图4的例子是基于翻倍操作的,标量k是naf形式的,并被分成两个数字的多个群组。
[0055]
在步骤300中(i=m;q=0),例如,初始化算法的变量。当前值q被初始化为0,并且增量值i被初始化为值m,m例如是标量k的最高有效数字的秩。在这个例子中,最低有效位的等级是值0,但是可以考虑最低有效位的等级的值是1,或任何其它值。
[0056]
在步骤301(加载(i,i-1)数字)中,在步骤300之后,例如由密码协处理器104加载秩i和i-1的两个数字,然后读取。这使得密码协处理器104或处理器102能够确定要执行的虚设操作是什么。
[0057]
在步骤302到305,执行操作序列(op seq),在图4的例子中,包括对当前值q执行的翻倍操作或加法操作。电流值q例如存储在图1的器件100的密码协处理器104的寄存器(未示出)中。步骤302,303和305(q=dbl[q])包括翻倍操作,该翻倍操作包括将电流值q加到其自身上。步骤304(q=add(p;q)是包括将曲线e的点p加到电流值q的加法运算。在步骤302到305期间,存储在寄存器中的当前值q例如仅在翻倍操作或加法操作不是虚设操作时才被修改。在虚设操作的情况下,例如执行该操作,但不修改寄存器的内容。在另一实施例中,虚设操作修改存储在寄存器中的当前值q,而不影响后续操作。例如,修改电流值q,使得新值是电流值q的不同形式。
[0058]
例如,密码协处理器104在步骤306中验证(i=1)。),在步骤305之后,值i是否等于1。当值i等于1时(分支y),已经读取了编码标量k的所有数字,并且该方法结束。存储的电流值q是点p与标量k相乘的结果(kp=q,308)。当值i不同于1时(分支n),i递减两个单位(i=i-2,307)。例如,当值i等于初始值m时,一旦已经执行步骤302到305,在步骤307中值i从值m传递到值m-2。在步骤307之后,该方法在步骤302以新值i和q重新开始。
[0059]
尽管图4示出了从最高有效数字到最低有效数字使用标量k的数字的方法,但是在其它实施例中,从最低有效数字到最高有效数字使用标量k的数字。例如,在naf和nafw形式的情况下,数字的处理被颠倒。然后用(i-w+1,

,i)形式的对或组来考虑数字。然后,翻倍操作(dbl)的目标改变,并且翻倍操作(dbl)执行p=dbl(p)。然后,操作302到305的顺序颠倒。
[0060]
当标量k以具有大于或等于3的参数w的nafw形式编码时,按大小w的组读取编码标量k的数字。
[0061]
然后,该方法包括独立于形成该组的数字的值,连续执行w个翻倍操作,然后执行一个加法操作和(w-1)个翻倍操作。这些操作中的某些(w-1或w)是虚设操作。例如,对于一组w个零数字,加法操作和w-1个翻倍操作是虚设操作,例如,w-1个第一翻倍操作是虚设操作。
[0062]
图5是示出根据另一实施例的密码操作的示例的实现方法的操作的流程图。
[0063]
更具体地,加密操作是椭圆曲线e的点p乘以nafw形式的标量k,其中参数w大于或
等于3。
[0064]
该方法开始于步骤400(计算和存储多个px),其中点p的多个倍数px(x是非零整数)例如由密码协处理器104根据任意方法来计算,并且被存储在器件100的存储器中。例如,多个倍数包含点p的(2
w-1-1)倍数。在其它实施例中,多个倍数px已经存储在器件100的存储器106中,然后省略步骤400。例如,如果点p是常数,则以非易失性方式存储倍数px,例如,如果存储器106是非易失性的,则存储在存储器106中,或者存储在另一存储器中。如果点p不是常数,则例如或者为每次乘法计算倍数px,或者当点p自上一次乘法以来已经改变并存储在易失性存储器或非易失性存储器中时唯一地计算倍数px。
[0065]
步骤401(i=m;q=0)是与图4的步骤300相同的算法初始化步骤。
[0066]
在步骤402(加载(i,i-1,

,i-w+1)数字)中,例如由密码协处理器104加载等级i到i-w+1的w位,然后读取。这使得例如密码协处理器104能够确定要执行的操作中的哪一个操作将是虚设操作。
[0067]
在步骤403至405,对当前值q执行包括翻倍(dbl)和添加(add)操作的操作序列(op seq)。
[0068]
在步骤403(重复w次q=dbl q),在步骤402之后,例如由密码协处理器(104)对当前值q执行一系列w个翻倍操作(dbl)。这些操作中的一些是虚设操作,并且在它们执行之后,例如存储在器件100的寄存器中的当前值q不被修改或被修改为等效的数学形式。
[0069]
在步骤404(q=add(px,q)),在步骤403之后,对当前值q执行加法运算。在该操作是虚设操作的情况下,在其执行之后,例如存储在器件100的寄存器中的电流值q不被修改或被修改为等效的数学形式。只有在数字群组的w位全部都具有零值的情况下,加法运算才是虚设运算。
[0070]
在步骤405处(重复w-1次q=dbl q),在步骤404之后,例如由密码协处理器(104)对当前值q执行一序列(w-1)个翻倍操作(dbl)。这些操作中的一些操作是虚设操作,并且在它们执行之后,例如存储在器件100的寄存器中的当前值q不被修改或被修改为等效的数学形式。
[0071]
例如,密码协处理器104在步骤406验证(i=w-1?),在步骤405之后,值i是否等于(w-1)。当值i等于(w-1)(分支y)时,已经读取了编码标量k的所有数字,并且该方法结束。存储在寄存器中的当前值q是点p与标量k相乘的结果(kp=q,408)。当值i不同于w-1时(分支n),它递减w个单位(i=i-w,407)。例如,当值i等于初始值m时,一旦已经执行步骤403到405,则在步骤407,值i从值m传递到值m-w。在步骤407之后,该方法在步骤402以新的当前值i和q重新开始。
[0072]
根据一个实施例,器件100包含具有足够大小的易失性或非易失性存储器,用于存储在步骤400期间计算的点p的倍数。
[0073]
根据实施例,当所考虑的椭圆曲线是koblitz曲线时,用frobenius运算代替翻倍运算(dbl)。
[0074]
根据一个实施例,对于每组w个数字,至多插入w个虚设操作。平均起来,w+1中的一个加法运算是虚设,而2w-1中的w-1个翻倍运算是虚设。
[0075]
图6示意性地示出了根据一个实施例的例如包含在密码协处理器104中的计算电路500。
[0076]
计算电路500包括存储器501(mem)。存储器501例如是其中存储有电流值q的寄存器。
[0077]
存储器501通过数据总线506将电流值q发送到多路分解器502。多路分解器502由信号sig1控制。根据信号sig1的值,通过数据总线507或通过另一数据总线508发送电流值q。
[0078]
当前值q通过总线507被发送到算术和逻辑算子序列504(funct.dbl)如果所考虑的椭圆曲线是当前值q的koblitz曲线,则执行翻倍操作或frobenius操作。该操作序列例如涉及将计算所需的中间值存储在例如未示出的临时寄存器中。
[0079]
计算单元500还包括控制电路511(ctrl)。
[0080]
当前值q通过总线508被发送到加法器505(funct.add)。加法器505将结合图3和4描述的加法运算应用于电流值q。加法器505例如涉及计算所需的中间值的存储,例如在临时寄存器中。在某些情况下,倍数px中的一个或多个可以是负的,并且可以通过从当前值q中减去px的相反值来执行该操作。为了执行减法,加法器505被配置为对由控制电路511提供的信号subtract的顺序执行减法操作,减法器与加法器和翻倍运算器504并行地相加。
[0081]
翻倍运算器504和加法器505分别经由数据总线509和510耦合到存储器501。
[0082]
先前存储在存储器501中的值q的重写例如由信号dummy控制。例如,当先前对当前值q执行的操作是虚设操作时,信号dummy控制将旧存储值q保持在存储器501中,而当先前执行的操作不是虚设操作时,信号dummy控制重写旧存储值q和存储新当前值q。
[0083]
根据另一实施例,代替修改写入操作,信号dummy控制翻倍运算器504和/或加法器505的功能以使它们的效果为零。
[0084]
控制电路511例如被配置为例如根据索引(i,i-1,

,i-w+1)的标量k的数字来生成和发送信号sig1和dummy。在通过参数大于2的添加窗形式nafw进行处理的情况下,控制电路511还生成存储器501的地址,用于当前计算的预先计算的点之一存储在该地址处,该点例如是倍数px或其相反。
[0085]
所描述的实施例的优点在于,它们使得利用简单的功率分析更加困难。实际上,通过将标量划分成由相同数目的数字形成的多个群组,并且通过对每个数字群组执行相同的操作序列,每个序列的电功率消耗轮廓保持相同,而与密钥的特性无关。
[0086]
所描述的实施例的另一个优点是所执行的添加操作很少是虚设的。例如,在naf表示中,平均来说,三个中只有一个加法是虚设的。同样,所执行的少数翻倍操作是虚设操作。例如,在naf表示中,三个中的一个翻倍操作是虚设操作。在koblitz曲线的情况下,翻倍操作被frobenius操作代替,这消耗很少的执行时间。
[0087]
已经描述了各种实施例和变型。本领域技术人员将理解,这些各种实施例和变型的某些特征可以组合,并且本领域技术人员将想到其它变型。特别地,不同于图6所示电路的计算电路配置将使得能够实现结合图4和5描述的方法。
[0088]
最后,基于以上给出的功能指示,所描述的实施例和变型的实际实现在本领域技术人员的能力范围内。特别地,关于虚设操作的插入。
[0089]
一个实施例提供了一种密码方法,包括:
[0090]
通过执行以下步骤将属于具有群组结构的数学集合的点与标量进行乘法运算:
[0091]
将标量划分为由相同数目w个数字群组成的多个群组,w大于或等于2;以及
[0092]
由密码电路装置并且对于每个数字群组执行点(p)上的操作序列,所述操作序列对于每个数字群组是相同的,对于每个数字群组执行的至少一个操作是虚设操作。
[0093]
一个实施例提供用于执行属于具有群组结构的数学集合的点与标量的乘法运算的密码电路装置,所述密码电路装置被配置成:
[0094]
将标量划分为多个由相同数量w个数字群组成的组,w大于或等于2;
[0095]
对于每个数字群组,对点执行操作序列,所述操作序列对于每个数字群组是相同的,对于每个数字群组执行的至少一个操作是虚设操作。
[0096]
根据一个实施例,所述一系列操作包括:
[0097]
a)执行w次第一操作;
[0098]
b)执行第二操作;以及
[0099]
c)执行(w-1)次第一操作。
[0100]
根据一个实施例,第一操作是翻倍操作,第二操作是加法操作。
[0101]
根据实施例,密码电路装置被配置为在每个非虚设操作之后修改乘法的中间结果的当前值,并且在每个虚设操作之后不修改该当前值。
[0102]
根据一实施例,对于每一虚设运算,密码电路装置经配置以将乘法的中间结果的当前值修改为不同但在数学上等效的值。
[0103]
根据一个实施例,该过程或电路还包括:在划分成多个数字群组之前,以参数w的非相邻窗口形式对标量进行重新编码。
[0104]
根据一个实施例,数学集合是椭圆曲线或超椭圆曲线。
[0105]
根据一个实施例,该曲线是由点的集合定义的并且具有以下形式的koblitz曲线:
[0106]
数学式1
[0107]
{(x,y)∈k
×
k:y2+xy=x3+ax2+1)
[0108]
a其中等于0或1,并且k是有限二进制字段。
[0109]
根据一个实施例,操作是frobenius自同态。
[0110]
根据实施例,该过程或电路还包括:在对点执行操作序列之前,将所述点的多个倍数计算并存储到电路的存储器中。
[0111]
一个实施例提供了一种存储指令的非瞬态存储器,当这些指令由密码处理器执行时,用于实现该方法。
[0112]
一个实施例提供一种电子器件,其包括经配置以实施所述方法的密码电路装置。
[0113]
在一个实施例中,一种方法包括:使用密码电路装置将属于具有群组结构的数学集合的点与标量进行乘法运算;以及在所述乘法运算使用所述密码电路装置来保护所述标量。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。在一个实施例中,相同的操作序列包括:a)执行w次第一操作;b)执行第二操作;以及c)执行(w-1)次第一操作。在一个实施例中,第一操作是翻倍操作,第二操作是加法操作。在实施例中,该方法包括:响应于每个非虚设操作修改所述乘法的中间结果的当前值;以及响应于虚设操作不修改电流值。在实施例中,该方法包括:响应于每个非虚设操作修改所述乘法的中间结果的当前值;以及响应于虚设操作将当前值修改为不同的数学上等效的值。在一个实施例中,该方
法包括,在划分成多个数字群组之前,以参数w的非相邻窗口形式重新编码标量。在一个实施例中,数学集合是椭圆曲线或超椭圆曲线。在一个实施例中,该曲线是由点的集合定义的并且具有以下形式的koblitz曲线:
[0114]
{(x,y)ek
×
k:y2+xy=x3+ax2+1)
[0115]
其中a等于0或1,并且k是有限二进制域,并且x和y定义koblitz曲线上的点的坐标。在一个实施例中,操作序列包括frobenius自同态来代替翻倍操作。在一个实施例中,该方法包括,在对点执行一系列操作之前,计算所述点的多个倍数并存储。在一个实施例中,该方法包括基于多个数字的操作序列的执行来产生点与标量相乘的结果。
[0116]
在一个实施例中,一种器件包括:存储器;以及耦合到所述存储器的密码电路装置。所述密码电路装置在操作中将点与标量进行乘法运算,所述点属于具有群组结构的数学集合,并且在所述乘法运算保护所述标量,所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。在一个实施例中,相同的操作序列包括:执行w次第一操作;执行第二操作;以及执行w-1次第一操作。在一个实施例中,第一操作是翻倍操作,第二操作是加法操作。在一个实施例中,所述乘法运算和保护包括:响应于每个非虚设操作修改所述乘法的中间结果的当前值;以及响应于虚设操作不修改中间结果的当前值。在一个实施例中,所述乘法运算和保护包括:响应于每个非虚设操作修改所述乘法的中间结果的当前值;以及响应于虚设操作将中间结果的当前值修改为不同的,数学上等效的值。在一个实施例中,乘法和保护包括,在分成多个数字群组之前,以参数w的非相邻窗口形式重新编码标量。在一个实施例中,数学集合是椭圆曲线或超椭圆曲线。
[0117]
在一个实施例中,系统包括:主处理器;以及耦合到所述主处理器的密码协处理器,其中所述密码协处理器在操作中将点与标量进行乘法运算,所述点属于具有群组结构的数学集合,并且在所述乘法运算保护所述标量。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。在一个实施例中,乘法和保护包括,在分成多个数字群组之前,以参数w的非相邻窗口形式重新编码标量。在一个实施例中,数学集合是椭圆曲线或超椭圆曲线。在一个实施例中,该曲线是由点的集合定义的并且具有以下形式的koblitz曲线:
[0118]
{(x,y)∈k
×
k:y2+xy=x3+ax2+1}
[0119]
其中a等于0或1,k是有限二进制域,并且x和y定义koblitz曲线上的点的坐标。
[0120]
在一实施例中,一种非暂态计算机可读介质具有配置密码电路装置以将点与标量进行乘法运算并且在所述乘法运算保护所述标量的内容,所述点属于具有群组结构的数学集合。所述乘法运算和保护包括:将所述标量划分成由相同数目w个数字形成的多个群组,w大于或等于2;以及针对每个数字群组的所述点执行操作序列,所述操作序列针对每个数字群组具有相同的序列,针对每个数字群组执行的至少一个操作是虚设操作。在一个实施例中,内容包括由密码电路装置执行的指令。在一个实施例中,乘法和保护包括,在分成多个数字群组之前,以参数w的非相邻窗口形式重新编码标量。
[0121]
上述各种实施例可以组合以提供另外的实施例。如果需要,可以修改实施例的各方面以采用各种专利,申请和出版物的概念来提供另外的实施例。
[0122]
根据上述详细描述,可以对实施例进行这些和其它改变。通常,在下面的权利要求中,所使用的术语不应该被解释为将权利要求限制到在说明书和权利要求中公开的特定实施例,而是应该被解释为包括所有可能的实施例以及这些权利要求被授权的等同物的全部范围。因此,权利要求不受本公开的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1