本發(fā)明涉及信息安全領(lǐng)域,特別涉及一種多方位防側(cè)信道攻擊的簽名方法。
背景技術(shù):
RSA公鑰加密算法是信息安全領(lǐng)域中比較主流的公鑰密碼技術(shù)?;赗SA實(shí)現(xiàn)的各種Key及智能卡已經(jīng)廣泛應(yīng)用于金融、通信、社保、交通等各個(gè)領(lǐng)域。傳統(tǒng)對(duì)RSA的攻擊主要基于數(shù)學(xué)中大素?cái)?shù)分解算法,而近年來(lái)側(cè)信道攻擊發(fā)展迅速,各種攻擊手段層出不窮。
以往對(duì)RSA簽名的防護(hù)主要考慮SPA、DPA、CPA、double攻擊及錯(cuò)誤攻擊。為防止以上攻擊,現(xiàn)有方案在RSA簽名的模冪計(jì)算時(shí)一般都掩碼指數(shù)和底數(shù),使用類似蒙哥馬利ladder的方式尋求模乘、模平方在運(yùn)行時(shí)完全一樣,并通過計(jì)算兩次模冪的方式防止錯(cuò)誤攻擊。但所有的方案均無(wú)法防護(hù)以上提出的所有攻擊方法。并且由于近來(lái)攻擊工具及攻擊方法的改進(jìn),以往類似蒙哥馬利ladder的方案在實(shí)現(xiàn)上很容易因?yàn)樘D(zhuǎn)而被SPA攻擊出結(jié)果,且如果操作數(shù)的漢明重量不一致也容易被攻擊。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種多方位防側(cè)信道攻擊的簽名方法。
本發(fā)明提供了一種多方位防側(cè)信道攻擊的簽名方法和方案,該方法可有效防御對(duì)RSA簽名的攻擊。模冪實(shí)現(xiàn)過程中,同時(shí)計(jì)算出指數(shù)的模冪及指數(shù)補(bǔ)碼的模冪,即一次模冪過程計(jì)算出兩個(gè)模冪的值,且保證功耗上能量均衡。當(dāng)模冪受到錯(cuò)誤攻擊時(shí),通過數(shù)學(xué)運(yùn)算能判斷出模冪運(yùn)算的數(shù)據(jù)是否正確。為避免求逆,本發(fā)明還提供了私鑰負(fù)值的STD形式。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供一種多方位防側(cè)信道攻擊的簽名方法和方案,包含步驟:
步驟一,輸入RSA的模數(shù)N、消息M、私鑰元素d、公鑰元素e,私鑰元素d的長(zhǎng)度為t比特,公鑰元素e的長(zhǎng)度小于等于N的比特長(zhǎng),且保證M小于N;
步驟二,生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng1,并用所述隨機(jī)數(shù)trng1先后乘公鑰元素e和私鑰元素d,該運(yùn)算結(jié)果減去當(dāng)前使用的隨機(jī)數(shù)trng1,并減去私鑰元素d,得到數(shù)據(jù)z1;
步驟三,生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng2,以所述隨機(jī)數(shù)trng2為底數(shù),步驟b中得到的數(shù)據(jù)z1為指數(shù),比特長(zhǎng)度為bitlen比特,執(zhí)行如下操作:
設(shè)置3塊t比特的空間分別為S0,S1,A,三塊空間分別賦值為;S0=S1=1,A=trng2;
i從0到bitlen執(zhí)行如下過程:
①獲得z1的當(dāng)前比特值;
②如果當(dāng)前比特為0則計(jì)算S0=S0*A,如果當(dāng)前比特為1,則執(zhí)行S1=S1*A;
③對(duì)A平方并放入A中;
校驗(yàn)S0*S1*X-A是否為0,如果不為0,退出;
步驟四,步驟三中輸出結(jié)果分別記為S0,S1;
步驟五,生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng3,并用該隨機(jī)數(shù)先后乘公鑰元素e和私鑰元素d,該運(yùn)算結(jié)果減去當(dāng)前使用的隨機(jī)數(shù)trng3,并加上私鑰元素d,得到數(shù)據(jù)z2;
步驟六,N為模數(shù),trng2為乘法因子對(duì)摘要M進(jìn)行模乘掩碼,得到結(jié)果記為maskM;
步驟七,以maskM為底數(shù),z2位指數(shù),執(zhí)行如3中a、b、c操作,獲得結(jié)果S'0,S'1;
步驟八,計(jì)算S1*S'1,并以該結(jié)果為底數(shù),公鑰元素e為指數(shù),N為模數(shù),執(zhí)行3中a、b、c三步,得到輸出結(jié)果S”0,S”1,如果S”1=M,則輸出S1*S'1,或者不輸出數(shù)據(jù)。
根據(jù)本發(fā)明提供的具體實(shí)施例,本發(fā)明公開了以下技術(shù)效果:
本發(fā)明的有益效果是,對(duì)比大部分防攻擊方案,該方案同時(shí)掩碼了指數(shù)和底數(shù),能防護(hù)已知SPA(簡(jiǎn)單能量分析)、DPA(微分能量分析)、CPA(選擇明文攻擊)。方案中同時(shí)輸出冪次方及冪指數(shù)反碼次方,避免了求逆過程的出現(xiàn),求逆很耗時(shí)間。方案中,模冪部分,結(jié)果輸出部分,分別使用了校驗(yàn)技術(shù),防止錯(cuò)誤攻擊時(shí)錯(cuò)誤數(shù)據(jù)輸出技術(shù)。
本發(fā)明能夠防止已知的任何形式的SPA、DPA、CPA等功耗分析攻擊;同時(shí)防止錯(cuò)誤攻擊時(shí),輸出有效的錯(cuò)誤數(shù)據(jù)。
本發(fā)明有效保護(hù)了RSA STD運(yùn)算過程中已知容易被攻擊的步驟。本發(fā)明提供的模冪校驗(yàn),也可完整的使用到RSACRT運(yùn)算當(dāng)中,同時(shí)實(shí)現(xiàn)模冪及補(bǔ)碼冪的算法可類似的移植到SM2的點(diǎn)乘運(yùn)算中。對(duì)模冪是否被攻擊的校驗(yàn)可以類似的移植到SM2的點(diǎn)乘運(yùn)算中。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明一種多方位防側(cè)信道攻擊的簽名方法的流程示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的目的是提供一種多方位防側(cè)信道攻擊的簽名方法。
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步詳細(xì)的說明。
實(shí)施例1:
一種多方位防側(cè)信道攻擊的簽名方法和方案,普通RSA的秘鑰分為公鑰和私鑰,其中e、N為RSA的公鑰;d、N為RSA私鑰。
普通RSA密鑰簽名的方法為:Sign(M)=MdmodN。其中M為用戶輸入的待簽名的摘要;N、d私鑰,N為模數(shù)。
基于基礎(chǔ)模冪和模冪校驗(yàn),一種多方位防側(cè)信道攻擊的簽名方案如下:
(RSA簽名)Sign(M,e,d,N);
生成隨機(jī)數(shù)trng1,計(jì)算z1=trng1*(e*d-1)-d;
生成隨機(jī)數(shù)trng,計(jì)算(S0,S1)=EXP(trng,z1,N);如果返回1,輸出S0,S1繼續(xù)執(zhí)行3,否則直接返回0,不輸出任何結(jié)果;
生成隨機(jī)數(shù)trng2,計(jì)算z2=trng2*(e*d-1)+d;
計(jì)算maskM=M*trngmodN;
計(jì)算(S'0,S'1)=EXP(maskM,z2,N);如果返回1,輸出S'0,S'1繼續(xù)執(zhí)行6,否則直接返回0,不輸出任何結(jié)果;
計(jì)算(S”0,S”1)=EXP(S1*S’1,e,N),如果S”1=M,則輸出S1*S'1,否則直接返回0,不輸出任何結(jié)果。
普通RSA的秘鑰分為公鑰和私鑰,其中e、N為RSA的公鑰;d、N為RSA私鑰。
普通RSA密鑰簽名的方法為:Sign(M)=Mdmod N。其中M為用戶輸入的待簽名的摘要;N、d私鑰,N為模數(shù)。
首先、我們?cè)O(shè)計(jì)了一種基礎(chǔ)模冪算法,從指數(shù)低位遍歷的方式,同時(shí)計(jì)算xtmodN和x~tmod N,其中~t是t的補(bǔ)碼。
算法一(基礎(chǔ)模冪)EXP1(x,t,N):
輸出S0、S1;其中s0=x~tmodN,s1=xtmodN。
算法二(模冪校驗(yàn))EXP2(x,t,N):
3、計(jì)算c=S0*S1*x-A
如果c=0,輸出s0=x~emod N,s1=xemod N,返回1;否則不輸出結(jié)果,返回0
基于算法一和算法二,我們?cè)O(shè)計(jì)了一種防側(cè)信道攻擊的RSA簽名算法如下:
算法三(RSA簽名)Sign(M,e,d,N);
生成隨機(jī)數(shù)trng1,計(jì)算z1=trng1*(e*d-1)-d
生成隨機(jī)數(shù)trng,計(jì)算(s0,s1)=EXP(trng,z1,N);如果返回1,輸出s0,s1繼續(xù)執(zhí)行3,否則直接返回0,不輸出任何結(jié)果
生成隨機(jī)數(shù)trng2,計(jì)算z2=trng2*(e*d-1)+d
計(jì)算maskM=M*trng mod N
計(jì)算(S'0,S'1)=EXP(maskM,z2,N);如果返回1,輸出s'0,s'1繼續(xù)執(zhí)行6,否則直接返回0,不輸出任何結(jié)果
計(jì)算(S”0,S”1)=EXP(S1*S'1,e,N),如果S”1=M,則輸出S1*S'1,否則直接返回0,不輸出任何結(jié)果
實(shí)例二
輸入RSA的模數(shù)N、消息M、私鑰元素d的長(zhǎng)度為t,公鑰元素e的長(zhǎng)度為32小于等于N的比特?cái)?shù),且保證M小于N
生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng1,并用該隨機(jī)數(shù)先后乘公鑰元素e和私鑰元素d,該運(yùn)算結(jié)果減去當(dāng)前使用的隨機(jī)數(shù)trng1,并減去私鑰元素d,得到數(shù)據(jù)z1
生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng2,以該數(shù)據(jù)為底數(shù),2中得到的數(shù)據(jù)z1為指數(shù)(其比特長(zhǎng)度為bitlen比特),執(zhí)行如下操作:
設(shè)置3塊(分別為S0、S1、A)t比特的空間,三塊空間分別賦值為;S0=S1=1,A=trng2
b、i從0到bitlen執(zhí)行如下過程:
①獲得z1的當(dāng)前比特值
②如果當(dāng)前比特為0則計(jì)算S0=S0*A,如果當(dāng)前比特為1,則執(zhí)行S1=S1*A
③對(duì)A平方并放入A中
c、校驗(yàn)S0*S1*x-A是否為0,如果不為0,退出
4、過程3中輸出結(jié)果分別記為S0,S1
5、生成長(zhǎng)度為t比特的隨機(jī)數(shù)trng3,并用該隨機(jī)數(shù)先后乘公鑰元素e和私鑰元素d,該運(yùn)算結(jié)果減去當(dāng)前使用的隨機(jī)數(shù)trng3,并加上私鑰元素d,得到數(shù)據(jù)z2
6、以N為模數(shù),trng2為乘法因子對(duì)摘要M進(jìn)行模乘掩碼,得到結(jié)果記為maskM
7、以maskM為底數(shù),z2位指數(shù),執(zhí)行如3中a、b、c操作,獲得結(jié)果s'0,s'1
8、計(jì)算S1*S'1,并以該結(jié)果為底數(shù),e(公鑰元素)為指數(shù),N為模數(shù),執(zhí)行3中a、b、c三步,得到輸出結(jié)果S”0,S”1,如果S”1=M,則輸出S1*S'1,或者不輸出數(shù)據(jù)。
本發(fā)明有效保護(hù)了RSA STD運(yùn)算過程中已知的容易被攻擊的步驟。本發(fā)明提供的模冪校驗(yàn),也可完整的使用到RSA CRT運(yùn)算當(dāng)中,同時(shí)實(shí)現(xiàn)模冪及補(bǔ)碼冪的算法可類似的移植到SM2的點(diǎn)乘運(yùn)算中。對(duì)模冪是否被攻擊的校驗(yàn)可以類似的移植到SM2的點(diǎn)乘運(yùn)算中。
本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處。綜上所述,本說明書內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。