欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種智能卡sm4算法的dpa攻擊與密鑰還原方法及系統(tǒng)的制作方法

文檔序號:7771761閱讀:384來源:國知局
一種智能卡sm4算法的dpa攻擊與密鑰還原方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種智能卡SM4算法的DPA攻擊與密鑰還原方法及系統(tǒng),屬于智能卡安全領域。本發(fā)明所述的方法包括以下步驟:步驟一,對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;步驟二,利用得到的4輪子密鑰恢復SM4密鑰。采用本發(fā)明所述的方法和系統(tǒng)可以實現(xiàn)智能卡上SM4算法的DPA攻擊,還原SM4加密密鑰,驗證智能卡上SM4算法的抗攻擊能力。
【專利說明】—種智能卡SM4算法的DPA攻擊與密鑰還原方法及系統(tǒng)【技術領域】
[0001]本發(fā)明屬于智能卡安全領域,具體涉及一種智能卡SM4算法的DPA攻擊與密鑰還原方法和系統(tǒng)。
【背景技術】
[0002]SM4算法是國家密碼管理局2012年批準的密碼行業(yè)標準的一種,屬于分組密碼對稱加密算法。SM4算法的分組長度和密鑰長度均為128比特。加密算法與密鑰擴展算法采用32輪非線性迭代結構,加密過程的每一輪中使用的運算包括異或運算、非線性t變換和線性L變換,其中非線性t變換中使用了 16*16長度大小的S盒。SM4解密算法與加密算法的結構相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。
[0003]現(xiàn)有的差分功耗分析(DPA)攻擊是針對智能卡較之有效的攻擊手段,該攻擊手段能夠通過大量采集智能卡內加密算法加密的功耗曲線,運用統(tǒng)計學的分析計算得到智能卡內算法加密的密鑰。目前DPA攻擊已經(jīng)有了針對DES等加密算法的攻擊實現(xiàn),但尚未有針對智能卡中SM4算法的DPA攻擊實現(xiàn)和密鑰還原方法。

【發(fā)明內容】

[0004]針對現(xiàn)有技術中存在的缺陷,本發(fā)明的目的是提供一種智能卡SM4算法的DPA攻擊與密鑰還原方法和系統(tǒng)。該方法和系統(tǒng)能夠實現(xiàn)智能卡上SM4算法的DPA攻擊,還原SM4加密密鑰,驗證智能卡上SM4算法的抗攻擊能力。
[0005]為達到以上目的,本發(fā)明采用的技術方案是:一種智能卡SM4算法的DPA攻擊與密鑰還原方法,包括以下步驟:
[0006]步驟一,對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;
[0007]步驟二,利用得到的前4輪子密鑰恢復SM4密鑰。
[0008]進一步,步驟一中,所述的SM4算法的密鑰長度為128位,生成32輪子密鑰參與每輪的運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒。
[0009]更進一步,步驟一中,通過攻擊S盒輸出數(shù)據(jù)實現(xiàn)對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰。
[0010]進一步,針對SM4算法中S盒輸出數(shù)據(jù)的DPA攻擊方法包括:攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量;攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位;攻擊SM4算法的S盒輸出所有位。
[0011]更進一步,針對SM4算法中S盒輸出數(shù)據(jù)的DPA攻擊方法包括以下步驟:
[0012]I)設計一個猜測的子密鑰數(shù)組k□,這個數(shù)組的長度為28:
[0013]int[]k= {0x00000000, 0x01010101,0x02020202, 0x03030303,…,OxffffTfTf};
[0014]k[]中元素的格式為:0χΑΒΑΒΑΒΑΒ,其中A、B為十六進制0_f之間的任意數(shù)字,第一個AB對應參與第一個S盒運算部分的密鑰,第二個AB對應參與第二個S盒運算部分的密鑰,第三個AB對應參與第三個S盒運算部分的密鑰,最后一個AB對應參與第四個S盒運算部分的密鑰;
[0015]2)定義selected^為1024大小的數(shù)組,用來存放S盒輸出數(shù)據(jù)字節(jié)的漢明重量,根據(jù)selected[]確定密鑰相關性的大??;
[0016]3)對SM4算法進行DPA攻擊,獲取SM4算法的前四輪子密鑰。
[0017]更進一步,步驟3)中,對SM4算法進行DPA攻擊,獲取SM4算法的前四輪子密鑰包括以下步驟: [0018](I)初始化操作,初始化的過程包括密鑰字節(jié)數(shù)、S盒候選項數(shù)、差分功耗的條數(shù)、輪密鑰的初始化:
[0019]keys=4; //4字節(jié)密鑰,即每輪攻擊可以獲取4字節(jié)子密鑰;
[0020]candidates=256; // 每個 S 盒有 256 個候選項;
[0021]dataLength=keys*candidates;// 差分功耗的數(shù)量;
[0022]round0Key=0; //第一輪子密鑰初始化為O ;
[0023]roundlKey=0; //第二輪子密鑰初始化為O ;
[0024]round2Key=0;//第三輪子密鑰初始化為O ;
[0025]round3Key=0;//第四輪子密鑰初始化為O ;
[0026](2)確定一個整型數(shù)組X [],用來存放攻擊該輪的輸入數(shù)據(jù);
[0027](3)攻擊第一輪,讀取采集到的智能卡芯片功耗數(shù)據(jù),進行計算最終返回selected[]數(shù)組,得到的 selected[]數(shù)組內容如下:selected[0]~selected[255]中存放的是第一組猜測的8位部分子密鑰相關性值,選取相關性最大的值確定與之對應的8位密鑰;從selected[256]~selected[511]中得到第二部分8位密鑰,從selected[512]~selected[767]中得到第三部分8位密鑰,從selected[768]~selected[1023]中得到第四部分8位密鑰;
[0028](4)把得到的4部分各8位子密鑰依次組合,就是SM4算法第一輪加密運算的子密鑰;
[0029](5)利用已知的子密鑰繼而攻擊下一輪,一直得到前四輪子密鑰。
[0030]進一步,從破解得到的SM4算法前4輪子密鑰中還原SM4算法的密鑰方法如下:
[0031]I).已知 rk3=f (K3, rk0, rk” rk2),由 rk。、rk” rk2、rk3 計算 32 位的 K3 ;
[0032]計算方法:K3=rk3~L,(SBox(rk0~Tk1^rk2'CK3));
[0033]2).已知 rk2=f(K3, K2, rk。,rk),由 rk。、rk” rk2、K3 計算 32 為的 K2 ;
[0034]計算方法:K2=rk2~L’(SBox(Kfrkc^rkjCK2));
[0035]3).計算 KpK0;
[0036]計算方法:Kfrk1'!/(SBox (K2'K3^rk0OK1));
[0037]Kfrkd'L,(SBox (K1'K2~K3~CK0));
[0038]4).由 KQ、K1, K2、K3 和 FK。、FK1, FK2, FK3 還原 SM4 密鑰 MK= (MK0, MK1, MK2, MK3);
[0039]計算方法:MK3=KfFK3;
[0040]MK2=K2^FK2;
[0041]MK1=K1^FK1;
[0042]MK0=K0~FK0;
[0043]MK。、MK1, MK2, MK3依次拼接起來就是SM4的密鑰MK。[0044]本發(fā)明還公開了一種智能卡SM4算法的DPA攻擊與密鑰還原系統(tǒng),包括以下裝置:
[0045]子密鑰獲取裝置,用于對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;
[0046]密鑰恢復裝置,用于利用得到的前4輪子密鑰恢復SM4密鑰。
[0047]進一步,所述的子密鑰獲取裝置是通過攻擊S盒輸出數(shù)據(jù)實現(xiàn)對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;所述的SM4算法的密鑰長度為128位,生成32輪子密鑰參與每輪的運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒;
[0048]所述的子密鑰獲取裝置包括以下模塊:用于攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量的模塊;用于攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位的模塊;用于攻擊SM4算法的S盒輸出所有位的模塊。
[0049]本發(fā)明的效果在于:采用本發(fā)明所述的方法及系統(tǒng),通過對SM4算法的DPA攻擊實現(xiàn)難度(比如SM4加密算法至少需要攻擊4輪),對比SM4算法與其他對稱加密算法(比如DES加密算法至少攻擊I輪即可)抗攻擊能力的強弱;設計和實現(xiàn)智能卡中SM4算法的防御策略,通過針對SM4的DPA攻擊方法驗證防御策略的有效性,攻擊的實現(xiàn)為了更好的防御。
【專利附圖】

【附圖說明】
[0050]圖1是本發(fā)明所述方法【具體實施方式】中SM4密鑰擴展算法流程圖;
[0051]圖2是本發(fā)明所 述方法【具體實施方式】中SM4加密算法的流程圖;
[0052]圖3是圖2中SM4加密算法中步驟F的詳細流程圖;
[0053]圖4是本發(fā)明所述方法【具體實施方式】中DPA攻擊SM4算法的流程圖;
[0054]圖5是本發(fā)明所述系統(tǒng)【具體實施方式】中結構圖。
【具體實施方式】
[0055]下面結合附圖和【具體實施方式】對本發(fā)明作進一步描述。
[0056]一種智能卡SM4算法的DPA攻擊與密鑰還原方法,包括以下步驟:
[0057]步驟一,對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;
[0058]步驟二,利用得到的4輪子密鑰恢復SM4密鑰。
[0059]本實施例中,如圖1所示,圖1是SM4密鑰擴展算法流程圖,MK= (MK0, MK1, MK2, MK3)為 SM4 的 128 位密鑰,其中 FK= (FK0, FK1, FK2, FK3)和 CK= (CK0, CK1, CK2, CK3)分別是已知的系統(tǒng)參數(shù)和固定參數(shù)。
[0060]參照圖1,SM4密鑰擴展算法如下:
[0061]I) K0=MK0~FK0, K1=MK廠FK1, K2=MK2^FK2, K3=MK3^FK3 ;
[0062]2) K4=K0T (K1WCK0),K4 即第 I 輪子密鑰 rk0 ;
[0063]3) K5=K1T (K2WCK1),K5 即第 2 輪子密鑰 rk0 ;
[0064]同理,依次計算得到K6、K7……K35,即分別是第3輪、第4輪……第32輪的子密鑰。
[0065]生成的32輪子密鑰會參與接下來的32輪的加密運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒。[0066]圖2是SM4加密算法的流程圖,圖3中虛線框起的部分是圖2中步驟F的詳細流程。圖2中(X0, X1, X2, X3)是128位明文輸入,(X32, X33, X34, X35)是加密后的128位密文。圖3中的t變換是非線性變換:
[0067]B= (b0, b” b2, b3) =t (A) = (Sbox (a。), Sbox (a) , Sbox (a2), Sbox (a3)), L 變換是線性變換:C= (cQ,C1, c2,c3) =L(B) =B ? (B?<2) ? (B?<10) ? (B?<18) ? (B〈〈〈24)。參照圖 2 和圖3,SM4的加密過程如下:
[0068]I) 128 位明文分為 4 組(X0, X1, X2, X3),計算 X4=X0~ (L(t (X廠X2~X3~rk。))),X4 即第 I輪加密后的結果;
[0069]2)計算X5=X1' (La(VWrk1))),X5即第2輪加密后的結果;
[0070]3)計算 X6=X2' (L(t (X3~X4~X5~rk2))),X4 即第 3 輪加密后的結果;
[0071]同理,依次計算得到X7、X8……X32、X33、X34、X35,(X32,X33, X34, X35)即加密之后的128位密文。
[0072]本實施例中,一種智能卡SM4算法的DPA攻擊與密鑰還原方法,包括以下步驟:步驟一,對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰,本實施例中的具體方法如下:
[0073]攻擊S盒輸出數(shù)據(jù),S盒運算是SM4算法中唯一的非線性運算部分,這里針對SM4加密算法DPA攻擊的目標就是它的S盒運算部分。SM4算法中的S盒為固定的8比特輸入8比特輸出置換,每輪的32位子密鑰分為4組,每組8位,依次進行4次S盒置換。SM4的某一輪加密中如果可以猜到這4組參與S盒運算的8位密鑰,那么把這4組各含8位的密鑰部分組合,就可以得到SM4的這一輪32位子密鑰。
[0074]針對SM4算法中S盒輸出數(shù)據(jù)的DPA攻擊有效方法有3種:攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量;攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位;攻擊SM4算法的S盒輸出所有位。在實際攻擊SM4算法加密的智能卡時,針對不同的智能卡和不同的實現(xiàn),每種方法的攻擊效果會各有優(yōu)劣,所以需要適當選擇這3種攻擊方法中的一種。
[0075]以下詳細說明SM4算法的DPA攻擊3種方法:針對S盒輸出字節(jié)的漢明重量的DPA攻擊;針對S盒輸出某一位值的DPA攻擊;針對S盒輸出全部位的DPA攻擊。
[0076]I)設計一個猜測的子密鑰數(shù)組k□,這個數(shù)組的長度為28,即256。因為每一個子密鑰長度為32位,子密鑰參與運算時會對應到4個8位的S盒,可以如下定義猜測的子密鑰數(shù)組:
[0077]int[]k={0x00000000, 0x01010101,0x02020202, 0x03030303,…,OxffffTfTf};
[0078]即,k[]中元素的格式為:0χΑΒΑΒΑΒΑΒ,其中A、B為十六進制0_f之間的任意數(shù)字,第一個AB對應參與第一個S盒運算部分的密鑰,第二個AB對應參與第二個S盒運算部分的密鑰,第三個AB對應參與第三個S盒運算部分的密鑰,最后一個AB對應參與第四個S盒運算部分的密鑰。
[0079]2)定義selected^為1024大小的數(shù)組,用來存放S盒輸出數(shù)據(jù)字節(jié)的漢明重量,根據(jù)selected []確定密鑰相關性的大小,在DPA攻擊中,相關性越高,說明猜測的密鑰越接近正確密鑰。
[0080]3)對SM4算法進行DPA攻擊,獲取SM4算法的前四輪子密鑰。
[0081]如圖4所示,圖4是DPA攻擊SM4算法的流程圖,公開了 SM4算法的DPA攻擊的3種方法實現(xiàn)過程,包括以下步驟:
[0082](I)初始化操作,初始化的過程包括密鑰字節(jié)數(shù)、S盒候選項數(shù)、差分功耗的條數(shù)、輪密鑰等的初始化:
[0083]keys=4; //4字節(jié)密鑰,即每輪攻擊可以獲取4字節(jié)子密鑰;
[0084]candidates=256; // 每個 S 盒有 256 個候選項;
[0085]dataLength=keys*candidates;// 差分功耗的數(shù)量;
[0086]round0Key=0; //第一輪子密鑰初始化為O ;
[0087]roundlKey=0; //第二輪子密鑰初始化為O ;
[0088]round2Key=0; //第三輪子密鑰初始化為O ;
[0089]round3Key=0;//第四輪子密鑰初始化為O ;
[0090](2)確定一個整型數(shù)組X□,用來存放攻擊該輪的輸入數(shù)據(jù),即:若攻擊的是第一輪,則x[0]-x[3]中存放的是第一輪的輸入數(shù)據(jù);若攻擊的是第二輪,需要利用已經(jīng)得到的第一輪子密鑰計算第一輪的輸出結果,在x[0]-x[3]中存放第二輪的輸入數(shù)據(jù);若攻擊的是第三輪,需要利用已經(jīng)得到的第一輪、第二輪子密鑰計算第二輪的輸出結果,在X[O]-X[3]中存放第三輪的輸入數(shù)據(jù);若攻擊的是第四輪,需要利用已經(jīng)得到的第一輪、第二輪、第三輪子密鑰計算第三輪的輸出結果,在x[0]-x[3]中存放第四輪的輸入數(shù)據(jù);
[0091](3)按圖4的流程,攻擊方法選擇S盒輸出字節(jié)的漢明重量(其它兩種攻擊方法圖4中亦有描述),以攻擊第一輪為例,讀取采集到的智能卡芯片功耗數(shù)據(jù),進行計算最終返回selected[]數(shù)組,計算方法的偽代碼如下:
[0092]1.For i=0To255:
[0093]2.mid=ByteSub (x[I] 'x[2] 'x[3] ~k[i])
[0094]3.For j=0To3:
[0095]4.p=i, q=24
[0096]5.selected[p]=hw((mid>>q) & OxFF)
[0097]6.p+=256, q-=8
[0098]7.End
[0099]8.End
[0100]其中k[i]中存放的是猜測密鑰值,ByteSubO函數(shù)是S盒變換函數(shù),mid是S盒輸出的數(shù)據(jù),hw()函數(shù)是漢明重量函數(shù)。偽代碼中第I行是外層256次循環(huán),第3行是內層4次循環(huán),這樣就能計算得到256*4=1024個selected值,存放于selected [p]中。
[0101]通過計算得到的selected[]數(shù)組內容如下:selected[0]?selected[255]中存放的是第一組猜測的8位部分子密鑰相關性值,選取相關性最大的值確定與之對應的8位密鑰;同理,從selected[256]?selected[511]中得到第二部分8位密鑰,從selected[512]?selected[767]中得到第三部分8位密鑰,從selected[768]?selected[1023]中得到第四部分8位密鑰;
[0102](4)把得到的4部分各8位子密鑰依次組合,就是SM4算法第一輪加密運算的子密鑰;
[0103](5)利用已知的子密鑰繼而攻擊下一輪,一直得到前四輪子密鑰。
[0104]步驟二,從破解得到的SM4算法前4輪子密鑰中還原SM4算法的密鑰。[0105]如圖1所示,圖1是SM4密鑰擴展算法流程圖,其中:
[0106]SM4 的 128 位密鑰:MK= (MK0, MK1, MK2, MK3);
[0107]系統(tǒng)參數(shù)(已知):FK=(FK0, FK1, FK2, FK3);
[0108]固定參數(shù)(已知):CK=(CK。,CK1,CK2, CK3);
[0109]系統(tǒng)參數(shù)FK和固定參數(shù)CK是已知的,在得到SM4前4輪子密鑰rk。、rkp rk2、rk3情況下,計算SM4完整的128位密鑰方法如下:
[0110]I).已知 rk3=f (K3, rk0, rk” rk2),由 rk。、rk” rk2、rk3 計算 32 位的 K3 ;
[0111]計算方法:K3=rk3~L’(SBox Crk0^rk1 ~rk2~CK3));
[0112]2).已知 rk2=f(K3, K2, rk。,rk),由 rk。、rk” rk2、K3 計算 32 為的 K2 ;
[0113]計算方法:K2=rk2~L’(SBox(K3^rfrk1'CK2)); [0114]3).同理計算 Kp K0;
[0115]計算方法:K1=Tk1'!/(SBox (K2"K3'Tk0^CK1));
[0116]K0=rk0~L,(SBox (K^Ka-K3OK0));
[0117]4).由 KQ、K1, K2、K3 和 FK。、FK1, FK2, FK3 還原 SM4 密鑰 MK= (MK0, MK1, MK2, MK3);
[0118]計算方法:MK3=K3^FK3;
[0119]MK2=K2'FK2;
[0120]MK1=VFK1;
[0121]MK0=K0~FK0;
[0122]MK。、MK1, MK2, MK3依次拼接起來就是SM4的密鑰MK。
[0123]其中L’()方法和SBox以及系統(tǒng)參數(shù)FK和固定參數(shù)CK可參見國家商用密碼管理局公開的《SMS4密碼算法》。
[0124]如圖5所示,一種智能卡SM4算法的DPA攻擊與密鑰還原系統(tǒng),包括以下裝置:子密鑰獲取裝置1,用于對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;
[0125]密鑰恢復裝置2,用于利用得到的4輪子密鑰恢復SM4密鑰。
[0126]本實施例中,所述的子密鑰獲取裝置是通過攻擊S盒輸出數(shù)據(jù)實現(xiàn)對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;所述的SM4算法的密鑰長度為128位,生成32輪子密鑰參與每輪的運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒;
[0127]所述的子密鑰獲取裝置包括以下模塊:用于攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量的模塊11 ;用于攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位的模塊12 ;用于攻擊SM4算法的S盒輸出所有位的模塊13。
[0128]本領域技術人員應該明白,本發(fā)明所述的方法和系統(tǒng)并不限于【具體實施方式】中所述的實施例,上面的具體描述只是為了解釋本發(fā)明的目的,并非用于限制本發(fā)明。本領域技術人員根據(jù)本發(fā)明的技術方案得出其他的實施方式,同樣屬于本發(fā)明的技術創(chuàng)新范圍,本發(fā)明的保護范圍由權利要求及其等同物限定。
【權利要求】
1.一種智能卡SM4算法的DPA攻擊與密鑰還原方法,包括以下步驟: 步驟一,對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰; 步驟二,利用得到的前4輪子密鑰恢復SM4密鑰。
2.如權利要求1所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是:步驟一中,所述的SM4算法的密鑰長度為128位,生成32輪子密鑰參與每輪的運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒。
3.如權利要求2所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,步驟一中,通過攻擊S盒輸出數(shù)據(jù)實現(xiàn)對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰。
4.如權利要求3所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,針對SM4算法中S盒輸出數(shù)據(jù)的DPA攻擊方法包括:攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量;攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位;攻擊SM4算法的S盒輸出所有位。
5.如權利要求4所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,針對SM4算法中S盒輸出數(shù)據(jù)的DPA攻擊方法包括以下步驟: 1)設計一個猜測的子密鑰數(shù)組k□,這個數(shù)組的長度為28:
int[]k={0x00000000, 0x01010101, 0x02020202, 0x03030303,…,OxffffTfTf}; k[]中元素的格式為:0χΑΒΑΒΑΒΑΒ,其中A、B為十六進制Ο-f之間的任意數(shù)字,第一個AB對應參與第一個S盒運算部分的密鑰,第二個AB對應參與第二個S盒運算部分的密鑰,第三個AB對應參與第三個S盒運算部分的密鑰,最后一個AB對應參與第四個S盒運算部分的密鑰; 2)定義selected□為1024大小的數(shù)組,用來存放S盒輸出數(shù)據(jù)字節(jié)的漢明重量,根據(jù)selected[]確定密鑰相關性的大?。? 3)對SM4算法進行DPA攻擊,獲取SM4算法的前四輪子密鑰。
6.如權利要求5所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,步驟3)中,對SM4算法進行DPA攻擊,獲取SM4算法的前四輪子密鑰包括以下步驟: (1)初始化操作,初始化的過程包括密鑰字節(jié)數(shù)、S盒候選項數(shù)、差分功耗的條數(shù)、輪密鑰的初始化; (2)確定一個整型數(shù)組X□,用來存放攻擊該輪的輸入數(shù)據(jù); (3)攻擊第一輪,讀取采集到的智能卡芯片功耗數(shù)據(jù),進行計算最終返回selected^數(shù)組,得到的selected[]數(shù)組內容如下:selected[0]~selected[255]中存放的是第一組猜測的8位部分子密鑰相關性值,選取相關性最大的值確定與之對應的8位密鑰;從 selected[256]~selected[511]中得到第二部分 8 位密鑰,從 selected[512]~selected[767]中得到第三部分8位密鑰,從selected[768]~selected[1023]中得到第四部分8位密鑰; (4)把得到的4部分各8位子密鑰依次組合,就是SM4算法第一輪加密運算的子密鑰; (5)利用已知的子密鑰繼而攻擊下一輪,一直得到前四輪子密鑰。
7.如權利要求6所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,步驟(I)中初始化的過程如下: keys=4;//4字節(jié)密鑰,即每輪攻擊可以獲取4字節(jié)子密鑰;candidates=256; //每個S盒有256個候選項; dataLength=keys*candidates;// 差分功耗的數(shù)量; round0Key=0;//第一輪子密鑰初始化為O ; roundlKey=0;//第二輪子密鑰初始化為O ; round2Key=0;//第三輪子密鑰初始化為O ; round3Key=0;//第四輪子密鑰初始化為O。
8.如權利要求1至7任一項所述的一種智能卡SM4算法的DPA攻擊與密鑰還原方法,其特征是,從破解得到的SM4算法前4輪子密鑰中還原SM4算法的密鑰方法如下:
1).已知rk3=f (K3, rk0, rk1; rk2),由 rk。、rk^ rk2> rk3 計算 32 位的 K3 ; 計算方法:K3=rk3~L,(SBox (rk0~Tk1^rk2"CK3));
2).已知rk2=f (K3, K2, rk0, rk),由 rk。、rk^ rk2> K3 計算 32 位的 K2 ; 計算方法:K2=rk2~L,(SBox(K3"Tk0^rk1 "CK2)); 3).計算 計算方法:K1=rk1"L> (SBox(Hrkc^CK1));
K0=rk0~L,(SBo x (K1'K2'K3'CK0));
4).由 KQ、Κ” K2、K3 和 FK。、FKp FK2、FK3 還原 SM4 密鑰 MK= (MK0, MK1, MK2, MK3); 計算方法:MK3=K3~FK3;
MK2=K2^FK2; MK1=VFK1; MK0=VFK0; MK。、MK1' MK2、MK3依次拼接起來就是SM4的密鑰MK。
9.一種智能卡SM4算法的DPA攻擊與密鑰還原系統(tǒng),包括以下裝置: 子密鑰獲取裝置,用于對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰; 密鑰恢復裝置,用于利用得到的前4輪子密鑰恢復SM4密鑰。
10.如權利要求9所述的一種智能卡SM4算法的DPA攻擊與密鑰還原系統(tǒng),其特征在于:所述的子密鑰獲取裝置是通過攻擊S盒輸出數(shù)據(jù)實現(xiàn)對SM4算法加密過程的前4輪進行DPA攻擊,獲取前4輪的子密鑰;所述的SM4算法的密鑰長度為128位,生成32輪子密鑰參與每輪的運算,其中每一輪子密鑰的長度為32位,每一輪運算中4次使用到了 S盒; 所述的子密鑰獲取裝置包括以下模塊:用于攻擊SM4算法的S盒輸出數(shù)據(jù)字節(jié)的漢明重量的模塊;用于攻擊SM4算法的S盒輸出數(shù)據(jù)的某一位的模塊;用于攻擊SM4算法的S盒輸出所有位的模塊。
【文檔編號】H04L9/08GK103546277SQ201310445225
【公開日】2014年1月29日 申請日期:2013年9月25日 優(yōu)先權日:2013年9月25日
【發(fā)明者】宮亞明, 張擎 申請人:北京握奇數(shù)據(jù)系統(tǒng)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
庄浪县| 南靖县| 辉南县| 敦煌市| 松滋市| 浠水县| 麟游县| 闸北区| 钟山县| 中山市| 雷波县| 仙桃市| 曲沃县| 天等县| 安溪县| 且末县| 枣阳市| 兴海县| 平定县| 晋江市| 北京市| 沅江市| 贡觉县| 邯郸县| 天门市| 东台市| 电白县| 大洼县| 吉木萨尔县| 元朗区| 天峻县| 德昌县| 定边县| 通海县| 容城县| 子长县| 兴海县| 米脂县| 广西| 雷波县| 伊金霍洛旗|