国产精品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>

      防止對rsa算法進(jìn)行能量分析攻擊的方法

      文檔序號:6540479閱讀:386來源:國知局
      專利名稱:防止對rsa算法進(jìn)行能量分析攻擊的方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及集成電路安全技術(shù)領(lǐng)域,特別是涉及一種防止基于能量分析對RSA算法進(jìn)行攻擊的方法,能夠利用冗余運(yùn)算防御對RSA算法芯片的能量攻擊。
      背景技術(shù)
      利用集成電路技術(shù)實(shí)現(xiàn)的RSA算法通常用于身份認(rèn)證和安全存儲。因此,RSA密鑰的安全性對于用戶而言具有十分重要的意義。RSA是由以研究加密算法而著名的美國RSA實(shí)驗(yàn)室中的三個發(fā)明人的名字命名的一種公開密鑰算法。目前,較為常見的獲取RSA密鑰的手段是對集成電路實(shí)現(xiàn)的RSA算法進(jìn)行物理攻擊以獲取其中的密鑰。常見的物理攻擊方法包括時間分析攻擊法、電磁輻射法和能量分析攻擊法,其中能量分析攻擊法是最為有效的攻擊方法。
      1998年,Kocher等人提出了簡單能量分析(SPA,Simple PowerAnalysis)和差分能量分析(DPA,Differential Power Analysis)方法,有人利用這兩種方法成功地對RSA進(jìn)行了攻擊。
      集成電路的制造使用了大量的CMOS(Complementary Metal-Oxide-Semiconductor Transistor互補(bǔ)金屬氧化物半導(dǎo)體)管,這導(dǎo)致了執(zhí)行不同的指令所消耗的能量不同。另外,對0或1的存儲也能反映出能量消耗的不同。這樣,在程序運(yùn)行過程中,能量的變化會反映出所運(yùn)行的指令的內(nèi)容,這就是基于能量分析而進(jìn)行攻擊的基礎(chǔ)。
      簡單能量分析是在RSA算法芯片進(jìn)行加密和解密過程中,直接測量芯片的能量消耗狀況,在固定的時刻進(jìn)行采樣以獲得足夠多的樣本值。通過對加密和解密所消耗的能量進(jìn)行分析,把這些能量與相應(yīng)的密鑰對應(yīng)起來,從而達(dá)到攻擊的目的。
      差分能量分析是通過統(tǒng)計分析和糾錯技術(shù)從采集的能量信息中抽取出與密鑰相關(guān)的信息。通常情況下,簡單能量分析需要知道目標(biāo)代碼的應(yīng)用細(xì)節(jié)。因此,只有在保證一定信噪比的情況下,簡單能量分析才能有效。而差分能量分析對信噪比的要求要小得多,但需要得到大量的不同樣本的能量消耗值,以及對所對應(yīng)的樣本進(jìn)行統(tǒng)計分析才能得到相應(yīng)的密鑰。
      模冪數(shù)運(yùn)算是RSA中最根本的運(yùn)算,模冪數(shù)運(yùn)算可以分解成多個模平方運(yùn)算和模乘運(yùn)算。進(jìn)行模平方運(yùn)算和模乘運(yùn)算所消耗的能量是有差異的。模冪數(shù)運(yùn)算可以從指數(shù)的高位到低位進(jìn)行,也可以從指數(shù)的低位到高位進(jìn)行。以從高位到低位的方式為例進(jìn)行說明,假設(shè)計算MemodN,設(shè)指數(shù)e共n位長,計算模冪數(shù)流程如圖1所示。
      在已知公鑰基礎(chǔ)上對RSA芯片進(jìn)行能量攻擊方法通常是取大量的隨機(jī)數(shù)進(jìn)行簽名和加密運(yùn)算,并且采集每次運(yùn)算的能量信號。假設(shè)對n個隨機(jī)數(shù)進(jìn)行運(yùn)算,在j時刻,RSA芯片對第i個隨機(jī)數(shù)用私鑰進(jìn)行簽名消耗的能量為Si(j),用公鑰進(jìn)行加密消耗的能量為Pi(j),則構(gòu)造由下面的等式(1)表示的差分信號D(j),D(j)=1n&Sigma;i=1nSi(j)-1n&Sigma;i=1nPi(j)=S(j)&OverBar;-P(j)&OverBar;---(1)]]>如果在j時刻,進(jìn)行的運(yùn)算相同的話,D(j)為0,否則D(j)非零。通過與公鑰的對比調(diào)整對應(yīng)的私鑰值,即在D(i)為零時,該處的私鑰與公鑰一致,否則此處的私鑰是公鑰的反。
      對RSA私鑰進(jìn)行猜測的能量攻擊方法是取一個隨機(jī)數(shù)讓RSA芯片進(jìn)行簽名,采集消耗的能量信號S(j),然后從前向后猜測私鑰的每一位的數(shù)值,分別假設(shè)其為1和0。然后,使RSA芯片分別基于這兩種假設(shè)對該隨機(jī)數(shù)進(jìn)行加密運(yùn)算并采集相應(yīng)的能量信號。假設(shè)前i-1位已經(jīng)破解,如果對私鑰的第i位進(jìn)行猜測,則過程如下可以假設(shè)第i位為零,RSA芯片計算相應(yīng)的能量消耗信號S0(j),假設(shè)第i位為1,RSA芯片計算相應(yīng)的能量消耗信號S1(j)。分別計算兩個差分信號。
      D0(j)=S(j)-S0(j)D1(j)=S(j)-S1(j)如果D0(j)=0,則第i位為0。否則,如果D1(j)=0,則第i位為1。依此類推,直到推出最后一位。
      目前防范對RSA芯片進(jìn)行能量攻擊的方法大致采用下面所述的幾種措施。
      1.增加隨機(jī)噪聲,這種方法可以增加能量攻擊的難度,尤其是對簡單能量分析。這是由于簡單能量分析是對操作過程中所消耗能量的直接觀察,只有信噪比達(dá)到一定的值后才能得到有用的能量信號,因此可以有效地抑制簡單能量分析。另外,也可以增加差分能量分析的難度,使得攻擊者不得不增加采樣數(shù)量。但這種方式不能從根本上解決問題,一方面是因?yàn)楣粽呖梢酝ㄟ^有效的濾波消除這種干擾,另一方面是差分能量分析本身在做統(tǒng)計平均時就削弱了噪聲的影響。
      2.置亂待加密信息,即在加密前取一個隨機(jī)數(shù)re,并計算rj=(re-1)rmodN,]]>令M’=r,對M’進(jìn)行加密運(yùn)算C′=M′emod N;加密結(jié)束時計算C=C′rjmod N恢復(fù)應(yīng)有的密文。但是,這種方法實(shí)際上起不到有效的結(jié)果,因?yàn)閺乃惴ㄉ现v,平方運(yùn)算比乘運(yùn)算要少近一半的指令,因此平方和乘運(yùn)算消耗的能量會有很大差異。所以這種方法不能有效阻止能量分析攻擊。

      發(fā)明內(nèi)容
      鑒于上述問題,本發(fā)明的目的是提供一種能夠防范對RSA芯片進(jìn)行能量分析攻擊的方法,使攻擊者無法通過簡單能量分析和差分能量分析方法得到RSA的密鑰。
      為實(shí)現(xiàn)本發(fā)明的目的,根據(jù)本發(fā)明的一個方面,提供一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪數(shù)運(yùn)算;插入冗余算法,使得在對任何位做模冪數(shù)運(yùn)算時消耗的能量大致相等。
      根據(jù)本發(fā)明的另一個方面,提供一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪運(yùn)算時隨機(jī)插入冗余運(yùn)算指令;使集成電路芯片在對任何位進(jìn)行實(shí)際模冪數(shù)運(yùn)算時所消耗的能量大致相等,從而無法通過能量攻擊獲取加密密鑰。
      根據(jù)本發(fā)明的再一個方面,提供一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪數(shù)運(yùn)算;判斷隨機(jī)數(shù)的當(dāng)前位是否為1;如果隨機(jī)數(shù)的當(dāng)前位為1,則執(zhí)行第一冗余指令算法;如果隨機(jī)數(shù)的當(dāng)前位不為1,則執(zhí)行第二冗余指令算法,從而使集成電路芯片對每一位所做的模冪數(shù)運(yùn)算所消耗的能量大致相等。
      根據(jù)本發(fā)明的再一個方面,提供一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟a)判斷長度為n指數(shù)e的當(dāng)前位是否為1;b)如果當(dāng)前位為1,則執(zhí)行下面的步驟c,如果當(dāng)前位為0,則執(zhí)行步驟d;c)執(zhí)行正常的模冪數(shù)運(yùn)算;d)執(zhí)行插入的冗余算法。
      根據(jù)本發(fā)明的再一個方面,提供一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟a)判斷長度為2n的隨機(jī)數(shù)的當(dāng)前位是否為1;b)如果當(dāng)前位為1,則執(zhí)行第一冗余指令算法;c)如果當(dāng)前位不為1,則執(zhí)行第二冗余指令算法;d)判斷長度為n的指數(shù)e的當(dāng)前位是否為1;e)如果所述指數(shù)的當(dāng)前位為1,則執(zhí)行正常的模冪數(shù)運(yùn)算;f)如果所述指數(shù)的當(dāng)前位為0,則判斷所述隨機(jī)數(shù)的下一位是否為1,并重復(fù)執(zhí)行步驟b)至f),直到對隨機(jī)數(shù)的所有位執(zhí)行了運(yùn)算。


      通過閱讀和理解下面參考附圖對本發(fā)明優(yōu)選實(shí)施例所做的詳細(xì)描述,將使本發(fā)明的這些和其它目的、特征、和優(yōu)點(diǎn)變得顯而易見。其中圖1是表示現(xiàn)有技術(shù)的RSA模冪數(shù)運(yùn)算的流程圖;圖2是表示根據(jù)本發(fā)明實(shí)施例應(yīng)用冗余算法的RSA模冪數(shù)運(yùn)算的流程圖;和圖3是表示應(yīng)用本發(fā)明的冗余運(yùn)算指令的RSA模冪數(shù)運(yùn)算的流程圖。
      具體實(shí)施例方式
      下面參照附圖對本發(fā)明的實(shí)施例進(jìn)行詳細(xì)的說明,在描述過程中省略了對于本發(fā)明來說是不必要的細(xì)節(jié)和功能,以防止對本發(fā)明的理解造成混淆。
      下面以指數(shù)(Exp.)算法為例,說明RSA算法中模冪算法的實(shí)現(xiàn)過程。應(yīng)該指出,本發(fā)明不限于RSA芯片,也可以應(yīng)用于其它集成電路芯片。
      設(shè)M是需要加密的一段明文消息,e是長度為n的密鑰,設(shè)<e[n-1],e[n-2],...,e[1],e
      >是整數(shù)e的二進(jìn)制表示(即,e的二進(jìn)制有n位,e[n-1]是最高位),N是兩個大素數(shù)之積,密文C=Me mod N(即,對Me的模N運(yùn)算)。事實(shí)上,Me mod N可以直接計算,沒有必要先算Me,根據(jù)反復(fù)平方法(Repeated Squaring),可以設(shè)計如下算法<pre listing-type="program-listing">  Exp(M,e,N)  {   r=1;   for(i=n-1;i>=0;i--)   {  r=r2 mod N;  if(e[i]==1)   r=r*M mod N;   }   return r;  }</pre>在此段偽代碼中,r為臨時變量,最終r為模冪運(yùn)算的結(jié)果。循環(huán)中的每次迭代都用到了下面的兩個恒等式中的一個M 2c mod N=(Mc mod N)2M2c+1mod N=M*(Mc mod N)2用哪一個恒等式取決于e[i]=0還是1。
      可知每次計算出的冪值或者是前一個冪的兩倍,或者是前一個冪的兩倍再乘上底數(shù)M。計算過程從高位到低位逐個讀入e的二進(jìn)制表示已控制執(zhí)行哪一種操作。
      圖1是現(xiàn)有技術(shù)中執(zhí)行RSA算法中模冪算法的上述偽代碼的流程圖。
      由于目前是基于RSA芯片對0或1的處理所消耗的能量不同而采用直接測量芯片的能量消耗狀況來攻擊的目的,本發(fā)明的基本構(gòu)思是采用冗余算法對每一位的模冪運(yùn)算的不同能量消耗進(jìn)行補(bǔ)償,以使RSA芯片對0或1進(jìn)行處理所消耗的能量大致相同而解決這一問題。
      下面參考附圖具體說明根據(jù)本發(fā)明實(shí)施例的應(yīng)用冗余算法的實(shí)現(xiàn)過程。
      圖2是應(yīng)用本發(fā)明的RSA的模冪數(shù)運(yùn)算流程圖。應(yīng)該指出,本發(fā)明的基本構(gòu)思不限于RSA的模冪數(shù)運(yùn)算,而是可以應(yīng)用于其它加密算法。首先,在步驟S201,設(shè)r為臨時變量,由于下述運(yùn)算均為乘法運(yùn)算,為得到模冪運(yùn)算的最終結(jié)果,故令r等于1。在步驟S202,i作為指數(shù)e的二進(jìn)制表示的當(dāng)前位,由于從高位算起,故可以令i等于n-1。然后,在步驟S203,判斷i是否小于零,如果不小于零,則說明指數(shù)e的當(dāng)前位不是要被處理的最后一位。這種情況下,執(zhí)行步驟S204。否則,流程進(jìn)行到步驟S209,記錄r的值,結(jié)束該處理過程。在步驟S204,令r等于r2 mod N,即進(jìn)行r2的模N運(yùn)算。此后,在步驟S205,判斷指數(shù)e的第i位是否為1,如果為1,則執(zhí)行步驟206,令r等于r*M mod N,即進(jìn)行r*M的模N運(yùn)算。如果在步驟S205判斷指數(shù)e的第i位不是1,流程進(jìn)行到步驟S207。在過去的算法中當(dāng)e的第i位不等于1時,不進(jìn)行任何操作,這樣能量值顯著降低。根據(jù)本實(shí)施例,在步驟S207,對指數(shù)e的第i位執(zhí)行冗余算法f。需要說明的是f算法沒有具體的含義,它只需要完成的指令周期同r*M mod N大體相當(dāng)即可,即,使得在第i位消耗的能量大致與r*M mod N的能量相當(dāng),即與該位為1的情況消耗的能量大致相同,從而消除對其進(jìn)行處理時所產(chǎn)生的能量消耗的差異。接下來,在步驟S208,取e的下一位,故令i=i-1,循環(huán)執(zhí)行步驟S203至步驟S208。當(dāng)處理進(jìn)行到最后一位時,即當(dāng)i<0時,在步驟S209,記錄所得到的r值,并結(jié)束處理過程。
      根據(jù)本發(fā)明的方法,指數(shù)的二進(jìn)制表示中不為1的位的能量消耗執(zhí)行冗余算法,以使其與二進(jìn)制表示中是1的位的能量消耗大致相同,從而克服了基于能量消耗分析而攻擊RSA芯片的問題。
      圖3所示為應(yīng)用本發(fā)明的RSA的模冪數(shù)運(yùn)算流程圖。下面參考圖3仍以Exp.算法為例,具體說明本發(fā)明應(yīng)用冗余指令的實(shí)現(xiàn)過程。
      首先,在步驟S301,設(shè)r為臨時變量,由于下述運(yùn)算均為乘法運(yùn)算,為得到模冪運(yùn)算的最終結(jié)果,故令r等于1。在步驟S302,j作為隨機(jī)數(shù)的二進(jìn)制表示的當(dāng)前位,由于從低位算起,可以令j等于0。在步驟S303,為掩蓋模平方運(yùn)算和模乘運(yùn)算的能量差異,所以模平方運(yùn)算和模乘運(yùn)算都需要增加冗余指令運(yùn)算,而模平方運(yùn)算和模乘運(yùn)算的次數(shù)為n次,故令隨機(jī)數(shù)(RND)等于長度為兩倍模長的隨機(jī)數(shù)。然后,在步驟S304,將i作為指數(shù)e的二進(jìn)制表示的當(dāng)前位,由于從高位算起,故可以令i等于n-1。此后,在步驟S305,判斷i是否小于零,如果不小于零,則說明指數(shù)e的當(dāng)前位不是要被處理的最后一位。這種情況下,執(zhí)行步驟S306。流程進(jìn)行到步驟S317,記錄r的值,結(jié)束該處理過程。在i不小于零的情況下,在步驟S306,令r等于r2 mod N,即r等于r2的模N運(yùn)算。在步驟S307,根據(jù)隨機(jī)數(shù)當(dāng)前位的情況,選擇不同的冗余指令,用于掩蓋模平方運(yùn)算,因此判斷RND的第j位是否為1,如果為1則執(zhí)行步驟S308,執(zhí)行冗余指令算法f1(可以作為第一冗余指令算法)。如果在步驟S307判斷RND的第j位不是1,流程則執(zhí)行步驟S309,執(zhí)行冗余指令算法f2(可以作為第二冗余指令算法)。應(yīng)該指出,由于正常情況下在RNDj=1和RNDj=0時模平方運(yùn)算的指令周期不同,因此需要執(zhí)行不同的冗余指令算法f1和f2,從而使得執(zhí)行冗余算法之后的模平方運(yùn)算在在RNDj=1和RNDj=0時運(yùn)行的總體指令周期大致相同,所以f1和f2在本質(zhì)上沒有區(qū)別,僅僅在運(yùn)行的指令周期上有差別。例如正常RNDj=1和RNDj=0時模平方運(yùn)算的指令周期分別為20和10,期望運(yùn)行冗余算法后的指令周期為30,那么f1和f2的指令周期分別為10和20。接下來,在步驟S310,判斷指數(shù)e的第i位是否為1,如果為1,則執(zhí)行步驟S311,令r等于r*M mod N,即進(jìn)行r*M的模N運(yùn)算。如果在步驟S310判斷指數(shù)e的第i位不是1,則執(zhí)行步驟S312。在步驟S312,根據(jù)隨機(jī)數(shù)當(dāng)前位的情況,選擇不同的冗余指令,用于掩蓋模乘運(yùn)算,因此判斷RND的第j+1位是否為1,如果為1,流程則執(zhí)行步驟313,執(zhí)行冗余算法f1。如果在步驟S312判斷RND的第j+1位不是1,流程則進(jìn)行到步驟S314,執(zhí)行冗余算法f2。此后,在步驟S315,令j=j(luò)+2。由于隨機(jī)數(shù)RND為2n位,故每次執(zhí)行后增加兩位,即j=j(luò)+2,以便與e的執(zhí)行次數(shù)相同。接下來,在步驟S316,取e的下一位,故令i=i-1,流程返回執(zhí)行步驟S305。當(dāng)處理進(jìn)行到最后一位時,即當(dāng)i<0時,在步驟S317,記錄所得到的r值,并結(jié)束處理過程。
      根據(jù)本發(fā)明的實(shí)施例,可以設(shè)計一種算法f,該算法中使用的模乘運(yùn)算指令周期數(shù)為c2。應(yīng)該指出,確定運(yùn)算指令周期數(shù)的方法是將模乘運(yùn)算的代碼用編譯器進(jìn)行編譯得到其匯編指令,再將CPU完成每條匯編指令所需的CPU運(yùn)行周期累加得到運(yùn)行模乘運(yùn)算的指令周期。該算法可以包括對內(nèi)存的讀寫,對改變寄存器的數(shù)值以及進(jìn)行加減乘的運(yùn)算,前提是不改變關(guān)鍵的寄存器和有用的內(nèi)存值,即進(jìn)行冗余操作。
      插入冗余算法f使得RSA芯片在做任何模冪數(shù)運(yùn)算時消耗的能量相等,都等于指數(shù)最大即全為1時,模冪數(shù)運(yùn)算消耗的能量。從而將有效運(yùn)算消耗的能量通過這種方式掩蓋起來。
      或者可以設(shè)計兩種算法f1,f2,該算法中使用的模平方運(yùn)算指令周期為c1(其確定方法與c2相同),模乘運(yùn)算指令周期數(shù)為c2,該算法可以包括對內(nèi)存的讀寫,對改變寄存器的數(shù)值以及進(jìn)行加減乘的運(yùn)算,前提是不改變關(guān)鍵的寄存器和有用的內(nèi)存值,即進(jìn)行冗余操作。
      根據(jù)本發(fā)明,插入冗余運(yùn)算指令使得RSA芯片在做任何模冪數(shù)運(yùn)算時隨機(jī)插入一些指令,從而掩蓋進(jìn)行實(shí)際模冪數(shù)運(yùn)算所消耗的能量。
      至此已經(jīng)結(jié)合優(yōu)選實(shí)施例對本發(fā)明進(jìn)行了描述。本領(lǐng)域技術(shù)人員應(yīng)該理解,在不脫離本發(fā)明的精神和范圍的情況下,可以進(jìn)行各種其它的改變、替換和添加。因此,本發(fā)明的范圍不應(yīng)該被理解為被局限于上述特定實(shí)施例,而應(yīng)由所附權(quán)利要求所限定。
      權(quán)利要求
      1.一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪數(shù)運(yùn)算;插入冗余算法,使得在對任何位做模冪數(shù)運(yùn)算時所消耗的能量大致相等。
      2.根據(jù)權(quán)利要求1所述的方法,其中所述集成電路芯片是RSA芯片。
      3.根據(jù)權(quán)利要求1或2所述的方法,其中進(jìn)一步包括在對任何位做模冪數(shù)運(yùn)算時,使能量消耗都等于指數(shù)為1時的模冪數(shù)運(yùn)算的能量消耗。
      4.根據(jù)權(quán)利要求1或2所述的方法,其中所述冗余算法中使用的模乘運(yùn)算指令周期數(shù)為c2。
      5.一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪運(yùn)算時隨機(jī)插入冗余運(yùn)算指令;使集成電路芯片在對任何位進(jìn)行實(shí)際模冪數(shù)運(yùn)算時所消耗的能量大致相等,從而無法通過能量攻擊獲取加密密鑰。
      6.根據(jù)權(quán)利要求5所述的方法,其中所述集成電路芯片是RSA芯片。
      7.一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪數(shù)運(yùn)算;判斷隨機(jī)數(shù)的當(dāng)前位是否為1;如果隨機(jī)數(shù)的當(dāng)前位為1,則執(zhí)行第一冗余指令算法;如果隨機(jī)數(shù)的當(dāng)前位不為1,則執(zhí)行第二冗余指令算法,從而使集成電路芯片對每一位所做的模冪數(shù)運(yùn)算所消耗的能量大致相等。
      8.根據(jù)權(quán)利要求7所述的方法,其中所述集成電路芯片是RSA芯片。
      9.根據(jù)根據(jù)權(quán)利要求7或8所述的方法,其中在所述第一和第二冗余指令算法中使用的模平方運(yùn)算指令周期為c1,模乘運(yùn)算指令周期數(shù)為c2。
      10.一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟a)判斷長度為n的指數(shù)e的當(dāng)前位是否為1;b)如果當(dāng)前位為1,則執(zhí)行下面的步驟c,如果當(dāng)前位為0,則執(zhí)行步驟d;c)執(zhí)行正常的模冪數(shù)運(yùn)算;d)執(zhí)行插入的冗余算法。
      11.根據(jù)權(quán)利要求10所述的方法,其中執(zhí)行所述冗余算法的步驟進(jìn)一步包括在模冪數(shù)運(yùn)算中,使得針對指數(shù)的任何位所做的模冪數(shù)運(yùn)算消耗的能量大致相等。
      12.根據(jù)權(quán)利要求10或11所述的方法,其中執(zhí)行所述冗余算法的步驟進(jìn)一步包括使對當(dāng)前位為0所執(zhí)行的模冪數(shù)運(yùn)算所消耗的能量與當(dāng)前位為1所執(zhí)行的模冪數(shù)運(yùn)算所消耗的能量大致相等。
      13.根據(jù)權(quán)利要求10或11所述的方法,其中所述集成電路芯片是RSA芯片。
      14.一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟a)判斷長度為2n的隨機(jī)數(shù)的當(dāng)前位是否為1;b)如果當(dāng)前位為1,則執(zhí)行第一冗余指令算法;c)如果當(dāng)前位不為1,則執(zhí)行第二冗余指令算法;d)判斷長度為n的指數(shù)e的當(dāng)前位是否為1;e)如果所述指數(shù)的當(dāng)前位為1,則執(zhí)行正常的模冪數(shù)運(yùn)算;f)如果所述指數(shù)的當(dāng)前位為0,則判斷所述隨機(jī)數(shù)的下一位是否為1,并重復(fù)執(zhí)行步驟b)至f),直到對隨機(jī)數(shù)的所有位執(zhí)行了運(yùn)算。
      15.根據(jù)權(quán)利要求14所述的方法,其中執(zhí)行所述冗余指令算法的步驟進(jìn)一步包括在模冪數(shù)運(yùn)算中,使得針對指數(shù)的任何位所做的模冪數(shù)運(yùn)算消耗的能量大致相等。
      16.根據(jù)權(quán)利要求14或15所述的方法,其中執(zhí)行所述冗余指令算法的步驟包括使對當(dāng)前位為0所執(zhí)行的模冪數(shù)運(yùn)算所消耗的能量與當(dāng)前位為1所執(zhí)行的模冪數(shù)運(yùn)算所消耗的能量大致相等。
      17.根據(jù)權(quán)利要求14或15所述的方法,其中所述集成電路芯片是RSA芯片。
      全文摘要
      本發(fā)明揭示了一種防止基于能量分析對集成電路芯片進(jìn)行攻擊的方法,包括步驟集成電路芯片進(jìn)行模冪數(shù)運(yùn)算;插入冗余算法,使得在對任何位做模冪數(shù)運(yùn)算時消耗的能量大致相等。本發(fā)明的方法通過在原有RSA算法中增加冗余算法或者隨機(jī)插入運(yùn)算指令使得在進(jìn)行模冪數(shù)運(yùn)算消耗的能量大致相等,使得攻擊者無法根據(jù)能量消耗的統(tǒng)計信息,分析出RSA密鑰,從而達(dá)到對RSA算法的能量攻擊的防護(hù),保證RSA密鑰安全的目的。
      文檔編號G06F17/50GK1835207SQ20051005589
      公開日2006年9月20日 申請日期2005年3月17日 優(yōu)先權(quán)日2005年3月17日
      發(fā)明者謝巍, 王新成 申請人:聯(lián)想(北京)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1