《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 设计应用 > 抗故障攻击的专用芯片存储单元设计
抗故障攻击的专用芯片存储单元设计
来源:电子技术应用2011年第1期
朱巍巍, 严迎建, 段二朋
解放军信息工程大学 电子技术学院, 河南 郑州 450004
摘要: 在复用检测和线性校验码检测的基础上,提出互补存储、奇偶校验和汉明码校验三种存储单元的抗故障攻击防护方案。应用这三种方案,用硬件描述语言Verilog设计了三种抗故障攻击双端口RAM存储器,在Altera 公司的器件EP1C12Q240C8上予以实现。通过仿真验证,三种带故障检测的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密碼算法的私鑰存儲器中導入單比特故障的模型;Berzati等人[3]通過向模數(shù)N中導入故障成功獲得RSA密碼算法的私鑰。如何防護專用芯片中的存儲單元,抵抗故障攻擊成為專用芯片設計的一個重要方面。付小兵等人[4]利用奇偶校驗碼對128 bit的寄存器進行故障測驗,通過比較輸入數(shù)據(jù)與輸出數(shù)據(jù)中0的個數(shù)是否相等來檢測故障,這種方法對芯片性能影響較大,實時寄存數(shù)據(jù)時易造成誤判。Ocheretnij等人[5]利用奇偶校驗碼對ROM實現(xiàn)的S盒進行故障檢測,屬于固定表形式。Bar-El等人[2]提出復用比較的抗故障攻擊方案,但是不能夠檢測出同步對稱故障。
1 存儲單元的防護技術背景
    在抗故障攻擊的芯片設計中,存儲單元的常用防護措施是復用檢測和奇偶校驗碼檢測。復用檢測是指復制存儲單元,存儲數(shù)據(jù)時,把數(shù)據(jù)分別存儲在2個或多個存儲單元中;讀取數(shù)據(jù)時,把各個存儲單元中的數(shù)據(jù)讀出,通過比較讀取數(shù)據(jù)是否一致來檢測故障。奇偶校驗碼檢測是指為存儲數(shù)據(jù)添加奇偶校驗位,讀取數(shù)據(jù)時,重新計算數(shù)據(jù)的奇偶位,通過與原校驗位比對檢測故障。
    Ocheretnij等人[5] 把S盒設計為8進9出的查找表,附加位是奇偶校驗位。在故障監(jiān)測過程中,計算輸入的校驗和,并與所有S盒的附加位“異或”,即得經(jīng)S盒修正的奇偶校驗值。在此基礎上進一步設計了監(jiān)測AES輪運算的奇偶校驗機制,奇偶校驗碼原理簡單,使用方便,但是只能檢測奇數(shù)個故障,檢測概率低。隨著數(shù)據(jù)位數(shù)的增加,只簡單的進行奇偶校驗編碼將降低設計的性能。本文主要針對大數(shù)存儲器進行設計,但是防護方法同樣適用于寄存器、緩存器等存儲單元。
2 抗故障攻擊的存儲單元設計
2.1 互補存儲單元設計

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

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

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

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

    設:漢明編碼函數(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 功能驗證與分析
 設計實現(xiàn)了抗故障攻擊雙端口RAM存儲器,按字存儲,存儲深度為32 B。在均衡速度和面積的條件下,Quartus II6.0綜合結果如表1所示。

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

    根據(jù)以上分析,存儲單元的抗故障攻擊設計,適合采用復用或線性校驗碼的方式實現(xiàn),不僅具有較高的故障檢測概率,而且對設計的性能影響不大。本文提出的互補檢測、奇偶碼檢驗和漢明碼檢驗三種抗故障攻擊方案具有較廣的應用范圍,互補存儲單元適用于故障檢測率要求高和安全級別高的位置,奇偶校驗存儲單元適用于安全級別較低和隨機故障類型,漢明碼校驗存儲器適用于故障發(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密碼芯片設計[J].電子技術應用, 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].北京:北京航空航天大學出版社,2009.

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