本發(fā)明涉及信息安全領(lǐng)域,特別是涉及一種SM4密碼電路抵抗側(cè)信道分析的方法。
背景技術(shù):
隨著信息技術(shù)的發(fā)展,數(shù)據(jù)的機密性和完整性受到越來越多的關(guān)注,在早期人們還主要關(guān)注協(xié)議和算法的安全性,但自從側(cè)信道分析被提出以后,人們越來越多的開始關(guān)注芯片的實現(xiàn),以及針對芯片所面臨的攻擊所采取的抗攻擊措施。
側(cè)信道分析主要是基于物理特征的分析技術(shù),包括功耗分析,電磁分析,錯誤分析,時間分析等等。功耗分析是指通過分析密碼運算過程中呈現(xiàn)的電流/電壓變化得出功耗的變化,進(jìn)而將功耗與密鑰信息聯(lián)系起來,最終獲取密鑰信息。功耗分析技術(shù)又分為簡單功耗分析(SPA)和差分功耗分析(DPA)。SPA是指根據(jù)功耗曲線上所呈現(xiàn)的特殊特征來推測密鑰信息,DPA利用的是操作數(shù)的變化所引起的微小的功耗變化,需要通過對大量功耗曲線進(jìn)行統(tǒng)計分析最終得出密鑰信息。電磁分析與功耗分析類似,只是獲取曲線的方式有別。錯誤分析是利用錯誤結(jié)果進(jìn)行分析得出密鑰信息的分析技術(shù)。時間分析是指有的算法運行時間會因密鑰的不同而不同,因而可以通過運行時間來推測密鑰。
在硬件防御功耗分析措施方面,通常包括引入噪聲的方式降低測量精 度和在算法級提供保護(hù)。引入噪聲的方式實現(xiàn)起來比較簡單,但是效果并不理想,可以通過增加樣本數(shù)來克服。一個典型的算法級技術(shù)是盲化方法(masking),預(yù)掩碼方案存在潛在的安全隱患,實現(xiàn)面積、功耗和速度都適用于工程應(yīng)用的隨機掩碼方案十分重要。另外一個技術(shù)是電路一級的雙軌邏輯,其面積和時延方面的開銷都很大,并且其實現(xiàn)的技術(shù)難度比較大。
技術(shù)實現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問題是提供一種SM4密碼電路抵抗側(cè)信道分析的方法,能夠有效掩蓋運算的中間數(shù)據(jù),從而掩蓋數(shù)據(jù)和功耗之間關(guān)系,有效抵抗側(cè)信道分析。
為了解決上述技術(shù)問題,本發(fā)明的SM4密碼電路抵抗側(cè)信道分析的方法,是采用如下技術(shù)方案實現(xiàn)的:
SM4密碼電路的線性變換和非線性變換(SBOX)都采用隨機掩碼掩蓋運算過程中的真實數(shù)據(jù);
SM4密碼電路的非線性變換在運算過程中采用實時計算的方式生成;
SM4密碼電路的密鑰擴(kuò)展和數(shù)據(jù)加解密變換都采用隨機掩碼方案。
本發(fā)明針對現(xiàn)有技術(shù)的現(xiàn)狀,提出了一種安全而又易于實現(xiàn)的,面積、功耗和速度都適用于工程應(yīng)用的,無統(tǒng)計分析規(guī)律,并且最終能夠準(zhǔn)確實現(xiàn)SM4加解密的安全技術(shù)。
隨機掩碼被公認(rèn)為是抵御DPA攻擊的有效方案,與雙軌邏輯相比,它開發(fā)成本低,流程簡單,與一些預(yù)掩碼和增加噪聲的方案相比,它更加安全。
本發(fā)明實現(xiàn)的SM4密碼電路在運算過程中的所有數(shù)據(jù)和密鑰都全程帶有隨機掩碼,且每一輪都取不同的隨機數(shù)作為新的掩碼,在整個運算過程中沒有攻擊者想要的真實數(shù)據(jù)參與運算,這樣攻擊者通過猜測密鑰計算中間值,再通過真實的中間值與實際功耗之間的關(guān)系來實施的攻擊就無法實現(xiàn),也就能夠達(dá)到有效抵抗側(cè)信道分析的目的。
采用本發(fā)明的方法實現(xiàn)的SM4密碼電路運算速度快,所占用的芯片面積小,功耗低,并且不需要開發(fā)新的邏輯門,對設(shè)計實現(xiàn)沒有特別要求,能夠有效防御DPA攻擊,安全性得到大幅提升。
附圖說明
下面結(jié)合附圖與具體實施方式對本發(fā)明作進(jìn)一步詳細(xì)的說明:
圖1是本發(fā)明實現(xiàn)的硬件SM4的加密輪變換的時序圖;
圖2是本發(fā)明實現(xiàn)的硬件SM4的加密輪變換圖;
圖3是本發(fā)明實現(xiàn)的硬件SM4的密鑰擴(kuò)展輪變換圖。
具體實現(xiàn)方式
所述SM4密碼電路抵抗側(cè)信道分析的方法具體實現(xiàn)的方法是:SM4密碼電路的線性變換和非線性變換都采用隨機掩碼掩蓋運算過程中的真實數(shù)據(jù);SM4密碼電路的非線性變換在運算過程中采用實時計算的方式生成;SM4密碼電路的密鑰擴(kuò)展和數(shù)據(jù)加解密變換都采用隨機掩碼方案。
四個8進(jìn)8出的SBOX的輸入掩碼和輸出掩碼取自不同的隨機數(shù),每個SBOX的掩碼獨立于其他三個SBOX的掩碼,數(shù)據(jù)加解密和密鑰擴(kuò)展運算分時復(fù)用這四個帶隨機掩碼的SBOX,數(shù)據(jù)加解密和密鑰擴(kuò)展每運算一輪更新其 中的一個SBOX。
數(shù)據(jù)寄存器由四個32bits(比特)的寄存器(D0,D1,D2,D3)組成,每運算一輪更新四個數(shù)據(jù)寄存器中的一個32bits寄存器,并按D0→D1→D2→D3的順序逐次更新,參與輪運算的數(shù)據(jù)和輪密鑰都全程帶掩碼。
所述四個數(shù)據(jù)寄存器的掩碼各不相同,更新前后的掩碼無關(guān)聯(lián)性,且獨立于密鑰寄存器掩碼的選擇,參與運算的輪密鑰所帶掩碼由所述數(shù)據(jù)寄存器的掩碼和SBOX的掩碼組成。
密鑰寄存器由四個32bits的寄存器(K0,K1,K2,K3)組成,每擴(kuò)展一輪更新四個密鑰寄存器中的一個32bits寄存器,并按K0→K1→K2→K3的順序逐次更新,參與密鑰擴(kuò)展的密鑰和固定參數(shù)都全程帶掩碼。
所述四個密鑰寄存器的掩碼各不相同,更新前后的掩碼無關(guān)聯(lián)性,且獨立于數(shù)據(jù)寄存器掩碼的選擇,參與運算的固定參數(shù)所帶掩碼由密鑰寄存器的掩碼和SBOX的掩碼組成。
數(shù)據(jù)寄存器和密鑰寄存器更新時,是在寄存器變化前加入新的掩碼,在寄存器變化后再去掉舊的掩碼。
數(shù)據(jù)寄存器和密鑰寄存器的掩碼選擇保證在運算中相同的掩碼字節(jié)不會相遇。
數(shù)據(jù)加解密過程中輪密鑰所帶的掩碼在輪密鑰寄存器存儲輪密鑰之前加入。
密鑰擴(kuò)展過程中固定參數(shù)所帶的掩碼在固定參數(shù)寄存器存儲固定參數(shù)之前加入。
下面以SM4的加密過程為例來進(jìn)一步介紹本發(fā)明。
如圖1所示,SM4的加密運算過程分為三個階段:加掩碼階段,密鑰擴(kuò)展和數(shù)據(jù)加密階段,去掩碼階段;
四個8進(jìn)8出的SBOX分別表示為S0、S1、S2和S3,四個32bits的密鑰寄存器分別表示為K0、K1、K2和K3,四個32bits的數(shù)據(jù)寄存器分別表示為D0、D1、D2和D3;
加掩碼階段需要4個時鐘周期:第一個時鐘周期用新的隨機數(shù)通過異或運算計算帶掩碼的S0、K0和D0,第二個時鐘周期用新的隨機數(shù)通過異或運算計算帶掩碼的S1、K1和D1,第三個時鐘周期用新的隨機數(shù)通過異或運算計算帶掩碼的S2、K2和D2,第四個時鐘周期用新的隨機數(shù)通過異或運算計算帶掩碼的S3、K3和D3。
密鑰擴(kuò)展運算的過程如圖3所示,K_SHIFT表示SM4密碼算法定義的密鑰擴(kuò)展過程中的移位運算,CKi表示SM4密碼算法為每一輪密鑰擴(kuò)展定義的固定參數(shù),mask表示當(dāng)前數(shù)據(jù)線上帶有的掩碼值,Ki+4表示新的“Ki”,last_kmi、last_kmi+1、last_kmi+2和last_kmi+3分別表示密鑰寄存器Ki、Ki+1、Ki+2和Ki+3所帶有的舊掩碼,kmini+4表示加到密鑰Ki+4上的新掩碼,last_kmi+4表示運算過程使得密鑰Ki+4上帶有的舊掩碼。
數(shù)據(jù)加密運算的過程如圖2所示,圖中D_SHIFT表示SM4密碼算法定義的數(shù)據(jù)加密過程中的移位運算,rki表示SM4密碼算法定義的輪密鑰,mask表示當(dāng)前數(shù)據(jù)線上帶有的掩碼值,Di+4表示新的“Di”,last_dmi、last_dmi+1、last_dmi+2和last_dmi+3分別表示數(shù)據(jù)寄存器Di、Di+1、Di+2和Di+3所帶有的舊 掩碼,edkey_mask表示輪密鑰寄存器rki帶有的舊掩碼,dmini+4表示加到數(shù)據(jù)Di+4上的新掩碼,last_dmi+4表示運算過程使得數(shù)據(jù)Di+4上帶有的舊掩碼。
密鑰擴(kuò)展和數(shù)據(jù)加密階段需要64個時鐘周期,以8個時鐘周期為一個重復(fù)單元,重復(fù)8次。8個時鐘周期的重復(fù)單元具體情況:第一個時鐘周期通過密鑰擴(kuò)展運算計算K0,第二個時鐘周期通過數(shù)據(jù)加密運算計算D0和用異或運算計算S0,第三個時鐘周期通過密鑰擴(kuò)展運算計算K1,第四個時鐘周期通過數(shù)據(jù)加密運算計算D1和用異或運算計算S1,第五個時鐘周期通過密鑰擴(kuò)展運算計算K2,第六個時鐘周期通過數(shù)據(jù)加密運算計算D2和用異或運算計算S2,第七個時鐘周期通過密鑰擴(kuò)展運算計算K3,第八個時鐘周期通過數(shù)據(jù)加密運算計算D3和用異或運算計算S3。
去掩碼階段需要一個時鐘周期:通過異或運算將數(shù)據(jù)寄存器D0,D1,D2和D3上的掩碼去掉,恢復(fù)出不帶掩碼的密文。
以上通過具體實施方式對本發(fā)明進(jìn)行了詳細(xì)的說明,但這些并非構(gòu)成對本發(fā)明的限制。在不脫離本發(fā)明原理的情況下,本領(lǐng)域的技術(shù)人員還可做出許多變形和改進(jìn),這些也應(yīng)視為本發(fā)明的保護(hù)范圍。