一種密鑰抗功耗攻擊的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及信息安全技術(shù)領(lǐng)域,具體地說(shuō),設(shè)及一種密鑰抗功耗攻擊的方法。
【背景技術(shù)】
[0002] 功耗攻擊是一種利用密碼算法計(jì)算過(guò)程中設(shè)備的功耗泄漏來(lái)得到密鑰的側(cè)信道 攻擊方式。如圖1所示,密碼巧片的功耗與算法操作的指令和數(shù)據(jù)密切相關(guān),該也就為功耗 攻擊提供了可能。功耗攻擊主要包括兩類功耗分析,即簡(jiǎn)單功耗分析(SPA)和差分功耗分 析值PA)。在SPA過(guò)程中,攻擊者通過(guò)觀察加密過(guò)程的功耗曲線,推斷出不同時(shí)間對(duì)應(yīng)的操 作,從而提取部分或全部密鑰。在DPA過(guò)程中,攻擊者則主要利用功耗與中間變量的關(guān)系分 析恢復(fù)密鑰。
[0003] 1985年,N.Koblitz和V.Miller各自獨(dú)立地提出楠圓曲線密碼體制巧CC)。相比 傳統(tǒng)公鑰加密算法,ECC具有安全性高、計(jì)算速度快、存儲(chǔ)空間小、帶寬要求低、計(jì)算參數(shù)少 W及簽名短小等諸多優(yōu)點(diǎn),其在限制資源的系統(tǒng)中尤為突出。
[0004] 2010年12月17日,為滿足電子認(rèn)證服務(wù)系統(tǒng)等應(yīng)用需求,國(guó)家密碼管理局發(fā)布了 SM2楠圓曲線公鑰密碼算法。目前,SM2算法多應(yīng)用于智能卡巧片中,功耗攻擊具有較小的 密鑰捜索空間和較高的分析效率,對(duì)智能卡巧片安全性構(gòu)成很大的威脅。隨著SM2算法在 國(guó)內(nèi)金融領(lǐng)域的推廣應(yīng)用,研究SM2算法巧片實(shí)現(xiàn)時(shí)的抗功耗攻擊能力,對(duì)提高我國(guó)金融 領(lǐng)域的安全有著重要的意義。
【發(fā)明內(nèi)容】
[0005] 為解決上述問(wèn)題,本發(fā)明提供了一種密鑰抗功耗攻擊的方法,所述方法包括:
[0006] 利用預(yù)設(shè)原子塊來(lái)進(jìn)行標(biāo)量乘中的倍點(diǎn)和/或點(diǎn)加操作,其中,所述預(yù)設(shè)原子塊 包括模乘操作、加法操作和減法操作。
[0007] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述預(yù)設(shè)原子塊包括一次模乘操作、一次加法操作和 一次減法操作。
[0008] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,所述預(yù)設(shè)原子塊為:
[0009]
[0010] 其中,r為預(yù)設(shè)原子塊,表示寄存器下標(biāo)矩陣中第P行第q列的元素,R表示 寄存器。
[0011] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,
[0012] 當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P為固定點(diǎn)時(shí),所述預(yù)設(shè)原子塊的寄存器下標(biāo)矩陣的維數(shù) 為 19X9;
[0013] 當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P為非固定點(diǎn)時(shí),所述預(yù)設(shè)原子塊的寄存器下標(biāo)矩陣的維 數(shù)為24X9。
[0014] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,進(jìn)行密鑰相關(guān)操作的過(guò)程中,在進(jìn)行標(biāo)量乘操作的步 驟包括:
[0015] 根據(jù)前一循環(huán)的變量a和變量P,計(jì)算當(dāng)前循環(huán)的變量P ;
[0016] 根據(jù)變量bi和當(dāng)前循環(huán)的變量P,計(jì)算當(dāng)前循環(huán)的變量a;
[0017] 根據(jù)當(dāng)前循環(huán)的變量P和寄存器下標(biāo)矩陣,執(zhí)行預(yù)設(shè)原子塊中的操作;
[0018] 根據(jù)當(dāng)前循環(huán)的變量i和變量a計(jì)算下一循環(huán)的變量i;
[0019] 判斷下一循環(huán)的變量i是否大于或等于0,如果是,則重復(fù)W上過(guò)程,否則根據(jù)預(yù) 設(shè)原子塊的執(zhí)行結(jié)果得到標(biāo)量乘操作結(jié)果。
[0020] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,在進(jìn)行標(biāo)量乘操作的過(guò)程中,當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P 為固定點(diǎn)時(shí),根據(jù)如下表達(dá)式計(jì)算當(dāng)前循環(huán)的變量P和變量a;
[0021]
[0022]
[0023] 其中,bi表示整數(shù)b所對(duì)應(yīng)的二進(jìn)制數(shù)的第i位的值。
[0024] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,在進(jìn)行標(biāo)量乘操作的過(guò)程中,當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P 為非固定點(diǎn)時(shí),根據(jù)如下表達(dá)式計(jì)算當(dāng)前循環(huán)的變量P和變量a:
[00 巧]
[0026]
[0027] 其中,bi表示整數(shù)b所對(duì)應(yīng)的二進(jìn)制數(shù)的第i位的值。
[0028] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P為非固定點(diǎn)時(shí),進(jìn)行標(biāo)量乘 操作的過(guò)程包括:
[0029] 根據(jù)前一循環(huán)的變量a和變量P,計(jì)算當(dāng)前循環(huán)的變量P ;
[0030] 根據(jù)變量bi和當(dāng)前循環(huán)的變量P,計(jì)算當(dāng)前循環(huán)的變量a;
[0031] 如果變量j處于第一預(yù)設(shè)范圍內(nèi),則循環(huán)執(zhí)行:
[0032] 根據(jù)當(dāng)前循環(huán)的變量P和寄存器下標(biāo)矩陣,執(zhí)行預(yù)設(shè)原子塊中的操作;
[0033] 將變量j加1并進(jìn)入下一循環(huán);
[0034] 根據(jù)當(dāng)前循環(huán)的變量i和變量a計(jì)算下一循環(huán)的變量i;
[003引判斷下一循環(huán)的變量i是否大于或等于0,如果是,則重復(fù)W上過(guò)程,否則根據(jù)預(yù) 設(shè)原子塊的操作結(jié)果得到標(biāo)量乘操作結(jié)果。
[0036] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,在進(jìn)行標(biāo)量乘操作的過(guò)程中,當(dāng)進(jìn)行標(biāo)量乘操作的點(diǎn)P 為非固定點(diǎn)時(shí),根據(jù)如下表達(dá)式計(jì)算當(dāng)前循環(huán)的變量P和變量a:
[0037]
[0038] a^hi. (pdiv\ (1) + (^的
[0039] 其中,bi表示整數(shù)b所對(duì)應(yīng)的二進(jìn)制數(shù)的第i位的值。
[0040] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,在生成數(shù)字簽名的過(guò)程中,所述方法根據(jù)如下表達(dá)式 生成數(shù)字簽名中的變量S:
[0041] S = [(l+dj-i ?化甘)-r]modn
[004引其中,dA用戶A的私鑰,r表示已知變量,k表示隨機(jī)數(shù),n表示基點(diǎn)的階。
[0043] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,如果生成的S等于0,則重新產(chǎn)生新的隨機(jī)數(shù),并基于 所述新的隨機(jī)數(shù)生成S。
[0044] 根據(jù)本發(fā)明的一個(gè)實(shí)施例,生成數(shù)字簽名中的變量r的步驟包括:
[0045]將待簽名消息M與第一雜湊值Za拼接,結(jié)合密碼雜湊函數(shù)HY生成變量e;
[0046] 根據(jù)隨機(jī)數(shù)X確定楠圓曲線上基點(diǎn)G的k倍點(diǎn);
[0047] 根據(jù)變量e和基點(diǎn)G的k倍點(diǎn),生成數(shù)字簽名中的變量r。
[0048] 本發(fā)明所提供的密鑰抗功耗攻擊方法將原子算法概念與SM2的特殊性相結(jié)合,優(yōu) 化了點(diǎn)加操作W及倍點(diǎn)操作的流程,通過(guò)引入相應(yīng)變量來(lái)控制標(biāo)量乘的內(nèi)部循環(huán),把標(biāo)量 乘轉(zhuǎn)換為模乘-加-減為一組的原子塊循環(huán)。
[0049] 相比已有的原子算法,本發(fā)明所提供的方法使得每個(gè)原子塊操作節(jié)省了一次求反 過(guò)程,并將寄存器下標(biāo)矩陣由26X10階優(yōu)化為19X9或24X9階。該樣也就大大節(jié)省了標(biāo) 量乘所需要的運(yùn)算量,不僅保證了密鑰的安全性,還提高了SM2算法的運(yùn)算速度。
[0050] 同時(shí),本發(fā)明所提供的方法在生成變量S時(shí)所采用的表達(dá)式并不再含有易受攻擊 的乘法器r?dA,因此也就能夠進(jìn)一步提高密鑰的抗功耗攻擊性。此外,本發(fā)明所提供的方 法在生成變量S時(shí)只含有一次求逆和一次模乘,相較于原始算法中生成S的過(guò)程,本方法減 少了一次模乘,該樣不僅實(shí)現(xiàn)了抗功耗攻擊,還提高了操作速度。
[0051] 本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分地從說(shuō)明書中變 得顯而易見,或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在說(shuō)明書、權(quán)利 要求書W及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
【附圖說(shuō)明】
[0052] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要的附圖做簡(jiǎn)單的介紹:
[0053] 圖1是現(xiàn)有的SM2功耗攻擊的示意圖;
[0054] 圖2是現(xiàn)有的標(biāo)量乘