專利名稱:一種適用于ecc算法的抗錯誤攻擊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種適用于ECC算法的抗錯誤攻擊的方法。
背景技術(shù):
ECC(橢圓曲線密碼)算法是智能卡中常用的加密算法之一,其加密算法流程如下輸入?yún)?shù)組D = (q, FR, S, a, b, P, n, h),公鑰 Q,明文 m。輸出密文(R,C,t)。 (I)選擇 k e κ[1,η-1]。(2)計算 R = kP 和 Z = hkQo 若 Z = 00,則轉(zhuǎn)到步驟(I)。(3) (k1; k2) — KDF (xz, R),其中 Xz 是 Z 的 x 坐標。(4)計算C = ENCk O)和 = MACki (C)。(5)返回(R, C,t)。解密算法流程輸入?yún)?shù)組D= &}1 ,5,&,13,?,11,11),私鑰(1,密文(R,C,t)。輸出明文m或者拒絕該密文。(I)對R進行嵌入的公鑰確認。若確認失敗,則返回(“拒絕該密文”)。(2)計算Z = hdR。若Z =c ,則返回(“拒絕該密文”)。(3) (k1; k2) — KDF (xz, R),其中 Xz 是 Z 的 x 坐標。(4)計算=MACk2(C)。若t'幸t,則返回(“拒絕該密文”)。(5)計算w = DECk (C)。(6)返回(m)。由上述算法流程可以看出,ECC算法的核心是點乘計算,由于攻擊者能夠在點乘迭代循環(huán)中注入錯誤,使迭代循環(huán)提前結(jié)束,然后在任意時間查看點乘計算的中間結(jié)果,并進而逐位地反推出密鑰,因此,普通的ECC算法對錯誤攻擊(其目的是獲取算法中的密鑰)的防御能力不強。傳統(tǒng)的對抗錯誤攻擊的方法是在ECC密碼解密流程中加入檢錯機制,對解密操作進行驗算,即解密之后對計算出的明文再進行加密操作,比對加密后的結(jié)果是否和解密前的輸入一致,如果不一致,表明存在錯誤,則禁止輸出結(jié)果。可見,這種方法實質(zhì)是以ECC加密流程來檢查ECC解密是否受到錯誤攻擊,它雖然可以使攻擊者無法得到有利于攻擊的數(shù)據(jù),達到保護密鑰的目的,但是,由于其需要進行大量的驗算(尤其是其中的點乘算法的執(zhí)行時間比較長),因此,抵抗錯誤攻擊所需要消耗的時間較長,效率較低。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種適用于ECC算法的抗錯誤攻擊的方法,它可以高效地抵抗針對ECC算法的錯誤攻擊,提高智能卡的安全性。為解決上述技術(shù)問題,本發(fā)明的適用于ECC算法的抗錯誤攻擊的方法,包括以下步驟(I)在ECC點乘迭代算法中加入計數(shù)器;(2)初始化該計數(shù)器的計數(shù)初值,并設(shè)定該計數(shù)器的步長;(3)進行ECC點乘迭代運算前,計算點乘迭代次數(shù);(4)在每輪迭代中,對該計數(shù)器的計數(shù)值按照步長進行遞增或者遞減;(5)ECC點乘迭代運算結(jié)束后,將計數(shù)器的計數(shù)終值和點乘迭代次數(shù)進行比對,判斷是否滿足預(yù)先設(shè)定的對應(yīng)關(guān)系,若是,則輸出ECC點乘迭代運算的結(jié)果;若否,則不輸出
ECC點乘迭代運算的結(jié)果。所述計數(shù)器可以是軟件計數(shù)器或硬件計數(shù)器。所述計數(shù)初值包括O值和其它非O值。所述步長可以是任何大于或等于I的數(shù)。 所述對應(yīng)關(guān)系可以是線性關(guān)系或非線性關(guān)系。與傳統(tǒng)的ECC算法抗錯誤攻擊方法相比,本發(fā)明的方法通過在ECC點乘算法中引入計數(shù)器對點乘的迭代次數(shù)進行計數(shù),判斷計數(shù)值和迭代次數(shù)關(guān)系的正確性來檢查錯誤,抵抗錯誤攻擊,從而避免了對解密結(jié)果的長時間驗算,提高了 ECC算法抵抗錯誤攻擊的效率,保證了當前所有使用ECC算法的智能卡的安全性。
附圖是本發(fā)明的方法流程圖。
具體實施例方式為對本發(fā)明的技術(shù)內(nèi)容、特點與功效有更具體的了解,現(xiàn)結(jié)合圖示的實施方式,詳述如下在本發(fā)明的實施例中,假設(shè)ECC算法的數(shù)據(jù)長度為m位,即標量d和橢圓曲線上點坐標的長度都是m位的數(shù)值,點乘的時間代價為T(m)。請參閱圖I所示,該實施例的ECC點乘算法的流程為輸入標量d,橢圓曲線上的點P, ECC相關(guān)參數(shù)步驟I,引入一個計數(shù)器counter ;步驟2,初始化該計數(shù)器的計數(shù)初值,并設(shè)定該計數(shù)器的計數(shù)步長;步驟3,在進行ECC點乘迭代運算前,計算點乘迭代次數(shù)N ;步驟4,在每輪迭代中,對計數(shù)器的計數(shù)值按照步長進行遞增(或遞減);步驟5,ECC點乘迭代運算結(jié)束后,將計數(shù)器的計數(shù)終值和ECC點乘迭代次數(shù)N進行比對,判斷其是否滿足預(yù)先設(shè)定的對應(yīng)關(guān)系,若是,則輸出點乘迭代運算的結(jié)果,若否,則輸出點乘錯誤信息,不輸出計算結(jié)果。由上述流程可見,整個ECC點乘運算流程中僅增加了計數(shù)器操作和判斷點乘迭代次數(shù)和計數(shù)器的計數(shù)值之間的關(guān)系的操作,其時間代價和點乘運算本身所需的時間相比,可以忽略,所以,總的時間代價近似于T (m),即普通ECC點乘運算的時間代價。
同時,由本實施例的上述算法可以看出,如果攻擊者在點乘迭代過程中(即步驟4)注入錯誤導(dǎo)致迭代提前結(jié)束,則步驟5中就會發(fā)現(xiàn)點乘迭代次數(shù)N的數(shù)值和計數(shù)器的計數(shù)終值不滿足預(yù)設(shè)的對應(yīng)關(guān)系,即檢測到ECC解密過程受到了錯誤攻擊,從而不會向外輸出ECC點乘運算的中間結(jié)果,如此,攻擊者便無法得到有用的信息,從而有效地抵抗了這類
錯誤攻擊。·
權(quán)利要求
1.一種適用于ECC算法的抗錯誤攻擊的方法,其特征在于,包括以下步驟 (1)在ECC點乘迭代算法中加入計數(shù)器; (2)初始化該計數(shù)器的計數(shù)初值,并設(shè)定該計數(shù)器的步長; (3)進行ECC點乘迭代運算前,計算點乘迭代次數(shù); (4)在每輪迭代中,對該計數(shù)器的計數(shù)值按照步長進行遞增或者遞減; (5)ECC點乘迭代運算結(jié)束后,將計數(shù)器的計數(shù)終值和點乘迭代次數(shù)進行比對,判斷是否滿足預(yù)先設(shè)定的對應(yīng)關(guān)系,若是,則輸出ECC點乘迭代運算的結(jié)果;若否,則不輸出ECC點乘迭代運算的結(jié)果。
2.如權(quán)利要求I所述的抗錯誤攻擊的方法,其特征在于步驟(I)中,所述計數(shù)器包括軟件計數(shù)器和硬件計數(shù)器。
3.如權(quán)利要求I所述的抗錯誤攻擊的方法,其特征在于步驟(2)中,所述計數(shù)初值包括O值和其它非O值。
4.如權(quán)利要求I所述的抗錯誤攻擊的方法,其特征在于步驟(2)中,所述步長大于等于I。
5.如權(quán)利要求I所述的抗錯誤攻擊的方法,其特征在于步驟(5)中,所述對應(yīng)關(guān)系包括線性關(guān)系和非線性關(guān)系。
全文摘要
本發(fā)明公開了一種適用于ECC算法的抗錯誤攻擊的方法,包括步驟(1)在ECC點乘算法中加入計數(shù)器;(2)初始化該計數(shù)器的計數(shù)初值,并設(shè)定計數(shù)步長;(3)進行點乘迭代運算前,計算點乘迭代次數(shù);(4)在每輪迭代中,按照步長更新計數(shù)器的計數(shù)值;(5)點乘迭代運算結(jié)束后,將計數(shù)器的計數(shù)終值和點乘迭代次數(shù)進行比對,判斷是否滿足預(yù)先設(shè)定的對應(yīng)關(guān)系。該抗錯誤攻擊的方法可以高效地防御針對ECC算法的錯誤攻擊,提高智能卡的安全性。進行ECC點乘運算時,整個點乘流程中僅增加了計數(shù)器操作和判斷點乘迭代次數(shù)和計數(shù)值之間關(guān)系的操作,從而減少了抵抗錯誤攻擊所需要消耗的時間代價,提高了抗錯誤攻擊的效率。
文檔編號H04L9/30GK102790673SQ20111012708
公開日2012年11月21日 申請日期2011年5月17日 優(yōu)先權(quán)日2011年5月17日
發(fā)明者包斯剛, 柴佳晶, 馬博 申請人:上海華虹集成電路有限責(zé)任公司