《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 抗故障攻擊的專用芯片存儲(chǔ)單元設(shè)計(jì)
抗故障攻擊的專用芯片存儲(chǔ)單元設(shè)計(jì)
來(lái)源:電子技術(shù)應(yīng)用2011年第1期
朱巍巍, 嚴(yán)迎建, 段二朋
解放軍信息工程大學(xué) 電子技術(shù)學(xué)院, 河南 鄭州 450004
摘要: 在復(fù)用檢測(cè)和線性校驗(yàn)碼檢測(cè)的基礎(chǔ)上,提出互補(bǔ)存儲(chǔ)、奇偶校驗(yàn)和漢明碼校驗(yàn)三種存儲(chǔ)單元的抗故障攻擊防護(hù)方案。應(yīng)用這三種方案,用硬件描述語(yǔ)言Verilog設(shè)計(jì)了三種抗故障攻擊雙端口RAM存儲(chǔ)器,在Altera 公司的器件EP1C12Q240C8上予以實(shí)現(xiàn)。通過(guò)仿真驗(yàn)證,三種帶故障檢測(cè)的RAM具有較高的故障檢測(cè)概率,而對(duì)硬件芯片性能影響不大。
中圖分類號(hào): TP309.2
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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]提出故障攻擊方法由簡(jiǎn)單故障攻擊發(fā)展為差分故障攻擊、安全故障攻擊,攻擊的對(duì)象包括功能運(yùn)算單元、存儲(chǔ)單元和狀態(tài)機(jī),已對(duì)智能卡、密碼器件等專用芯片的安全造成很大威脅。其中,以存儲(chǔ)單元為對(duì)象建立的故障模型最為常用。Bar-El等人[2]建立向RSA密碼算法的私鑰存儲(chǔ)器中導(dǎo)入單比特故障的模型;Berzati等人[3]通過(guò)向模數(shù)N中導(dǎo)入故障成功獲得RSA密碼算法的私鑰。如何防護(hù)專用芯片中的存儲(chǔ)單元,抵抗故障攻擊成為專用芯片設(shè)計(jì)的一個(gè)重要方面。付小兵等人[4]利用奇偶校驗(yàn)碼對(duì)128 bit的寄存器進(jìn)行故障測(cè)驗(yàn),通過(guò)比較輸入數(shù)據(jù)與輸出數(shù)據(jù)中0的個(gè)數(shù)是否相等來(lái)檢測(cè)故障,這種方法對(duì)芯片性能影響較大,實(shí)時(shí)寄存數(shù)據(jù)時(shí)易造成誤判。Ocheretnij等人[5]利用奇偶校驗(yàn)碼對(duì)ROM實(shí)現(xiàn)的S盒進(jìn)行故障檢測(cè),屬于固定表形式。Bar-El等人[2]提出復(fù)用比較的抗故障攻擊方案,但是不能夠檢測(cè)出同步對(duì)稱故障。
1 存儲(chǔ)單元的防護(hù)技術(shù)背景
    在抗故障攻擊的芯片設(shè)計(jì)中,存儲(chǔ)單元的常用防護(hù)措施是復(fù)用檢測(cè)和奇偶校驗(yàn)碼檢測(cè)。復(fù)用檢測(cè)是指復(fù)制存儲(chǔ)單元,存儲(chǔ)數(shù)據(jù)時(shí),把數(shù)據(jù)分別存儲(chǔ)在2個(gè)或多個(gè)存儲(chǔ)單元中;讀取數(shù)據(jù)時(shí),把各個(gè)存儲(chǔ)單元中的數(shù)據(jù)讀出,通過(guò)比較讀取數(shù)據(jù)是否一致來(lái)檢測(cè)故障。奇偶校驗(yàn)碼檢測(cè)是指為存儲(chǔ)數(shù)據(jù)添加奇偶校驗(yàn)位,讀取數(shù)據(jù)時(shí),重新計(jì)算數(shù)據(jù)的奇偶位,通過(guò)與原校驗(yàn)位比對(duì)檢測(cè)故障。
    Ocheretnij等人[5] 把S盒設(shè)計(jì)為8進(jìn)9出的查找表,附加位是奇偶校驗(yàn)位。在故障監(jiān)測(cè)過(guò)程中,計(jì)算輸入的校驗(yàn)和,并與所有S盒的附加位“異或”,即得經(jīng)S盒修正的奇偶校驗(yàn)值。在此基礎(chǔ)上進(jìn)一步設(shè)計(jì)了監(jiān)測(cè)AES輪運(yùn)算的奇偶校驗(yàn)機(jī)制,奇偶校驗(yàn)碼原理簡(jiǎn)單,使用方便,但是只能檢測(cè)奇數(shù)個(gè)故障,檢測(cè)概率低。隨著數(shù)據(jù)位數(shù)的增加,只簡(jiǎn)單的進(jìn)行奇偶校驗(yàn)編碼將降低設(shè)計(jì)的性能。本文主要針對(duì)大數(shù)存儲(chǔ)器進(jìn)行設(shè)計(jì),但是防護(hù)方法同樣適用于寄存器、緩存器等存儲(chǔ)單元。
2 抗故障攻擊的存儲(chǔ)單元設(shè)計(jì)
2.1 互補(bǔ)存儲(chǔ)單元設(shè)計(jì)

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

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

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

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

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

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

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

    根據(jù)以上分析,存儲(chǔ)單元的抗故障攻擊設(shè)計(jì),適合采用復(fù)用或線性校驗(yàn)碼的方式實(shí)現(xiàn),不僅具有較高的故障檢測(cè)概率,而且對(duì)設(shè)計(jì)的性能影響不大。本文提出的互補(bǔ)檢測(cè)、奇偶碼檢驗(yàn)和漢明碼檢驗(yàn)三種抗故障攻擊方案具有較廣的應(yīng)用范圍,互補(bǔ)存儲(chǔ)單元適用于故障檢測(cè)率要求高和安全級(jí)別高的位置,奇偶校驗(yàn)存儲(chǔ)單元適用于安全級(jí)別較低和隨機(jī)故障類型,漢明碼校驗(yàn)存儲(chǔ)器適用于故障發(fā)生較集中、連續(xù)的場(chǎng)合。而且,同時(shí)存儲(chǔ)校驗(yàn)位與數(shù)據(jù)位,實(shí)現(xiàn)了實(shí)時(shí)的故障檢測(cè)功能,避免了數(shù)據(jù)存儲(chǔ)讀取變換時(shí)的誤判行為。
參考文獻(xiàn)
[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] 付小兵,嚴(yán)迎建,朱巍巍.抗差分故障攻擊的AES密碼芯片設(shè)計(jì)[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)載。