本發(fā)明涉及密碼算法技術(shù)領(lǐng)域,尤其是涉及一種密碼算法的安全性評估方法和裝置。
背景技術(shù):
嵌入式密碼設(shè)備,以智能卡和USB key為例,是基于硬件平臺和軟件編程實現(xiàn)的。密碼攻擊者可以通過多種攻擊方法獲取密鑰,例如,攻擊者直接逼迫擁有密鑰的合法管理者透露出密鑰;或者,攻擊者利用密碼算法編程實現(xiàn)中使用的公共的內(nèi)存存儲的數(shù)據(jù);或者,攻擊者嘗試通過注入病毒或者木馬的方式到電腦,然后在密碼應(yīng)用讀取密鑰時把內(nèi)存中的數(shù)據(jù)讀出來獲取密鑰。
目前,國內(nèi)外學(xué)術(shù)領(lǐng)域都在不斷的提出針對密碼算法實現(xiàn)的各種攻擊方法和防御策略,并從算法偽代碼流程上證明該防御方案的有效性。然而,學(xué)者設(shè)計的算法存在一定的局限性,所設(shè)計的防御方案只覆蓋了部分情況,而忽略了其它參數(shù),導(dǎo)致算法實現(xiàn)流程可能存在差分功耗或者差分錯誤分析的風(fēng)險;另外,由于嵌入式芯片上存儲資源有限,并且CPU或協(xié)處理器的計算能力不足,導(dǎo)致算法偽代碼在實現(xiàn)過程中引入了更多的計算過程和實現(xiàn)方式,這些引入的實現(xiàn)方式和計算過程的風(fēng)險性,也是無法評估的。
針對上述密碼算法評估方式中,參數(shù)覆蓋完整性和評估有效性較差的問題,尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種密碼算法的安全性評估方法和裝置,以提高密碼算法評估時參數(shù)覆蓋的完整性和評估的有效性。
第一方面,本發(fā)明實施例提供了一種密碼算法的安全性評估方法,包括:接收待評估密碼算法的初始配置參數(shù);其中,初始配置參數(shù)包括數(shù)據(jù)存儲地址標識和密碼算法的實現(xiàn)層次;實現(xiàn)層次至少包括流程控制層、接口層和硬件實現(xiàn)層中的一種;根據(jù)初始配置參數(shù)運行密碼算法,保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;進行下述擾動操作:接收設(shè)置的擾動配置參數(shù);其中,擾動配置參數(shù)包括變量標識、變量錯誤類型、擾動對象中的一種或多種;根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果;繼續(xù)進行上述擾動操作,直至獲取到所有的變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第一種可能的實施方式,其中,所述根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法包括:根據(jù)擾動配置參數(shù)和變量標識的長度,判斷當(dāng)前變量標識是否是擾動對象;如果是,根據(jù)擾動配置參數(shù)中的變量錯誤類型修改變量標識的數(shù)值;根據(jù)修改后的變量標識的數(shù)值,運行密碼算法。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第二種可能的實施方式,其中,上述保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果包括:使用鏈表結(jié)構(gòu)保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;根據(jù)密碼算法的實現(xiàn)層次,對第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果進行標識;上述保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果包括:使用鏈表結(jié)構(gòu)保存密碼算法運行過程中的每個變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;根據(jù)變量標識和密碼算法的實現(xiàn)層次,對第二中間結(jié)果和第二運行結(jié)果進行標識。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第三種可能的實施方式,其中,上述根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果包括:從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果;和/或;根據(jù)第一運行結(jié)果和第二運行結(jié)果生成密碼算法的安全性評估結(jié)果。
結(jié)合第一方面的第三種可能的實施方式,本發(fā)明實施例提供了第一方面的第四種可能的實施方式,其中,上述根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果包括:將多個隨機明文逐一輸入至密碼算法中,運行密碼算法,保存密碼算法運行過程中的每個隨機明文對應(yīng)的第一子結(jié)果;將多個固定明文逐一輸入至密碼算法中,運行密碼算法,保存密碼算法運行過程中的每個固定明文對應(yīng)的第二子結(jié)果;將第一子結(jié)果和第二子結(jié)果確定為第二中間結(jié)果;其中,隨機明文和固定明文從擾動配置參數(shù)中獲?。浑S機明文和固定明文的數(shù)量根據(jù)變量標識的長度確定;上述從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果包括:從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,將變量標識標記一階備選對象;判斷與一階備選對象存在運算關(guān)系的變量標識是否滿足下述條件:在第一子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化,且在第二子結(jié)果中,變量標識至少一部分比特位上的數(shù)值不變;如果是,將變量標識標記為一階備選對象;判斷與一階備選對象存在運算關(guān)系的變量標識是否滿足下述條件:在第一子結(jié)果中與第二子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化;如果是,根據(jù)變量標識在第二子結(jié)果中數(shù)值的統(tǒng)計特性,確定變量標識是否標記為一階備選對象;其中,統(tǒng)計特性包括通過漢明重量模型計算出的能量特性;統(tǒng)計一階備選對象和一階備選對象的數(shù)量,根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
結(jié)合第一方面的第四種可能的實施方式,本發(fā)明實施例提供了第一方面的第五種可能的實施方式,其中,上述從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果還包括:從所有的變量標識中刪除一階備選對象;對剩余的變量標識對應(yīng)的第二中間結(jié)果中的數(shù)據(jù)進行隨機配對處理;判斷配對的兩個數(shù)據(jù)的長度是否相同;如果否,將配對的兩個數(shù)據(jù)進行對齊處理;將對齊處理后的兩個數(shù)據(jù)進行運算處理,生成當(dāng)前第二中間結(jié)果;其中,運算處理包括異或運算、模加運算和模減運算中的一種或多種;當(dāng)前第二中間結(jié)果包括當(dāng)前第一子結(jié)果和當(dāng)前第二子結(jié)果;從剩余的變量標識對應(yīng)的當(dāng)前第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,將變量標識標記二階備選對象;判斷與二階備選對象存在運算關(guān)系的剩余的變量標識是否滿足下述條件:在當(dāng)前第一子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化,且在當(dāng)前第二子結(jié)果中,變量標識至少一部分比特位上的數(shù)值不變;如果是,將變量標識標記為二階備選對象;判斷與二階備選對象存在運算關(guān)系的剩余的變量標識是否滿足下述條件:在當(dāng)前第一子結(jié)果中與當(dāng)前第二子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化;如果是,根據(jù)變量標識在當(dāng)前第二子結(jié)果中數(shù)值的統(tǒng)計特性,確定變量標識是否標記為二階備選對象;其中,統(tǒng)計特性包括通過漢明重量模型計算出的能量特性;統(tǒng)計一階備選對象、一階備選對象的數(shù)量、二階備選對象和二階備選對象的數(shù)量,根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
結(jié)合第一方面的第四種可能的實施方式,本發(fā)明實施例提供了第一方面的第六種可能的實施方式,其中,上述根據(jù)第一運行結(jié)果和第二運行結(jié)果生成密碼算法的安全性評估結(jié)果包括:將第一運行結(jié)果和第二運行結(jié)果做差值運算,將差值結(jié)果進行模N運算;判斷模N運算結(jié)果與N是否存在最大公約數(shù);如果是,保存最大公約數(shù);如果否,采用無關(guān)性分析算法從一階備選對象中篩選備選對象;統(tǒng)計最大公約數(shù),或者,備選對象和備選對象的數(shù)量;根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
結(jié)合第一方面,本發(fā)明實施例提供了第一方面的第七種可能的實施方式,其中,上述接收待評估密碼算法的初始配置參數(shù)之前,方法還包括:獲取待評估密碼算法對應(yīng)的密碼設(shè)備的物理資源的種類和每種物理資源的大??;其中,物理資源的種類至少包括只讀存儲器ROM、電可擦可編程只讀存儲器EEPROM、閃存存儲器FLASH、隨機存取存儲器RAM、總線數(shù)據(jù)存儲空間中的一種或多種;根據(jù)每種物理資源的大小,分配每種物理資源對應(yīng)的數(shù)據(jù)存儲空間;根據(jù)物理資源的種類,生成每種物理資源對應(yīng)的數(shù)據(jù)存儲地址標識。
第二方面,本發(fā)明實施例提供了一種密碼算法的安全性評估裝置,包括:第一參數(shù)接收模塊,用于接收待評估密碼算法的初始配置參數(shù);其中,初始配置參數(shù)包括數(shù)據(jù)存儲地址標識和密碼算法的實現(xiàn)層次;實現(xiàn)層次至少包括流程控制層、接口層和硬件實現(xiàn)層中的一種;第一算法運行模塊,用于根據(jù)初始配置參數(shù)運行密碼算法,保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;進行下述擾動操作:第二參數(shù)接收模塊,用于接收設(shè)置的擾動配置參數(shù);其中,擾動配置參數(shù)包括變量標識、變量錯誤類型、擾動對象中的一種或多種;第二算法運行模塊,用于根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果;結(jié)果獲取模塊,用于繼續(xù)進行上述擾動操作,直至獲取到所有的變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;評估結(jié)果生成模塊,用于根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果。
結(jié)合第二方面,本發(fā)明實施例提供了第二方面的第一種可能的實施方式,其中,上述第二算法運行模塊包括:判斷單元,用于根據(jù)擾動配置參數(shù)和變量標識的長度,判斷當(dāng)前變量標識是否是擾動對象;數(shù)值修改單元,用于如果當(dāng)前變量標識是擾動對象,根據(jù)擾動配置參數(shù)中的變量錯誤類型修改變量標識的數(shù)值;算法運行單元,用于根據(jù)修改后的變量標識的數(shù)值,運行密碼算法。
本發(fā)明實施例帶來了以下有益效果:
本發(fā)明實施例提供的一種密碼算法的安全性評估方法和裝置,根據(jù)待評估密碼算法的初始配置參數(shù)運行該密碼算法,可以獲得該密碼算法在多個實現(xiàn)層次的正常運行情況下的第一中間結(jié)果和第一運行結(jié)果;根據(jù)設(shè)置的擾動配置參數(shù),對該密碼算法進行多次擾動操作,并運行該密碼算法,可以獲得該密碼算法被擾動情況下的第二中間結(jié)果和第二運行結(jié)果;根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果可以生成密碼算法的評估結(jié)果;上述方式可以實現(xiàn)針對密碼算法中各個中間結(jié)果和運行結(jié)果較為全面的仿真和評估,提高了密碼算法評估時參數(shù)覆蓋的完整性;同時,以完整的參數(shù)為基礎(chǔ)進行密碼算法的安全性評估,提高了評估的有效性。
本發(fā)明的其他特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點在說明書、權(quán)利要求書以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
為使本發(fā)明的上述目的、特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附附圖,作詳細說明如下。
附圖說明
為了更清楚地說明本發(fā)明具體實施方式或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對具體實施方式或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施方式,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實施例提供的一種密碼算法的安全性評估方法的流程圖;
圖2為本發(fā)明實施例提供的密碼算法實現(xiàn)層次的結(jié)構(gòu)示意圖;
圖3為本發(fā)明實施例提供的一種密碼算法的安全性評估裝置的結(jié)構(gòu)示意圖;
圖4為本發(fā)明實施例提供的一種密碼算法的安全性評估平臺的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
考慮到現(xiàn)有的密碼算法評估方式中,參數(shù)覆蓋完整性和評估有效性較差的問題,本發(fā)明實施例提供了一種密碼算法的安全性評估方法和裝置,該技術(shù)可以應(yīng)用于針對在嵌入式系統(tǒng)及智能卡芯片等設(shè)備內(nèi)實現(xiàn)的安全算法的抗差分功耗、電磁、錯誤分析等的仿真測試平臺中,該技術(shù)可以采用相關(guān)的軟件和硬件實現(xiàn),下面通過實施例進行描述。
實施例一:
參見圖1所示的一種密碼算法的安全性評估方法的流程圖,該方法包括如下步驟:
步驟S102,接收待評估密碼算法的初始配置參數(shù);其中,初始配置參數(shù)包括數(shù)據(jù)存儲地址標識和密碼算法的實現(xiàn)層次;實現(xiàn)層次至少包括流程控制層、接口層和硬件實現(xiàn)層中的一種;
參見圖2所示的密碼算法實現(xiàn)層次的結(jié)構(gòu)示意圖;密碼算法的實現(xiàn)層次分為三層,頂層為流程控制層202,是整個密碼算法的流程控制,相當(dāng)于算法偽代碼設(shè)計,所有的功能都是通過調(diào)用底層函數(shù)實現(xiàn)的;中間層為接口層204,也稱為算法功能模塊,可以實現(xiàn)密碼學(xué)中常用的如模乘、平方、置換、Sbox等基本功能模塊,還可以實現(xiàn)RSA、ECC等算法的大數(shù)模乘、模逆、模加運算及分組密碼算法的輪運算等功能模塊;底層為硬件實現(xiàn)層206,也稱為驅(qū)動層,硬件實現(xiàn)層主要是將密碼功能單元通過硬件邏輯實現(xiàn)或者軟件邏輯實現(xiàn);這些邏輯是基于基本的加法或者乘法單元、位移寄存器等實現(xiàn);硬件實現(xiàn)層包括硬件算子仿真模塊(例如乘法器,加法器,sbox等模塊)。上述流程控制層、接口層和硬件實現(xiàn)層為自上而下依次調(diào)用的關(guān)系;接口層和硬件實現(xiàn)層均有標準庫和DEBUG庫,其中,接口層中為標準的功能模塊,硬件實現(xiàn)層中為添加了變量監(jiān)視和擾動函數(shù)的DEBUG庫。
上述密碼算法的實現(xiàn)層次的分層次設(shè)計,符合代碼編程習(xí)慣,同時可以在密碼算法實現(xiàn)流程的底層細節(jié)不清楚情況下,將上層流程控制層通過仿真功能實現(xiàn),而接口層和硬件實現(xiàn)層的功能可以直接調(diào)用PC上的標準庫實現(xiàn);同理,也可以仿真實現(xiàn)到接口層,而屏蔽硬件實現(xiàn)層的基本邏輯操作層仿真。在進行密碼算法的實現(xiàn)層次的仿真實現(xiàn)時,通過PC的CPU執(zhí)行計算,過程變量可以存儲在RAM或者寄存器中。
步驟S104,根據(jù)初始配置參數(shù)運行密碼算法,保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;
在進行密碼算法的安全性評估時,需要首先獲取密碼算法在正常運行情況下的中間結(jié)果和運行結(jié)果,作為分析擾動后結(jié)果的參照和數(shù)據(jù)基礎(chǔ),上述步驟S102和步驟S104還可以以下述方式實現(xiàn):(1)初始化全局變量,初始化鏈表頭,配置控制參數(shù)(控制參數(shù)主要包括擾動開關(guān)、錯誤類型、變量標識、變量的擾動位置、算法層次、擾動作用范圍),關(guān)閉擾動開關(guān);(2)將配置參數(shù)傳遞到算法仿真系統(tǒng),執(zhí)行算法運算,監(jiān)視所有中間變量并生成鏈表;(3)根據(jù)生成的鏈表存儲變量的列表及長度等信息;
步驟S106,進行下述擾動操作:接收設(shè)置的擾動配置參數(shù);其中,擾動配置參數(shù)包括變量標識、變量錯誤類型、擾動對象中的一種或多種;
接收上述擾動配置參數(shù)的方式,可以為步驟S104結(jié)束后,用戶根據(jù)第一中間結(jié)果設(shè)置擾動配置參數(shù);也可以為用戶設(shè)置初始配置參數(shù)的同時,設(shè)置擾動配置參數(shù),當(dāng)進行擾動操作時,再讀取預(yù)先設(shè)置的擾動配置參數(shù)。
步驟S108,根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果;
步驟S110,繼續(xù)進行上述擾動操作,直至獲取到所有的變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;
步驟S112,根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果。
上述步驟S106至步驟S112還可以以下述方式實現(xiàn):(1)重新配置控制參數(shù),打開擾動開關(guān),設(shè)定變量錯誤類型等;(2)將配置參數(shù)傳遞到算法仿真系統(tǒng),擾動相應(yīng)的參數(shù),執(zhí)行算法運算,監(jiān)視所有中間變量并生成鏈表;(3)重復(fù)第(1)、(2)步,直到遍歷所有的變量;(4)將監(jiān)視的變量輸出到數(shù)據(jù)分析系統(tǒng),使用差分功耗和錯誤分析的模型對數(shù)據(jù)進行分析,判斷是否存在差分功耗或錯誤分析的漏洞,根據(jù)獲取到的漏洞生成密碼算法的評估結(jié)果。
本發(fā)明實施例提供的一種密碼算法的安全性評估方法,根據(jù)待評估密碼算法的初始配置參數(shù)運行該密碼算法,可以獲得該密碼算法在多個實現(xiàn)層次的正常運行情況下的第一中間結(jié)果和第一運行結(jié)果;根據(jù)設(shè)置的擾動配置參數(shù),對該密碼算法進行多次擾動操作,并運行該密碼算法,可以獲得該密碼算法被擾動情況下的第二中間結(jié)果和第二運行結(jié)果;根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果可以生成密碼算法的評估結(jié)果;上述方式可以實現(xiàn)針對密碼算法中各個中間結(jié)果和運行結(jié)果較為全面的仿真和評估,提高了密碼算法評估時參數(shù)覆蓋的完整性;同時,以完整的參數(shù)為基礎(chǔ)進行密碼算法的安全性評估,提高了評估的有效性。
考慮到在進行擾動操作時,可能僅對部分參數(shù)進行擾動,因此,上述根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法包括如下步驟:(1)根據(jù)擾動配置參數(shù)和變量標識的長度,判斷當(dāng)前變量標識是否是擾動對象;(2)如果是,根據(jù)擾動配置參數(shù)中的變量錯誤類型修改變量標識的數(shù)值;(3)根據(jù)修改后的變量標識的數(shù)值,運行密碼算法??梢岳斫?,當(dāng)當(dāng)前變量標識不是擾動對象時,針對先一個變量標識繼續(xù)判斷并進行擾動操作。
上述步驟(1)至(3)也可以稱為變量監(jiān)視和擾動函數(shù)的流程,還可以以下述方式實現(xiàn):(1)讀取來自控制系統(tǒng)的變量監(jiān)視和擾動的配置參數(shù);(2)判斷是否打開擾動,如果是,執(zhí)行步驟(3),如果否,執(zhí)行步驟(5);(3)比對變量標識,當(dāng)前變量是否為擾動對象,如果是,執(zhí)行步驟(4),如果否,執(zhí)行步驟(5);(4)根據(jù)變量擾動的錯誤類型配置,生成新的變量;(5)調(diào)用算法相應(yīng)的功能模塊執(zhí)行運算;(6)存儲運算結(jié)果。
考慮到在運行密碼算法時,中間結(jié)果的數(shù)據(jù)量較大且不易保存,上述保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果,可以以下述方式實現(xiàn):使用鏈表結(jié)構(gòu)保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;根據(jù)密碼算法的實現(xiàn)層次,對第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果進行標識;
基于同樣的考慮,上述保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果,可以以下述方式實現(xiàn):使用鏈表結(jié)構(gòu)保存密碼算法運行過程中的每個變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;根據(jù)變量標識和密碼算法的實現(xiàn)層次,對第二中間結(jié)果和第二運行結(jié)果進行標識。
具體地,在密碼算法運行過程中,該過程中產(chǎn)生的變量的存儲空間是在變量產(chǎn)生后臨時申請,該變量使用完畢后釋放空間,保證仿真空間的充足。為了監(jiān)測所有中間變量,在進行密碼算法運行仿真時,使用鏈表結(jié)構(gòu)對每個出現(xiàn)的變量進行捕獲。密碼算法的安全性評估過程執(zhí)行完畢后,將在算法執(zhí)行過程中出現(xiàn)的所有變量進行編號;同時,考慮到后續(xù)測試問題,需要對不同調(diào)用層次的變量進行變量區(qū)分。在鏈表的節(jié)點結(jié)構(gòu)體中要設(shè)置變量內(nèi)容、變量的調(diào)用層級、變量在該層級序號來標示變量。通過鏈表結(jié)構(gòu),可以將密碼執(zhí)行流程中的每個變量的值進行保存分析。
在評估密碼算法的安全性時,需要分析該密碼算法是否能夠抵抗多種密碼攻擊方式,因此,上述根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果包括:(1)從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果;和/或;(2)根據(jù)第一運行結(jié)果和第二運行結(jié)果生成密碼算法的安全性評估結(jié)果。
上述步驟(1)可以實現(xiàn)對密碼算法的部分參數(shù)和部分流程的抗差分功耗分析有效性;上述步驟(2)可以實現(xiàn)對密碼算法的部分參數(shù)和部分流程的抗差分錯誤分析有效性;根據(jù)具體的密碼算法本身的特性,可以同時或者擇一地進行上述步驟(1)和(2)。
進一步地,密碼算法在進行抗差分功耗分析時,上述根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果,具體可以以下述方式實現(xiàn):(1)將多個隨機明文逐一輸入至密碼算法中,運行密碼算法,保存密碼算法運行過程中的每個隨機明文對應(yīng)的第一子結(jié)果;(2)將多個固定明文逐一輸入至密碼算法中,運行密碼算法,保存密碼算法運行過程中的每個固定明文對應(yīng)的第二子結(jié)果;(3)將第一子結(jié)果和第二子結(jié)果確定為第二中間結(jié)果;其中,上述隨機明文和固定明文從擾動配置參數(shù)中獲??;上述隨機明文和固定明文的數(shù)量根據(jù)變量標識的長度確定;
密碼算法在進行抗差分功耗分析時,上述從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果,具體可以以下述方式實現(xiàn):(4)從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,將變量標識標記一階備選對象;(5)判斷與一階備選對象存在運算關(guān)系的變量標識是否滿足下述條件:在第一子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化,且在第二子結(jié)果中,變量標識至少一部分比特位上的數(shù)值不變;如果是,將變量標識標記為一階備選對象;(6)判斷與一階備選對象存在運算關(guān)系的變量標識是否滿足下述條件:在第一子結(jié)果中與第二子結(jié)果中,變量標識的所有比特位上的數(shù)值均發(fā)生變化;如果是,根據(jù)變量標識在第二子結(jié)果中數(shù)值的統(tǒng)計特性,確定變量標識是否標記為一階備選對象;其中,統(tǒng)計特性包括通過漢明重量模型計算出的能量特性;(7)統(tǒng)計一階備選對象和一階備選對象的數(shù)量,根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
上述步驟(1)至(7)為密碼算法的一階抗差分功耗分析流程;上述步驟(1)至(7)還可以通過下述方式實現(xiàn):
抗差分功耗分析分為兩步:首先監(jiān)測所有的中間變量;然后再對所有中間變量的結(jié)果進行分析并選取抗差分功耗分析的目標變量。對于嵌入式密碼設(shè)備,抗差分功耗分析的基礎(chǔ)是數(shù)據(jù)和功耗的相關(guān)性,將該相關(guān)性抽象成數(shù)據(jù)模型,即為一個確定性數(shù)據(jù)和另外一個可變數(shù)據(jù)的運算結(jié)構(gòu)。根據(jù)算法輸入數(shù)據(jù)的不同,可以將上述數(shù)據(jù)模型分為兩種:一種為隨機明文輸入,一種為固定明文輸入;隨機明文輸入的輸入數(shù)量應(yīng)大于最長變量的比特數(shù)的10倍,固定明文輸入的輸入數(shù)量應(yīng)大于與隨機數(shù)相關(guān)的變量的最長比特數(shù)的10倍。
基于上述原理,抗差分功耗分析中首先采用隨機的明文數(shù)據(jù)作為輸入,輸入的數(shù)量由密碼算法實現(xiàn)流程中最長的變量的比特數(shù)決定;隨機輸入的數(shù)據(jù)數(shù)量為最長變量的比特數(shù)的10倍以上;然后選取固定明文進行運算,運算的次數(shù)為密碼算法流程中與隨機數(shù)相關(guān)的變量的最長比特數(shù)的10倍以上;保存密碼算法過程變量的所有結(jié)果。
獲取到密碼算法過程變量的所有結(jié)果之后,對調(diào)用層級和變量編號相同的數(shù)據(jù)進行逐一比對,如果該變量所有比特或者部分比特在所有運算過程中保持了不變,則該變量被列為備選對象;否則,則不被列為備選對象;遍歷分析與列為備選對象的變量存在運算關(guān)系的對象,這些運算包括加減等所有操作。篩選對象的準則主要有:如果某些變量在輸入隨機明文時結(jié)果不相同,但是在固定明文時結(jié)果相同,則該變量仍然被列為備選對象;如果某些變量在隨機明文和固定明文時均保持不變,則該變量被剔除;如果某些變量在隨機明文和固定明文時結(jié)果均不相同,則需要進一步分析固定明文時這些變量的統(tǒng)計特性,根據(jù)統(tǒng)計特性確定該變量是否列為備選對象。計算固定明文時變量的統(tǒng)計特性時,一般采用集中固定的統(tǒng)計模型。在嵌入式密碼芯片中,差分功耗分析最常用的能量模型為漢明重量模型,因此,統(tǒng)計該變量每個字節(jié)的漢明重量進行分析,判斷與隨機數(shù)據(jù)相比是否存在明顯的偏差。如果存在明顯的偏差,則將該變量列為備選對象;否則,將該變量剔除。通過算法仿真及上述數(shù)據(jù)分析,可以判斷出算法流程中的哪些變量符合差分功耗分析的要求,將其列為差分功耗分析的備選對象。
關(guān)于差分功耗分析的目標變量的選取,通過分析選取合適的目標作為差分功耗分析的對象,是密碼算法在進行抗差分功耗分析的目的,如果算法實現(xiàn)過程中沒有找到合適的變量作為推薦目標,則說明算法實現(xiàn)流程抗差分功耗分析的防御方案完備。
考慮到經(jīng)過上述一階抗差分功耗分析后,沒有獲取合適的推薦目標,或者獲取到的推薦目標不完整,上述從所有的變量標識對應(yīng)的第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,根據(jù)篩選后的變量標識生成密碼算法的安全性評估結(jié)果,還可以包括如下步驟:(1)從所有的變量標識中刪除一階備選對象;(2)對剩余的變量標識對應(yīng)的第二中間結(jié)果中的數(shù)據(jù)進行隨機配對處理;(3)判斷配對的兩個數(shù)據(jù)的長度是否相同;(4)如果否,將配對的兩個數(shù)據(jù)進行對齊處理;(5)將對齊處理后的兩個數(shù)據(jù)進行運算處理,生成當(dāng)前第二中間結(jié)果;其中,運算處理包括異或運算、模加運算和模減運算中的一種或多種;當(dāng)前第二中間結(jié)果包括當(dāng)前第一子結(jié)果和當(dāng)前第二子結(jié)果;(6)從剩余的變量標識對應(yīng)的當(dāng)前第二中間結(jié)果中,篩選在密碼算法運行時,至少一部分比特位上的數(shù)值不變的變量標識,將所述變量標識標記二階備選對象;(7)判斷與所述二階備選對象存在運算關(guān)系的剩余的變量標識是否滿足下述條件:在所述當(dāng)前第一子結(jié)果中,所述變量標識的所有比特位上的數(shù)值均發(fā)生變化,且在所述當(dāng)前第二子結(jié)果中,所述變量標識至少一部分比特位上的數(shù)值不變;如果是,將所述變量標識標記為二階備選對象;(8)判斷與所述二階備選對象存在運算關(guān)系的剩余的變量標識是否滿足下述條件:在所述當(dāng)前第一子結(jié)果中與所述當(dāng)前第二子結(jié)果中,所述變量標識的所有比特位上的數(shù)值均發(fā)生變化;如果是,根據(jù)所述變量標識在當(dāng)前第二子結(jié)果中數(shù)值的統(tǒng)計特性,確定所述變量標識是否標記為二階備選對象;其中,所述統(tǒng)計特性包括通過漢明重量模型計算出的能量特性;(9)統(tǒng)計一階備選對象、一階備選對象的數(shù)量、二階備選對象和二階備選對象的數(shù)量,根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
上述步驟(1)至(9),還可以通過下述方式實現(xiàn):
在一階統(tǒng)計模型建立后,將列為一階備選對象的數(shù)據(jù)剔除掉,然后評估二階或者高階差分功耗分析的可能性;評估二階差分功耗分析時,需要對剩余的中間變量鏈表進行任意兩個數(shù)據(jù)做運算處理,一般常用的運算處理包括:異或運算、模加運算(模為CPU位寬)和模減運算(模為CPU位寬);
如果中間結(jié)果中的兩個數(shù)據(jù)長度不一致,可以將短數(shù)據(jù)與長數(shù)據(jù)進行對齊處理,然后對運算結(jié)果數(shù)據(jù)進行重新分析;長短數(shù)據(jù)對齊時,采用的方法如下:設(shè)長短數(shù)據(jù)的字節(jié)差為N,則每個長數(shù)據(jù)與N+1個短數(shù)據(jù)對齊,將所有短數(shù)據(jù)與長數(shù)據(jù)右對齊,然后將短數(shù)據(jù)依次左移0,1,2…N個字節(jié)。
通過上述方式處理后的數(shù)據(jù),可以采用上述步驟(6)至(8)中的流程進行處理,以獲取二階備選對象。
在實際實現(xiàn)時,還可以采用上述同樣的處理方式獲取更高階的備選對象。
進一步地,密碼算法在進行抗差分錯誤分析時,上述根據(jù)第一運行結(jié)果和第二運行結(jié)果生成密碼算法的安全性評估結(jié)果,具體可以通過下述方式實現(xiàn):(1)將第一運行結(jié)果和第二運行結(jié)果做差值運算,將差值結(jié)果進行模N運算;(2)判斷模N運算結(jié)果與N是否存在最大公約數(shù);如果是,保存最大公約數(shù);如果否,采用無關(guān)性分析算法從一階備選對象中篩選備選對象;(3)統(tǒng)計最大公約數(shù),或者,備選對象和備選對象的數(shù)量;根據(jù)統(tǒng)計結(jié)果生成密碼算法的安全性評估結(jié)果。
具體地,為了更加清楚地描述抗差分錯誤分析的過程,首先需要定義幾種錯誤類型,然后分別對幾種錯誤類型進行仿真和分析。針對錯誤注入常用的參數(shù)有如下幾種分類:根據(jù)錯誤注入的空間位置分為:無法控制、部分控制、完全控制;根據(jù)錯誤注入發(fā)生的時刻分為:無法控制、部分控制、精確控制;根據(jù)發(fā)生錯誤的比特數(shù)分為:單比特錯誤、多比特錯誤、隨機比特錯誤;根據(jù)數(shù)據(jù)發(fā)生錯誤的類型為:固定值錯誤、比特翻轉(zhuǎn)錯誤、隨機數(shù)據(jù)錯誤、部分比特固定值錯誤等;根據(jù)錯誤發(fā)生的持續(xù)時間可以分為:破壞性錯誤、永久性錯誤以及臨時性錯誤。
在實際的仿真分析時,通??梢酝耆刂棋e誤注入的空間位置;具體而言,將不同物理資源中的變量分別分配內(nèi)存空間,通過改變不同內(nèi)存中的值,即可以實現(xiàn)針對不同空間位置的錯誤注入;仿真分析時,可以在任何時刻進行錯誤注入,原因為在程序運行過程中,可以改變?nèi)魏巫兞康闹怠?/p>
關(guān)于根據(jù)錯誤發(fā)生的比特數(shù)量以及錯誤發(fā)生的類型,仿真分析可能發(fā)生四種錯誤:隨機數(shù)據(jù)錯誤、固定值錯誤、比特翻轉(zhuǎn)錯誤以及部分固定值錯誤;上述隨機數(shù)據(jù)錯誤是通過PC機調(diào)用標準庫產(chǎn)生隨機數(shù)填充變量的空間,而固定值錯誤是將變量空間填充為固定值,比特翻轉(zhuǎn)錯誤是將變量空間與全FF的數(shù)據(jù)進行異或處理,部分固定值錯誤是將部分比特置為固定值,而其它比特隨機填充。
關(guān)于根據(jù)錯誤發(fā)生持續(xù)的時間,仿真分析有兩種錯誤類型:永久性錯誤、臨時性錯誤。在仿真永久性錯誤時,針對某個變量A內(nèi)存空間使用錯誤發(fā)生類型模型進行修改,然后使用修改后的變量A進行運算;在仿真臨時性錯誤時,針對使用的某個變量A,先將該變量A的備份到變量B,然后將變量B使用錯誤發(fā)生類型進行修改,然后使用變量B進行運算。
密碼算法在進行抗差分錯誤分析時,一般存在如下兩種結(jié)果:
(1)產(chǎn)生了錯誤并輸出錯誤結(jié)果;這種情況下,需要根據(jù)密碼算法的性質(zhì)進行數(shù)據(jù)計算分析。以RSA算法為例,只需要對錯誤結(jié)果和正確結(jié)果進行求差,將結(jié)果進行模N運算,然后與N求最大公約數(shù)。如果能得到大于1的最大公約數(shù),則攻擊成功。如果不能求出最大公約數(shù),需要針對該錯誤類型進行更細致分析,例如判斷是否存在其它的運算后結(jié)果與N求最大公約數(shù)的可能。在檢查safe-error漏洞是否存在時,使用電路綜合技術(shù)中的無關(guān)性分析算法。首先,先判斷哪些變量是被推薦為差分功耗分析的一階變量,在這些變量中進行選擇。確定該對象為備選對象以后,可以采用上述無關(guān)性分析算法。在采用無關(guān)性分析算法進行電路綜合分析中,一部分輸入變量對中間結(jié)果沒有影響,這時,稱該中間結(jié)果是統(tǒng)計獨立于輸入變量。在safe-error問題中,我們采用如下算法1檢查是否推薦該變量作為safe-error備選。
算法1:檢驗變量是否是safe-error漏洞中備選對象。
輸入:某個變量A;
輸出:返回是否推薦變量A作為備選對象;
設(shè)變量A比特長度為n,對變量A的所有比特1-n,依次進行:
G0:設(shè)置變量A的第i個比特位為0;
G1:設(shè)置變量A的第i個比特位為1;
如果R(G0)?。絉(G1),且有一個結(jié)果為正確結(jié)果,對所有的i從1到n滿足,則該變量被推薦為備選對象;如果某變量被推薦為差分功耗分析變量時,使用算法1判斷該變量是否被推薦為safe-error變量。
(2)產(chǎn)生了錯誤并沒有輸出結(jié)果
如果任何錯誤類型都無法產(chǎn)生出錯誤結(jié)果,說明該密碼算法的錯誤校驗機制比較強大,無法通過錯誤信息獲取任何有用的信息。
為了更加有效地對密碼算法的安全性進行評估,在實際實現(xiàn)時,可能需要對密碼算法進行抗差分功耗和抗差分錯誤的綜合性仿真分析;由于兩種分析都是針對仿真的程序流程進行監(jiān)測或者修改處理,因此考慮在程序框架中并行實現(xiàn)兩者的功能判斷。同樣,考慮到差分功耗分析和差分錯誤分析的結(jié)合性攻擊方式的仿真,因此兩者需要有效配合實現(xiàn)仿真。
在程序流程中,每個變量部分分別插入鏈表節(jié)點和變量的重新備份和修改,即完成了差分功耗分析和差分錯誤分析的基礎(chǔ)。在上層控制邏輯中,加入本次仿真需要選擇差分功耗分析路徑還是差分錯誤路徑,即可實現(xiàn)兩者的分離。
同時,考慮到差分錯誤分析的錯誤類型,因此,在變量修改的部分,可以根據(jù)錯誤類型調(diào)用不同的函數(shù)接口實現(xiàn)錯誤類型的仿真。同時,如果要考慮高階錯誤注入,需要隨機在兩個不同變量進行錯誤類型注入。這些都可以通過變量編號進行控制,依次進行一階或者二階的錯誤注入處理。
另外,還需要控制端進行輸入明文數(shù)據(jù)的控制仿真。如果明文數(shù)據(jù)隨機,則調(diào)用庫接口進行產(chǎn)生明文隨機數(shù)。如果是固定明文,則直接使用該明文進行多次循環(huán)運算。
綜上,即可以實現(xiàn)了差分功耗和差分錯誤分析的綜合仿真。
考慮到在密碼算法的安全性評估過程中,產(chǎn)生并需要保存的數(shù)量很大,上述接收待評估密碼算法的初始配置參數(shù)之前,方法還包括:(1)獲取待評估密碼算法對應(yīng)的密碼設(shè)備的物理資源的種類和每種物理資源的大??;其中,物理資源的種類至少包括只讀存儲器ROM、電可擦可編程只讀存儲器EEPROM、閃存存儲器FLASH、隨機存取存儲器RAM、總線數(shù)據(jù)存儲空間中的一種或多種;(2)根據(jù)每種物理資源的大小,分配每種物理資源對應(yīng)的數(shù)據(jù)存儲空間;(3)根據(jù)物理資源的種類,生成每種物理資源對應(yīng)的數(shù)據(jù)存儲地址標識。
由于上述安全性評估過程并不是僅僅利用PC機實現(xiàn)密碼算法功能,而是要根據(jù)密碼算法實現(xiàn)流程以及執(zhí)行過程中所需要的物理資源進行仿真。且,在針對密碼算法的防御差分功耗分析和差分錯誤分析的有效性評估中,數(shù)據(jù)流以及數(shù)據(jù)所需要的物理資源是分析的關(guān)鍵變量,因此,本仿真模型重點考慮上述邏輯模塊功能仿真。
具體地,在仿真實現(xiàn)密碼算法流程時,數(shù)據(jù)流的仿真需要考慮嵌入式密碼設(shè)備存在EEPROM\FlASH、CPU訪問的主RAM、通訊接口的RAM、CPU Register以及密碼模塊協(xié)處理器寄存器等存儲單元,同時也存在地址總線、數(shù)據(jù)總線等總線結(jié)構(gòu);芯片上CPU、密碼模塊協(xié)處理器、內(nèi)存直接訪問控制單元等部件可以直接對上述存儲單元以及總線進行控制操作。因此,在PC端仿真設(shè)計實現(xiàn)嵌入式密碼設(shè)備時,首先根據(jù)嵌入式密碼設(shè)備物理存儲資源大小申請內(nèi)存空間,并使用變量名稱標示該物理單元資源名稱。一般嵌入式芯片上主要包括ROM、EEPROM\FLASH、主RAM、通訊接口RAM、CPU寄存器以及密碼模塊協(xié)處理寄存器等存儲空間。
目前有兩種存儲空間分配方案可以選擇:(1)根據(jù)不同的物理資源大小申請對應(yīng)的空間大小,然后按照密碼算法的設(shè)計仿真數(shù)據(jù)流在各個空間之間讀寫,并對數(shù)據(jù)流及各存儲空間進行監(jiān)視;基于目前最常用的嵌入式密碼設(shè)備,如IC卡芯片看,卡片上述物理資源都是以幾十K量級技術(shù),對PC機端的內(nèi)存來講都是很小的空間,因此這種機制可以在PC端實現(xiàn)。(2)考慮到密碼算法運行過程中使用的變量和數(shù)據(jù)流一般不能占用所有的物理空間,因此,只給密碼算法使用的物理資源分配空間。
上述方案(1)存在同一物理內(nèi)存的覆蓋問題,從仿真方案的魯棒性設(shè)計看,方案(1)更穩(wěn)定。但是,方案(2)不需要考慮變量的覆蓋和內(nèi)存的重新利用問題,因此方案(2)是實際仿真分析使用方案。實際上,方案(1)的方式是利用有限空間進行覆蓋存儲,而方案(2)是用空間換時間,通過大量空間換取空間覆蓋,提高編程效率。同時,考慮到芯片在不同存儲資源之間搬移時,需要通過總線實現(xiàn)。因此,對于總線部分也可以采用方案(1)或方案(2)兩種方式進行仿真。
以加密流程為例,假設(shè)密鑰存放在EEPROM中,分配變量key_EEPROM及對應(yīng)空間大小,加密時通過CPU將EEPROM數(shù)據(jù)搬移到密碼協(xié)處理器中;再分配變量key_CPUREGISTER和key_CCPREGISTER及對應(yīng)空間,用于存儲CPU和密碼協(xié)處理器中的密鑰數(shù)據(jù),而key_BUS存儲搬移過程中的出現(xiàn)在總線上的數(shù)據(jù);通過上述密鑰賦值過程可以將EEPROM搬移到總線,總線到CPU寄存器,CPU寄存器到總線,總線到協(xié)處理器寄存器幾個過程的數(shù)據(jù)保存。
綜合考慮上述過程,有些使用頻率特別高的物理資源,如CPU寄存器、密碼學(xué)協(xié)處理器以及BUS需要使用方案(1)進行仿真,而其它變量使用方案(2)進行仿真。
實施例二:
對應(yīng)于上述方法實施例,參見圖3所示的一種密碼算法的安全性評估裝置的結(jié)構(gòu)示意圖,該裝置包括如下部分:
第一參數(shù)接收模塊302,用于接收待評估密碼算法的初始配置參數(shù);其中,初始配置參數(shù)包括數(shù)據(jù)存儲地址標識和密碼算法的實現(xiàn)層次;實現(xiàn)層次至少包括流程控制層、接口層和硬件實現(xiàn)層中的一種;
第一算法運行模塊304,用于根據(jù)初始配置參數(shù)運行密碼算法,保存密碼算法運行過程中的第一中間結(jié)果、第一中間結(jié)果中的變量標識和變量標識的長度、以及第一運行結(jié)果;
第二參數(shù)接收模塊306,用于進行下述擾動操作:接收設(shè)置的擾動配置參數(shù);其中,擾動配置參數(shù)包括變量標識、變量錯誤類型、擾動對象中的一種或多種;
第二算法運行模塊308,用于根據(jù)擾動配置參數(shù)和變量標識的長度,運行密碼算法,保存密碼算法運行過程中的當(dāng)前變量標識對應(yīng)的第二中間結(jié)果和密碼算法的第二運行結(jié)果;
結(jié)果獲取模塊310,用于繼續(xù)進行上述擾動操作,直至獲取到所有的變量標識對應(yīng)的第二中間結(jié)果和第二運行結(jié)果;
評估結(jié)果生成模塊312,用于根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果生成密碼算法的評估結(jié)果。
本發(fā)明實施例提供的一種密碼算法的安全性評估裝置,根據(jù)待評估密碼算法的初始配置參數(shù)運行該密碼算法,可以獲得該密碼算法在多個實現(xiàn)層次的正常運行情況下的第一中間結(jié)果和第一運行結(jié)果;根據(jù)設(shè)置的擾動配置參數(shù),對該密碼算法進行多次擾動操作,并運行該密碼算法,可以獲得該密碼算法被擾動情況下的第二中間結(jié)果和第二運行結(jié)果;根據(jù)第一運行結(jié)果、第二中間結(jié)果和第二運行結(jié)果可以生成密碼算法的評估結(jié)果;上述方式可以實現(xiàn)針對密碼算法中各個中間結(jié)果和運行結(jié)果較為全面的仿真和評估,提高了密碼算法評估時參數(shù)覆蓋的完整性;同時,以完整的參數(shù)為基礎(chǔ)進行密碼算法的安全性評估,提高了評估的有效性。
考慮到在進行擾動操作時,可能僅對部分參數(shù)進行擾動,因此,上述第二算法運行模塊包括:(1)判斷單元,用于根據(jù)擾動配置參數(shù)和變量標識的長度,判斷當(dāng)前變量標識是否是擾動對象;(2)數(shù)值修改單元,用于如果當(dāng)前變量標識是擾動對象,根據(jù)擾動配置參數(shù)中的變量錯誤類型修改變量標識的數(shù)值;(3)算法運行單元,用于根據(jù)修改后的變量標識的數(shù)值,運行密碼算法。
本發(fā)明實施例提供的上述密碼算法的安全性評估方法和裝置,通過軟件仿真實現(xiàn)算法的整個流程,方便中間結(jié)果和狀態(tài)的監(jiān)測。同時,該仿真過程接近于嵌入式密碼設(shè)備的真實數(shù)據(jù)流在設(shè)備內(nèi)部的傳輸過程,使算法流程覆蓋更加全面。
本發(fā)明實施例提供的上述密碼算法的安全性評估方法和裝置,提出了差分功耗相關(guān)的模型,解決了對嵌入式密碼設(shè)備算法實現(xiàn)運算流程的抗差分功耗分析的有效性評估;還提出了錯誤注入相關(guān)的模型,解決了對嵌入式密碼設(shè)備算法實現(xiàn)運算流程的抗差分功耗分析的有效性評估。
本發(fā)明實施例提供的上述密碼算法的安全性評估方法和裝置,同時解決了對常規(guī)偽代碼安全性證明,而不能對整個實現(xiàn)流程的全覆蓋分析的問題,經(jīng)過本發(fā)明驗證后,可以更加全面證明算法實現(xiàn)的有效性。
實施例三:
對應(yīng)于上述方法實施例和裝置實施例,參見圖4所示的一種密碼算法的安全性評估平臺的結(jié)構(gòu)示意圖,該平臺包括控制系統(tǒng)402、算法仿真系統(tǒng)404和數(shù)據(jù)分析系統(tǒng)406;其中,控制系統(tǒng)402向算法仿真系統(tǒng)404傳送控制信號,算法仿真系統(tǒng)404根據(jù)控制信號對算法流程的中間變量進行擾動或監(jiān)視,然后收集中間變量并輸出到數(shù)據(jù)分析系統(tǒng)406。
具體地,上述密碼算法的安全性評估裝置中的第一參數(shù)接收模塊302和第二參數(shù)接收模塊306可以設(shè)置于上述控制系統(tǒng)402中;第一算法運行模塊304和第二算法運行模塊308可以設(shè)置于上述算法仿真系統(tǒng)404中;結(jié)果獲取模塊310和評估結(jié)果生成模塊312可以設(shè)置于上述數(shù)據(jù)分析系統(tǒng)406中。
現(xiàn)有的嵌入式密碼設(shè)備,以智能卡為例,是電子設(shè)備,遵循物理規(guī)律。因此,當(dāng)嵌入式密碼設(shè)備計算密碼結(jié)果時,需要一定的時間和能量消耗、并且設(shè)備會輻射出電磁波甚至聲音等,這些物理量都會受到周圍環(huán)境的影響。同時,很多嵌入式密碼設(shè)備自身不攜帶電源,必須通過讀卡裝置連接才能工作。這樣,攻擊者很容易檢測嵌入式設(shè)備的功耗和執(zhí)行時間信息。如果這些信息和嵌入式密碼設(shè)備的密鑰信息建立起聯(lián)系,則攻擊者可以獲得密鑰的更多信息。所有這些額外的信息源都被稱為側(cè)信道信息。
目前該領(lǐng)域有很多研究者已經(jīng)提出了各種各樣的側(cè)信道攻擊方法,這些方法可以使攻擊者很容易攻擊獲取密碼學(xué)算法的密鑰。這些常用的方法包括:時間攻擊、功耗分析、電磁輻射分析、聲音分析、探針分析、測試電路的重利用分析、緩存攻擊以及錯誤注入攻擊。側(cè)信道攻擊方法目前最有效的攻擊方法包括了功耗分析、錯誤注入攻擊等。
功耗分析自從1999年kocher等人提出針對DES算法的差分功耗分析以后,在21世紀前十年掀起來一波研究熱潮。2001年,Thomas Messerges首先介紹了使用二階能量分析攻擊抗軟件DPA防護的方法,而后,Waddle等人在2004年針對二階DPA攻擊給出了兩種實用的模型,Zero-Offset2-DPA和FFT 2-DPA,并分析了各自應(yīng)用場景和攻擊效率。2003年,S.Chari等人首次提出了模板攻擊的概念,2007年Oswald等人提出了針對掩碼措施實施模板攻擊的思路。E.Brier等人在2004年的CHES會議上提出了相關(guān)性功耗分析的方法,極大提升了差分功耗分析的效果。Gierlichs等人于2008年首次提出了MIA攻擊的思想,并成功構(gòu)造了一種適用于差分側(cè)信道分析的通用區(qū)分器,來分析觀測到的測量值與假設(shè)信息泄露之間的互信息來對密鑰猜測進行分級。之后,Mousavi等人繼承了Gierlichs的思想,并將MIA和CPA攻擊相比較,給出了兩種攻擊的適用條件。
錯誤注入方式是自1997年Dan Boneh[等提出了經(jīng)典的CRT-RSA算法攻擊方法。在1997年,li Biham和Adi Shamir(同時也是RSA算法的發(fā)明人之一)發(fā)表了針對對稱加密算法的錯誤攻擊方法,并第一次提出并命名為差分錯誤分析(Differential Fault Analysis,簡稱DFA)的攻擊方法,沿用至今。2002年,對CRT-RSA算法的實際實驗攻擊。英飛凌公司的C.Aumuller等人基于學(xué)者們提出的錯誤攻擊模型,對CRT-RSA算法實際進行了攻擊,并取得了成功。同年,P.Dusart等人對AES的錯誤注入進行了系統(tǒng)分析。他們認為對于AES的攻擊不能簡單借鑒對DES的攻擊思想,因為兩者在運算結(jié)構(gòu)上存在不同。2008年的CHES會議上,學(xué)者David Vigilant提出了一種新的CRT-RSA算法實現(xiàn)方式。
在嵌入式密碼設(shè)備中,密碼算法的運行過程呈現(xiàn)黑盒狀態(tài),密碼算法執(zhí)行流程的結(jié)果是無法觀察的,只能觀察輸入輸出。本發(fā)明提出的密碼算法的安全性評估方法和裝置實現(xiàn)了算法的整個流程,方便監(jiān)測中間結(jié)果和狀態(tài)的;同時,本發(fā)明提出的密碼算法的安全性評估方法和裝置更接近于嵌入式密碼設(shè)備的真實數(shù)據(jù)流傳輸過程,仿真密碼算法實現(xiàn)的每個流程,覆蓋了所有的算法參數(shù)和過程,從而使評估流程覆蓋更加全面。
同一算法的不同實現(xiàn)方案差異很大。具體實現(xiàn)中會引入很多中間參數(shù)和流程,這些參數(shù)和流程的抗差分功耗分析和差分錯誤分析的有效性沒有經(jīng)過證明,本發(fā)明實現(xiàn)了覆蓋所有算法參數(shù)和實現(xiàn)流程,因此解決了這些沒有證明的步驟的有效性。
針對抗差分功耗分析和差分錯誤分析,本發(fā)明設(shè)計了很多模型和判斷準則,利用這些模型和判斷準則確定算法實現(xiàn)流程的抗差分功耗分析和差分錯誤分析的有效性。這些模型都是自主設(shè)計并經(jīng)過有效性驗證的。
本發(fā)明可以對軟硬件實現(xiàn)的各種層次密碼算法代碼進行仿真實驗。因此,當(dāng)嵌入式密碼設(shè)備密碼算法方案設(shè)計完成后,可以采用本發(fā)明進行方案的預(yù)評估,嘗試尋找安全漏洞。如果經(jīng)過本發(fā)明方法證明該代碼實現(xiàn)的安全有效性,再進行嵌入式密碼設(shè)備開發(fā)和測試,就可以避免密碼算法設(shè)計的安全漏洞而帶來巨大修改成本的問題。同時,本發(fā)明使得密碼算法方案設(shè)計獨立于嵌入式密碼設(shè)備的開發(fā),有效解決了開發(fā)瓶頸問題。
本發(fā)明實施例所提供的密碼算法的安全性評估方法和裝置的計算機程序產(chǎn)品,包括存儲了程序代碼的計算機可讀存儲介質(zhì),所述程序代碼包括的指令可用于執(zhí)行前面方法實施例中所述的方法,具體實現(xiàn)可參見方法實施例,在此不再贅述。
所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應(yīng)說明的是:以上所述實施例,僅為本發(fā)明的具體實施方式,用以說明本發(fā)明的技術(shù)方案,而非對其限制,本發(fā)明的保護范圍并不局限于此,盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對前述實施例所記載的技術(shù)方案進行修改或可輕易想到變化,或者對其中部分技術(shù)特征進行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實施例技術(shù)方案的精神和范圍,都應(yīng)涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應(yīng)所述以權(quán)利要求的保護范圍為準。