算的第一運(yùn)算總個(gè)數(shù)。
[0031] 其中,電子加密裝置為密碼芯片或其他形式的具有密碼算法功能的電子產(chǎn)品。進(jìn) 行第一加解密運(yùn)算的待加/解密數(shù)據(jù)可以從設(shè)置在電子加密裝置的存儲(chǔ)器中獲取,也可以 通過在電子加密裝置上設(shè)置通信模塊,通過有線或無線通信方式從外部設(shè)備獲取。
[0032] 該第一加解密運(yùn)算的密碼算法類型為RSA(來自三位開發(fā)者的名字,Ron Rivest、 Adi Shamir 以及 Len Adleman)密碼算法或 ECC(Elliptic Curves Cryptography 的縮寫, 橢圓曲線密碼編碼學(xué))密碼算法。
[0033] 測(cè)試時(shí),第一加解密運(yùn)算的算法類型以電子加密裝置所支持的密碼算法類型為依 據(jù)。如果電子加密裝置僅支持RSA或ECC密碼算法中的一種,則采用電子加密裝置支持的 密碼算法進(jìn)行測(cè)試。如果電子加密裝置同時(shí)支持RSA和ECC兩種密碼算法,則可以在電子 加密裝置本身設(shè)置算法類型選擇模塊以選擇密碼算法的類型,也可通過上述通信模塊傳輸 數(shù)據(jù)以設(shè)定密碼算法的類型。
[0034] 功耗模擬信號(hào)可以為電流、實(shí)時(shí)功率、福射的電磁信號(hào)中的任一種。
[0035] 以RSA解密算法為例,通過采集電子加密裝置在執(zhí)行RSA解密運(yùn)算過程中的功耗 模擬信號(hào),將該模擬信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換后,獲取RSA解密運(yùn)算對(duì)應(yīng)的模方運(yùn)算和模乘運(yùn)算 的總個(gè)數(shù)。
[0036] 當(dāng)然,也可以采用其他類型的加解密算法。如采用RSA加密算法,則該步驟的運(yùn)算 總個(gè)數(shù)同樣也為模方運(yùn)算和模乘運(yùn)算的總個(gè)數(shù)。如采用ECC加密算法或ECC解密算法,則 上述步驟的運(yùn)算總個(gè)數(shù)為點(diǎn)加和倍點(diǎn)的運(yùn)算總個(gè)數(shù)。
[0037] S12 :使電子加密裝置執(zhí)行第二加解密運(yùn)算,同時(shí)向電子加密裝置注入故障,使電 子加密裝置的密鑰的數(shù)據(jù)位翻轉(zhuǎn),采集第二功耗模擬信號(hào),并對(duì)第二功耗模擬信號(hào)進(jìn)行模 數(shù)轉(zhuǎn)換,以獲取執(zhí)行第二加解密運(yùn)算的第二運(yùn)算總個(gè)數(shù)。
[0038] 其中,以非接觸方式向電子加密裝置注入故障,優(yōu)選地,采用光故障注入攻擊或電 磁脈沖注入攻擊。如果密鑰的數(shù)據(jù)位為1,則該數(shù)據(jù)位將被翻轉(zhuǎn)為〇,如果密鑰的數(shù)據(jù)位為 〇,則該數(shù)據(jù)位將被翻轉(zhuǎn)為1。
[0039] 第二加解密運(yùn)算的算法類型與第一加解密運(yùn)算的算法類型相同,并且第二加解密 運(yùn)算和第一加解密運(yùn)算所采用的密鑰相同,而第二加解密運(yùn)算的待加/解密數(shù)據(jù)可以與第 一加解密運(yùn)算的待加/解密數(shù)據(jù)可以不同。此外,采集第二功耗模擬信號(hào),并對(duì)第二功耗模 擬信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,以獲取第二加解密運(yùn)算的第二運(yùn)算總個(gè)數(shù)的方法與步驟Sll中的采 集第一功耗模擬信號(hào),并對(duì)第一功耗模擬信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,以獲取第一加解密運(yùn)算的第 一運(yùn)算總個(gè)數(shù)的方法相同,在此不作贅述。
[0040] 可以理解地,為達(dá)到向電子加密裝置注入故障使電子加密裝置的密鑰的數(shù)據(jù)位翻 轉(zhuǎn)的目的,需要多次調(diào)整故障注入信號(hào)的發(fā)射位置,重復(fù)執(zhí)行該步驟,直到該步驟的第二運(yùn) 算總個(gè)數(shù)與步驟Sll獲取的第一運(yùn)算總個(gè)數(shù)不同,才認(rèn)為故障注入成功。
[0041] S13 :如果判斷第二運(yùn)算總個(gè)數(shù)大于第一運(yùn)算總個(gè)數(shù),則數(shù)據(jù)位為0 ;反之,則數(shù)據(jù) 位為1。
[0042] 其中,將注入故障后的第二運(yùn)算總個(gè)數(shù)記作N,未注入故障時(shí)的第一運(yùn)算總個(gè)數(shù)記 作S。如果N>S,則該數(shù)據(jù)位對(duì)應(yīng)為0 ;如果N〈S,則該數(shù)據(jù)位對(duì)應(yīng)為1。
[0043] 以RSA解密算法為例,在未向電子加密裝置注入故障時(shí),將其進(jìn)行解密運(yùn)算整個(gè) 過程中獲取的模方運(yùn)算和模乘運(yùn)算的運(yùn)算總個(gè)數(shù)記作t。在向電子加密裝置注入故障使 密鑰的數(shù)據(jù)位翻轉(zhuǎn)后,如果再次進(jìn)行解密運(yùn)算獲取的模方運(yùn)算和模乘運(yùn)算的運(yùn)算總個(gè)數(shù)為 t+Ι,則密鑰的數(shù)據(jù)位從0翻轉(zhuǎn)到1,也即密鑰的數(shù)據(jù)位對(duì)應(yīng)的原始值為0 ;如果再次進(jìn)行解 密運(yùn)算獲取的模方運(yùn)算和模乘運(yùn)算的總個(gè)數(shù)為t-Ι,則密鑰的數(shù)據(jù)位從1翻轉(zhuǎn)為0,也即密 鑰的數(shù)據(jù)位對(duì)應(yīng)的原始值為1。
[0044] 該步驟的理論依據(jù)為:以RSA解密算法為例,對(duì)于一個(gè)k比特長(zhǎng)度的密鑰,其解密 運(yùn)算M = Cd mod N(其中,M表示明文,C表示密文,d表示私鑰,N為兩個(gè)大素?cái)?shù)的乘積)的 一般實(shí)現(xiàn)方式為:
[0045] M=I
[0046] for i = k downtoOdo
[0047] M= (M*M)mod N
[0048] if (cl; = = I) then
[0049] M= (M*C)mod N
[0050] endif
[0051] endfor
[0052] return M
[0053] 從中可以看出,RSA解密算法包括模方運(yùn)算M = (M*M)mod N和模乘運(yùn)算M = (M*C) mod N,且當(dāng)密鑰位Cl1為1時(shí),會(huì)多執(zhí)行一次模乘運(yùn)算操作。由此可知,當(dāng)密鑰的某個(gè)數(shù)據(jù) 位從1變?yōu)椹枙r(shí),則執(zhí)行上述RSA解密運(yùn)算所包括的模乘和模方運(yùn)算的總個(gè)數(shù)會(huì)減少1,反 之,當(dāng)密鑰的某個(gè)數(shù)據(jù)位從0變?yōu)?時(shí),則執(zhí)行上述RSA解密運(yùn)算所包括的模乘和模方運(yùn)算 的運(yùn)算總個(gè)數(shù)會(huì)增加1。由此反推,可以得出本步驟的判斷依據(jù)。
[0054] 采用RSA加密算法或ECC加/解密算法的理論依據(jù)的推導(dǎo)過程與上述RSA解密算 法的推導(dǎo)過程近似,在本領(lǐng)域技術(shù)人員的理解范圍之內(nèi),此處不作詳細(xì)闡述。
[0055] S14 :獲取密鑰的所有未知數(shù)據(jù)位為1或0,以獲取密鑰的測(cè)試值。
[0056] 其中,將密鑰的所有數(shù)據(jù)位分別記作(0,1,2,……,i),通過上述步驟S12~S13, 對(duì)密鑰的數(shù)據(jù)位從〇到i都獲取到其數(shù)值為〇或1。若獲取到全部數(shù)據(jù)位的數(shù)值,則可以得 出密鑰的測(cè)試值。
[0057] 也可根據(jù)測(cè)試人員對(duì)密鑰的真實(shí)值的掌握程度,比如已獲知一部分密鑰,則無需 對(duì)密鑰的所有數(shù)據(jù)位進(jìn)行翻轉(zhuǎn)以測(cè)試,只需要獲取未知部分的密鑰即可。
[0058] S15 :確認(rèn)測(cè)試值為密鑰的真實(shí)值。
[0059] 其中,將上述密鑰的測(cè)試值記作Kt,將密鑰的真實(shí)值記作心,隨機(jī)產(chǎn)生一組待加 /解密數(shù)據(jù),通過相同的加解密算法對(duì)該一組待加/解密數(shù)據(jù)進(jìn)行加解密,如果以K t和心 分別作為密鑰對(duì)該一組待加/解密數(shù)據(jù)加解密后分別生成的結(jié)果一致,則表明上述步驟 Sll~S14獲取的測(cè)試值Kt為密鑰的真實(shí)值。為增強(qiáng)測(cè)試的準(zhǔn)確性,也可以采用多組待加 /解密數(shù)據(jù)進(jìn)行驗(yàn)證。
[0060] 當(dāng)然,也可以采用其他方式確認(rèn)密鑰的測(cè)試值是否為真實(shí)值,比如,先通過與本實(shí) 施例的RSA解密算法對(duì)應(yīng)的RSA加密算法加密若干組數(shù)據(jù),這若干組數(shù)據(jù)的原始值記作 (D1、D2、D3…),加密后變成(E1、E2、E3···),然后采用該密鑰的測(cè)試值對(duì)加密后的數(shù)據(jù)(E1、 E2、E3···)進(jìn)行RSA解密,以獲取解密后的數(shù)據(jù)(F1、F2、F3…)。如果解密后的數(shù)據(jù)(F1、F2、 F3···)與(D1、D2、D3···) -致,則表明密鑰的測(cè)試值為真實(shí)值。
[0061] 優(yōu)選地,為了實(shí)現(xiàn)上述步驟的自動(dòng)化操作,在步驟Sll之前設(shè)置步驟,以控制故障 注入的注入?yún)?shù)和時(shí)刻、功耗模擬信號(hào)的采集參數(shù)和時(shí)刻以及模數(shù)轉(zhuǎn)換的轉(zhuǎn)換參數(shù)和時(shí) 刻。
[0062] 本實(shí)施例的測(cè)試方法在成功攻擊電子加密裝置的密鑰時(shí),表明該電子加密裝置存 在不安全隱患。通過該測(cè)試方法獲取密鑰,僅需獲取加解密運(yùn)算中的運(yùn)算總個(gè)數(shù),而無需區(qū) 分運(yùn)算類型,且無需獲取注入故障信號(hào)后的運(yùn)算結(jié)果。因此,該測(cè)試方法對(duì)于對(duì)SPA或DFA 單獨(dú)攻擊采取防御措施的電子加密裝置,也可以達(dá)到獲取密鑰的目的,從而實(shí)現(xiàn)對(duì)電子加 密裝置的安全性能進(jìn)行測(cè)試。
[0063] 此外,該測(cè)試方法中的第一加解密運(yùn)算和第二加解密運(yùn)算的待加/解密數(shù)據(jù)可以 不同,相較于采用DFA方式攻擊的測(cè)試方法需要限制多次加解密運(yùn)算的待加/解密數(shù)據(jù)為 相同值,本測(cè)試方法中,多次加解密運(yùn)算的待加/解密數(shù)據(jù)可以為隨機(jī)數(shù)據(jù),因而測(cè)試條件 更寬松,方便測(cè)試。
[0064] 請(qǐng)參閱圖2,圖2是本發(fā)明電子加密裝置的測(cè)試系統(tǒng)的一實(shí)施例的結(jié)構(gòu)示意圖。如 圖2所示,該電子加密裝置的測(cè)試系統(tǒng)包括電子加密裝置20、電子終端21、通信模塊22、故 障注入器23、功耗采集器24、波形轉(zhuǎn)換器25以及控制器26。
[0065] 電子加密裝置20為密碼芯片或其他形式的具有加解密運(yùn)算功能的電子加密裝 置,支持的密碼算法為RSA密碼算法或ECC密碼算法。
[0066] 電子終端21可以為個(gè)人電子計(jì)算機(jī),具備多個(gè)通信接口與外界設(shè)備進(jìn)行數(shù)據(jù)傳 輸,通信接口可以采用有線或無線通信方式。例如,可采用計(jì)算機(jī)上自帶的串口或USB接 口,或者在計(jì)算機(jī)上加裝擴(kuò)展卡以拓展串口或USB接口個(gè)數(shù)。如圖2所示