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