新闻中心

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.eepw.com.cn/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是高电平时表示发生故障,单个字节中的连续故障及其他不属于对称故障的多比特故障都能够检测出来。

根据以上分析,存储单元的抗故障攻击设计,适合采用复用或线性校验码的方式实现,不仅具有较高的故障检测概率,而且对设计的性能影响不大。本文提出的互补检测、奇偶码检验和汉明码检验三种抗故障攻击方案具有较广的应用范围,互补存储单元适用于故障检测率要求高和安全级别高的位置,奇偶校验存储单元适用于安全级别较低和随机故障类型,存储器适用于故障发生较集中、连续的场合。而且,同时存储校验位与数据位,实现了实时的故障检测功能,避免了数据存储读取变换时的误判行为。



评论


相关推荐

技术专区

关闭