《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > 抗故障攻擊的專用芯片存儲單元設(shè)計
抗故障攻擊的專用芯片存儲單元設(shè)計
來源:電子技術(shù)應(yīng)用2011年第1期
朱巍巍, 嚴迎建, 段二朋
解放軍信息工程大學(xué) 電子技術(shù)學(xué)院, 河南 鄭州 450004
摘要: 在復(fù)用檢測和線性校驗碼檢測的基礎(chǔ)上,提出互補存儲、奇偶校驗和漢明碼校驗三種存儲單元的抗故障攻擊防護方案。應(yīng)用這三種方案,用硬件描述語言Verilog設(shè)計了三種抗故障攻擊雙端口RAM存儲器,在Altera 公司的器件EP1C12Q240C8上予以實現(xiàn)。通過仿真驗證,三種帶故障檢測的RAM具有較高的故障檢測概率,而對硬件芯片性能影響不大。
中圖分類號: TP309.2
文獻標識碼: A
文章編號: 0258-7998(2011)01-0141-04
Special chip′s memory unit design to resistance fault attack
Zhu Weiwei, Yan Yingjian, Duan Erpeng
Institute of Electronic Technology, the PLA Information Engineering University, Zhengzhou 450004 China
Abstract: Based on duplication with comparison and linear code with comparison, three methods were used to thwart fault attack, those who called complementary register, parity detection and hamming code detection. And this paper design three kinds of duple RAM with these countermeasures by using hardware describe language verilog, realized in device EP1C12Q240C8 of Altera. And through modesim’s simulation and verification, it is proved that their fault detection rate is high but with little performance decreased.
Key words : fault attack; grouping detection; complementary register; parity detection; hamming code detection


    自1996年由Boneh等人[1]提出故障攻擊方法由簡單故障攻擊發(fā)展為差分故障攻擊、安全故障攻擊,攻擊的對象包括功能運算單元、存儲單元和狀態(tài)機,已對智能卡、密碼器件等專用芯片的安全造成很大威脅。其中,以存儲單元為對象建立的故障模型最為常用。Bar-El等人[2]建立向RSA密碼算法的私鑰存儲器中導(dǎo)入單比特故障的模型;Berzati等人[3]通過向模數(shù)N中導(dǎo)入故障成功獲得RSA密碼算法的私鑰。如何防護專用芯片中的存儲單元,抵抗故障攻擊成為專用芯片設(shè)計的一個重要方面。付小兵等人[4]利用奇偶校驗碼對128 bit的寄存器進行故障測驗,通過比較輸入數(shù)據(jù)與輸出數(shù)據(jù)中0的個數(shù)是否相等來檢測故障,這種方法對芯片性能影響較大,實時寄存數(shù)據(jù)時易造成誤判。Ocheretnij等人[5]利用奇偶校驗碼對ROM實現(xiàn)的S盒進行故障檢測,屬于固定表形式。Bar-El等人[2]提出復(fù)用比較的抗故障攻擊方案,但是不能夠檢測出同步對稱故障。
1 存儲單元的防護技術(shù)背景
    在抗故障攻擊的芯片設(shè)計中,存儲單元的常用防護措施是復(fù)用檢測和奇偶校驗碼檢測。復(fù)用檢測是指復(fù)制存儲單元,存儲數(shù)據(jù)時,把數(shù)據(jù)分別存儲在2個或多個存儲單元中;讀取數(shù)據(jù)時,把各個存儲單元中的數(shù)據(jù)讀出,通過比較讀取數(shù)據(jù)是否一致來檢測故障。奇偶校驗碼檢測是指為存儲數(shù)據(jù)添加奇偶校驗位,讀取數(shù)據(jù)時,重新計算數(shù)據(jù)的奇偶位,通過與原校驗位比對檢測故障。
    Ocheretnij等人[5] 把S盒設(shè)計為8進9出的查找表,附加位是奇偶校驗位。在故障監(jiān)測過程中,計算輸入的校驗和,并與所有S盒的附加位“異或”,即得經(jīng)S盒修正的奇偶校驗值。在此基礎(chǔ)上進一步設(shè)計了監(jiān)測AES輪運算的奇偶校驗機制,奇偶校驗碼原理簡單,使用方便,但是只能檢測奇數(shù)個故障,檢測概率低。隨著數(shù)據(jù)位數(shù)的增加,只簡單的進行奇偶校驗編碼將降低設(shè)計的性能。本文主要針對大數(shù)存儲器進行設(shè)計,但是防護方法同樣適用于寄存器、緩存器等存儲單元。
2 抗故障攻擊的存儲單元設(shè)計
2.1 互補存儲單元設(shè)計

    復(fù)用檢測是重要的抗故障攻擊設(shè)計技術(shù),具有故障檢測率高、設(shè)計簡單的優(yōu)點?;パa存儲單元在復(fù)用的基礎(chǔ),存儲的內(nèi)容是互反的,同時各自的存儲位置也是互反的,其結(jié)構(gòu)如圖1所示。

    故障檢測函數(shù)EDF(Error Detection Function)是互補存儲器兩個輸出的函數(shù),函數(shù)關(guān)系式為:
  
  顯然,當輸出XA和XA互反時,兩者每位的“異或”值恒為1,因此逐位相“與”的值恒為1。當兩者不互反時,判決位check值為0,表明存儲單元發(fā)生故障?;パa存儲結(jié)構(gòu)避免了簡單復(fù)用易受同步故障導(dǎo)入的攻擊,即向復(fù)用存儲單元的同一位置同時導(dǎo)入比特翻轉(zhuǎn)故障。
2.2 奇偶校驗存儲單元設(shè)計
    根據(jù)參考文獻[5]對S盒防護的策略,設(shè)計“在線”奇偶校驗編碼的大數(shù)存儲器。存儲單元的每個位置設(shè)計存儲一個字和一個校驗位,即33 bit。存儲數(shù)據(jù)時,數(shù)據(jù)先輸入校驗位編碼器PDC(Parity Detection Coder),獲得輸入字的校驗位,輸入字與校驗位合并存儲在存儲單元的一個位置。讀取數(shù)據(jù)時,輸出字和校驗位同時輸入PDC,計算所讀取數(shù)據(jù)(33 bit)的校驗值,獲得判決位check,由check檢測存儲器的故障。奇偶檢驗存儲單元結(jié)構(gòu)如圖2所示。

    奇偶校驗編碼過程為逐位“異或”,PDC的輸入輸出函數(shù)為:
    
    輸出check=1,表明讀取數(shù)據(jù)與原數(shù)據(jù)不相符,即發(fā)生故障;若check=0,表明存儲單元可能無故障發(fā)生。奇偶校驗碼的故障檢測范圍僅限于奇數(shù)個故障位。由于碼間的最小距離越大,糾檢錯能力越強[6]。增加校驗位數(shù)能夠加大碼的最小距離,也就能夠提高故障檢測能力。結(jié)合字節(jié)故障模型,采取分組奇偶校驗方法,把輸入字分為4個字節(jié),設(shè)置8個奇偶校驗位,每個校驗位檢測4個字節(jié)中的一個比特,能夠有效抵抗故障攻擊。

    編碼時,按校驗關(guān)系式計算出P0、P1、P2、P3,置于信息位之后;譯碼時,用監(jiān)督矩陣乘以碼字,得S值,若S不等于0,則碼字中存在故障比特;反之,可能無故障發(fā)生。
    漢明碼的監(jiān)測范圍是8 bit,采用分組漢明碼檢測的設(shè)計方法,把輸入字分為4個字節(jié),對每一個字節(jié)分別進行漢明編碼,共得四組16 bit監(jiān)督位。為了減小所需存儲空間,把四組監(jiān)督位的對應(yīng)位分別“異或”,獲得一組總監(jiān)督位(4 bit),并與輸入字合并存儲在一個地址中。漢明碼檢測器HDC(Hamming Detection Coder)的設(shè)計結(jié)構(gòu)如圖3所示。

    設(shè):漢明編碼函數(shù)為P=H(x),x∈[0,28-1],P∈[0,11],P′為存儲單元中存儲的總監(jiān)督位,對輸入字進行漢明編碼后的總監(jiān)督位和讀取數(shù)據(jù)的校驗子、判決位分別為:

    輸出check=1,表明存儲單元中的某個字節(jié)發(fā)生故障;若check=0,則可能無故障發(fā)生。假如4個字節(jié)中發(fā)生對稱故障時,則check=0,不能正確反映故障發(fā)生情況。
3 功能驗證與分析
 設(shè)計實現(xiàn)了抗故障攻擊雙端口RAM存儲器,按字存儲,存儲深度為32 B。在均衡速度和面積的條件下,Quartus II6.0綜合結(jié)果如表1所示。

 在互補檢測、1位奇偶碼校驗、4位奇偶碼校驗和漢明碼檢驗防護方案中,互補檢測RAM的故障檢測概率最高。當奇偶校驗位增加時,故障檢測概率也會隨之增大,以一個字節(jié)的故障檢測情況進行仿真統(tǒng)計,4位奇偶校驗位數(shù)的故障檢測率是0.937 2,比1位奇偶位的故障檢測率提高了80%,但是僅增加了約0.9%的存儲負擔。權(quán)衡兩者利弊,4位奇偶校驗位檢測方案更可取。漢明碼的故障檢測能力與4位奇偶校驗碼相同,但是漢明碼能夠檢測單個字節(jié)中的兩個任意故障和連續(xù)發(fā)生的故障,故障檢測范圍更具有針對性,適用于以字節(jié)故障為模型的抗故障攻擊設(shè)計。漢明碼檢測RAM在Modesim中的仿真波形如圖4所示,check是高電平時表示發(fā)生故障,單個字節(jié)中的連續(xù)故障及其他不屬于對稱故障的多比特故障都能夠檢測出來。

    根據(jù)以上分析,存儲單元的抗故障攻擊設(shè)計,適合采用復(fù)用或線性校驗碼的方式實現(xiàn),不僅具有較高的故障檢測概率,而且對設(shè)計的性能影響不大。本文提出的互補檢測、奇偶碼檢驗和漢明碼檢驗三種抗故障攻擊方案具有較廣的應(yīng)用范圍,互補存儲單元適用于故障檢測率要求高和安全級別高的位置,奇偶校驗存儲單元適用于安全級別較低和隨機故障類型,漢明碼校驗存儲器適用于故障發(fā)生較集中、連續(xù)的場合。而且,同時存儲校驗位與數(shù)據(jù)位,實現(xiàn)了實時的故障檢測功能,避免了數(shù)據(jù)存儲讀取變換時的誤判行為。
參考文獻
[1] BONEH D, DEMILLO R A, LIPTON R J. On the importance of checking cryptographic protocols for faults,Advances in cryptology-EUROCRYPT′97 (W. Fumy,ed.)[J].Lecture Notes in Computer Science,Springer-Verlag,1997(1233): 37-51.
[2] HAGAI B E, CHOUKRI H, NACCACHE D, et al. The sorcerer′sapprentice guide to fault attacks[C].Cryptology ePrint  Archive, 2004.
[3] BERZATI A,CANOVASL C, GOUBIN L. Perturbating RSA public keys: An Improved Attack[C]. CHES 2008, LNCS 5154,2008.
[4] 付小兵,嚴迎建,朱巍巍.抗差分故障攻擊的AES密碼芯片設(shè)計[J].電子技術(shù)應(yīng)用, 2009,39(5):153-156.
[5] OCHERETNIJ V, KOUZNETSOV G R, KARRI M G. On-line error detection and BIST for the AES encryption algorithm with Different S-Box Implementations.IEEE 2005.
[6] 趙琦,劉榮科.編碼理論[M].北京:北京航空航天大學(xué)出版社,2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。