CN1918543A - 防dpa类型的攻击的模取幂方法 - Google Patents

防dpa类型的攻击的模取幂方法 Download PDF

Info

Publication number
CN1918543A
CN1918543A CN 200480041877 CN200480041877A CN1918543A CN 1918543 A CN1918543 A CN 1918543A CN 200480041877 CN200480041877 CN 200480041877 CN 200480041877 A CN200480041877 A CN 200480041877A CN 1918543 A CN1918543 A CN 1918543A
Authority
CN
China
Prior art keywords
mod
finish
carry out
during
described method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200480041877
Other languages
English (en)
Inventor
B·舍瓦利耶-马梅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus SA filed Critical Gemplus SA
Publication of CN1918543A publication Critical patent/CN1918543A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/723Modular exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/72Indexing scheme relating to groups G06F7/72 - G06F7/729
    • G06F2207/7276Additional details of aspects covered by group G06F7/723
    • G06F2207/7285Additional details of aspects covered by group G06F7/723 using the window method, i.e. left-to-right k-ary exponentiation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/60Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
    • G06F7/72Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
    • G06F7/724Finite field arithmetic
    • G06F7/725Finite field arithmetic over elliptic curves

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Storage Device Security (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及保护加密方法以防DPA类型的隐蔽信道攻击,并且尤其涉及一种执行x^b类型的模取幂的加密方法,其中d是m+1位的整数指数,该方法在于:在由在m和0之间变化的i为索引的循环中从左至右扫描d的位;并且在序号i每次循环时,计算等于x^b(i)的所更新的部分结果并且将其存储在记忆装置(R0)中,b(i)是指数的m-i+1个最高有效位(b(i)=dm->i)。根据本发明,在随机选择的序号i(j)的循环结束(i=i(0))时,执行随机化步骤E1,该随机化步骤在于从在该方法中还未被使用的d的位(di-1->0)的一部分中减去随机数z(z=b(i(j)),z=b(i(j))·2τ,z=u)。随后,一旦通过随机化步骤E1所改变的d的位已被使用,就执行合并步骤E2,该合并步骤在于将记忆装置的内容(x^b(i))乘以一个数的结果存储(R0<-R1×R0)在记忆装置(R0)中,所述数是寄存器(R1)中所存储的x^z的函数。

Description

防DPA类型的攻击的模取幂方法
在保护加密算法以防DPA攻击的领域中,本发明涉及一种执行类型x^d的模取幂的方法,其中d是m+1位的整数指数,在由从m变化到0的i为索引的循环中从左向右扫描d的位,进行计算并且存储在记忆装置(R0)中,在序号(rank)i每次循环(turn)时,所更新的部分结果等于x^b(i)。b(i)相当于指数d的m-i+1个最高有效位:b(i)=dm->i。由d的具有权重j至k的位所组成的数通过下式来定义:
d k - > j = ( d k , . . . , d j ) 2 = Σ i = j k d i . 2 ^ ( i - j ) .
模取幂是在诸如RSA(Rivest,Shamir和Adleman)密码系统或者DH(Diffie和Hellman)密码系统的许多密码系统中所使用的基本运算之一。对于这种应用来说,x例如是待加密或者解密、待签名或者鉴权的消息,而d例如是公开密钥、秘密密钥或者这种密钥的一部分。
自从由Diffie和Hellman发明了公开密钥密码术以来,已经建议了许多公开密钥密码系统。在抵抗密码分析的那些密码系统中,RSA密码系统无疑被最广泛地使用。其固有的安全性在于难以对大的整数进行因子分解。尽管进行了深入细致的研究,因子分解的问题仍被认为是重要的问题,从而使RSA密码系统对于诸如数据或者数字签名的加密的敏感应用来说是安全的。
因此,密码术已变成对RSA密码系统的具体实施感兴趣,而不是尝试在数学层面上破解RSA算法。这已经导致错误攻击和隐蔽信道攻击的巨大增加,所述错误攻击和隐蔽信道攻击的目的在于在由执行密码运算的计算设备实施一个或者其他步骤期间发现所处理的特别机密的信息(例如密钥或者密钥的部分)。
最广泛已知的隐蔽信道攻击据说是简单的或者差分的。简单(SPA)或者差分(DPA)隐蔽信道攻击意味着基于对来自设备外部的物理量的测量的攻击,对所述测量的直接分析(简单攻击SPA)或者根据统计分析的分析(差分攻击DPA)使得能够发现在设备中所处理的信息。这些攻击尤其由Paul Kocher(Advances in Cryptology-CRYPTO′99,vol.1666 of Lecture Notes in Computer Science,第388-397页,Springer-Verlag,1999年)公开。
在可被用于这些目的的物理量中,可以引用执行时间、电流消耗、由被用于执行计算的组件的一部分所辐射的电磁场等等。这些攻击基于以下事实,即在执行算法、处理一个位、也就是说该位由特定指令使用期间,根据该位的值和/或根据该指令留下对所考虑的物理量的特定影响。
存在两类使得能够估计y=x^d mod N的值的取幂算法的执行:即所谓的右至左执行和所谓的左至右执行。
在左至右执行中,从最高有效位至最低有效位扫描指数的位。在第二类取幂算法中,尤其已知的是SAM算法(代表平方再乘)和其变型、例如滑动窗口算法。与所谓的右至左算法相比较,左至右算法需要较小的存储器,并且允许使用预先计算的幂x^i,以便加速y的计算。所有左至右算法都共同使用记忆装置(或者寄存器),该记忆装置在整个计算过程中被更新,以便存储x^dm->i mod N的值,用于减小i的值直至记忆装置包含终值y=x^dm->0=x^d mod N。dk->j是由d的具有权重j至k的位组成的字。
SAM算法的一般原理如下。d的具有权重i的位被表示为 d = ( d m , . . . , d 0 ) 2 = Σ i = 0 m d i . 2 ^ i , 即指数d的二进制表示,其中di ε{0,1}。对于d的每个位,SAM算法在记忆装置(寄存器R0)中存储根据递归方程x^dm->i=(x^dm->i+1)2*x^di(其中x^dm->m=x^dm)所计算的更新结果,这通过以下算法来概括:
输入:x,d=(dm,...,d0)2
输出:y=x^d mod N
    R0<-1;R2<-x,i<-m
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        i<-i-1
    结束只要
    返回R0
R0<-x意味着x的值被存储在寄存器R0中。R0xR0意味着寄存器R0的内容自乘。R0xR2意味着寄存器R0的内容乘以寄存器R2的内容。最后,di->j指的是d的序号j至i的位。
为了防止执行攻击,已知有必要使算法是随机的。在RSA密码系统的情况下,当前已知两类对策,用于使y=x^d mod N的计算为随机的。
第一类对策包括使算法的输入数据为随机的。
该第一对策的第一例子包括:在执行模取幂之前通过将随机项加到x上并且在最后以N为模之前进行以2^k N为模的计算而使数据项x为随机的:
x<-x+r1.N,其中r1是k位的随机数,并且在最后简化以N为模之前进行以(2^k).N为模的计算。由P Kocher所描述的该第一对策具有独立于取幂算法的优点。
该第一对策的第二例子包括:在执行模取幂之前通过将随机项加到指数d上而使指数d为随机的:
d<-d+r2.φ(N),r2是k位的随机数。
通常,这两种解决方案被组合,以便执行运算y= y mod N,其中y= x^ d mod(2k.N)。
在被单独使用的该第一对策的第三例子中,例如当x是(例如利用PSS或者概率签名方案功能的)概率格式化的结果时,因为在该情况下x已经被屏蔽,所以直接计算y=x^ d mod N,其中d=d+r2.φ(N),其中r2是随机的。
不幸地,指数d的这种随机化局限于RSA密码系统的被称为CRT执行的特定执行,因为通常不能根据标准版本(也即不是CRT)的私有取幂算法得知欧拉常数φ(N)的值。
第二对策包括使取幂算法本身为随机的。将第二对策最好地付诸于实践是Walter的MIST算法。MIST算法随机地产生指数d的新的加法链,以便实现x^d mod N。为了使寄存器的数目最小化,根据除法链通过修改取幂算法快速地执行加法链。另一例子是滑动窗口算法的改进版本(参见Kouichi Itoh,Jun Yajima,Masahiko Takenaka和NaoyaTorii的“DPA countermeasures by improving the window methodCHES 2002”,Voluime 2523 of Lecture Notes in Computer Science,第303-317页,Springer Verlag 2002)。与第一对策相比较,该对策使得能够在不需要知道φ(N)的情况下使取幂为随机的,但是需要用于计算除法链的安全的除法算法,并且不引起无关紧要的关于管理计算的担忧。
为了防止差分攻击(DPA),本发明建议一种新颖方法,用于使模取幂的执行为随机的,该方法具有两种已知的对策的优点:如在第一对策中,根据本发明的方法不利用任何特定的取幂算法,并且适用于任何取幂算法,并且如在第二对策中,在本发明中使算法自身为随机的,而不仅仅使算法所处理的数据为随机的。因此,该算法在RSA取幂时不必知道φ(N)和/或公共密钥e(该密钥e通常不可用于签名或者解密算法)。
根据本发明的方法引入自动随机取幂的方案,意味着在取幂过程中指数d本身被用作附加的随机源。
因此,本发明涉及一种加密方法,其中通过在步骤1中在由从m至0递减的i为索引的循环中从左至右扫描d的位、进行计算并且存储在记忆装置来执行x^d类型的模取幂,其中d是m+1位的整数指数,在序号i每次循环时,所更新的部分结果等于x^b(i),b(i)是指数d的m-i+1个最高有效位。
根据本发明的方法的特征在于:
-在随机选择的序号i(j)的一次循环结束(i=i(0))时,随机化步骤E1被执行,其中:
E1:从在该方法中还未被使用的d的位(di-1->0)的一部分中减去随机数z(z=b(i(j)),z=b(i(j)).2τ,z=u),
-然后,在已经使用了通过随机化步骤E1所修改的位之后,合并步骤E2被执行,其中:
E2:记忆装置的内容(x^b(i))乘以一个数的结果被存储(R0<-R1xR0)在记忆装置R0中,所述数是寄存器(R1)中所存储的x^z的函数。
从实践的观点来看,在步骤E1期间,从最初存储有指数d的寄存器的内容中减去数z,并且将减法的结果存储在相同的寄存器中,然后继续扫描b的位。
为了取幂x^d mod N的结果在该方法结束时是正确的,随机化步骤E1不必改变在计算中已经使用的d的位(我们记得该方法采用左至右算法)。随机选择的索引i(j)(以该索引执行随机化E1)必须这样来选择,使得最初包含指数d的寄存器的m-i(j)+1个最高有效位在步骤E1期间保持不变。该条件在下文中将被称为“一致性”条件。
因此,本发明的基本思想是使用以下形式的x^d mod N的计算的限幅:(在法国专利申请号02 04117(待确认的号)中所描述的)x^d=x^(d-z)*x^z,其中z是被用作屏蔽指数d的工具的随机数。优选地,这样选择z的适当的值,以致在该方法过程中可以容易地从此外已被计算的x^b中获得x^z。应该注意的是,完全随机地选择z导致几乎使计算时间加倍。
根据本发明的方法独立于左至右取幂算法而适用。此外,序号i(j)被如此选择,以致是随机的,其中以该序号执行步骤E1,并且因此该方法本身是随机的,而不仅仅是该方法所处理的数据是随机的。
如随后将在SAM算法的例子中更好地看到的那样,根据本发明的方法在空间方面(它只需要一个附加的计算寄存器)以及在计算时间方面也是有效的。
根据本发明的方法也易于执行该方法所适用的任何算法。该方法不基于任何组特性,并且该方法的执行不需要预先知道组的顺序,其中在所述组中执行取幂。
最后,可以与其他算法保护措施、例如由P Kocher所公开的和上述的对策相结合地使用根据本发明的方法。
可以在该方法过程中执行一次随机化步骤E1。当在0和m之间随机选择的序号i(j)的不同循环结束时(也即在序号i=i(0)时,然后在序号i=i(1)时,...,并且随后最后在序号i=i(f)时),步骤E1也可以被执行多次。这里,该思想是通过使用以下公式进一步提高该方法的安全性:
x^d=x^(d-z1-z2-...-zf)xx^z1xx^z2x...xx^zf
   =x^(((d-z1)-z2)-...-zf)x((x^z1)xx^z2)x...xx^zf。
在该方法开始时,可以选择一个或者多个随机序号i(j),其中以所述随机序号执行随机化E1。例如,在该方法开始时,确定索引i的f+1个(f是随机的或者不是随机的)值的预先确定的集合{i(0),i(1),...,i(f)},其中希望针对该索引执行随机化E1。在这种情况下,在每次循环时,根据当前索引i是否构成预先确定的集合的一部分来决定是否执行随机化E1。
也可以在每次循环i开始时随机地选择是否执行随机化步骤E1。在这种情况下,布尔变量ρ例如在索引i的每次循环结束时随机地被使用、被提取。
现在将描述本发明的不同实施方案,所述不同实施方案由于步骤E1的实施方案、并且尤其是由于z的选择和d的从d中减少的一部分的选择而基本上彼此不同。
根据第一实施方案,选择在该方法结束时只执行一次合并步骤。这使得有必要从指数d的最低有效位中例行公事地减去z,以便在该方法结束时获得正确的结果。
根据该实施方案的第一变型,针对所选择的随机数i(j)选择z=b(i(j))=dm->i(j),并且在随机化步骤E1过程中,从d中、也即从d的最低有效位中减去b(i(j))。
选择z=b(i(j))是特别有利的,因为x^b(i(j))=x^dm->i(j)在循环i(j)结束时在记忆装置中已经是可用的,并且因此不需要被计算。变量i(j)这样被选择,使得数d-b(i(j))的具有权重i(j)至m的位等于数d的具有权重i(j)的位,因此计算x^d的最初的m-i(j)+1次循环与x^(d-b(i(j)))的计算的最初的m-i(j)+1次循环是相同的(一致性条件)。在循环i(j)结束时,d-z=d-b(i(j))被计算,并且记忆装置的内容x^b被存储在寄存器(E1)中。
在特定例子中,布尔变量ρ被用于确定在索引i的每次循环结束时是否执行随机化。如果ρ取有效值,则执行步骤E1:数d用数d-b(i(j))来代替,并且存储x^b(i(j))。
如在传统的左至右算法中,在索引i每次循环时,记忆装置R0被用于存储x^dm->i的值。寄存器R1被用于存储乘积:∏jx^dm->i(j)
整个适用于已知的SAM算法,并且获得下面的算法I:
输入:x,d=(dm,...,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,i<-m
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        ρ<-R{0,1}
        如果((ρ=1)并且di-1→0≥dm→i,则
        d←d-dm->i
        R1<-R1xR0 mod N
        结束如果
        i<-i-1
    结束只要
    R0<-R0xR1 mod N
返回R0
ρ<-R{0,1}意味着在集合{0,1}中随机地选择ρ的值。因此,ρ是随机布尔变量。
只有当ρ=1(也就是说如果必须执行随机化)并且di(j)-1->0≥dm->i(j)时,才执行随机化步骤E1(d<-d-dm->i(j);R1<-R1xR0 mod N)。
条件di(j)-1->0≥dm->i(j)意味着d的具有权重0至i-1的位大于b(i(j)),b(i(j))等于d的具有权重i(j)至m的位。这保证d-b(i(j))的m-i+1个最高有效位与d的m-i+1个最高有效位相同,并且因此保证x^d的最初的m-i+1计算循环与x^(d-b(i(j)))的最初的m-i+1计算循环相同。
“一致性”条件(di(j)-1->0≥dm->i(j))意味着只使指数d的最低有效位为随机的。另外,应该注意的是,随机步骤d<-d-dm->i(j)只改变d的(m-i(j)+1)个最低有效位。
应该注意的是,在算法I中,当在迭代i=i(j)时,更新步骤d<-d-dm->i不改变d的(m-i+1)个最高有效位,该步骤可以用等价步骤来代替:
di-1->0<-di-1->0-dm->i
根据第一实施方案的第二变型,将z选择为等于g.b(i)(其中g是随机数),以便di(j)-1->0.≥g.dm->i(j)。在这种情况下,采用公式x^d=x^(d-z).x^z=x^(d-g.b(i)).(x^b(i))g,并且从实践的观点来看,为了在索引i(j)的循环结束时执行随机化E1:
-计算z=g.b(i),并且从指数d中减去该结果,
-通过寄存器R1的内容乘以记忆装置的内容(x^b(i))的g次幂来更新寄存器R1。这具体地可以通过指令R1<-R1xR0^g mod N来执行。
优选地选择g=2τ,τ是随机整数。由于g.b(i)=g.dm->i(j)的计算相当于位的简单移位,并且(x^b(i))^g mod N的估计相当于执行τ平方的计算,所以这大大简化计算。
由于乘以2τ相当于位的移位,所以计算d-g.b(i)的指令d<-d-2τ.dm->i可以用dm->τ<-dm->τ-dm->i来代替,或者更好地用等价指令di-1->τ<-di-1->τ-dm->i来代替。
另外,至于其他实施方案,必须验证,在迭代i=i(j)时,di-1->0≥2τ.dm->i。该一致性条件可以用等价的但是更有效的测试:di-1->τ≥dm-i来代替。
优选地,随机地在集合{0,...,T}中选择τ。定界符T被选择为d的最高有效位的随机化和τ平方的计算的(尤其在计算时间方面的)效力之间的最佳折衷。
在SAM算法的特定例子中,最终得到下面的算法I′:
输入:x,d=(dm,...,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,i<-m
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        ρ<-R{0,1};τ<-R{0,...,T}
        如果((ρ=1)并且(di-1→τ≥dm-i)),则
            di-1→τ←di-1→τ-dm->i
            R3<-R0
            只要(τ>0),进行:
                R3<-R3^2 mod N;τ<-τ-1
            结束只要
            R1<-R1xR3 mod N
        结束如果
        i<-i-1
    结束只要
    R0<-R0xR1 mod N
返回R0
算法I′的一个优点在于d的上面一半被部分地随机化,并且因此熵(也即随机性)增加。另一方面,附加的寄存器R3对于计算R0^2τ来说是必要的。
在某些情况下,算法I和I′可以足以保护指数。例如,如果相应的公共指数小,则RSA密码系统由于其构造而总是暴露私有指数d的最高有效的一半。因此,使d的最高有效位为随机的将不会为这种算法提供保护。
然而,对于其他算法来说以及在其他情形中,使d的所有位为随机的将提供附加的安全性。
为此目的,在第二实施方案中建议针对随机数i(j)选择z=b(i(j))=dm->i(j),并且在步骤E1的过程中,不从d中、而是从对应于具有权重i(j)-c(j)至i(j)-1的d的位的、d的一些位中减去b(i)(其中c(j)是整数),以便i(j)≥c(j)≥0。这可以通过以下指令来表示:
dm->i(j)-c(j)<-dm->i(j)-c(j)-dm->i(j)
优选地,如在序号i(j)的随机化的步骤E1时,d的具有权重i(j)-c(j)至i(j)-1的位被改变,并且仅仅选择每次执行一个随机化,并且选择在序号结束时利用在先前的随机化步骤E1期间(而不是在该方法结束时)、也就是说在估计了部分结果x^(dm->i(j)-c(j))mod N之后所改变的d的最后一位来执行合并步骤。
这相当于施加条件i(j+1)≤i(j)-c(j),i(j+1)是接下来的随机化的索引。这使得不能利用附加的寄存器来存储在先前的随机化期间所改变的指数的位。同样地,i(j)-c(j)<0被选择,以便i(j)-c(j)可以被用于为计算x^(dm->i(j)-c(j))mod N定义d的位的序号。
可以通过使用指示更新是否被授权的布尔信号σ来使该两个条件变得具体:只要i≥i(j)-c(j),σ就具有无效值,而当i<i(j)-c(j)时σ被激活。一旦i(j)-c(j)<0,σ就也变得不可用。
如果(一致性条件):
di(j)-1→i(j)-c(j)≥dm→(j)
(i(j)-1)-(i(j)-c(j))≥m-i(j)c(j)≥m-i(j)+1,
则d的(m-i(j)+1)个最高有效位在随机化步骤期间保持不变。
根据第二实施方案的第一变型,c(j)被选择为等于m-i(j)+1。如果2.i(j)≥m+1,则在条件i(j)≥c(j)≥0下满足条件c(j)≥m-i(j)+1。
因此,根据该变型所改变的SAM算法可以被写为(算法II):
输入:x,d=(dm,...,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,
    i<-m;c<--1;σ<-1
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N结束如果
        如果(2i≥m+1)并且(σ=1),则c<-m-i+1
                                  否则σ=0
        结束如果
        ρ<-R{0,1}
        ε<-ρ和(di-1->i-c≥dm->i)和σ
        如果ε=1,则
            R1<-R0;σ<-0
            di-1->i-c<-di-1->i-c-dm->i
        结束如果
        如果c=0,则R0<-R0xR1 mod N;σ<-1
        结束如果
        c<-c-1;i<-i-1
    结束只要
返回R0
应该注意的是,在对于任何j来说c(j)=i(j)的情况下,算法I对应于算法II。还应该注意的是,在算法II中,在算法的第一部分期间,满足一致性条件(di(j)-1→i(j)-c(j)≥dm→i(j)),近似地认为di(j)-1→i(j)-c(j)和dm→i(j)是(m-i(j)+1)位的随机数。应该注意的是,在该算法中,指数的所有位被随机化。
根据第二实施方案的第二变型,c(j)被随机地选择,并且处于i(j)和m-i(j)+1之间。
先前已看出,条件c(j)≥m-i(j)+1必须被满足。因此,通过形成c(j)=m-i(j)+1+v(j),必然满足v(j)≥0。此外,在条件i(j)≥c(j)≥0下,得到2.i(j)≥m+1+v(j)。因此,v(j)的最大可能值是2.i(j)-m-1,并且因此当v(j)≥0时,参数c(j)=m-i(j)+1+v(j)可以取集合{m-i(j)+1,...,i(j)}中的任何值。于是,可以通过随机地在集合{m-i(j)+1,...,i(j))中选择c(j)来使算法II一般化。
在算法II的特定例子中,这相当于用指令:
如果(2i≥m+1)并且(σ=1),则c<-R{m-i+1,i}来代替指令:
如果(2i≥m+1)并且(σ=1),则c<-m-i+1。
这给出以下算法III:
输入:x,d=(dm,...,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,
    i<-m;c<--1;σ<-1
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N结束如果
        如果(2i≥m+1)并且(σ=1)
                          则c<-R{m-i+1,i}
                        否则σ=0
        结束如果
        ρ<-R{0,1}
        ε<-ρ和(di-1->i-c≥dm->i)和σ
        如果ε=1,则
            R1<-R0;σ<-0
            di-1->i-c<-di-1->i-c-dm->i
        结束如果
        如果c=0,则R0<-R0xR1 mod N;σ<-1
        结束如果
        c<-c-1;i<-i-1
    结束只要
返回R0
v(j)的大的值增加一致性条件(并且因此随机化选择)成功的概率。另一方面,这也减小满足条件2.i(j)≥m+1+v(j)的索引i的可能的值。
布尔变量ρ的值ρ=0的出现频率是该方法的参数,该参数使得能够根据所设想的应用选择性能和安全性之间的最佳折衷:执行越多的随机化步骤,对总计算时间的损害越大;相反,执行越少的随机化步骤,就便于通过穷举搜索进行更多的攻击。
用于使附加运算的成本最小化的好的方法包括轻微地改变产生数ρ的随机数发生器,以便当d-z的Hamming权重(根据所设想的实施方案,z可以具有作为b(i)的函数的不同值)小于d的Hamming权重时,ρ具有等于1的较大的概率,反之亦然。利用该技巧,该算法将倾向于选择具有最小Hamming权重、也即最快速分支的情况。
仅仅应该注意的是,该算法不能总是选择最快速分支,否则它将变为确定性的并且因此可容易地被攻击。
根据本发明的第三实施方案,v位的随机数u在该方法开始时被选择,并且x^u被存储在寄存器R1中。在该方法的过程中,数u优选地被多次改变,以便增加该方法中的随机因数。
然后,在计算过程中,对于给定的序号i(j),想知道,对于以致w>u的d的v位的包w来说,计算x^w是否比x^(w-u)*x^u的计算更昂贵(在计算时间方面)。
为了回答该问题,只要确定是否H(w)>H(w-u)+1就足够了。H(w)是w的Hamming权重,并且表示运算x^w的成本。H(w-u)是x^(w-u)的Hamming权重,表示x^(w-u)。项“+1”表示x^(w-u)乘以x^u(x^u也被存储)的成本。
如果x^w的计算比x^(w-u)*x^u的计算便宜,则该方法被继续。否则,如果x^w的计算比x^(w-u)*x^的计算昂贵,则d的位的包w用数w-u来代替。当d的所有被改变的位都已被使用时,将执行合并步骤(这里乘以x^u,这通过运算R0<-R0xR1 mod N来表示)。
与前述的两个实施方案相比较,该第三实施方案具有更快的优点,因为为了实现随机化,每次选择最快路径(最小花费)。因此,实验上表明该方法的复杂性大约为1.4。复杂性是为指数d的每一位所执行的、寄存器内容的乘法的平均数。不受保护的SAM算法的复杂性是1.5;根据本发明的第一或者第二实施方案的方法的复杂性对其来说稍微大于1.5。
此外,在该第三实施方案中,随机源(数u)在该方法的外部。最后,所使用的资源(尤其是寄存器的数目)是相同的。
该第三实施方案可以具体地通过以下算法IV来表示:
输入:x,d=(dm,...,d0)2
参数:v,k
输出:y=x^d mod N
    R0<-1;R2<-x;i<-m;L={}
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N结束如果
        如果i=m mod((m+1)/k)),则σ<-1结束如果
        如果σ=1并且L={},则
            (在该方法的过程中改变数u)
            σ<-0:u<-R{0,...,2v-1};
            R1=x^u mod N
        结束如果
        w<-di->i-v+1
        h<-H(w)
        如果w≥u,则Δ<-w-u;hΔ<-1+H(Δ)
                  否则hΔ<-v+2
        结束如果
        ρ<-R{0,1}
        如果[(σ=0)^(i-v+1≥0)]^
            [(h>hΔ)或((ρ=1)并且(h=hΔ))],则
            (选择实现x^(w-u))
            di->i-v+1<-Δ;L<-L∪{i-v+1}
        结束如果
        如果(iεL),则
        R0<-R0xR1 mod N
        L<-L\{i}
        结束如果
        i<-i-1
    结束只要
返回R0
在该例子中,集合L包含索引的列表,针对所述索引必须执行合并步骤。指令“如果di=1,则R0<-R0xR2 mod N结束如果”是SAM算法的针对i的每个值所执行的常规指令。
这里,如果m+1可被k除,则指数d被划分成相同大小的k个块,或者否则指数d被划分成与在一个单位内相同的大小的k个块。
在块每次开始时(也即对于i=m mod((l+1)/k))),变量σ被设为1。接下来,当σ等于1时,在执行新的随机化设置之前,有必要等待集合L为空。在每个合并步骤中,从集合L中去除相应的索引i(j)(指令L<-L\{i})。当集合L为空时,u的新的值可以被选择,并且x^u借助常规的SAM算法利用寄存器R1和R2来计算。
在每个块的中间(σ=0),当h>hΔ或(ρ=1并且h=hΔ)时执行一个或者多个随机化步骤,并且每次(指令L<-L∪{i-v+1})存储索引i(j)-v+1,其中在所述索引时将有必要执行合并步骤。因此,有必要使i-v+1为有效的合并索引,也就是说i-v+1≥0(一致性条件)。在每个随机化步骤中,如果h>hΔ,则选择执行便宜的运算x^(w-u)*x^u,并且相应地改变d的位(di->i-v+1<-Δ)。如果h<hΔ,则选择实现便宜的x^w,并且不改变d。如果h=hΔ,则随机地(ρ随机地等于0或者1)选择实现x^(w-u)*x^u或x^w。
通过表明对于利用SAM算法执行长度1024的取幂来说必要的模数乘法的平均数是否被保护,给出:
●不具有保护的SAM:1536次乘法
●通过添加多个被加到指数d上的Φ(n)(r.Φ(n),其中r为64位)(现有技术)而受保护的SAM:1536+96次乘法
●根据算法II或者III的受保护的SAM:1536+10次乘法
●根据算法I′的受保护的SAM:1536+512次乘法。 ρ, ρ是ρ的平均值
●根据算法IV的受保护的SAM:1443次乘法
通过这些例子可以看出,根据本发明的受保护的算法在所执行的乘法(并且因此执行时间)方面是非常有效的。

Claims (21)

1.电子元件中的加密方法,在该加密方法期间通过在由从m至0变化的i为索引的循环中从左至右扫描d的位以及进行计算并且存储在记忆装置(R0)中来执行类型x^d的模取幂,其中d是m+1位的整数指数,在序号i每次循环时,所更新的部分结果等于x^b(i),b(i)是指数d的m-i+1个最高有效位(b(i)=dm->i),
所述方法的特征在于,在随机选择的序号i(j)的循环结束(i=i(0))时,执行随机化步骤E1,在该随机化步骤E1期间:
E1:从在所述方法中还未被使用的d的位(di-1->0)的一部分中减去随机数z(z=b(i(j)),z=b(i(j))·2τ,z=u),
然后在已经使用了通过随机化步骤E1所改变的d的位之后,执行合并步骤E2,在该合并步骤E2期间:
E2:记忆装置的内容(x^b(i))乘以一个数的结果被存储(R0<-R1xR0)在记忆装置(R0)中,所述数是寄存器(R1)中所存储的x^z的函数。
2.按照前述权利要求所述的方法,其中,当在0和m之间随机选择的序号i(j)(i=i(0),i=i(1),…)的不同循环结束时,步骤E1被重复一次或者多次。
3.按照前述权利要求所述的方法,其中,在每次循环i时,随机地(ρ=1)决定是否执行步骤E1。
4.按照权利要求1至3之一所述的加密方法,其中,数z(z=b(i(j)),z=b(i(j))·2τ)是指数d的函数,其中,在随机化步骤期间,记忆装置的内容(x^b(i))乘以寄存器(R1)的内容的结果也被存储(R1<-R0xR1)在所述寄存器(R1)中。
5.按照权利要求4所述的方法,其中,在等于0的序号i的最后一次循环之后,执行合并步骤E2。
6.按照前述权利要求所述的方法,在该方法期间,在步骤E1期间,从d中减去数b(i)。
7.按照权利要求6所述的方法,在该方法期间,以下被实现:
输入:x,d=(dm,…,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,i<-m
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        ρ<-R{0,1}
        如果((ρ=1)并且di-1→0≥dm→i,则
            d←d-dm->i
            R1<-R1xR0 mod N
        结束如果
        i<-i-1
    结束只要
    R0<-R0xR1 mod N
返回R0。
8.按照权利要求5所述的方法,在该方法期间,如下改变步骤E1:
E1:从d中减去等于g.b(i)的数,g是正整数;取当前的部分结果(x^b(i))的g次幂,并且将结果存储在寄存器(R1)中。
9.按照前述权利要求所述的方法,其中,g等于2τ,τ是在0和T之间所选择的随机数。
10.按照前述权利要求所述的方法,其中,以下被实现:
输入:x,d=(dm,…,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,i<-m
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        ρ<-R{0,1};τ<-R{0,…,T}
        如果((ρ=1)并且(di-1→τ≥dm-i)),则
            di-1→τ←di-1→τ-dm->i
            R3<-R0
            只要(τ>0),进行:
                R3<-R3^2mod N;τ<-τ-1
            结束只要
            R1<-R1xR3 mod N
        结束如果
        i<-i-1
    结束只要
    R0<-R0xR1 mod N
返回R0。
11.按照权利要求1至4之一所述的方法,其中,在序号结束时利用在步骤E1期间所改变的d的最后一位来执行合并步骤E2。
12.按照权利要求11所述的方法,在该方法的过程中,在步骤E1期间,从具有序号i(j)-c(j)至i(j)-1的d的位中减去数b(i),c(j)是整数,并且将记忆装置的内容(x^b(i(j)))存储在寄存器(R1)中。
13.按照前述权利要求所述的方法,在该方法的过程中,在序号i(j+1)的循环期间,只要i(j+1)≤i(j)-c(j),就随机地选择执行步骤E1。(σ=1自由信号)。
14.按照权利要求12或者13所述的方法,其中,c(j)等于m-i(j)+1。
15.按照前述权利要求所述的方法,在该方法期间,以下步骤被执行:
输入:x,d=(dm,…,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,
    i<-m;c<--1;σ<-1
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N结束如果
        如果(2i≥m+1)并且(σ=1),则c<-m-i+1
                                  否则σ=0
        结束如果
        ρ<-R{0,1}
        ε<-ρ和(di-1->i-c≥dm->i)和σ
        如果ε=1,则
            R1<-R0;σ<-0
            di-1->i-c<-di-1->i-c-dm->i
        结束如果
        如果c=0,则
            R0<-R0xR1 mod N;σ<-1
        结束如果
        c<-c-1;i<-i-1
    结束只要
返回R0。
16.按照权利要求12或者13所述的方法,其中随机地在i(j)和m-i(j)+1之间选择c(j)。
17.按照前述权利要求所述的方法,在该方法期间,以下被实现:
输入:x,d=(dm,…,d0)2
输出:y=x^d mod N
    R0<-1;R1<-1;R2<-x,
    i<-m;c<--1;σ<-1
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N
        如果(2i≥m+1)并且(σ=1)
                    则c<-R{m-i+1,i}
                    否则σ=0
        ε<-ρ和(di-1->i-c≥dm->i)和σ
        如果ε=1,则
            R1<-R0;σ<-0
            di-1->i-c<-di-1->i-c-dm->i
        结束如果
        如果c=0,则
            R0<-R0xR1 mod N;σ<-1
        结束如果
        c<-c-1;i<-i-1
    结束只要
返回R0。
18.按照权利要求1至2之一所述的方法,其中,数z是随机选择的v位的数u(z=u),并且数z独立于指数d。
19.按照前述权利要求所述的方法,其中,在步骤E1期间,从d的v位的包w中减去数u。
20.按照前述权利要求所述的方法,在该方法期间:
●如果H(w-u)+1<H(w),则选择执行随机化步骤E1,
●如果H(w-u)+1>H(w),则选择不执行步骤E1,
●如果H(w-1)+1=H(w),则随机地选择是否执行随机化步骤E1。
21.按照前述权利要求所述的方法,在该方法期间,以下被实现:
输入:x,d=(dm,…,d0)2
参数:v,k
输出:y=x^d mod N
    R0<-1;R2<-x;i<-m;L={}
    只要i≥0,进行:
        R0<-R0xR0 mod N
        如果di=1,则R0<-R0xR2 mod N结束如果
        如果i=m mod((m+1)/k)),则σ<-1结束如果
        如果σ=1并且L={},则
            s<-0:u<-R{0,…,2v-1}
            R1=x^u mod N
        结束如果
        w<-di->i-v+1
        h<-H(w)
        如果w≥u,则Δ<-w-u;hΔ<-1+H(Δ)
                  否则hΔ<-v+2
        结束如果
        ρ<-R{0,1}
        如果[(σ=0)(i-v+1≥0)]
        [(h>hΔ)或((ρ=1)并且(h=hΔ))],则
        di->i-v+1<-Δ;L<-L∪{i-v+1}
    结束如果
    如果(iεL),则
    R0<-R0xR1 mod N
    L<-L\{i}
    结束如果
    i<-i-1
结束只要返回R0。
CN 200480041877 2003-12-19 2004-12-14 防dpa类型的攻击的模取幂方法 Pending CN1918543A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0314959 2003-12-19
FR0314959A FR2864390B1 (fr) 2003-12-19 2003-12-19 Procede cryptographique d'exponentiation modulaire protege contre les attaques de type dpa.

Publications (1)

Publication Number Publication Date
CN1918543A true CN1918543A (zh) 2007-02-21

Family

ID=34630319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200480041877 Pending CN1918543A (zh) 2003-12-19 2004-12-14 防dpa类型的攻击的模取幂方法

Country Status (4)

Country Link
EP (1) EP1695204A2 (zh)
CN (1) CN1918543A (zh)
FR (1) FR2864390B1 (zh)
WO (1) WO2005069122A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024810A (zh) * 2009-09-18 2011-04-20 索尼公司 集成电路和电子设备

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2888690A1 (fr) * 2005-07-13 2007-01-19 Gemplus Sa Procede cryptographique pour la mise en oeuvre securisee d'une exponentiation et composant associe
FR2972064B1 (fr) * 2011-02-25 2013-03-15 Inside Secure Procede de cryptographie comprenant une operation d'exponentiation

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2800478B1 (fr) * 1999-10-28 2001-11-30 Bull Cp8 Procede de securisation d'un ensemble electronique de cryptographie a base d'exponentiation modulaire contre les attaques par analyse physique
FR2829646B1 (fr) * 2001-09-07 2004-01-16 Gemplus Card Int Procede securise de mise en oeuvre d'un algorithme de cryptographie et composant correspondant

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102024810A (zh) * 2009-09-18 2011-04-20 索尼公司 集成电路和电子设备
CN102024810B (zh) * 2009-09-18 2013-06-19 索尼公司 集成电路和电子设备

Also Published As

Publication number Publication date
EP1695204A2 (fr) 2006-08-30
FR2864390B1 (fr) 2006-03-31
FR2864390A1 (fr) 2005-06-24
WO2005069122A3 (fr) 2006-06-01
WO2005069122A2 (fr) 2005-07-28

Similar Documents

Publication Publication Date Title
CN1182460C (zh) 信息处理装置与ic卡
CN1093665C (zh) 利用统计检验的数据隐藏方法和数据提取方法
CN1285191C (zh) 公共密钥签字的方法和系统
CN1258057A (zh) 信息处理装置
CN1728634A (zh) 伽罗瓦域中相乘的方法和设备与求逆设备及字节替换设备
CN1345495A (zh) 实现椭圆曲线类型公共密钥加密算法的电子部件中的对策方法
CN1668995A (zh) 用于改善伪随机数发生器的输出的不可预测性的方法
CN1338166A (zh) 公用与专用密钥加密方法
CN1251715A (zh) 有限域离散对数密码系统的割圆多项式结构
CN1702613A (zh) 蒙哥马利模乘法器
CN1528068A (zh) 用于计算机网络中分布式数据处理的集成式保护的方法与系统
CN101044535A (zh) 数据变换装置以及数据变换方法
CN1530824A (zh) 用于执行蒙哥马利型模乘法的装置及方法
CN1601578A (zh) 密码处理装置、密码处理方法以及计算机程序
CN1707999A (zh) 证书撤销列表的分布管理
CN1758178A (zh) 非法分析/伪造预防系统
CN1630204A (zh) 具有矩阵转换技术的循环冗余码计算方法及系统
CN1242321C (zh) 应用蒙哥马利算法的幂剩余运算器
CN1218531C (zh) 实现椭圆曲线类型公共密钥加密算法的电子部件中的对策方法
CN1806224A (zh) 用于防御微分功率分析攻击的方法
CN1791855A (zh) 混合Galois域机和Galois域除法器和平方根机及其方法
CN1607518A (zh) 在Montgomery乘法内利用SIMD指令
CN1402920A (zh) 使用单向函数的数学约束型密钥的生成
CN1165847C (zh) 保护软件的计算机系统和一种保护软件的方法
CN1739094A (zh) 防止隐蔽信道攻击的整数除法方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication