一种密码芯片光故障注入系统和攻击方法与流程

文档序号:14720239发布日期:2018-06-17 12:46阅读:384来源:国知局

本发明涉及电子信息技术领域,尤其是一种密码芯片光故障注入系统和攻击方法。



背景技术:

故障攻击是主动攻击的一种,是基于密码设备不正常运行的基础上的攻击方式。攻击者在密码算法计算过程中引入特定的故障,通过分析密码设备出现错误的计算结果、错误反馈信息或者构成设备安全或紧急的响应,攻击者利用篡改或注入故障来获取内部秘密信息。一般的密码算法对外部是公开的,攻击者不需要掌握太多的密码算法理论,只需要对密钥进行推算即可。攻击者观察使用什么样故障会引起什么样的错误结果。例如,如果攻击阵在密钥中注入一个单比特故障,并且密码设备没有检测到这个故障,就会得到一个特定样式的错误结果。通过比较这个错误的计算结果与正确的计算结果,攻击者可能就会推断出密钥的一个比特位。使用同样的方法以此类推,就有可能达到预期的攻击目的。而这仅仅需要攻击者了解如何使用物理方法影响芯片的逻辑电路,而不需要在数学理论上攻击算法。

对密码设备进行故障攻击有许多种方法,可以从故障的大小、影响的时间及范围的划分。

从故障大小上可以分为单比特故障和单字节故障。一个比特信息存储在存储器的一个最基本单元上,信息篡改者能够通过物理方法实现对密码设备的攻击,其中一个有效的方法就是对储存器单元进行故障注入,篡改存储单元单个比特的信息状态。一旦信息篡改者能够通过这种物理方法随意地更改存储器中单比特信息状态,这种故障攻击形式对密码设备的安全构成了强大的威胁。这种故障攻击类型可以被认为是目前为止最为强大的一种故障攻击类型。然而随着芯片生产工艺的进步,芯片结构特征尺寸逐渐减小,这对修改芯片特定位置存储单元增加了难度。攻击者很难在实际应用中得以实现。攻击者在实际攻击过程中,往往部不只是针对一个存储单元进行故障注入,而是对某个字节或多个字节进行故障注入。相对于单比特故障,单字节故障更为容易实现,也具有一定的攻击意义。因为密码算法的许多数据、运算过程等都是以字节为基本单位,另外进行字节故障注入比进行比特故障注入更加容易操作。

从故障的影响时间上可分为瞬时故障和固定故障:瞬时故障可以被认为是一种短暂的、临时性的故障,故障注入后只会在特定的时间内影响芯片的运算,而后这种影响就会消失,并且正确的校正值会重新置位。例如一个瞬时故障发生在RAM存储单元上,该故障能够停留在该存储器上,并且这种情况故障能够影响特定的运算结果直到该存储区域被重写。固定故障决定着密码设备的运行状态,也被称作破坏性注入故障或永久故障。固定故障注入以后,其发生故障的存储单元值不会改变,并且在以后的运算中值也保持恒定,永久地影响其加密运算结果。例如通过注入固定故障改变非易失储存器ROM某存储单元值,一旦攻击者非常了解存储器的物理结构及其存储的信息,那么获得芯片内部秘密信息将变得非常容易。固定故障将是一种非常强大的攻击手段,但是新型智能芯片会采用不规则的存储器物理地址,因此采用固定故障攻击方法也具有一定的难度。

从故障影响的范围上可分为计算故障和静态故障:计算故障是指攻击者在密码芯片运算过程中使用物理方法扰乱程序正确执行、程序计数器紊乱及篡改储存器存储信息等。如AES密码算法在轮加密过程中注入故障,运算中故障会衍生出新的故障,致使运算结果出现错误。而静态故障在运行前注入故障或者故障在运算过程中不被衍生保持不变,该型故障只是在特定的范围或条件下影响计算结果。

针对密钥故障输入攻击的硬件系统及其实施方法进行研究对于密码芯片的破译及安全防护均具有十分重要的意义。



技术实现要素:

本发明要解决的技术问题是提供一种密码芯片光故障注入系统和攻击方法。

为解决上述技术问题,本发明所采取的技术方案如下。

一种密码芯片光故障注入系统,包括如下装置:带有可反复擦写的Flash存储器并经解封的待测密码芯片、发射240nm-260nm波长紫外线的紫外线灯、对密码芯片中Flash储存器进行读写操作的PC及程序烧写器、用于控制紫外线故障感应影响范围的紫外控制装置;其中紫外线灯放置在距芯片4cm-6cm处进行照射。

作为本发明的一种优选技术方案,采用解封后的AT89C52单片机作为待测密码芯片,该芯片内部有8K字节的可反复擦写的Flash存储器;

作为本发明的一种优选技术方案,采用功率为30w并发出253.7nm波长紫外线的紫外线灯;

作为本发明的一种优选技术方案,采用普通PC及RF-910程序烧写器对芯片中Flash储存器进行读写操作。

作为本发明的一种优选技术方案,紫外控制装置采用红墨水白板书写笔,将红墨水涂抹在芯片表面,控制紫外线故障感应影响范围。

利用上述系统进行密码芯片光故障注入攻击的方法,包括如下步骤:

A、基础设定,以运行AES加密算法的单片机密码芯片为攻击对象,并定义AES算法输入的明文为P,初始密钥为16字节128比特K0,加密生成的密文为C0;在故障攻击中,每次对K0进行单比特故障注入,故障发生后密钥变为K1、K2、K3、…、Km,对应的输出密文为C1、C2、C3、…、Cm;

B、在AES密码系统中利用密钥K0对固定明文P进行加密,得到密文C0;

C、使用紫外线故障注入系统对AES密码芯片的Flash存储器进行故障注入,此时使用紫外控制装置将红色墨水涂抹在密码芯片的Flash存储器区域;使密钥K0改变为K1;

D、在AES密码系统中利用密钥K1对固定明文P进行加密,得到密文C1;

E、对比C0与C1,确定初始密钥的第一个比特位的状态;

F、重复操作至对C127与C128进行对比确定初始密钥的最后一个比特位的状态,获得完整密钥。

采用上述技术方案所产生的有益效果在于:

采用本发明的方法,虽然故障数量较多,但复杂度很低,不需要复杂的计算,仅通过128次比较就能获得AES算法的完整密钥,具有突出的进步意义。

对密码芯片完成紫外线故障感应攻击有两个难点。第一点是确定AES密钥在Flash存储器的位置;二是控制紫外线故障注入改变密钥一个比特位。本发明为验证紫外线故障攻击密码芯片方法的可行性,使用了一种简单、易于实现的方法,就可以改变Flash存储器的单个比特状态:使用一种白板笔用红色墨水涂抹在密码芯片Flash存储器区域,这种墨水能够有效阻止紫外线直接照射Flash存储器,使用紫外线故障感应系统对Flash存储器进行照射,观测发现芯片Flash存储器单元第一个比特位翻转发生在第6分钟,有2个比特位翻转发生在第18分钟,而到25分钟时仅有5个比特位状态发生改变;通过大量试验证明最先改变的的逻辑地址位置是相同的,通过控制照射时间能够达到注入一个比特位故障的目的,且通过可以将算法密钥特意写在该区域,即可以达到精确攻击的效果。

附图说明

图1为本发明的紫外线故障注入系统的示意图。

具体实施方式

实施例1、硬件配置

使用紫外线进行故障注入,主要是利用紫外线影响Flash存储器的原理。本发明搭建一个实际的紫外线故障感应攻击系统,使用紫外线照射微控制器内部Flash存储器,能够改变Flash存储器中某些单元的状态,并且能够应用该系统实施对密码芯片的故障注入。如附图1所示为一个简易的紫外线故障注入系统示意图,其中包括:

紫外线灯:普通家用紫外线消毒灯,其功率为30w并能发出253.7nm波长的紫外线;

密码芯片:解封后的AT89C52微控制器作为试验密码芯片,该芯片内部有8K字节的可反复擦写的Flash存储器;

PC及程序烧写器:利用PC及RF-910程序烧写器对芯片中Flash储存器进行读写操作;

本发明的系统还需要使用一种红墨水白板写字笔,将红墨水涂抹在芯片表面,控制紫外线故障感应影响范围;

通过紫外线灯、AT89C52微控制器、RF-910程序烧写器和PC搭建的紫外线故障注入系统,紫外线灯放在距芯片约5cm处进行照射,控制照射时间及照射位置注入特定的故障,并在PC端运行烧写器软件对微控制器进行读写操作,验证故障注入效果。

实施例2、攻击模型

该故障感应攻击模型是使用紫外线对秘密信息所存储的位置进行故障感应。一般情况下,AES密码芯片将密钥写在NVM(Flash存储器)中,在密码算法的执行过程中,密钥会从NVM中传递到SRAM中去,如果通过紫外线故障感应攻击方法直接改变NVM中密钥信息,那么很容易恢复出AES算法的密钥,大道破解AES密码算法的目的。

在该攻击理论模型中,定义AES算法输入的明文为P,初始密钥为16字节128比特K0,加密生成的密文为C0。在故障攻击中,每次对K0进行单比特故障注入,故障发生后密钥变为K1、K2、K3、…、Km,对应的输出密文为C1、C2、C3、…、Cm,其中m≤128,因为故障一般只能将储存器由状态“0”改变为状态“1”(或者由状态“1”改变为状态“0”)。在故障攻击中,密钥的某一中间状态Ki与Ki+1只有一个比特位不同。假使Ki值已知,我们可以在电脑上模拟运行AES程序并对所有发生故障的可能性进行搜索,可以获得Ki+1,其复杂度为O(n)。如果从最后Cn推到C0,其复杂度为O(n2)。

如果故障类型为固定故障,并且故障感应攻击是以上一次故障感应攻击为基础,同事能够精确控制故障感应位置,可以大大降低该故障理论模型算法的复杂度。该方法是对初始密钥K0的第一个比特位注入故障,使其修改变为K1。在此基础上再对第二个比特位注入单比特故障,使其修改变为K2。依次类推,可以进行128次的故障攻击,使其密钥修改变为K128,对应的输出密文为C1、C2、C3、…、C128。由于固定故障注入是不可逆的,对密钥Ki故障注入变为Ki+1,故障移动一个比特位,至于该比特位翻转与否不在考虑,这时有一半的可能性Ki=Ki+1。虽然该类型的故障数量较多,但复杂度仅为O(n),不需要复杂的计算,仅通过这样的128次比较就能获得AES算法完整的密钥。

实施例3、攻击过程

紫外线故障攻击的目标是AES密码设备,系统将AES密码算法写在了微控制器内部Flash存储器中。根据故障攻击理论模型,攻击过程中需要对密码芯片Flash储存器中存储密钥部分单元进行单个比特故障注入,即故障感应可以改变AES密钥所在存储器位置的某个比特状态。攻击试验中使用实施例1的硬件配置对微控制器芯片进行紫外线故障注入,具体操作如下:

第一步,使用AES密码系统对固定明文P,使用密钥K0进行加密,得到密文C0;

第二步,使用紫外线故障注入系统对AES密码芯片Flash故障注入,使密钥K0改变为K1。

第三步,使用AES密码系统对固定明文P,使用密钥K1进行加密,得到密文C1;

第四步,对比C0与C1,确定初始密钥的第一个比特位的状态……

第n步,对比C127与C128,确定初始密钥的最后一个比特位的状态,获得完整密钥。

实施例4、攻击分析

对密码芯片完成紫外线故障感应攻击需要解决两个问题:第一点是确定AES密钥在Flash存储器的位置;二是控制紫外线故障注入改变密钥一个比特位。本发明为验证紫外线故障攻击密码芯片方法的可行性,使用了一种简单、易于实现的方法,就可以改变Flash存储器的单个比特状态。使用一种白板笔用红色墨水涂抹在密码芯片Flash存储器区域,这种墨水能够有效阻止紫外线直接照射Flash存储器。使用紫外线故障感应系统对Flash存储器进行照射,观测发现芯片Flash存储器单元第一个比特位翻转发生在第16分钟,有2个比特位翻转发生在第18分钟,而到25分钟时仅有5个比特位状态发生改变,通过大量试验证明最先改变的的逻辑地址位置是相同的。通过控制照射时间能够达到注入一个比特位故障的目的,且通过可以将算法密钥特意写在该区域,即可以达到精确攻击的效果。

根据上述方法,通过调整密钥在Flash储存器中写入的物理位置,试验中对初始密钥K0进行了128次紫外线故障注入。按照试验过程,使用AES密码系统对某个特定明文进行128加密并获得了相对应的密文。如下表所示,对于实际的紫外线故障攻击模型来说,所需要的故障注入数为128个。

故障能够使密钥的单个比特由状态“0”翻转为状态“1”。对试验数据进行分析,首先通过比较C1是否与C0相同,如果相同,说明K1的最后一位为“1”,如果不同则为“0”。以此方法类推,依次比较Ci和Ci-1,{1,...,}in。这样就能推导出整个密钥。通过实际的物理试验,结果与仿真试验相同,可以证明使用紫外线故障感应攻击方法能够获得AES密码芯片的密钥,将AES算法密钥搜索空间从2128降低到27。说明这种紫外线故障感应攻击可以应用在对实际的密码芯片的攻击。本试验使用了紫外线照射方法擦除微控制器Flash存储器中的特定内容,并且通过控制照射时间和某些策略精确攻击存储器特定区域。

上述描述仅作为本发明可实施的技术方案提出,不作为对其技术方案本身的单一限制条件。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1