智能卡RSA算法DPA的攻擊與防御
文章出處:http://m.luckydriving.com 作者:靳濟(jì)方 高獻(xiàn)偉 人氣: 發(fā)表時(shí)間:2011年09月26日
1 引言
智能卡(smart card)也稱(chēng)CPU卡,不僅具有數(shù)據(jù)存儲(chǔ)功能,還具有數(shù)據(jù)安全保護(hù)、復(fù)雜密碼運(yùn)算等功能。智能卡采用RSA算法作為公鑰加密算法.但是智能卡在運(yùn)行過(guò)程中不可避免會(huì)泄露一些旁路信息,如能量、電磁波、時(shí)問(wèn)等,利用能耗信息對(duì)智能卡進(jìn)行攻擊能夠達(dá)到很好的效果,其危害遠(yuǎn)遠(yuǎn)大于傳統(tǒng)的數(shù)學(xué)攻擊手段。
1999年P(guān)aul首次提出能量分析⋯,能量分析是指通過(guò)采集智能卡加密芯片等硬件設(shè)備在進(jìn)行加、解密或簽名操作時(shí)產(chǎn)生的能量消耗信息,利用密碼學(xué)、統(tǒng)計(jì)學(xué)原理,分析和破譯密鑰信息的一種攻擊方式。通常.可將能量分析攻擊分為簡(jiǎn)單能量分析(simple power analysis,SPA)攻擊和差分能量分析(differential power analysis,DPA)攻擊兩類(lèi),其中DPA是目前非常快速而有效的攻擊方法。所以近年來(lái)針對(duì)DPA的各種防御方法成為研究的熱點(diǎn)。
2 DPA攻擊原理
DPA是利用智能卡密碼芯片運(yùn)行時(shí)的能量信號(hào)與密碼算法的密鑰之間的相關(guān)性,運(yùn)行多次密碼算法就可以暴露出這種相關(guān)性嘲。DPA的過(guò)程如下。
....................
3 算法級(jí)DPA攻擊RSA
3.1 算法級(jí)DPA攻擊RSA的思想
模冪運(yùn)算是RSA中最根本的運(yùn)算,模冪運(yùn)算可以分解成多個(gè)模平方運(yùn)算和模乘運(yùn)算,進(jìn)行模平方運(yùn)算和模乘運(yùn)算所消耗的能量是有差別的。DPA攻擊RSA的主要思想是利用RSA算法平方運(yùn)算和乘法運(yùn)算能耗的明顯不同,考慮到噪聲對(duì)能耗軌跡的干擾,采用均值和差分的統(tǒng)計(jì)運(yùn)算不斷修正能耗軌跡,同時(shí)利用設(shè)計(jì)合理的區(qū)分函數(shù)將猜想私鑰的比特位對(duì)應(yīng)的能耗軌跡分類(lèi),最終獲得私鑰指數(shù)的比特位信息。
3.2 算法級(jí)DPA攻擊RSA的主要方法
根據(jù)攻擊的前提條件不同,DPA攻擊RSA的方法主要為以下兩類(lèi)。
(1)獲得已知公鑰指數(shù)前提下的DPA攻擊
根據(jù)IS07816標(biāo)準(zhǔn).智能卡的使用者可通過(guò)手冊(cè)獲得卡的公鑰指數(shù)值.可以運(yùn)行“外部認(rèn)證”指令使用公鑰指數(shù)進(jìn)行加密操作.可以對(duì)任意輸入運(yùn)行“內(nèi)部認(rèn)證”指令使用私鑰指數(shù)進(jìn)行簽名操作。
....................
4 算法級(jí)防御DPA攻擊的方法
針對(duì)上述算法級(jí)攻擊方法,目前有幾類(lèi)算法級(jí)防范DPA攻擊的方法,防御思想都是:消除或減少算法操作數(shù)特征,消除算法執(zhí)行過(guò)程中的操作數(shù)和中間值與能耗之間的對(duì)應(yīng)關(guān)系。大致可以分為以下幾類(lèi)。
(1)減小信號(hào)強(qiáng)度。減小信號(hào)強(qiáng)度的主要實(shí)現(xiàn)方法包括算法執(zhí)行連續(xù)編碼,選取小能耗運(yùn)算指令,均衡漢明重量。算法執(zhí)行連續(xù)編碼可以防止DPA判斷不同算法的起始點(diǎn)和結(jié)束點(diǎn).不提供有價(jià)值的算法信息;選取小能耗運(yùn)算的實(shí)現(xiàn)思想是用不易產(chǎn)生顯著能耗變化的指令取代一些原始指令,使指令的能耗減小及不同指令的能耗趨于平衡:均衡漢明重量可使數(shù)據(jù)以原碼和反碼兩種形式表示,避免通過(guò)漢明重量與能耗的直接關(guān)系泄露能量信息。
(2)增加隨機(jī)噪聲。通過(guò)引入隨機(jī)噪聲,使得有用的信號(hào)完全淹沒(méi)于無(wú)用的噪聲中,從而增加能量攻擊的難度。但是.這種方法不能從根本上解決問(wèn)題:其一,攻擊者可以通過(guò)有效的濾波,消除這種干擾;其二,DPA本身在做統(tǒng)計(jì)平均時(shí)就削弱了噪聲的影響。
(3)數(shù)據(jù)隨機(jī)化掩蓋??煞譃槊魑碾S機(jī)化掩蓋和指數(shù)隨機(jī)化掩蓋兩類(lèi),分別通過(guò)數(shù)學(xué)運(yùn)算的變換與反變換,使RSA算法中的操作數(shù)均為經(jīng)過(guò)~定隨機(jī)化變形的替代數(shù)。僅通過(guò)能量差分運(yùn)算得不到真實(shí)的差異點(diǎn)位置.這為真實(shí)算法做了掩蓋,達(dá)到防御DPA攻擊的目的。但是這兩種方法實(shí)際上起不到有效的效果,因?yàn)閺乃惴ㄉ现v平方運(yùn)算比乘運(yùn)算要少近一半的指令.因此平方和乘運(yùn)算消耗的能量會(huì)有很大的差異.而如果僅僅是操作數(shù)不同,運(yùn)算所執(zhí)行的乘和平方的數(shù)量不變,這樣所帶來(lái)的能量變化的干擾基本上可以忽略,這兩種掩蓋仍不能完全掩蓋操作指令的真實(shí)能耗軌跡,攻擊者可以通過(guò)其平方運(yùn)算或乘法運(yùn)算的不同運(yùn)算指令的能耗軌跡,獲取算法運(yùn)行的內(nèi)部信息,再結(jié)合其他攻擊手段進(jìn)行攻擊。
5 三重掩蓋法
為了彌補(bǔ)上述方法的不足,本文在對(duì)RSA算法中最重要的模冪算法進(jìn)行數(shù)據(jù)隨機(jī)化掩蓋的基礎(chǔ)上,提出一種新的防御DPA攻擊的方法。設(shè)計(jì)一個(gè)與智能卡進(jìn)行平方或乘法運(yùn)算時(shí)的能耗相當(dāng)?shù)臒o(wú)效算法,在對(duì)原模冪算法進(jìn)行明文隨機(jī)化掩蓋和指數(shù)隨機(jī)化掩蓋的基礎(chǔ)上.在平方和乘法運(yùn)算指令間加入隨機(jī)的指令,進(jìn)行“偽裝”。該算法同樣進(jìn)行真實(shí)的平方或乘法運(yùn)算,運(yùn)算結(jié)果寫(xiě)入內(nèi)存,從而使其能耗與算法中產(chǎn)生作用的指令的能耗相近、軌跡相似,達(dá)到掩蓋運(yùn)算能耗軌跡的目的。這樣就在明文、指數(shù)和運(yùn)算指令3個(gè)方面對(duì)DPA攻擊進(jìn)行了全面防御。防御DPA攻擊的三重掩蓋的RSA模冪改進(jìn)算法如下。
....................
全文下載閱讀:http://www.yktchina.com/bbs/Read-b3-t5203-p10.htm