国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在電子部件中使用公共密鑰加密算法的模求冪算法的制作方法

      文檔序號:6656161閱讀:549來源:國知局
      專利名稱:在電子部件中使用公共密鑰加密算法的模求冪算法的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及一種在電子部件中使用公共密鑰加密算法的抗SPA(“簡單功率攻擊(Simple Power Attack)”)模求冪算法。
      人們知道公共密鑰密碼學(xué)算法特征進行的計算、使用的參數(shù)。唯一不為人知的是包含在程序存儲器中的私有密鑰。這些密碼學(xué)算法的整體安全性在于包含在卡中的該私有密鑰,而且該私有密鑰不為該卡之外的環(huán)境所知。不能僅根據(jù)作為一個輸入所施加的消息以及返回中所提供的編碼的消息的知識,或根據(jù)公共密鑰的知識推導(dǎo)該私有密鑰。
      然而,人們已明顯意識到當(dāng)卡中的微處理器處于運行用于簽署一條消息或解密一條消息的密碼學(xué)算法的過程中時,根據(jù)電流的消耗或?qū)﹄娏飨牡姆治?,可以發(fā)動外部攻擊,使惡意的第三方能夠發(fā)現(xiàn)包含在該卡中的私有密鑰。人們把這些攻擊稱為SPA攻擊,SPA為英文Single Power Analysis的首字母縮略語。
      這些SPA的攻擊的原理基于這樣的一個事實執(zhí)行指令的微處理器的電流消耗隨所操作的數(shù)據(jù)而變化。
      具體地說,當(dāng)微處理器所執(zhí)行的一條指令要求逐位地操作一個數(shù)據(jù)項時,存在兩種不同的電流分布,取決于該位是“1”還是“0”。通常,如果微處理器操作一個“0”,那么在執(zhí)行的該時刻,存在著一個第一消耗電流幅度。如果微處理器操作一個“1”,那么存在著一個不同與第一的第二消耗電流幅度。
      于是,在一條指令的執(zhí)行期間,SPA攻擊根據(jù)所操作的位的值,利用了卡中的電流消耗分布方面的差別。簡而言之,執(zhí)行一個SPA攻擊包括識別一或多個特定周期,在這些周期期間運行算法,該運行包括至少執(zhí)行一條逐位操作的數(shù)據(jù)指令,并區(qū)別兩個不同的電流消耗分布,一個相應(yīng)于一個等于“0”的位的操作,另一個相應(yīng)于一個等于“1”位的操作。在一條曲線上,或可能在算法的同一運行的n條曲線上進行分析,并對它們加以平均,以消除噪音。
      模求冪由下列數(shù)學(xué)公式定義R=XYmod N,
      其中Y是一個指數(shù),其大小為k位;N是一個模數(shù),其大小為k′位;X是一個已知的變量,其大小為k″位;R是一個模求冪操作的結(jié)果,其大小為k′位;可以使用以下所描述的人們所熟悉的常規(guī)算法A或B。
      用于計算以上所提到的數(shù)學(xué)公式的常規(guī)算法A如下-把R初始化為1R=1;-從表示為Y(k-1)的最高有效位到最低有效位Y(0),運行Y的二進制表示;對于每一位Y(i),i從(k-1)變至0,執(zhí)行附加的操作R=R2。
      如果位Y(i)等于1,那么運行由操作R=R*X組成的一個附加步驟。
      例如,如果位Y等于5,那么其二進制表示為101。
      如果實施以上的算法-對于第一位[Y(2)=1],R=R2受到影響,接下來操作R*X=X受到影響,即結(jié)果為R=X;-對于第二位[Y(1)=0],執(zhí)行操作R=R2,即結(jié)果為R=X2;-對于第三位[Y(0)=1],執(zhí)行操作R=(R2)2,接下來執(zhí)行操作R=R*X,即結(jié)果為R=(X2)2=X5;注意,始終使用先前的R。
      自然地,對針對例子Y等于5所描述的所有數(shù)學(xué)操作執(zhí)行模N操作, 這使與一個具有k′位大小的寄存器r一起工作成為可能。
      用于計算以上所提到的數(shù)學(xué)公式的常規(guī)算法B如下-把R初始化為1,并把Z初始化為XR=1和Z=X,Z是一個變量-從表示最低有效位Y(0)到最高有效位Y(k-1),運行Y的二進制表示;對于每一位Y(i),i從0變至(k-1),當(dāng)i大于0時,執(zhí)行附加的操作Z=Z2。
      如果位Y(i)等于1,那么執(zhí)行由操作R=R*X組成的一個附加步驟。
      例如,如果位Y等于5,那么其二進制表示為101。
      如果實施以上的算法-對于第一位,Y(0)=1;不執(zhí)行操作Z*(因為i=0),而執(zhí)行操作R=R*Z=X。
      -對于第二位[Y(1)=0],執(zhí)行操作Z2=X2,因為Y(1)=0,所以R不變;-對于第三位[Y(2)=1],執(zhí)行操作Z=Z2=X4,并當(dāng)Y(2)等于1時,執(zhí)行操作R=R*Z,因而得到X5。
      注意,始終使用先前的R和Z。
      自然地,對針對例子Y等于5所描述的所有數(shù)學(xué)操作執(zhí)行模N操作,這使與一個具有k′位大小的寄存器r和z一起工作成為可能。
      然而,在芯片卡型的電子部件中很少使用該算法B,因為它要求較多的存儲器(一個具有k′位大小的附加的寄存器z)。
      可以發(fā)現(xiàn),在以上所解釋的常規(guī)算法A和B中,根據(jù)Y的每一位,如果該位為0,執(zhí)行一個操作,如果該位為1,執(zhí)行兩個操作。把算法A和B用于RSA。注意,RSA加密系統(tǒng)是最廣泛使用的公共密鑰加密系統(tǒng)。可以把其用作一種加密方法或用作一種簽字方法。在芯片卡中針對其某些應(yīng)用使用RSA加密系統(tǒng)。在一個芯片卡上的RSA的可能的應(yīng)用是訪問數(shù)據(jù)庫、銀行應(yīng)用、遠程付款應(yīng)用(例如,支付電視費、支付汽油費、或支付公路費等)。當(dāng)然,這里所列舉的應(yīng)用是十分有限的。
      RSA加密系統(tǒng)的原理如下??梢园哑浞殖扇齻€不同的部分,即1)生成一對RSA密鑰;2)加密一條明文(message in clear)的消息,使其成為一條加密的消息,以及3)解密一條加密的消息,使其成為一條明文的消息。
      RSA加密操作包括計算一個密碼C,密碼C等于一條消息MemodN,由操作C=Memod N加以表示。其中,e是公共加密指數(shù),N是模數(shù)。
      一個RSA解密操作包括計算一條消息M′,如果正確地執(zhí)行解密,M′等于M,并由操作M′=Cemod N加以表示。
      其中,d是私有解密指數(shù),N是模數(shù)。
      可以發(fā)現(xiàn),RSA就是一個模求冪操作。
      實踐證明,d是一個秘密單元,因為它是私有的。因此可以發(fā)現(xiàn)d等價于在本說明書開始處所述的常規(guī)算法A或B中的Y。然而,通過對實現(xiàn)本發(fā)明的電子部件的電流消耗的研究,便可簡單地攻擊用于RSA的這些算法。
      這是因為,如果考慮到被稱為“平方操作”(表示為S(SQU))的針對算法A的操作R2的簽字S和針對算法B的Z2,不同于被稱為“乘操作”(表示為S(MUL))的針對算法A的操作R*X的簽字S和針對算法B的Z*R,那么,在執(zhí)行以上所描述的算法A和B期間,電流消耗由一系列直接依賴于Y的簽字S(SQU)和S(MUL)組成。
      例如,在算法A的情況中,對于Y等于5,將存在以下的一系列簽字[S(SQU),S(MUL)]、[S(SQU)]、[S(SQU),S(MUL)]。其中,跟隨在系列簽字[S(SQU)]后面的[S(MUL)]相應(yīng)于一個等于1的位,跟隨在[S(SQU)]后面的簽字[S(SQU)]相應(yīng)于一個等于0的位。
      如果已知如何區(qū)別[S(SQU)]和[S(MUL)],則通過簡單地觀察電流消耗就可發(fā)現(xiàn)整個Y值。如果把該攻擊施用于以上所描述的RSA,可發(fā)現(xiàn)Y=d,根據(jù)定義,Y=d肯定是保持秘密的私有解密指數(shù),因此這將是非??膳碌摹?br> 本發(fā)明使消除該重大缺陷成為可能。
      然而,為了明顯突出本發(fā)明的發(fā)明性,對仍有缺陷的算法A和B加以改進的一個例子進行描述是十分有益的。
      在常規(guī)算法A或B中,考慮到實現(xiàn)本發(fā)明的部件擁有一個被稱為″平方″(表示為SQU)的優(yōu)化的操作,它比表示為MUL的操作″乘″可更有效地計算R2。
      針對攻擊的第一還擊包括僅使用操作MUL。在該情況中,除了操作“乘”的簽字外,什么也沒有保留,這使區(qū)別任何能夠回到值Y的信息不再可能。更確切地說,數(shù)學(xué)操作“乘”擁有兩個操作碼V和W,并由下列公式加以定義MUL(V,W)=V*W。
      理論上講,對某一事物加以保護是可行的,但在實踐中使用操作MUL(V,V)或操作MUL(V,W);因為操作碼(operand)不同,所以仍存在著電流消耗的差別。這不是一個可靠的解決方案。
      本發(fā)明包括通過本算法計算模求冪,并使避免以上剛剛加以陳述的缺陷成為可能。
      使用兩個寄存器R1和R2以及一個指示器I,I等于0意味著結(jié)果位于寄存器R1中,I等于1意味著結(jié)果位于R2中,從而可指示正確的結(jié)果位于哪一個寄存器中。
      采用算法A的本發(fā)明的算法包括通過下列初始化步驟a和b以及計算步驟c、d、e以及f執(zhí)行該算法,對這些步驟執(zhí)行k次,k是Y的大小,所描述的步驟如下a)初始化R1=1;b)初始化I=0。
      對于Y的每一個二進制表示的位Y(i),從“0”到“k-1”執(zhí)行下列4個步驟c、d、e以及f;從最高有效位Y(k-1)到最低有效位Y(0)運行Y的二進制表示。
      c)如果I=0,執(zhí)行操作R2=(R1)2;如果I=1,執(zhí)行操作R1=(R2)2;d)對I求補,即其值僅從“0”變到“1”或從“1”變到“0”;e)在I上重復(fù)測試操作如果I=0,執(zhí)行操作R2=R1*X;如果I=1,執(zhí)行操作R1=R2*X;f)如果Y(i)=1,那么對I求補;如果Y(i)=0,那么I保持不變;于是,無論Y的值如何,總是執(zhí)行一個SQU操作和一個MUL操作。因而在步驟d將存在下列兩個簽字之一S(R2=SQU(R1))或S(R1=SQU(R2))。
      在步驟f也將存在下列兩個簽字之一S(R1=MUL(R2,X))或S(R2=MUL(R1,X))。
      步驟c的簽字是等效的,因為它們使用了相同的操作碼,并執(zhí)行了相同的操作(SQU)。
      步驟e的簽字是等效的,因為它們使用了相同的操作碼,并執(zhí)行了相同的操作(MUL)。
      因此,回到Y(jié)的值已不再可能,它將是操作(SQU)和(MUL)的一個后繼。本發(fā)明的該應(yīng)用使在一個使用要求模求冪算法的公共密鑰算法的電子部件中以一種受保護的方式計算模求冪成為可能。
      采用常規(guī)算法B的本發(fā)明的算法包括通過下列初始化步驟a和b以及下列計算步驟c、d、e以及f執(zhí)行該算法,對這些步驟執(zhí)行k次,k是Y的大小a)初始化R1=1,以及Z=X;b)初始化I=0。
      對于Y的每一個二進制表示的位Y(i),執(zhí)行3個步驟c、d以及e,i從“0”變化到“k-1”;從最低有效位Y(0)到最高有效位Y(k-1)運行Y的二進制表示;c)執(zhí)行操作Z=Z2;d)如果I=0,執(zhí)行操作R2=R1*Z;如果I=1,執(zhí)行操作R2=R2*Z;e)如果Y(i)=0,那么I保持不變,如果Y(i)=1,那么對I求補;于是,無論Y的值如何,總是執(zhí)行一個SQU操作和一個MUL操作。因而在步驟c將存在下列簽字S(SQU)。
      在步驟d將存在下列兩個簽字之一S(R1=MUL(R2,Z))或S(R2=MUL(R1,Z))。步驟d的簽字是等效的,因為它們使用了相同的操作碼,并執(zhí)行了相同的操作(MUL)。
      因此,回到Y(jié)的值已不再可能,它將是操作(SQU)和(MUL)的一個后繼。本發(fā)明的該應(yīng)用使在一個使用要求模求冪算法的公共密鑰算法的電子部件中以一種受保護的方式計算模求冪成為可能。
      作為本發(fā)明的一個例子,使用了DSA,DSA是Schnorr和E1 Gamal簽字算法的一個變種。
      為了簽字m個步驟,執(zhí)行下列步驟1)生成一個隨機數(shù)k;2)計算r=(gkmodp)modq,其中g(shù)、p以及q為芯片卡外部已知的公共整數(shù);3)計算s=(K-1(H(m)+x*r))modq其中H()是一個印跡函數(shù),x是一個私有密鑰。
      對(r,s)相應(yīng)于消息m的簽字。
      將會注意到K是秘密所在。
      步驟2部分地包括一個模求冪
      r′=gkmodp和r=r′modq如果模求冪受到如以上所描述的常規(guī)算法A或B的影響,那么SPA攻擊使其回到值k成為可能。知道k,并已知s,m和r時,攻擊者可以計算出密鑰x。于是,他發(fā)現(xiàn)了簽字的密鑰,因而系統(tǒng)將會遭到破壞。因此,較佳的做法是使用本發(fā)明或本發(fā)明實施方案變型,以影響本實例步驟2的模求冪。
      于是,在本發(fā)明中,由于計算算法的方法使攻擊者不可能通過考察電流消耗發(fā)現(xiàn)k,所以攻擊者不能回到私有密鑰x的值。
      權(quán)利要求
      1.一種模求冪算法,該方法由下列數(shù)學(xué)公式加以定義R=XYmod N,Y是一個指數(shù),其大小為k位,N是一個模數(shù),其大小為k′位,X是一個已知的變量,其大小為k″位;R是模求冪操作的結(jié)果,其大小為k′位,并且包括寄存器R1和R2以及一個指示器I,一種算法,其特征在于,該算法包括下列的執(zhí)行步驟,這些步驟包括叫做初始化步驟的步驟a和b,以及叫做計算步驟的步驟c、d以及ea)初始化R1=1以及Z=X;b)初始化I=0;對于Y的每一個二進制表示的位Y(i),執(zhí)行3個步驟c、d以及e,i從“0”變化到“k-1”;因此,可從最低有效位Y(0)到最高有效位Y(k-1)運行Y的二進制表示;c)執(zhí)行操作Z=Z2;d)如果I=0,執(zhí)行操作R2=R1*Z;如果I=1,執(zhí)行操作R1=R2*Z;e)如果Y(i)=0,那么I保持不變,如果Y(i)=1,那么對I求補;
      2.一種模求冪算法,該方法由下列數(shù)學(xué)公式加以定義R=XYmod N,Y是一個指數(shù),其大小為k位,N是一個模數(shù),其大小為k′位,X是一個已知的變量,其大小為k″位;R是模求冪操作的結(jié)果,其大小為k′位,并且包括寄存器R1和R2以及一個指示器I,一種算法,其特征在于,該算法擁有下列的執(zhí)行步驟,這些步驟包括叫做初始化步驟的a和b,以及叫做計算步驟的c、d、e以及fa)初始化R1=1;b)初始化I=0;對于Y的每一個二進制表示的位Y(i),執(zhí)行下列4個步驟c、d、e以及f,i從“ 0”變化到“k-1”;因此,可從最低有效位Y(0)到最高有效位Y(k-1)運行Y的二進制表示。c)如果I=0,執(zhí)行操作R2=(R1)2;如果I=1,執(zhí)行操作R1=(R2)2;d)在步驟d的兩種情況中,對I求補,即它的值僅從“ 0”變化到“1”或從“1”變化到“ 0”;e)在I上重復(fù)執(zhí)行測試操作;如果I=0,執(zhí)行操作R2=R1*X;如果I=1,執(zhí)行操作R1=R2*X;f)如果Y(i)=1,那么對I求補;如果Y(i)=0,那么I保持不變;
      3.一種電子部件,其特征在于它實現(xiàn)了權(quán)利要求1至權(quán)利要求2之一。
      4.根據(jù)權(quán)利要求2的一種電子部件,其特征在于它是一個芯片卡類型的便攜式的電子物體。
      5.一種電子終端,其特征在于實現(xiàn)了權(quán)利要求1至權(quán)利要求2之一。
      全文摘要
      本發(fā)明涉及一種使用公共密鑰加密算法的電子部件中的抗SPA(簡單功率攻擊)模求冪算法。
      文檔編號G06F7/72GK1397035SQ0180411
      公開日2003年2月12日 申請日期2001年1月18日 優(yōu)先權(quán)日2000年1月26日
      發(fā)明者O·伯努瓦 申請人:格姆普拉斯公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1