本發(fā)明涉及信息安全技術(shù)。
背景技術(shù):對(duì)RSA算法機(jī)制進(jìn)行SPA攻擊的基本思想就是區(qū)分功耗曲線中模乘運(yùn)算與模平方運(yùn)算的不同特征,據(jù)此破解出密鑰。近年出現(xiàn)很多將功耗分析攻擊方法與傳統(tǒng)密碼分析方法結(jié)合的攻擊方法。如文獻(xiàn)[57]將故障攻擊與功耗分析結(jié)合,文獻(xiàn)[57,58]中將選擇明文與簡(jiǎn)單功耗分析結(jié)合,提取密鑰。文獻(xiàn)[59]將選擇明文與時(shí)間攻擊結(jié)合。文獻(xiàn)[49,60]給出了基于中國(guó)剩余定理(ChineseRemaindertheorem,CRT)的實(shí)現(xiàn)算法的選擇明文與SPA結(jié)合的攻擊。在密碼學(xué)或密碼分析中,選擇明文攻擊是一種傳統(tǒng)的密碼分析方法。在這種攻擊方法中,攻擊者可以事先任意選擇一定數(shù)量的明文,讓被攻擊的加密算法加密,并得到相應(yīng)的密文。攻擊者的目標(biāo)是通過(guò)這一過(guò)程獲得關(guān)于加密算法的一些信息,以利于攻擊者以后更有效的破解由同樣加密算法(以及相關(guān)鑰匙)加密的信息。在最壞情況下,攻擊者可以直接獲得解密用的鑰匙。這種攻擊模式乍看起來(lái)并不現(xiàn)實(shí),因?yàn)楹茈y想像攻擊者可以選擇任意的信息并要求加密系統(tǒng)進(jìn)行加密。不過(guò),在公鑰密碼學(xué)中,這就是一個(gè)很現(xiàn)實(shí)的模式。這是因?yàn)楣€密碼方案中,加密用的公鑰是公開的,這樣攻擊者就可以直接用它來(lái)加密任意的信息。在已知明文攻擊、已知密文攻擊和選擇明文攻擊這幾種方式當(dāng)中,選擇明文攻擊是對(duì)密碼系統(tǒng)最有威脅的一種。一個(gè)安全的密碼系統(tǒng)必須能抵御選擇明文密碼攻擊。將選擇明文攻擊與功耗分析攻擊相結(jié)合,在被控設(shè)備上輸入特定的明文或消息,運(yùn)行被攻擊密碼系統(tǒng)加密或簽名,得到相應(yīng)密文或簽名。在此過(guò)程中捕獲功耗曲線,尋找其功耗特征與秘密信息的相關(guān)性,以便恢復(fù)密鑰。參見S.M.Yen,W.C.Lien,S.J.Moon,andJ.C.Ha,”PoweranalysisbyexploitingchosenmessageandinternalcollisionsvulnerabilityofcheckingmechanismforRSA-decrytion.”Mycrypt2005,LectureNotesinComputerScience,vol.3715,pp.183-195,sep2005。Yen等人提出一種以N-1為特殊輸入數(shù)據(jù)的選擇明文SPA攻擊。當(dāng)以N-1這一特殊數(shù)據(jù)為明文進(jìn)行SPA攻擊時(shí),S1、S2和M三種運(yùn)算在整個(gè)模冪過(guò)程中出現(xiàn)的順序存在著特定的規(guī)律。而且由于輸入數(shù)據(jù)的特殊性,三種運(yùn)算所對(duì)應(yīng)的功耗差異明顯,進(jìn)行相同運(yùn)算時(shí),功耗接近。以密鑰“10100”為例,描述明文為N-1時(shí)運(yùn)算過(guò)程中的操作特性及數(shù)據(jù)特性。明文為N-1時(shí),從左到右BR算法所對(duì)應(yīng)的運(yùn)算和數(shù)據(jù)如表1所示。表1密鑰為“10100”,明文為N-1時(shí)的運(yùn)算過(guò)程由表1中得出:在以“N-1”為明文進(jìn)行操作過(guò)程中,各個(gè)模乘計(jì)算結(jié)束后,只存在三種情況:第一種情況,操作數(shù)是“1”,乘數(shù)是“N-1”,結(jié)果為“N-1”;第二種情況,操作數(shù)都是“N-1”,乘數(shù)是“N-1”,結(jié)果為“1”;第三種情況,操作數(shù)都是“1”,乘數(shù)都是“1”,結(jié)果為“1”。這三種情況我們分別用M、S1和S2來(lái)表示:在整個(gè)從左到右的BR算法的運(yùn)算過(guò)程中,這些關(guān)系都是不變的。蒙哥馬利算法作為一種模乘運(yùn)算的快速算法,也被應(yīng)用到RSA算法的SPA攻擊過(guò)程中。運(yùn)用蒙哥馬利算法后,預(yù)處理操得到M'=(N-1)×RmodN=N-1和C'=1×RmodN=R,在上述從左到右的BR算法過(guò)程中,運(yùn)算和數(shù)據(jù)結(jié)果如表2所示。表2密鑰為“10100”,明文為N-1時(shí)的詳細(xì)運(yùn)算過(guò)程三種運(yùn)算形式分別變?yōu)槿缦氯N運(yùn)算:在整個(gè)模冪運(yùn)算過(guò)程中,這三種運(yùn)算的順序有著一定規(guī)律,它們的順序排列規(guī)律如表3所示。表3三種運(yùn)算間關(guān)系根據(jù)表3中所列,三種運(yùn)算的序列存在著一定的規(guī)律。M運(yùn)算只出現(xiàn)在第三列中,且是出現(xiàn)在兩步運(yùn)算中的第二步,這表明M運(yùn)算只出現(xiàn)在密鑰位為“1”時(shí)的運(yùn)算中,表示乘法運(yùn)算,而且是密鑰位“1”結(jié)束時(shí)的運(yùn)算。S1運(yùn)算和S2運(yùn)算不僅出現(xiàn)在第二列,而且在第三列的第一步運(yùn)算中出現(xiàn),這表明S1運(yùn)算和S2運(yùn)算不一定是某個(gè)密鑰位結(jié)束時(shí)的操作。由表中第一行可知,若當(dāng)前密鑰位是以M運(yùn)算結(jié)束的。那么,無(wú)論下一個(gè)密鑰位是“0”還是“1”,都要進(jìn)行S1運(yùn)算。所以,M運(yùn)算和S1運(yùn)算總是成對(duì)出現(xiàn)的,而且M運(yùn)算出現(xiàn)在S1運(yùn)算之前,M運(yùn)算之后絕不會(huì)直接出現(xiàn)S2運(yùn)算;若當(dāng)前密鑰位是以S2運(yùn)算或者S1運(yùn)算結(jié)束的,無(wú)論下一個(gè)密鑰位是“0”還是密鑰位“1”都要進(jìn)行S2運(yùn)算。因?yàn)镾PA攻擊主要是從M運(yùn)算、S1運(yùn)算、S2運(yùn)算的功耗差異中估計(jì)出密鑰位的值。所以,不必過(guò)多考慮關(guān)于模冪算法實(shí)現(xiàn)的詳細(xì)信息以及電路結(jié)構(gòu)。由于N-1的特殊性,在整個(gè)模冪過(guò)程中執(zhí)行每種運(yùn)算時(shí),輸入的數(shù)據(jù)相同而且進(jìn)行的操作相同(例如,每次進(jìn)行M運(yùn)算時(shí),輸入的數(shù)據(jù)都是R,進(jìn)行的操作都是Z=R×(N-1)R×R-1modN)。因此,每種運(yùn)算出現(xiàn)在功耗曲線中的波形都對(duì)應(yīng)著一種固定的形式,而且三種波形都比較容易區(qū)分。根據(jù)上述三種運(yùn)算間順序的排列規(guī)律以及波形特征,當(dāng)給定一條RSA密碼芯片的SPA功耗曲線時(shí),只要能夠確定出某一輪的運(yùn)算是M運(yùn)算,那么就可以將這一輪與上一輪兩輪運(yùn)算看作是密鑰位中的“1”;當(dāng)連續(xù)出現(xiàn)n個(gè)S2運(yùn)算時(shí),就可以將前n-1個(gè)S2運(yùn)算對(duì)應(yīng)n-1個(gè)密鑰位“0”;其余的均對(duì)應(yīng)密鑰位“0”。根據(jù)上述對(duì)應(yīng)方法即可破解密鑰。理論上,由于N-1的特殊性,M,S1和S2三種運(yùn)算只要能夠辨認(rèn)出其中的一種即可破解出密鑰。因?yàn)樵谡麄€(gè)的功耗曲線中,存在著三種波形,而且僅有三種,分別對(duì)應(yīng)著M,S1,S2這三種運(yùn)算,而且三種運(yùn)算的出現(xiàn)次序又有著一定的規(guī)律。例如,判斷出M運(yùn)算所對(duì)應(yīng)的波形,那么,密鑰中所有的比特位“1”就找到了,其余位均為“0”,密鑰就可以破解。圖1是N-1為明文的SPA攻擊示意圖。在圖1的功耗曲線中,按照上述理論推導(dǎo),M運(yùn)算總是和S1運(yùn)算成對(duì)出現(xiàn)的,將M運(yùn)算與它前一個(gè)運(yùn)算組合在一起標(biāo)為“1”;將兩個(gè)連續(xù)的S2運(yùn)算中的第一個(gè)S2運(yùn)算標(biāo)為“0”;將其余的運(yùn)算均標(biāo)為“0”。根據(jù)推導(dǎo)可以得到此次加密的密鑰為“1001010”。以上攻擊方法在真實(shí)環(huán)境中的攻擊效果,Miyamoto等人在FPGA平臺(tái)上實(shí)現(xiàn)了算法,并對(duì)攻擊方法進(jìn)行了驗(yàn)證。參見AtsushiMiyamoto,NaofumiHommaandTakafumiAoki,CHOSEN-MESSAGESPAATTACKSAGAINSTFPGA-BASEDRSAHARDWAREIMPLEMENTATIONS.FPL2008:3-40關(guān)于明文為N-1的SPA攻擊實(shí)驗(yàn)與分析明文為N-1時(shí)的SPA攻擊實(shí)驗(yàn)方案如下:1)隨機(jī)產(chǎn)生一個(gè)密鑰d;2)隨機(jī)產(chǎn)生n組模數(shù)N0……Nn-1,并且每組明文M分別為N0-1……Nn-1-1,輸入每一組數(shù)據(jù)模數(shù)N和明文M進(jìn)行實(shí)驗(yàn),每組數(shù)據(jù)采集m條曲線,得到n組功耗曲線;3)觀察每一條功耗曲線的波形特征,對(duì)比算法中的運(yùn)算特性,得到密鑰信息;4)隨機(jī)產(chǎn)生x個(gè)密鑰d,對(duì)于每一個(gè)密鑰d,重復(fù)步驟(2)和(3)。按照上述實(shí)驗(yàn)方案,對(duì)于明文為N-1時(shí)的數(shù)據(jù),在功耗分析平臺(tái)上進(jìn)行了大量的實(shí)驗(yàn)。實(shí)驗(yàn)證明,N-1做明文對(duì)蒙哥馬利模乘算法實(shí)現(xiàn)的RSA密碼芯片做SPA攻擊的效果是明顯的。圖2是實(shí)驗(yàn)后得到的功耗曲線圖。通常選擇示波器的1通道為數(shù)據(jù)通道,2通道為觸發(fā)通道,二者可以互換;波特率設(shè)置為19200;帶寬為20M;采樣點(diǎn)為1M;實(shí)驗(yàn)所用的私鑰d、模數(shù)N、明文為N-1均為1024bit的數(shù)。在明文為N-1的情況下,得到的功耗曲線圖中,每一輪次的特征都比較明顯,而且可以清晰地看到每種功耗的排列次序。根據(jù)第四章第一節(jié)中所講述的理論,N-1做明文時(shí),在模冪運(yùn)算過(guò)程中,這三種運(yùn)算M、S1和S2,每次進(jìn)行計(jì)算時(shí)的操作數(shù)與操作都分別對(duì)應(yīng)相同,即,在進(jìn)行M運(yùn)算時(shí),輸入的操作數(shù)是R,所進(jìn)行的運(yùn)算是R×(N-1)R×R-1modN;在進(jìn)行S1運(yùn)算時(shí),輸入的數(shù)據(jù)是(N-1)R,所進(jìn)行的運(yùn)算是(N-1)R×(N-1)R×R-1modN;在進(jìn)行S2運(yùn)算時(shí),輸入的數(shù)據(jù)是R,進(jìn)行的運(yùn)算是R×R×R-1modN,相對(duì)應(yīng)地,在功耗曲線中也存在三種功耗波形分別對(duì)應(yīng)M,S1,S2。而且僅有這三種波形,三種功耗曲線之間的功耗差異也極容易區(qū)分。如圖3所示,S2的功耗高低差異較明顯,S1功耗比較整齊,基本相等,M的功耗大部分低,只有少數(shù)位置功耗高。圖4所示的圖形是圖2中第一個(gè)S2操作和第二個(gè)S2操作,它們的功耗曲線幾乎是一樣的。S1運(yùn)算和M運(yùn)算每次出現(xiàn)時(shí),呈現(xiàn)的功耗圖形也是相似的。圖5、圖6和圖7分別為S2、M和S1運(yùn)算對(duì)應(yīng)的功耗曲線圖。由于數(shù)據(jù)的特殊性,在進(jìn)行實(shí)驗(yàn)時(shí),只需要判斷出其中一種波形即可迅速地破解出密鑰。相同實(shí)驗(yàn)環(huán)境中,隨機(jī)產(chǎn)生100個(gè)密鑰d,對(duì)每一個(gè)密鑰,隨機(jī)產(chǎn)生1000組模數(shù)N和相應(yīng)的明文N-1,對(duì)每組數(shù)據(jù)采集200條功耗曲線。通過(guò)實(shí)驗(yàn),每條曲線都可以破解出密鑰,正確率為100%,表明N-1作為明文對(duì)RSA算法密碼芯片進(jìn)行SPA是有效的。對(duì)于這種功耗攻擊最有效的防范方法就是限制此類數(shù)據(jù)做明文。可以直接將N-1為明文的結(jié)果寫在芯片里。每次操作時(shí)都檢驗(yàn)一下明文是否是N-1。如果是N-1就不執(zhí)行,去指定區(qū)域直接取結(jié)果,并不真正進(jìn)行簽名運(yùn)算,這也就使采用這種方法的攻擊者無(wú)法得到相應(yīng)的功耗曲線,既而無(wú)法實(shí)施此類攻擊。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問(wèn)題是,提供一種具有較高效率的加密系統(tǒng)邊信道攻擊測(cè)試方法。本發(fā)明解決所述技術(shù)問(wèn)題采用的技術(shù)方案是,加密系統(tǒng)邊信道攻擊測(cè)試方法,其特征在于,包括下述步驟:1)確定選擇明文由選擇明文通過(guò)蒙哥馬利模乘算法得到輸入明文,所述選擇明文的取值為以下各數(shù)之任一:在漢明重量為1的數(shù)中:21023、21022、21021、21020、21019、21018;在漢明重量為2的數(shù)中:21023+K1、21022+K2、21021+K1、21020+K1、21019+K1、21018+K1;在漢明重量為3的數(shù)中:21023+K3、21022+K3、21021+K3、21020+K3、21019+K3;K1、K2、K3為任意值且K1≠21022,K2≠21023;2)在被控設(shè)備上輸入步驟1)得到的輸入明文,使用被攻擊密碼系統(tǒng)加密,捕獲功耗曲線。本發(fā)明的有益效果是,攻擊效率很高,且具有一定的普適性,用單一的屏蔽特殊數(shù)的方法無(wú)法防范,采用本發(fā)明的攻擊測(cè)試有利于促進(jìn)更高安全性能的信息安全系統(tǒng)的開發(fā)。附圖說(shuō)明圖1是功耗曲線與密鑰位對(duì)應(yīng)關(guān)系示意圖。圖2是明文為N-1時(shí)的RSA功耗曲線圖。圖3是明文為N-1時(shí)三種運(yùn)算對(duì)應(yīng)的功耗曲線圖。圖4是明文為N-1時(shí)第一個(gè)S2運(yùn)算和第二個(gè)S2運(yùn)算對(duì)應(yīng)的功耗曲線圖。圖5是明文為N-1時(shí)S2運(yùn)算對(duì)應(yīng)的功耗曲線圖。圖6是明文為N-1時(shí)M運(yùn)算對(duì)應(yīng)的功耗曲圖。圖7是明文為N-1時(shí)S1運(yùn)算對(duì)應(yīng)的功耗曲線圖。圖8是新的模冪算法選擇明文SPA示意圖。圖9是智能卡芯片功耗曲線圖。其中(a)隨機(jī)明文xa輸入;(b)選擇明文xb輸入;(c)放大的圖(b)。圖10是智能卡芯片選擇明文21023功耗曲線圖。圖11是智能卡芯片選擇明文21023+2功耗曲線圖。圖12是智能卡底數(shù)掩碼芯片選擇明文21023功耗曲線圖。具體實(shí)施方式如背景技術(shù)所述,以N-1為明文的選擇明文SPA攻擊,攻擊效果較明顯。但是這種方法很容易被防范,只需直接屏蔽N-1即可。本發(fā)明提出了一種高效的選擇明文SPA攻擊的方法,此方法既不容易被簡(jiǎn)單屏蔽,又只需少量功耗曲線既可以的到攻擊結(jié)果。新的模冪算法選擇明文SPA攻擊的功耗分析模型:在真實(shí)環(huán)境下,進(jìn)行功耗曲線的采集要受到設(shè)備、環(huán)境等多方面的影響,具體的功耗的組成如下式[61,62]:Ptotal=Pop+Pdata+Pel.noise+Pconst(3-1)其中Ptotal為某個(gè)時(shí)刻總功耗,Pop為操作依賴分量,Pdata為數(shù)據(jù)依賴分量,Pel.noise為電子噪聲,Pconst為恒定分量。在給定的攻擊場(chǎng)景中,可以將功耗Pexp定義為攻擊者的目標(biāo)信息所引起的功耗,Psw.noise可以定義為無(wú)關(guān)信息所引起的功耗。那么下式(3-2)總是成立的:Pop+Pdata=Pexp+Psw.noise(3-2)其中Pexp為功耗分量,Psw.noise也可以理解為轉(zhuǎn)換噪聲。在式(3-2)中的Pexp是帶給攻擊者最多信息的分量,在操作大致相同的各個(gè)模乘運(yùn)算中,Pop基本穩(wěn)定,而在有不同的操作數(shù)進(jìn)行運(yùn)算時(shí)Pdata不同。此時(shí),可以注意到,數(shù)據(jù)依賴分量Pdata將提供更多的目標(biāo)信息。在算法1中,各個(gè)模乘或模平方運(yùn)算中,參與運(yùn)算的操作數(shù)有和m。其中是將明文進(jìn)行預(yù)處理之后的值。文獻(xiàn)[63]中提出的漢明重量模型,是功耗分析攻擊者依據(jù)的常用模型。模型中攻擊者假設(shè)功耗與被處理的數(shù)據(jù)中被置位(為1)的比特個(gè)數(shù)成正比。那么在針對(duì)特定智能卡攻擊的時(shí)候,均是運(yùn)行一張智能卡上的RSA算法,操作依賴分量Pop基本上是穩(wěn)定的(即執(zhí)行的操作基本相同),而Ptotal的值的變化主要取決于數(shù)據(jù)依賴分量Pdata。又由于在每輪蒙哥馬利模乘中,參與運(yùn)算的操作數(shù)是不同的,那么根據(jù)漢明重量模型可以將式(3-1)的模型改寫為下式:其中函數(shù)是受各個(gè)操作數(shù)的漢明重量影響產(chǎn)生功耗變化的函數(shù)。由于R和m均為常量,且作為攻擊的主要目標(biāo):模乘和模平方中,R和m不能給攻擊帶來(lái)區(qū)分信息??梢詫?3-3)簡(jiǎn)化成式(3-4):表4可見的影響僅僅出現(xiàn)在ei=1時(shí)的模乘中。那么如果可以使具有明顯的區(qū)別,那么在攻擊中將很快找到模乘的位置,既而將找到ei=1的位置,便可恢復(fù)出密鑰。表4三種情況下Pdata的主要影響因素新的選擇明文SPA攻擊原理:基于前文的分析,根據(jù)漢明重量模型的基本原理,選取漢明重量較小的數(shù)參與運(yùn)算,在采集的曲線中出現(xiàn)了非常明顯的信息泄漏。由于在進(jìn)行模冪運(yùn)算之前對(duì)輸入的明文要進(jìn)行一個(gè)預(yù)處理那么如果使的值較小,需要進(jìn)行計(jì)算(即算法1)反推出選擇的明文x。依據(jù)算法1,在攻擊中選取x,使很小。在進(jìn)行蒙哥馬利運(yùn)算的過(guò)程中,當(dāng)ei=1時(shí),執(zhí)行模乘由于A在整個(gè)蒙哥馬利模冪運(yùn)算中是不斷變化的,而的值是經(jīng)過(guò)精心選取的,而且在進(jìn)入模冪運(yùn)算之后是一個(gè)定值。那么一般情況下,與HW(A)差別很大,根據(jù)漢明重量模型原理在功耗上對(duì)有明顯的影響。公式(3-4)中可見,這種影響將體現(xiàn)到總的功耗Ptotal中,如圖8所示。圖8中S為平方,M為模乘。因?yàn)槊筛珩R利模乘中有漢明重量較小的參與計(jì)算,所以M呈現(xiàn)出較小的功耗。很容易區(qū)分出M的位置。再由算法1,M的位置便是ei=1出現(xiàn)的循環(huán)中模乘的位置。M與前一個(gè)模平方S構(gòu)成ei=1對(duì)應(yīng)的兩輪模乘。其余是ei=0的模平方的位置,以此類推恢復(fù)出密鑰e的值。攻擊實(shí)驗(yàn)過(guò)程及結(jié)果用本發(fā)明的攻擊方法在真實(shí)環(huán)境中,對(duì)智能卡進(jìn)行了攻擊實(shí)驗(yàn)。實(shí)驗(yàn)設(shè)備及參數(shù)如下表5所示。表5實(shí)驗(yàn)設(shè)備及參數(shù)先選取隨機(jī)明文xa,進(jìn)行初始化用xa作為明文運(yùn)行智能卡進(jìn)行簽名得到功耗曲線圖9(a),其中且R=21024modm。在密鑰與模數(shù)m均相同的情況下,取然后計(jì)算其中,由于實(shí)際參與運(yùn)算的值是而根據(jù)3.2.2的分析,實(shí)現(xiàn)攻擊要選取小的xb參與運(yùn)算。其中R=21024modm。表6給出了實(shí)際使用的數(shù)據(jù)。表6選擇明文21023的實(shí)驗(yàn)數(shù)據(jù)(十六進(jìn)制)在圖9(a)中每個(gè)模乘或模平方之間隔較明顯,但無(wú)法區(qū)分出模乘與模平方的位置。而在圖9(b)和(c)中,由于選用了小的xb參與運(yùn)算,那么有作為操作數(shù)進(jìn)行的模乘段的功耗明顯很低,可以明顯區(qū)分出模平方與模乘。如圖9(c)中,應(yīng)用上一小節(jié)中的方法恢復(fù)出密鑰。新攻擊方法可選明文統(tǒng)計(jì)在背景技術(shù)中,提出的選擇明文方法也可以恢復(fù)出密鑰。但芯片廠商可以直接對(duì)特殊明文N-1的屏蔽抵御攻擊。類似屏蔽N-1的方法,對(duì)于選擇明文功耗分析攻擊,卡商常會(huì)應(yīng)用對(duì)特殊明文的屏蔽來(lái)抵御選擇明文攻擊。先對(duì)特定的有攻擊效果的明文的加解密進(jìn)行預(yù)計(jì)算,當(dāng)這些明文作為輸入?yún)⑴c計(jì)算時(shí),會(huì)自動(dòng)加載預(yù)計(jì)算的結(jié)果,不會(huì)執(zhí)行加密過(guò)程。這樣就無(wú)法采集功耗曲線并提取密鑰。而對(duì)于本發(fā)明提出的攻擊方法,明文不只是一個(gè)或幾個(gè),而是一個(gè)很大的范圍。如表7對(duì)部分從1到3的進(jìn)行了統(tǒng)計(jì)。據(jù)表7的不完全統(tǒng)計(jì),滿足攻擊條件的明文有很多個(gè),很難采用屏蔽特殊明文的方法進(jìn)行防范。如果采用預(yù)計(jì)算防御方法來(lái)防范文中提出的選擇明文攻擊,將有大范圍明文的預(yù)計(jì)算需要進(jìn)行處理,這本身又暴露了另一個(gè)功耗分析的脆弱點(diǎn)。表7特殊明文部分范例在智能卡芯片上的實(shí)驗(yàn)驗(yàn)證效果可見,用新的攻擊方法對(duì)智能卡芯片的模冪算法進(jìn)行攻擊,如果選用漢明重量小于等于3的特殊明文參與運(yùn)算,會(huì)有比較明顯的攻擊效果。構(gòu)造泄露密鑰的最優(yōu)明文:在對(duì)可選明文的統(tǒng)計(jì)實(shí)驗(yàn)中,發(fā)現(xiàn)采集的功耗曲線很多都存在如圖10的情況。即在功耗曲線中,在模乘開始的前端會(huì)出現(xiàn)T1段的功耗效果,而后面的模乘會(huì)因?yàn)檫x擇明文的輸入使平方和乘呈現(xiàn)明顯的區(qū)別。但是由于前面T1段每一輪模乘的功耗都很低無(wú)法區(qū)分出模乘和模平方,所以使攻擊密鑰的成功率不能達(dá)到100%。通過(guò)實(shí)驗(yàn),對(duì)T1段的產(chǎn)生原因進(jìn)行了詳細(xì)的分析。實(shí)驗(yàn)數(shù)據(jù)采用了表6的m、R和的值。其中x使參與運(yùn)算的為21023,漢明重量為1。為了方便對(duì)比結(jié)果,也給出了智能卡中的密鑰e如下表8所示。表8為21023實(shí)驗(yàn)數(shù)據(jù)(十六進(jìn)制)根據(jù)蒙哥馬利模乘算法,在數(shù)學(xué)工具中實(shí)現(xiàn)以上算法,其中e1→e11為10101001100。在算法執(zhí)行過(guò)程中設(shè)置斷點(diǎn),記錄中間結(jié)果,得到下表9(為方便說(shuō)明,下表中的中間結(jié)果用十進(jìn)制表示)。由于m為1024bit的二進(jìn)制數(shù),所以表中小于1024bit的值不需要進(jìn)行模m運(yùn)算。表9選擇明文21023T1段實(shí)驗(yàn)中間結(jié)果續(xù)表9選擇明文21023T1段實(shí)驗(yàn)中間結(jié)果表9中列出了以e為密鑰,以x為明文的情況下,從左到右的BR算法在進(jìn)行模冪運(yùn)算的時(shí)候前幾輪模乘的情況。表中第一輪模乘是模平方,因?yàn)閰⑴c的操作數(shù)A=21024modm,HW(A)=50,由公式(3-4)分析可得,這輪模平方功耗不是很低,對(duì)應(yīng)于圖11的第一個(gè)模乘。由于e1=1,第二輪是A和參與的模乘。由于其中一個(gè)操作數(shù)的漢明重量使整個(gè)模乘的功耗降得比較低。從第二輪模乘開始,A的漢明重量也變得很小HW(A)=1,所以在前15輪模乘,因?yàn)槊枯喍加袧h明重量很低的數(shù)出現(xiàn),所以總體都呈現(xiàn)功耗較低的情況。直到第16輪結(jié)束之后HW(A)=358,使得HW(A)與發(fā)生明顯的差異。所以,在圖10的T2階段出現(xiàn)了3.2.2中描述的明顯的攻擊效果?;谝陨戏治?,如果可以縮短HW(A)降低的過(guò)程,盡快使HW(A)與的明顯差異表現(xiàn)出來(lái),就會(huì)縮短T1段,提高攻擊成功率。在實(shí)驗(yàn)中構(gòu)造的明文x,使其在遇到第一個(gè)“1”功耗下落后,以最快速度使功耗提升,即使圖10的T1段情況最短。取其功耗曲線如圖11所示。在遇“1”下落后,在第二個(gè)模乘的功耗便提升上來(lái),由圖11可直接攻擊出100%密鑰。表10選擇明文21023+2T1段實(shí)驗(yàn)中間結(jié)果由表10,經(jīng)過(guò)第二輪模乘,A=21023+2這使得HW(A)=2,根據(jù)功耗分析攻擊模型,此輪呈現(xiàn)較低功耗。但是在后面的所有輪中,每輪均有A出現(xiàn),而且,HW(A)均表現(xiàn)的比較平穩(wěn),沒(méi)有大起大落。這使得HW(A)與的明顯差異表現(xiàn)出來(lái)。所以在圖11中,可以區(qū)分出模平方與模乘,進(jìn)而憑借單條曲線可以恢復(fù)出100%的密鑰。新方法與已知方法的效率對(duì)比因?yàn)槊總€(gè)密碼芯片本身都有其自身的生命周期,所以攻擊效率成為衡量攻擊方法的一個(gè)重要因素。也就是說(shuō)在密碼芯片的生命周期內(nèi)盡快取得攻擊結(jié)果,才能取得實(shí)際的攻擊意義。功耗分析攻擊一般包括CPA(CorrelationPowerAnalysis)、DPA和SPA等。CPA和DPA是基于統(tǒng)計(jì)特性的方法,一般需要采集上萬(wàn)條曲線[23]。且被用來(lái)對(duì)樣本曲線進(jìn)行分析處理的工作站需要具有比較高的配置,攻擊成功率一般在90%左右[65]。而本文提出的方法,只需采集單條曲線和應(yīng)用普通PC機(jī)處理,就可以恢復(fù)99%以上的密鑰。與現(xiàn)有的選擇明文SPA攻擊相比,優(yōu)勢(shì)在于本文提出攻擊方法無(wú)法用屏蔽特殊明文的方法進(jìn)行抵御。表11各種功耗分析攻擊方法攻擊效率對(duì)比由表11可以看出本文提出選擇明文功耗分析攻擊方法在效率上占有明顯優(yōu)勢(shì)。DPA與CPA本質(zhì)在通過(guò)統(tǒng)計(jì)特性總結(jié)出密鑰相關(guān)性,所以需要大量功耗曲線,因?yàn)橛?jì)算量很大,那么需要的處理設(shè)備的性能也有所提高。Yen等人提出的以N-1為明文的方法Miyamoto等人在文獻(xiàn)[58]在FPAG上進(jìn)行了實(shí)驗(yàn)驗(yàn)證,效果比較明顯但是很容易被屏蔽。防御對(duì)策:由于可選明文數(shù)量很大,卡商難以用屏蔽特殊明文的方法防御此種攻擊。但是由于此種攻擊方法依賴于操作數(shù)的漢明重量,所以可以考慮用偽乘法(DummyMultiplication)防御方法來(lái)進(jìn)行防御。下面算法2給出經(jīng)過(guò)優(yōu)化的蒙哥馬利模冪算法。在偽乘操作中,無(wú)論指數(shù)是“1”或是“0”都要進(jìn)行平方和乘。只有當(dāng)ei=1時(shí),乘積的值才會(huì)被賦到A中。因?yàn)槊看味加幸桓咭坏凸某霈F(xiàn),所以無(wú)法區(qū)分平方和乘。在底數(shù)掩碼的算法中,對(duì)底數(shù)做了隨機(jī),選擇的明文在隨機(jī)數(shù)的作用下無(wú)法控制實(shí)際參與模乘的操作數(shù)的漢明重量,也就無(wú)法與密鑰相對(duì)應(yīng),所以攻擊無(wú)效,效果如圖12所示。防范文中提出的攻擊也可以采用底數(shù)掩碼的方法進(jìn)行防御。