一種攻擊橢圓曲線加密算法的方法和攻擊設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及信息安全技術(shù),尤指一種攻擊楠圓曲線加密算法的方法和攻擊設(shè)備。
【背景技術(shù)】
[0002] 隨著信息科技的發(fā)展,信息的安全性被提升到了一個前所未有的高度。各種加密 算法正被廣泛地應(yīng)用于經(jīng)濟、軍事、行政等重要部口,用于保護信息的安全性。對稱密碼和 公鑰密碼的出現(xiàn)使得信息能從算法級和軟件級得到保護。但是進入21世紀后,隨著攻擊形 式的多樣化,攻擊性越來越強的方法也隨之產(chǎn)生。尤其是從硬件入手的側(cè)信道攻擊和故障 注入攻擊方法使得許多安全信息受到了威脅。針對密碼算法軟硬件實現(xiàn)的分析研究對保護 信息安全具有重要的意義。
[0003] "故障攻擊"的概念是1996年由Boneh等人首次提出的,是對RSA(Ron化vest,Adi 化amir,LeonardAdlemanS人姓氏的開頭字母)公鑰密碼體制的新型攻擊方法,該方法利 用了密碼計算過程中的錯誤。該種攻擊方法一經(jīng)提出立即引起了人們的廣泛關(guān)注,并展示 出了其對密碼體制安全性的極大破壞性。1997年,Biham和化amir將該種攻擊方法應(yīng)用于 對稱密碼體制,首次提出了 "差分故障攻擊"的概念,并成功地攻擊了數(shù)據(jù)加密標(biāo)準(zhǔn)值ES, DataEnc巧ptionStandard)算法.此后研究人員提出了各種不同的故障攻擊方法,成功攻 擊了多種密碼體制,如楠圓曲線密碼編碼學(xué)巧CC,Elliptic化rveshyptography)公鑰體 制、3DES(TripleDE巧算法W及流密碼(RC4)算法等。
[0004] 下面WSM2解密算法為例說明現(xiàn)有的攻擊楠圓曲線加密算法的方法。該里假設(shè) SM2解密算法中標(biāo)量乘的計算使用了二進制算法。
[0005] 二進制算法具體實現(xiàn)如下:
[0006] 為了計算標(biāo)量乘A=比1]P,將標(biāo)量klW二進制形式展開得到kl=化。_1,…,ki, k。),其中,k。為kl的第n個比特化k1為kl的第(n-1)個比特化…,kn_i為kl的第1個 比特位,lVi=1。令i為(n-2);
[0007]令A(yù)點的坐標(biāo)(Xi,yi,Zi)為楠圓曲線的基點P的坐標(biāo),B點的坐標(biāo)(X2, 72, Z2)為 楠圓曲線的基點P的坐標(biāo)的2倍。
[000引 判斷出ki等于1,按照公式入1= X &,入2二X 2Zi,入4二y &,入5二y 2Zi,入8 =ZiZ2計算中間值入,按照公式入3=入1-入2,入6=入廣入5,入7=入1+入2, 乂9 =韋, 入1。=A3入9,斗1=義S省-義7義9對中間值^進行擴展;按照公式X3= ^ 3入11,y3 = 入e(AgA1-A。)-A4人1。,Z3=入1CIAg計算C點的坐標(biāo)(X3, 73,Z3),計算得到的C點的坐標(biāo) 即為A點的坐標(biāo)和B點的坐標(biāo)之間的和值浪照公式(Xi,yi,Zi)=咕,73,Z3)計算A點的 坐標(biāo);
[0009]按照公式 人2=2y2Z2, 乂3二7^,人4二入3X2Z2, 4 = 乂?,義6 =韋-8義4計算中間值,按照公式X3=入2人6,y3=入1(4人廣人6)-2入3人5,23 = 入2入e計算c點的坐標(biāo),計算得到的c點的坐標(biāo)即為B點的坐標(biāo)的2倍;按照公式(X2,y2,Z2)=咕,73,Z3)計算B點的坐標(biāo);
[0010] 判斷出ki不等于1,按照公式=扣2] +化2],人2二巧2Z2,義3 ,人4二^3X2Z2, 乂5=乂?,乂6=考-8乂4計算中間值,按照公式義3=入2人6,73=入1(4入廣入6)-2入3人5,23 =入2A5計算C點的坐標(biāo),計算得到的C點的坐標(biāo)即為B點的坐標(biāo)的2倍浪照公式(X2, 72,Z2)=咕,73,Z3)計算B點的坐標(biāo);
[0011] 將i減去1繼續(xù)執(zhí)行判斷ki是否等于1的步驟,直到i=0。最后輸出A點的坐 標(biāo)。
[0012] SM2解密算法具體實現(xiàn)如下;
[0013] 假設(shè)明文M的密文C=C1| |C3| |C2,klen為C2的比特長度。
[0014] 從C中取出比特串C1,并將C1轉(zhuǎn)換為楠圓曲線上的點,驗證C1是否滿足加密過程 中所用的楠圓曲線方程,若不滿足則報錯并退出;
[001引若C1滿足楠圓曲線方程,則計算楠圓曲線點S=比]C1,若S是無窮遠點,則報錯 并退出;
[0016] 若S不是無窮遠點,采用上述二進制算法計算[(1b]C1 = (X2,y2),并將坐標(biāo)X2,y2轉(zhuǎn) 化為比特串;計算t=邸F(xiII72,klen),若t為全0比特串,則報錯退出;其中,de為用戶 私鑰;
[0017] 若t為非全0比特串,則從C中取出比特串C2,計算計算u= 化sh(X21 |M'IIY2),從C中取出比特串C3,若U不等于C3,則報錯并退出;若U等于C3,卯J輸 出M'。
[0018] 現(xiàn)有的攻擊楠圓曲線密碼算法的方法大致包括:
[0019] 在SM2解密過程中,標(biāo)量乘[(1b]C1 = (X2,y2)是按照二進制算法計算的,在二進制 算法中,令A(yù)= (X2,y2),k=dB,P=C1。標(biāo)量乘法[(1b]C1 = (X2,y2)運算進行到第i輪時, 對點A的X坐標(biāo)注入錯誤變?yōu)锳' = (xi',y。zi),如果錯誤注入時ki為1且處于對中間值 入進行擴展的過程,由于對中間值A(chǔ)進行擴展的過程獨立于各點的坐標(biāo)值,僅與計算得到 的中間值有關(guān),那么A'的坐標(biāo)的改變不會影響中間值A(chǔ)的擴展和C點的坐標(biāo)的計算,最 終A點的坐標(biāo)被C點的坐標(biāo)代替,最終結(jié)果不受"安全錯誤"的影響,從而得到正確的解密 結(jié)果;如果ki為0,則錯誤的A'的坐標(biāo)值將保留并參與后續(xù)的標(biāo)量循環(huán)迭代中,最終輸出解 密失敗。因此,可根據(jù)解密成功與否分析出相應(yīng)時刻的標(biāo)量比特值ki。通過多次試驗,最終 獲得k的每一比特,即獲得k后,也就是說獲得屯就能夠根據(jù)de采用SM2解密算法進行解 密得到明文。
[0020] 現(xiàn)有的攻擊楠圓曲線加密算法的方法中,由于對標(biāo)量乘的實現(xiàn)有要求,必須采用 二進制算法、一直點倍點加、蒙哥馬利算法等來實現(xiàn),錯誤注入的時機比較難控制(即只能 在對中間值A(chǔ)進行擴展的過程中進行錯誤注入),還需要知道在標(biāo)量乘的哪一次迭代中注 入錯誤,一次只能攻擊到密鑰的1比特,需要進行多次攻擊才能獲得完整的密鑰,因此,該 方法攻擊效率較低。
【發(fā)明內(nèi)容】
[0021] 為了解決上述問題,本發(fā)明提出了一種攻擊楠圓曲線加密算法的方法和攻擊設(shè) 備,能夠提高攻擊效率。
[0022] 為了達到上述目的,本發(fā)明提出了一種攻擊楠圓曲線加密算法的方法,包括:
[0023] 攻擊設(shè)備預(yù)先獲取具有一字節(jié)錯誤的錯誤基點的坐標(biāo)、錯誤基點所在楠圓曲線的 曲線參數(shù)和錯誤基點的階之間的對應(yīng)關(guān)系;其中,階為最大素數(shù)因子的長度小于或等于預(yù) 設(shè)闊值的階;
[0024] 攻擊設(shè)備對加密設(shè)備中楠圓曲線加密算法所使用的楠圓曲線的基點的坐標(biāo)注入 一字節(jié)錯誤得到錯誤基點的坐標(biāo);
[0025] 攻擊設(shè)備控制加密設(shè)備根據(jù)得到的錯誤基點的坐標(biāo)采用楠圓曲線加密算法對明 文進行加密得到錯誤密文輸出;
[0026] 攻擊設(shè)備根據(jù)錯誤密文輸出計算錯誤基點所在的楠圓曲線的曲線參數(shù),在對應(yīng)關(guān) 系中查找計算得到的曲線參數(shù)對應(yīng)的錯誤基點的坐標(biāo)和階;
[0027] 攻擊設(shè)備根據(jù)查找到的錯誤基點的坐標(biāo)和階、計算得到的曲線參數(shù)和錯誤密文輸 出獲取明文。
[002引優(yōu)選地,當(dāng)所述攻擊設(shè)備在所述對應(yīng)關(guān)系中查找不到計算得到的曲線參數(shù)對應(yīng)的 錯誤基點的坐標(biāo)和階時,該方法還包括:
[0029] 攻擊設(shè)備繼續(xù)執(zhí)行所述對加密設(shè)備中楠圓曲線加密算法所使用的楠圓曲線的基 點的坐標(biāo)注入一字節(jié)錯誤得到錯誤基點的坐標(biāo)的步驟。
[0030] 優(yōu)選地,所述錯誤密文輸出包括;(V、C2和C3;所述加密設(shè)備根據(jù)得到的錯誤基點 的坐標(biāo)采用楠圓曲線加密算法對明文進行加密得到錯誤密文輸出包括:
[003U按照公式(V=比2]G'計算所述楠圓曲線上的點(V的坐標(biāo);其中,k2為1到 (N-1)之間的隨機數(shù),G'為所