王 松,陳 曼,韓煉冰,段俊紅,劉鴻博
(中國電子科技集團(tuán)公司第三十研究所,四川成都610041)
FPGA上抗側(cè)信道攻擊的密碼算法實(shí)現(xiàn)*
王 松,陳 曼,韓煉冰,段俊紅,劉鴻博
(中國電子科技集團(tuán)公司第三十研究所,四川成都610041)
密碼算法在運(yùn)行時(shí)可能會(huì)受到側(cè)信道攻擊,抗側(cè)信道攻擊的FPGA密碼算法實(shí)現(xiàn)是目前研究的一個(gè)熱點(diǎn)。通過隨機(jī)數(shù)保護(hù)關(guān)鍵數(shù)據(jù)的S盒移位掩碼法被認(rèn)為是一種有效的防御手段。采用該方式實(shí)現(xiàn)的密碼算法在提高運(yùn)行安全性的同時(shí),可能會(huì)帶來硬件資源開銷的增加及加解密速度的降低。通過對(duì)SM4算法的實(shí)現(xiàn)表明,采用合適的實(shí)現(xiàn)方式時(shí)S盒移位掩碼法抗側(cè)信道攻擊實(shí)現(xiàn)對(duì)算法硬件資源開銷及加解密速度影響不是太大,具有一定的實(shí)用價(jià)值。
側(cè)信道密碼分析 FPGA 實(shí)現(xiàn)
密碼算法是信息安全的關(guān)鍵技術(shù)之一,成熟的密碼算法在數(shù)學(xué)理論上都具有很強(qiáng)的安全性,然而在密碼算法實(shí)際運(yùn)行時(shí),硬件電路會(huì)泄漏出與邏輯0和邏輯1相關(guān)的電磁輻射、功耗波動(dòng)等側(cè)信道信息。密碼算法的側(cè)信道攻擊就是指利用這些泄露出來的側(cè)信道信息,再利用密碼學(xué)、統(tǒng)計(jì)學(xué)原理,分析和破譯密鑰信息[1]。國內(nèi)外對(duì)側(cè)信道攻擊技術(shù)的研究已經(jīng)取得非常大的進(jìn)展,發(fā)展出了一系列的分析方式,如功耗分析,電磁分析和時(shí)間分析等,其中比較成熟有效的側(cè)信道分析方式是功耗分析技術(shù),主要有簡(jiǎn)單功耗分析(SPA,Simple Power Analysis)和差分功耗分析(DPA,Differential Power Analysis)以及高階功耗分析((Ho-DPA,High order Differential Power Analysis)[2]。
隨著密碼算法側(cè)信道攻擊技術(shù)的提高,對(duì)應(yīng)的抗側(cè)信道攻擊技術(shù)也在與時(shí)俱進(jìn)的發(fā)展。目前基于FPGA抗側(cè)信道攻擊密碼算法實(shí)現(xiàn)的方法有時(shí)鐘擾亂法、高頻電路法、寬總線查表法和掩碼法等。掩碼法又分為S盒計(jì)算掩碼法和S盒移位掩碼法。
時(shí)鐘擾亂法通過時(shí)鐘頻率的隨機(jī)變化來對(duì)功耗進(jìn)行擾亂,使得攻擊者無法將時(shí)鐘信號(hào)和功耗曲線對(duì)準(zhǔn),隱藏密碼算法運(yùn)行的內(nèi)部信息,達(dá)到抗側(cè)信道攻擊的目的。高頻電路法的原理是通過提高芯片的工作頻率使得攻擊者準(zhǔn)確找到注入點(diǎn)進(jìn)行側(cè)信道分析的難度加大。寬總線設(shè)計(jì)法通過增加S盒輸入輸出位寬使得攻擊者遍歷密鑰比特串的復(fù)雜度呈指數(shù)增長(zhǎng)。S盒計(jì)算掩碼法要求S盒是由有限域上的求逆運(yùn)算或仿射變換等方式構(gòu)成,其原理是在S盒求逆等運(yùn)算中加入保護(hù)措施。S盒移位掩碼法通過加入隨機(jī)數(shù)掩碼并改變S盒中數(shù)據(jù)的存儲(chǔ)順序使得側(cè)信道攻擊時(shí)對(duì)功耗曲線的分析困難,從而達(dá)到抗側(cè)信道攻擊的目的。
隨著示波器等能量分析設(shè)備精度提高,時(shí)鐘擾亂法、高頻電路法已經(jīng)不再安全。寬總線查表法的安全性依賴于計(jì)算的復(fù)雜度,然而隨著計(jì)算機(jī)性能的提升,寬總線查表法也越來越不安全。S盒計(jì)算法要求S盒是由某種運(yùn)算產(chǎn)生,其應(yīng)用場(chǎng)景受限。S盒移位掩碼法目前還沒有特別明顯的缺陷,是當(dāng)前的一個(gè)研究熱點(diǎn)。本文以分組密碼算法SM4的實(shí)現(xiàn)為例比較了S盒移位掩碼法與傳統(tǒng)不具有抗側(cè)信道攻擊能力的實(shí)現(xiàn)方法在資源開銷和加解密速度方面的差異,并分析了S盒移位掩碼法在工程實(shí)現(xiàn)上的實(shí)用性。
在分組密碼算法中,其加解密或密鑰擴(kuò)展輪函數(shù)Y=R(x)總能表示成Y=L(S(x))的形式,其中L(.)表示密碼算法輪函數(shù)中的線性運(yùn)算部分,S(.)表示密碼算法輪函數(shù)中的非線性運(yùn)算部分,即通常說的S盒。S盒的設(shè)計(jì)直接決定了密碼算法的抗側(cè)信道攻擊能力[3]。S盒移位掩碼法通過對(duì)S盒中原始數(shù)據(jù)與掩蓋隨機(jī)數(shù)m進(jìn)行異或掩蓋,并隨機(jī)化S盒的存儲(chǔ)位置來保護(hù)S盒查表輸出結(jié)果,使得側(cè)信道攻擊者無法直接得到S盒中的原始數(shù)據(jù),能有效的阻止對(duì)密碼算法運(yùn)行時(shí)的側(cè)信道攻擊[4]。假設(shè)一個(gè)分組密碼算法中S盒中有k個(gè)數(shù)據(jù),輪運(yùn)算次數(shù)為j,Si為第i輪的S盒,表1描述了該S盒采用S盒移位掩碼法實(shí)現(xiàn)后的結(jié)果。
表1 S盒移位掩碼法的實(shí)現(xiàn)Table 1 One way of masking schemes
從表1中可以看出,密碼算法每輪運(yùn)算使用的S盒都被不同的隨機(jī)數(shù)掩蓋保護(hù),使得運(yùn)行時(shí)每輪運(yùn)算產(chǎn)生的電磁輻射或功耗等側(cè)信道信息都不相同,增加了分析的復(fù)雜度。即使攻擊者解析出了中間某一輪運(yùn)算數(shù)據(jù),也不能直接得到其它運(yùn)算輪次的輸出信息。
在FPGA平臺(tái)上采用傳統(tǒng)不具有抗側(cè)信道攻擊能力的方法實(shí)現(xiàn)密碼算法時(shí),S盒中的數(shù)據(jù)一般按照S(0),S(1)…S(k-2)S(k-1)的方式順序從低地址到高地址依次存放。采用S盒掩碼法實(shí)現(xiàn)時(shí),S盒中的數(shù)據(jù)被掩蓋隨機(jī)數(shù)m掩蓋并改變存儲(chǔ)順序,第i(i≠0)輪從低地址到高地址的存儲(chǔ)順序變?yōu)镾(L(m(i-1))^0),S(L(m(i-1))^1)…S(L(m(i-1))^(k-1))。
在FPGA中采用傳統(tǒng)不具備抗側(cè)信道攻擊能力的方式實(shí)現(xiàn)密碼算法時(shí),一般會(huì)復(fù)用密碼算法的輪運(yùn)算單元,資源占用開銷與算法的運(yùn)算輪數(shù)沒有太大關(guān)系。
采用S盒掩碼法實(shí)現(xiàn)時(shí),由于每輪運(yùn)算的S盒數(shù)據(jù)被不同的隨機(jī)數(shù)掩蓋且存儲(chǔ)順序不同,輪運(yùn)算模塊不能直接復(fù)用。具體實(shí)現(xiàn)時(shí)可以有以下三種實(shí)現(xiàn)方式。
方式一、每輪運(yùn)算完成時(shí),對(duì)S盒中的數(shù)據(jù)采用下一輪的掩蓋隨機(jī)數(shù)重新掩蓋并按照新的順序存儲(chǔ)到存儲(chǔ)塊中,再開始下一輪的運(yùn)算。
方式二、設(shè)計(jì)兩倍的S盒存儲(chǔ)塊,一份存儲(chǔ)塊存儲(chǔ)當(dāng)前正在使用的S盒,另一份存儲(chǔ)塊存儲(chǔ)下一輪將要使用的S盒。算法運(yùn)行時(shí)兩份存儲(chǔ)塊采用乒乓操作實(shí)現(xiàn)S盒的使用和更新,即算法在使用其中一份存儲(chǔ)塊中的S盒進(jìn)行加解密運(yùn)算時(shí),另一份存儲(chǔ)塊中的S盒可以同時(shí)進(jìn)行數(shù)據(jù)的更新,為下一輪的運(yùn)算做準(zhǔn)備。
方式三、按照密碼算法的運(yùn)算輪數(shù)實(shí)現(xiàn)多個(gè)輪運(yùn)算模塊。算法初始化時(shí),每個(gè)輪運(yùn)算模塊中的S盒分別使用對(duì)應(yīng)的隨機(jī)數(shù)進(jìn)行掩蓋。算法運(yùn)行時(shí)直接使用已經(jīng)掩蓋好的S盒。采用該方式實(shí)現(xiàn)的S盒只有在更換掩蓋隨機(jī)數(shù)或更新S盒參數(shù)時(shí)才需要對(duì)S盒重新初始化。
密碼算法實(shí)現(xiàn)時(shí),S盒一般由FPGA內(nèi)部的雙口RAM實(shí)現(xiàn),設(shè)S盒的數(shù)據(jù)位寬為n,存儲(chǔ)塊完成一次數(shù)據(jù)更新至少需要2n/2個(gè)時(shí)鐘周期。比如位寬為8位的S盒,完成一次更新至少需要28/2=128個(gè)時(shí)鐘周期。
方式一實(shí)現(xiàn)的密碼算法每輪運(yùn)算完成后需要消耗2n/2個(gè)時(shí)鐘周期進(jìn)行S盒數(shù)據(jù)更新,密碼算法的加解密速度將嚴(yán)重下降,在實(shí)際工程實(shí)現(xiàn)中不具有實(shí)用性。
方式二實(shí)現(xiàn)的密碼算法由于采用了乒乓操作,密碼算法輪運(yùn)算和下一輪的S盒數(shù)據(jù)更新可以同時(shí)進(jìn)行,然而通常情況下密碼算法的輪運(yùn)算僅需要幾個(gè)時(shí)鐘即可完成運(yùn)算,算法運(yùn)行的瓶頸還是在數(shù)據(jù)更新上。每輪運(yùn)算依然至少需要2n/2個(gè)時(shí)鐘周期,該方法依然不具有實(shí)用性。
方式三將每個(gè)輪運(yùn)算模塊的S盒在算法初始化時(shí)預(yù)先一次性置入。采用這種方式實(shí)現(xiàn)的密碼算法由于在運(yùn)行時(shí)不再需要更新S盒中的數(shù)據(jù),不會(huì)增加時(shí)鐘開銷。在資源開銷方面,由于了輪運(yùn)算模塊被實(shí)現(xiàn)了多份,FPGA中寄存器、查找表和存儲(chǔ)塊等硬件資源的開銷會(huì)與算法輪數(shù)成正比增加。假設(shè)待實(shí)現(xiàn)的密碼算法有n次輪運(yùn)算,采用方式三實(shí)現(xiàn)時(shí)硬件電路原理圖如圖1所示。
圖1 采用方式三實(shí)現(xiàn)的硬件電路原理Fig.1 Schematic circuit diagram in method three
從圖1中可以看到,采用方式三實(shí)現(xiàn)的硬件電路中每個(gè)輪運(yùn)算模塊完成一次輪運(yùn)算的處理,上一個(gè)輪運(yùn)算模塊的輸出結(jié)果直接進(jìn)入到下一個(gè)輪運(yùn)算模塊中繼續(xù)處理,直到完成所有的輪運(yùn)算。最后一個(gè)輪運(yùn)算模塊的輸出結(jié)果由輸出處理模塊做一次去掩碼處理后即可得到加解密的結(jié)果。
SM4抗側(cè)信道攻擊實(shí)現(xiàn)選用的FPGA芯片型號(hào)為Atera公司的EP3SE50F484C4,編譯器及版本為Quartus II 11.1(32-Bit),仿真軟件及版本為Modelsim SE 6.5。
作為比對(duì)樣本的常規(guī)實(shí)現(xiàn)方式電路在硬件設(shè)計(jì)上僅實(shí)現(xiàn)一個(gè)輪運(yùn)算單元,其硬件電路原理圖如圖2所示。
圖2 采用常規(guī)方式實(shí)現(xiàn)的硬件電路原理Fig.2 Schematic circuit diagram in customarily
圖2所示中硬件電路加解密數(shù)據(jù)時(shí),算法核循環(huán)調(diào)用輪運(yùn)算模塊,并通過計(jì)數(shù)器對(duì)輪運(yùn)算的次數(shù)進(jìn)行計(jì)數(shù),當(dāng)完成指定次數(shù)的輪運(yùn)算后,輸出加解密后的數(shù)據(jù)。
FPGA中算法運(yùn)行的理論最大處理速度可用公式V=(W/N)×F計(jì)算。F為算法在FPGA中運(yùn)行的理論最高工作頻率,N為待加解密數(shù)據(jù)從輸入算法核到完成加解密后輸出算法核所消耗的時(shí)鐘周期數(shù),W為每次運(yùn)算處理的分組長(zhǎng)度[5]。算法的硬件資源消耗及理論最高工作頻率情況由編譯器給出。實(shí)驗(yàn)結(jié)果如表2所示。
表2 實(shí)驗(yàn)結(jié)果Table 2 Experiment result
表2中各項(xiàng)數(shù)據(jù)后面百分比指的是該資源消耗量占芯片中此類資源總量的比例。從測(cè)試數(shù)據(jù)可以看出采用方式三實(shí)現(xiàn)的密碼算法對(duì)算法的加解密速度影響不大。查找表和存儲(chǔ)資源開銷較大,主要是由于采用方式三實(shí)現(xiàn)密碼算法時(shí)將硬件電路進(jìn)行了展開從而增加了資源開銷,但從占芯片資源總量百分比來看,占整個(gè)芯片資源的總量比例并不高。
此外,采用方式三實(shí)現(xiàn)的硬件電路在處理ECB模式的密碼算法時(shí)還可以按照流水的方式處理,進(jìn)一步提高算法的加解密性能。
抗側(cè)信道攻擊的密碼算法實(shí)現(xiàn)是今后密碼算法實(shí)現(xiàn)的一個(gè)趨勢(shì)。采用抗側(cè)信道攻擊方式實(shí)現(xiàn)的密碼算法在滿足抗側(cè)信道攻擊的同時(shí),在硬件開銷和加解密性能上還必須具有可用性。對(duì)SM4算法的實(shí)驗(yàn)表明采用圖1方式實(shí)現(xiàn)的S盒移位掩碼法抗側(cè)信道攻擊實(shí)現(xiàn)方式合理,對(duì)算法的加解密速度沒有太大影響。硬件資源的開銷與傳統(tǒng)不具有抗側(cè)信道攻擊能力的算法實(shí)現(xiàn)方式相比有較大增加,但占整個(gè)芯片資源的總量比例并不大,當(dāng)芯片資源較富余時(shí)具有較大的實(shí)用價(jià)值。
[1] 成為,谷大武,郭箏,等.一種針對(duì)RSA-CRT的功耗分析攻擊方法[J].通信技術(shù),2011,44(06):123-125, 128.
CHENG Wei,GU Da-wu,GUO Zheng,ZHANG Lei.A Power Analysis Attack Against RSA-CRT[J].Communications Technology,2011(06):123-125,128.
[2] 陳廷定.密碼芯片的側(cè)信道安全性分析和量化評(píng)估[D].濟(jì)南:山東大學(xué),2010.
CHEN Yan-ding.Analysis and Quantitative Evaluation of Side Channel Security on Crypto Chips[D].Jinan:Shandong university,2010.
[3] 常小龍,丁國良,武翠霞,等.抗電磁側(cè)信道攻擊的AESS盒設(shè)計(jì)[J].計(jì)算機(jī)工程,2011(17):93-95.
CHANG Xiao-long,DING Guo-liang,WU Cui-xia,et al.Design of AES S-box Against Electromagnetic Sidechannel Attacks[J].Computer Engineering,2011(17): 93-95.
[4] 彭濤,王栓杰,席偉,等.FPGA密碼芯片改進(jìn)掩碼防護(hù)方法研究[J].信息技術(shù),2011(11):31-33.
PENG Tao,WANG Shuanjie,XI Wei,et al.Research on Improved Masking Technique based on FPGA Cryptographic chip[J].Information Technology,2011(11):31-33.
[5] 王松,韓煉冰,段俊紅.布爾函數(shù)法實(shí)現(xiàn)S盒在FPGA中的應(yīng)用[J].信息安全與通信保密,2013(09):90-91.
WANG Song,HAN Lian-bing,DUAN Jun-hong.Application of Implement S Box in FPGA Based on Boolean Function[J].Information Security and Communications Privacy,2013(9):90-91.
WANG Song(1985-),male,B.Sci.,engineer,majoring in embedded system and communications security technology.
陳 曼(1988—),女,碩士,工程師,主要研究方向?yàn)樾畔踩?
CHEN Man(1988-),female,M.Sci.,engineer,majoring in information security.
韓煉冰(1984—),男,學(xué)士,工程師,主要研究方向?yàn)榍度胧较到y(tǒng)、通信安全技術(shù);
HAN Lian-bing(1984-),male,B.Sci.,engineer,majoring in embedded system,and communications security technology.
段俊紅(1984—),男,學(xué)士,工程師,主要研究方向?yàn)榍度胧较到y(tǒng)、通信安全技術(shù);
DUAN Jun-hong(1984-),male,B.Sci.,engineer,majoring in embedded system,and communications security technology.
劉鴻博(1981—),女,學(xué)士,工程師,主要研究方向?yàn)樾畔踩?/p>
LIU Hong-bo(1981-),female,B.Sci.,engineer,majoring in information security.
Side-Channel Resistance Implementation for FPGA
WANG Song,CHEN Man,HAN Lian-bing,DUAN Jun-hong,LIU Hong-bo
(NO.30 Institute of CETC,Chengdu Sichuan 610041,China)
As the cryptographic algorithm is vulnerable to side-channel analysis during its operation,sidechannel resistance implementation for FPGA now becomes a hotspot of study.To counter this analysis, masking scheme in randomizing key-dependent data by addition of one or several random value(s)(the masks)is usually involved.This method may increase the hardware overhead and reduce the work efficiency while improving the security.SM4 implemented on an Altera FPGA by using certain masking scheme with location randomization indicates that the masking scheme does have certain influence on hardware overhead and work efficiency,but this is acceptable when area cost is not strictly limited.Experiment indicates that this masking scheme is of practical value in implementing crypto algorithm.
side-channel cryptanalysis;FPGA;implementation
TN791
A
1002-0802(2014)09-1100-04
10.3969/j.issn.1002-0802.2014.09.025
王 松(1985—),男,學(xué)士,工程師,主要研究方向?yàn)榍度胧较到y(tǒng)、通信安全技術(shù);
2014-06-11;
2014-07-28 Received date:2014-06-11;Revised date:2014-07-28