- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何防护专用芯片中的存储单元
自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所示。
故障检测函数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个字节中发生对称故障时
文档评论(0)