陳大釗,成 超,熊 峙,王 津
(1.成都三零嘉微電子有限公司,四川 成都 610041;2.61569部隊(duì),北京 100071)
密碼算法實(shí)現(xiàn)方式對(duì)安全性的影響研究*
陳大釗1,成 超2,熊 峙2,王 津2
(1.成都三零嘉微電子有限公司,四川 成都 610041;2.61569部隊(duì),北京 100071)
實(shí)際應(yīng)用中,密碼算法總要在軟件、硬件或物理設(shè)備等環(huán)境中實(shí)現(xiàn),也只有在實(shí)際應(yīng)用場(chǎng)景中討論密碼算法的安全性才是有意義的。密碼算法實(shí)現(xiàn)方式對(duì)其安全性有著重要影響,本文以不同實(shí)現(xiàn)方式在FPGA上實(shí)現(xiàn)SM4算法,通過(guò)對(duì)不同實(shí)現(xiàn)方式的SM4算法進(jìn)行相關(guān)性功耗分析(Correlation Power Analysis,CPA),評(píng)估密碼算法實(shí)現(xiàn)方式對(duì)安全性的影響。分析結(jié)果表明,SM4算法并行實(shí)現(xiàn)方式比串行實(shí)現(xiàn)方式具有更高的安全性。
密碼安全;CPA;FPGA;安全性
密碼設(shè)備在運(yùn)行中總會(huì)泄露出各種與密碼算法相關(guān)的信息,如運(yùn)行時(shí)間、功耗信息和電磁輻射信息等,這類信息稱為旁路信息[1](Side Channel Information)。攻擊者可以利用旁路信息攻擊密碼設(shè)備,從而獲取秘密信息,這種攻擊方式稱為旁路攻擊(Side Channel Attack,SCA)。其中,功耗分析[2-3](Power Analysis)是最普遍的攻擊方式,其特點(diǎn)是攻擊效率較高、成本低。功耗分析又分為簡(jiǎn)單功耗分析(Simple Power Analysis,SPA)、差分功耗分析(Differential Power Analysis,DPA)和相關(guān)系數(shù)功耗分析[4](Correlation Power Analysis,CPA)。CPA是利用密碼芯片的功耗假設(shè)模型,預(yù)測(cè)其
運(yùn)行密碼算法時(shí)的功耗大小,然后和實(shí)際測(cè)量的功耗大小進(jìn)行相關(guān)性分析,從而推測(cè)密鑰。由于CPA考慮的數(shù)據(jù)相關(guān)狀態(tài)位比DPA多,因此利用假想模型得到的模擬功耗和實(shí)際測(cè)量的功耗之間的相關(guān)系數(shù)更大,比DPA更具有攻擊性。因此,本文選取CPA作為評(píng)估SM4密碼算法不同實(shí)現(xiàn)方式的安全性方法。
SM4密碼算法是我國(guó)第一個(gè)公開(kāi)的商密分組密碼算法[5],分組長(zhǎng)度為128 bit,密鑰長(zhǎng)度為128 bit。加密算法與密鑰擴(kuò)展算法都采用32輪非線性迭代結(jié)構(gòu)。解密算法與加密算法的結(jié)構(gòu)相同,只是輪密鑰的使用順序相反,解密輪密鑰是加密輪密鑰的逆序。算法原理如圖1所示。
圖1 SM4密碼算法加密流程
則:
此外,rki(i=0,1,…,31)為輪密鑰,長(zhǎng)度為32 bit。
相關(guān)性功耗分析(CPA)是一種通過(guò)對(duì)實(shí)際測(cè)量功耗樣本和與功耗相關(guān)數(shù)據(jù)的假設(shè)功耗之間的相關(guān)性大小推測(cè)密碼芯片的密鑰等秘密信息的方法。
CPA包括以下五個(gè)步驟[2]:
(1)選擇待分析密碼算法的某個(gè)中間值
CPA攻擊的第一步是確定被攻擊密碼算法的一個(gè)中間值。這個(gè)中間值必須是一個(gè)與密鑰相關(guān)的函數(shù)f (d,k),其中d是已知的數(shù)據(jù)(明文或密文),而k是密鑰的一部分。
(2)測(cè)量瞬時(shí)功耗
CPA攻擊的第二步是測(cè)量密碼設(shè)備在執(zhí)行密碼算法時(shí)所產(chǎn)生的瞬時(shí)功耗。加解密期間,密碼設(shè)備密鑰保持不變,隨機(jī)變換明文。每進(jìn)行一個(gè)分組的加解密,記錄一條功耗曲線和相應(yīng)的明/密文信息。假設(shè)采集D條功耗曲線,每條功耗曲線的長(zhǎng)度記為T(mén),則功耗曲線組成了一個(gè)大小為D×T的功耗曲線矩陣T,而矩陣的每一行代表一條功耗曲線。
(3)計(jì)算假設(shè)中間值
根據(jù)之前記錄的D組明文或密文信息,按照中間值函數(shù)f(d,k)計(jì)算出每一次密鑰猜測(cè)k對(duì)應(yīng)的假設(shè)中間值。假設(shè)有D個(gè)猜測(cè)密鑰,每一個(gè)猜測(cè)密鑰對(duì)每一組明文或者密文計(jì)算一個(gè)假設(shè)中間值,那么每個(gè)猜測(cè)密鑰將得到D個(gè)假設(shè)中間值。這樣可以得到一個(gè)大小為D×K的假設(shè)中間值矩陣V。
(4)將假設(shè)中間值映射為假設(shè)功耗值
對(duì)假設(shè)中間值矩陣V中每一個(gè)假設(shè)的中間值所導(dǎo)致的密碼設(shè)備功耗進(jìn)行仿真(仿真模型可以為單比特模型、漢明重量模型和漢明距離模型等),生成對(duì)應(yīng)的假設(shè)功耗值,以此得到假設(shè)的能量消耗矩陣H。
(5)比較假設(shè)功耗和實(shí)測(cè)功耗曲線
對(duì)假設(shè)功耗矩陣H中的每一列hi和實(shí)測(cè)功耗矩陣T中的每一列tj的相關(guān)性進(jìn)行比較(其中i=1,2,…,K,j=1,2,…,T)。通過(guò)式(4)計(jì)算兩列間的相關(guān)系數(shù)ri,j:
于是,得到一個(gè)K×T的矩陣R。它的每一個(gè)元素ri,j包含了hi和tj的比較結(jié)果。ri,j越大,說(shuō)明hi和tj的匹配度越高,也就說(shuō)明假設(shè)的密鑰更接近于真實(shí)的密鑰。找到矩陣R中的最大值,并把該值對(duì)應(yīng)的行的猜測(cè)作為正確的密鑰猜測(cè)。該最大值揭示了對(duì)所選中間值進(jìn)行的處理結(jié)果以及攻擊設(shè)備所使用的密鑰。
測(cè)試驗(yàn)證環(huán)境如圖2所示。
圖2 測(cè)試驗(yàn)證系統(tǒng)原理
密碼芯片為國(guó)產(chǎn)FPGA華微HWD2V6000,通過(guò)在密碼芯片和電源間串聯(lián)一個(gè)1 Ω的電阻,可以間接測(cè)量密碼芯片瞬時(shí)功耗。
為了對(duì)密碼芯片的瞬時(shí)功耗進(jìn)行測(cè)量,密碼芯片還需要外接PC和數(shù)字示波器。PC用來(lái)控制全部測(cè)量配置并儲(chǔ)存采樣獲得的功耗曲線。數(shù)字示波器用來(lái)記錄電阻消耗的能量,并將能量跡發(fā)送給PC。數(shù)字示波器一個(gè)通道記錄密碼芯片功耗,一個(gè)通道作為信號(hào)觸發(fā)。
測(cè)試環(huán)境工作原理:完成系統(tǒng)配置后,PC端上位機(jī)程序向密碼芯片發(fā)送明文和密鑰;密碼芯片收到明文和密鑰后,執(zhí)行密碼算法,同時(shí)拉高觸發(fā)信號(hào),觸發(fā)示波器采集密碼芯片瞬時(shí)功耗,并將采集到的功耗數(shù)據(jù)存入PC端;直到加密結(jié)束,拉低觸發(fā)信號(hào),停止采集瞬時(shí)功耗數(shù)據(jù)。
設(shè)置SM4算法的工作密鑰為0x0B2DB59B A139404F 8AF90254 06BE22D3。經(jīng)過(guò)密鑰擴(kuò)展,得第一輪輪密鑰為0xF89BCA84。根據(jù)測(cè)試驗(yàn)證環(huán)境,分別采集SM4算法并行實(shí)現(xiàn)和串行實(shí)現(xiàn)的功耗曲線各10萬(wàn)條,每條功耗曲線采樣點(diǎn)數(shù)為14 000。
分析中,SM4子密鑰長(zhǎng)度為32 bit,搜索遍歷空間為232。這是難以實(shí)現(xiàn)的,因此采用分而治之的方法,將32 bit分為4個(gè)8 bit,即4個(gè)字節(jié)單元進(jìn)行遍歷,遍歷空間減少為4×28。對(duì)于第一輪輪密鑰,首先分析最高字節(jié)密鑰信息(248,0xF8),然后遍歷其他三個(gè)字節(jié)密鑰信息。
攻擊點(diǎn)選擇:根據(jù)SM4算法實(shí)現(xiàn)過(guò)程,串行和并行實(shí)現(xiàn)方式均選擇第一輪S盒運(yùn)算為攻擊點(diǎn)。
對(duì)第一輪S盒輸出建立漢明重量模型,計(jì)算每一個(gè)假設(shè)密鑰字節(jié)與明文異或后進(jìn)行S盒輸出值的漢明重量,得到一個(gè)100 000×256的假設(shè)能量消耗矩陣H。將矩陣H每一列與實(shí)測(cè)功耗曲線T每一列進(jìn)行統(tǒng)計(jì)分析計(jì)算相關(guān)系數(shù),即將每一個(gè)密鑰假設(shè)對(duì)應(yīng)的假設(shè)能量消耗值與在每一個(gè)位置所記錄的能量跡進(jìn)行比較。比較的結(jié)果是一個(gè)相關(guān)系數(shù)矩陣R,R的最大值即假設(shè)密鑰與功耗匹配度最高。如果相關(guān)系數(shù)矩陣R上有一行(即有一個(gè)猜測(cè)密鑰與功耗的相關(guān)系數(shù)曲線)出現(xiàn)最大尖峰,則表明通過(guò)CPA獲取了密鑰信息。
4.1 對(duì)并行實(shí)現(xiàn)的SM4算法的CPA攻擊
利用搭建的測(cè)試驗(yàn)證環(huán)境,采集10萬(wàn)條并行實(shí)現(xiàn)的SM4算法功耗曲線,其中一條曲線如圖3所示,橫軸表示采樣點(diǎn)數(shù),縱軸表示電壓值。
圖3 SM4算法并行實(shí)現(xiàn)功耗曲線
在Matlab環(huán)境下對(duì)并行實(shí)現(xiàn)的SM4算法功耗曲線進(jìn)行CPA分析,結(jié)果如圖4所示,橫軸表示采樣點(diǎn)數(shù),縱軸表示第一輪子密鑰最高字節(jié)密鑰與功耗的相關(guān)系數(shù)。從圖4可以看出,正確密鑰248(0xF8)與功耗的相關(guān)系數(shù)曲線上不存在明顯尖峰,說(shuō)明通過(guò)CPA方式不能獲取密鑰信息,并行實(shí)現(xiàn)的SM4算法具有抗CPA分析能力。
圖4 SM4算法并行實(shí)現(xiàn)正確密鑰與功耗相關(guān)系數(shù)曲線
為了更好地證明并行實(shí)現(xiàn)的SM4算法地抗CPA能力,將第一輪子密鑰最高字節(jié)所有256種猜測(cè)密鑰與功耗相關(guān)系數(shù)進(jìn)行對(duì)比,結(jié)果如圖5所示。從圖5可以發(fā)現(xiàn)所有的256種猜測(cè)密鑰與功耗相關(guān)系數(shù)均不存在明顯尖峰。進(jìn)一步說(shuō)明了并行實(shí)現(xiàn)的SM4算法具有抗CPA分析能力。
圖5 SM4算法并行實(shí)現(xiàn)所有猜測(cè)密鑰與功耗相關(guān)系數(shù)曲線
4.2 對(duì)串行實(shí)現(xiàn)的SM4算法的CPA攻擊
利用搭建的測(cè)試驗(yàn)證環(huán)境,采集10萬(wàn)條串行實(shí)現(xiàn)的SM4算法功耗曲線,其中一條曲線如圖6所示,橫軸表示采樣點(diǎn)數(shù),縱軸表示電壓值。
圖6 SM4算法串行實(shí)現(xiàn)功耗曲線
根據(jù)選擇的攻擊點(diǎn),只需關(guān)心第一輪加密運(yùn)算S盒操作所產(chǎn)生的功耗,為了提高分析效率,只截取了功耗曲線前2 000個(gè)采樣點(diǎn)。
在Matlab環(huán)境下對(duì)串行實(shí)現(xiàn)的SM4算法功耗曲線進(jìn)行CPA分析,得到結(jié)果如圖7和圖8所示,橫軸表示采樣點(diǎn)數(shù),縱軸表示第一輪子密鑰最高字節(jié)密鑰與功耗的相關(guān)系數(shù)。
圖7 SM4算法串行實(shí)現(xiàn)正確密鑰與功耗相關(guān)系數(shù)曲線
圖8 SM4算法串行實(shí)現(xiàn)所有猜測(cè)密鑰與功耗相關(guān)系數(shù)曲線
從圖7和圖8可以清晰看到,通過(guò)遍歷第一輪子密鑰最高字節(jié)的256種猜測(cè)密鑰,正確密鑰248(0xF8)與功耗的相關(guān)系數(shù)曲線存在最大尖峰,其他錯(cuò)誤的假設(shè)密鑰與功耗的相關(guān)系數(shù)曲線不存在尖峰。可見(jiàn),串行實(shí)現(xiàn)的SM4算法具有密鑰信息泄露情況,攻擊者可以通過(guò)CPA獲取密鑰信息,因此安全性較低。
通過(guò)對(duì)基于FPGA并行實(shí)現(xiàn)和串行實(shí)現(xiàn)的SM4算法的CPA攻擊實(shí)驗(yàn)結(jié)果進(jìn)行對(duì)比,可以發(fā)現(xiàn)密碼算法實(shí)現(xiàn)方式對(duì)其安全性有著顯著影響。并行實(shí)現(xiàn)方式比串行實(shí)現(xiàn)方式具有更高的安全性,這是由于密碼算法在并行實(shí)現(xiàn)過(guò)程中的運(yùn)行將產(chǎn)生更多的轉(zhuǎn)換噪聲,從而降低了攻擊者獲取的信號(hào)信噪比,提高了攻擊難度。
[1] 郭世澤,王韜,趙新杰.密碼旁路分析原理與方法[M].北京:科學(xué)出版社,2014. GUO Shi-ze,WANG Tao,ZHAO Xin-jie.Principles and Methodologies of Side-Channel Analysis in Cryptography[M].Beijing:Science press,2014.
[2] Stefan Mangard,Elisabeth Oswald,Thomas Popp. Power Analysis Attacks:Revealing the Secrets of Smart Cards[M].NewYork:Springer,2007.
[3] Kocher P,Jaffe J,Jun B.Differential Power Analysis[C]. Springer Berlin Heidelberg:Advances in Cryptology-CRYPTO'99,1999:388-397.
[4] Eric Brier,Christophe Clavier,F(xiàn)rancis Olivier.Correlation Power Analysis with a Leakage Model[C].CHES2004,LNCS3156,2004:16-19.
[5] 國(guó)家商用密碼管理辦公室.無(wú)線局域網(wǎng)產(chǎn)品使用用的SMS4密碼算法[Z].北京,2006:1-4. National Commercial Cipher Management Office.SMS4 Cipher Algorithm for Wireless Local Area Network Products[Z].Beijing,2006:1-4.
陳大釗(1986—),男,碩士,工程師,主要研究方向?yàn)槊艽a安全;
成 超(1983—),男,碩士,工程師,主要研究方向?yàn)樾畔踩?/p>
熊 峙(1973—),男,學(xué)士,高級(jí)工程師,主要研究方向?yàn)樾畔踩?/p>
王 津(1979—),男,學(xué)士,工程師,主要研究方向?yàn)樾畔踩?/p>
Security of Crypto Algorithms Implementation
CHEN Da-zhao1, CHENG Chao2, XIONG Zhi2, WANG Jin2
(1.Chengdu 30Javee Microelectronics Co., Ltd, Chengdu Sichuan 610041, China;2.PLA Unit 61569, Beijing 100071, China)
The security of cryptographic algorithm draws much attention from the people.In practical application, crypto algorithm is usually implemented in the environment such as software, hardware and physical devices. There exists an essential relation of between the security and practical application of crypto algorithm. SM4 algorithm is implemented on FPGA in different implementation modes, and CPA(Correlation Power Analysis) is also done on SM4 algorithm in different implementation modes, thus to evaluate the influence of different implementations on security. Simulation indicates that the parallel implementation of SM4 is mush better than serial implementation in security.
security of crypto algorithm; CPA; FPGA; security
TP309.7
A
1002-0802(2016)-10-1387-05
10.3969/j.issn.1002-0802.2016.10.023
2016-06-11;
2016-09-17
data:2016-06-11;Revised data:2016-09-17