新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 抗故障攻擊的專用芯片存儲單元設計

        抗故障攻擊的專用芯片存儲單元設計

        作者: 時間:2017-06-05 來源:網絡 收藏

        自1996年由Boneh等人[1]提出故障攻擊方法由簡單故障攻擊發展為差分故障攻擊、安全故障攻擊,攻擊的對象包括功能運算單元、和狀態機,已對智能卡、密碼器件等專用芯片的安全造成很大威脅。其中,以為對象建立的故障模型最為常用。Bar-El等人[2]建立向RSA密碼算法的私鑰存儲器中導入單比特故障的模型;Berzati等人[3]通過向模數N中導入故障成功獲得RSA密碼算法的私鑰。如何防護專用芯片中的,抵抗故障攻擊成為專用芯片設計的一個重要方面。付小兵等人[4]利用奇偶校驗碼對128 bit的寄存器進行故障測驗,通過比較輸入數據與輸出數據中0的個數是否相等來檢測故障,這種方法對芯片性能影響較大,實時寄存數據時易造成誤判。Ocheretnij等人[5]利用奇偶校驗碼對ROM實現的S盒進行故障檢測,屬于固定表形式。Bar-El等人[2]提出復用比較的抗故障攻擊方案,但是不能夠檢測出同步對稱故障。

        1 存儲單元的防護技術背景

        在抗故障攻擊的芯片設計中,存儲單元的常用防護措施是復用檢測和奇偶校驗碼檢測。復用檢測是指復制存儲單元,存儲數據時,把數據分別存儲在2個或多個存儲單元中;讀取數據時,把各個存儲單元中的數據讀出,通過比較讀取數據是否一致來檢測故障。奇偶校驗碼檢測是指為存儲數據添加奇偶校驗位,讀取數據時,重新計算數據的奇偶位,通過與原校驗位比對檢測故障。

        Ocheretnij等人[5] 把S盒設計為8進9出的查找表,附加位是奇偶校驗位。在故障監測過程中,計算輸入的校驗和,并與所有S盒的附加位“異或”,即得經S盒修正的奇偶校驗值。在此基礎上進一步設計了監測AES輪運算的奇偶校驗機制,奇偶校驗碼原理簡單,使用方便,但是只能檢測奇數個故障,檢測概率低。隨著數據位數的增加,只簡單的進行奇偶校驗編碼將降低設計的性能。本文主要針對大數存儲器進行設計,但是防護方法同樣適用于寄存器、緩存器等存儲單元。

        2 抗故障攻擊的存儲單元設計

        2.1 互補存儲單元設計

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

        本文引用地址:http://www.104case.com/article/201706/349234.htm


        故障檢測函數EDF(Error Detection Function)是互補存儲器兩個輸出的函數,函數關系式為:

        顯然,當輸出XA和XA互反時,兩者每位的“異或”值恒為1,因此逐位相“與”的值恒為1。當兩者不互反時,判決位check值為0,表明存儲單元發生故障。互補存儲結構避免了簡單復用易受同步故障導入的攻擊,即向復用存儲單元的同一位置同時導入比特翻轉故障。

        2.2 奇偶校驗存儲單元設計

        根據參考文獻[5]對S盒防護的策略,設計“在線”奇偶校驗編碼的大數存儲器。存儲單元的每個位置設計存儲一個字和一個校驗位,即33 bit。存儲數據時,數據先輸入校驗位編碼器PDC(Parity Detection Coder),獲得輸入字的校驗位,輸入字與校驗位合并存儲在存儲單元的一個位置。讀取數據時,輸出字和校驗位同時輸入PDC,計算所讀取數據(33 bit)的校驗值,獲得判決位check,由check檢測存儲器的故障。奇偶檢驗存儲單元結構如圖2所示。


        奇偶校驗編碼過程為逐位“異或”,PDC的輸入輸出函數為:


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

        編碼時,按校驗關系式計算出P0、P1、P2、P3,置于信息位之后;譯碼時,用監督矩陣乘以碼字,得S值,若S不等于0,則碼字中存在故障比特;反之,可能無故障發生。

        漢明碼的監測范圍是8 bit,采用分組漢明碼檢測的設計方法,把輸入字分為4個字節,對每一個字節分別進行漢明編碼,共得四組16 bit監督位。為了減小所需存儲空間,把四組監督位的對應位分別“異或”,獲得一組總監督位(4 bit),并與輸入字合并存儲在一個地址中。漢明碼檢測器HDC(Hamming Detection Coder)的設計結構如圖3所示。

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

        輸出check=1,表明存儲單元中的某個字節發生故障;若check=0,則可能無故障發生。假如4個字節中發生對稱故障時,則check=0,不能正確反映故障發生情況。

        3 功能驗證與分析

        設計實現了抗故障攻擊雙端口RAM存儲器,按字存儲,存儲深度為32 B。在均衡速度和面積的條件下,Quartus II6.0綜合結果如表1所示。

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

        根據以上分析,存儲單元的抗故障攻擊設計,適合采用復用或線性校驗碼的方式實現,不僅具有較高的故障檢測概率,而且對設計的性能影響不大。本文提出的互補檢測、奇偶碼檢驗和漢明碼檢驗三種抗故障攻擊方案具有較廣的應用范圍,互補存儲單元適用于故障檢測率要求高和安全級別高的位置,奇偶校驗存儲單元適用于安全級別較低和隨機故障類型,存儲器適用于故障發生較集中、連續的場合。而且,同時存儲校驗位與數據位,實現了實時的故障檢測功能,避免了數據存儲讀取變換時的誤判行為。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 沙湾县| 论坛| 米林县| 东乡县| 兴国县| 山阴县| 常宁市| 石家庄市| 平南县| 珲春市| 汝城县| 江津市| 阿勒泰市| 文水县| 镶黄旗| 包头市| 塘沽区| 平泉县| 延寿县| 大同县| 博野县| 五寨县| 祥云县| 唐河县| 讷河市| 盐亭县| 浏阳市| 正蓝旗| 仁化县| 乡宁县| 镇平县| 张北县| 确山县| 班玛县| 绥芬河市| 晴隆县| 彭阳县| 苏州市| 德清县| 洪雅县| 自治县|