非侵入式攻击详解.docx
- 文档编号:24631927
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:24
- 大小:520.08KB
非侵入式攻击详解.docx
《非侵入式攻击详解.docx》由会员分享,可在线阅读,更多相关《非侵入式攻击详解.docx(24页珍藏版)》请在冰豆网上搜索。
非侵入式攻击详解
非侵入式攻击详解
非侵入式攻击不需要对元器件进行初始化。
攻击时可以把元器件放在测试电路中分析,
也可单独连接元器件。
一旦成功,这种攻击很容易普及,并且重新进行攻击不需要很大的开
销。
另外,使用这种攻击不会留下痕迹。
因此,这被认为是对任意元器件的硬件安全最大的
威胁。
同时,通常需要很多时间和精力来寻找对特定元器件的非侵入式攻击方法。
这通常对
元器件进行反向工程,包括反汇编软件和理解硬件版图。
非侵入式攻击可以是被动的或主动的。
被动攻击,也叫侧面攻击,不会对被攻击元器件
发生作用,但通常是观察它的信号和电磁辐射。
如功耗分析和时钟攻击。
主动攻击,如穷举
攻击和噪声攻击,特点是将信号加到元器件上,包括电源线。
一个简单的非侵入式攻击可以是复制一个上电配置的基于SRAM的FPGA。
接上配置芯片用
的JATG接口,用示波器或逻辑分析仪,捕捉所有信号。
然后可以通过分析波形并回复独有的
命令。
只使用到一半的FPGA资源时,可以轻微改变数据流来伪装盗版的事实。
配置时留下一
点空间而不影响元器件的运行。
JTAG接口在发送信号时序时也有一些自由,故盗版的波形可
以设置成看上去与原始信号不一样的。
另外,破解者可以在上传时交换行地址,给人的印象
是完全不同的设计。
另一个例子是当破解者投资很多钱来对付费电视访问卡进行反向工程,然后从卡里反汇
编内部代码,知道在签名和操作时发生的一切。
很有可能找到弱点,如在恰当的时候加上电
源噪声导致处理器发生故障,来获得无限制的访问收视频道。
一旦或得成功,就可以以极具
竞争力的价格提供收视服务,或销售伪造的卡。
很明显,这样的攻击需要很大的投资。
一旦
盗版的产品已投放市场,也有可能被别人攻击。
别人的攻击就不需要花很多时间,因为盗版
的常用廉价的微控制器,安全保护等级不如付费电视卡。
盗版的产品几乎在数周内就会被破
解,第二个破解者将向市场倾销盗版的复制品。
很快,在互联网上就有如何制造盗版的资料,以至于任何人都能极低的成本制造盗版的产品。
故付费电视的服务提供商就损失数百万。
有时,最早的破解者会被起诉,但服务提供商很难拿回钱,这些行动的唯一效果就是用处罚来威胁黑客团体。
另外,服务提供商不得不花一大笔钱来重新设计访问控制系统,选择新的智能卡并开发软件,然后分发给智能卡的用户。
1.含糊与安全
半导体制造商给大客户提供了增强产品防破解能力的措施:
包装上的客户印字代替了标
准的芯片型号。
这给人的印象是产品是由定制的集成电路设计的。
众所周知,ASIC提供了很
好地保护措施来防止多种攻击,只有极少数经验丰富且装备精良的破解者才有可能成功破解。
这会使很多潜在的破解者望而却步。
但一个信心坚定的破解者会尝试用简单的方法确定芯片是不是真的ASIC。
最简单的方法是观察连接到电源,地,时钟,复位,串口或别的接口的引脚。
与数据库中被怀疑的微控制器相比较,这种结果非常可靠,每种微控制器都有自己的引脚特点。
一旦发现相似的,就把它放在通用烧写器上尝试读出结果。
另一个简单的方法是限制访问程序存储器。
通常用在智能卡中,但一些微控制器中也用
到。
这不是很可靠且实用的方法。
当然在智能卡中用得很好,所有的客户被与芯片制造商迫
签署不扩散协议。
但微控制器极少这样,能被通用烧写器烧写的微控制器世界上很多公司都
能提供。
即使文件中没有烧写的规格,用低成本的示波器几个小时就可以套出需要的波形。
如果微控制器不被特殊通用烧写器所支持,仍然可以通过从制造商购买开发板来获得直接完
整的协议。
2.时序攻击(Timingattacks)
一些安全相关的操作使用输入的值和密钥,由半导体芯片执行不同的时间来比较。
小心
的时序测量和分析就能恢复出密钥。
这个方法最早在1996年的文献上提到。
稍后这种攻击成
功破解了实际的RSA签名的智能卡。
为了攻击成功,需要收集装置的信息,与处理时间整合比较,如问答延迟(question-answerdelay)。
很多密码算法容易受到时序攻击,主要原因是软件来执行算法。
那包括执行适时跳过需要的分支和操作条件;使用缓存;不固定时间处理指令如倍频和分频;还有大量的其他原因。
结果就是执行能力典型地取决于密钥和输入的数据。
为防止此类攻击可以使用盲签名(Blindingsignatures)技术。
这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。
时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访
问控制的系统,如达拉斯的iButton产品。
这些系统中共有的风险是输入的连续数字在数据
库进行再次校验。
系统需经常检查输入到数据库的密钥的每个字节,一旦发现不正确的字节
就会立即停止,然后切换到下一个直到最后一个。
所以破解者很容易测量出输入最后一个密
钥倒请求另一个的时间,并得出发现的密钥相似度。
尝试相对小的数字,有可能找到匹配的
密钥。
为防止这些攻击,设计者需要小心计算处理器的周期。
当密码进行比较时确保正确和错
误的时间是一样的,例如:
飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的
八字节密码后可以访问内部闪存。
为达到正确和错误的密码都处理相同的时间,程序中增加
了额外的空操作指令。
这对时序攻击提供了很好的保护。
一些微控制器有内部阻容振荡器,
那样处理器的工作频率与电压和芯片的温度相关。
这使得时序分析很困难,攻击时需要稳定
元器件的温度并减少电源线上的噪声和电压波动。
一些智能卡有内部随机时钟信号使得攻击
时测量时间延迟无效。
3.穷举攻击(也称暴力攻击Bruteforceattacks))
暴力对于半导体硬件和密码来说是另一种意思。
对于密码,暴力攻击是对系统尝试数量
众多的密钥。
通常是使用高速计算机来寻找匹配的密钥。
一个例子是微控制器中的密码保护设置。
以德仪的MSP430为例,密码本身长度为32字节
(256位),抵挡暴力攻击已经足够了。
但密码分配在与处理器中断矢量相同的存储器地址。
那么,首先减少存储器内矢量一直指向的区域。
然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。
结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。
暴力攻击也可用在ASIC或CPLD的硬件设计来实现。
这种情况下,破解者使用所有可能的
逻辑组合到元器件可能的输入端并观察所有输出。
这种方法也称为黑箱分析(Black-box
analysis),因为破解者不知道被测试元器件的情况。
通过所有可能的信号组合,尝试获得
元器件的功能。
这种方法对相对小的逻辑器件很有效。
另一个问题是破解者使用的ASIC或CP
LD有触发器,故输出将可能是当前状态或输入的状态。
但如果预先检查并分析信号,搜索的
范围可以显著减少。
例如,时钟输入,数据总线和一些控制信号是很容易认出的。
另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。
事实上,这些引脚用数字万用
表很容易发现,因为它们没有保护二极管到电源脚。
一旦发现对高压敏感的引脚,破解者就
可以尝试可能的逻辑信号组合来加到别的引脚上,找出用于进入工厂测试或编程模式的部分。
破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能。
芯片制造商经常提供给后期测试用得嵌入硬件测试接口。
如果这些接口的安全保护没有
适当设计,破解者很容易利用它来读写片上存储器。
在智能卡中,这些测试接口通常位于芯
片电路之外,并在测试后从物理上除去。
任何安全系统,不管软件和硬件,在设计上都可能有缺陷,对于破解者来说都是机会,
暴力攻击有可能找到它。
小心设计安全保护系统,进行适当的评估,可以避免很多问题,并
使得这些攻击事实上不可行。
4.功耗分析(Poweranalysis)
一个运算设备的功耗取决于它当前的状态。
依照CMOS晶体管的原理,各部分动态时的功
耗比静态的要大。
当输入电压加到反向器上,会引起一个晶体管短路,这个晶体管电流的增
加比静态消耗的寄生漏电要大得多。
在电源线上加个10-20欧的电阻,就可以测量电流的波
动。
为达到更好的效果,需要使用至少12位精度和50MHz采样速度的模数转换器。
这些获得
的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数。
通过平均多次重复同样操作的电流,即使是没有通过总线的很小信号也能区别开。
有些
信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作来逐一移出单个密钥
倒进位标志。
即使状态位的变化不能直接测量,它们通常会改变指令次序或微码的执行,这
会导致功耗的明显变化。
不同指令导致不同级别的指令解码和运算单元的活动,可被清晰地区别开,故运算部分
能被推测出。
处理器的不同单元在时钟沿相关的不同时间里有独有的开关状态,能被高频仪
器分离出来。
有多种不同的功耗分析技术用在破解密码算法上。
整个分析过程是相对简单的,只需要
标准的现有的廉价仪器设备。
功耗分析技术主要有两种:
简单功耗分析(SPA:
SimplePowerAnalysis)和差分功耗分析(DPA:
DifferencePowerAnalysis)。
SPA是在密码或别的安全相关操作时直接观察功耗,可以得知设备运行时的信息如密钥资料。
如果破解者知道密码算法,很容易通过观察处理器指令次序,特别是移位条件转移,找到一些位的信息。
如果算法或逻辑运算的结果很容易被看出,如进位状态,零或负标志,就可以获得更多的信息。
DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的。
它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息。
用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个的位信息。
实例如下图:
用无源探头获得的电源电压-电流曲线,500KS/s25MS/s
实例如下图:
用有源探头获得的电源电压-电流曲线,500KS/s25MS/s
上述两图均为飞思卡尔MC68HC908JB8微控制器在6MHz时启动模块的电源电压-电流曲线
功耗特性当然包括噪声部分。
额外的噪声可以通过减少获取信号的探针长度并小心使用
测量仪器来降低它。
测量接在地线上的电阻的功耗有一些优势。
首先,减少了噪声电平。
其
次,可以用示波器的探头直接测量信号,因为大部分探针站有公共的地线与外部电源地相连。
为了增加信噪比,可以通过提高平均采样数来获得。
有源探头能降低输入电容,增加对输入信号的带宽。
一种方法是用高速低噪声的运放来
构建相对简单的探头,另一种是用很短的同轴电缆直连到示波器的输入端。
在这些情况下,
探头的输入电容显著减少。
实例如下图:
左侧是普通的无源探头,右侧是自制的有源探头
我们对现有的功耗分析步骤进行了改进。
这是一种新的方法,尚未有类似的。
我们用铁
芯变压器来取代连到电源或地的电阻,那样波形就有点不一样,因为信号的直流成分丢失了,同时又有些有利条件。
常用的方法对直流电流几乎没有什么限制。
但对于10欧电阻来讲100mA的电流意味着有1V的电压降,那可能中断微控制器的正常操作。
减少这个电阻可以解决这个问题,但会使得难以识别功耗的微小变动。
使用变压器后,不需要使用昂贵的有源探头,标准的无源探头就可以给出几乎相同的结果。
如果信号太小,调节二次侧的线圈就可以增加振幅。
变压器也担当无源滤波器的角色,如波形,同样的处理器指令对电阻和变压器所测量到的波形有不同的影响。
那可以通过对获得的信号进行处理。
为了攻击获得成功,需要采集数千的样本,然后快速分析处理所展现的秘密。
实例如下图:
通过互感器来测量功耗
实例如下图:
无源探头通过铁芯互感器测量到的波形
实例如下图:
左侧是无源探头获取到的曲线,右侧是有源探头获取到的曲线,速度均为25MS/s
最近,芯片设计上已考虑这种攻击,并将使得这种攻击方法更难获得成功。
5.噪声攻击(Glitchattacks)
噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。
通常噪声是叠加在
电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。
在离芯片表面数百微米
处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电
场,使得邻近晶体管的阈值电压发生变化。
最近出现一种改进的方法:
使用几百圈金属线绕
在微探针的针尖构成一个小型电感。
当电流进入线圈会产生磁场,针尖将集中磁力线。
每个晶体管和与它相连的线路构成有时延特性的RC电路。
处理器的最大可用时钟频率取
决于该电路的最大延迟。
同样的,每个触发器在接收输入电压和由此引致的输出电压之间有
个特征时间窗口。
这个窗口由给定的电压和温度来确定。
如果用时钟噪声(比正常的时钟脉
冲要短得多)或电源噪声(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个
或多个触发器进入错误状态。
通过改变参数,处理器会被导致执行许多完全不同的错误指令,有时甚至是不被微码支持的。
经管我们不会预先知道何种噪声会导致何种芯片的何种错误,但它能相当简单地进行系统的搜索。
5-
(1)时钟噪声攻击(Clockglitches)
时钟信号的噪声攻击在目前是最简单的,且相当实用。
实际应用中的噪声通常用来取代
跳转条件并试验先前的测试指令。
可以在安全密码问询处理时创建一个攻击窗口,简单预防
执行这些指令。
指令噪声也能用来扩大循环的时间。
如,串口子程序在输出缓冲后再读更多
的内容;或在密钥操作时减少循环次数来传一个弱的密码。
为获得噪声,时钟需要临时增加一个或大于半个周期,有些触发器在到达新状态之前就
获得输入。
时钟噪声通常针对处理器的指令流。
对硬件执行安全保护的微控制器没有什么效
果。
实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口。
LDA#01h
AND
$0100;thecontentsofthefirstbyteofEEPROMischecked
loop:
BEQloop;endlessloopifbit0iszero
BRCLR4,$0003,cont;testmodeofoperation
JMP$0000;directjumptothepresetaddress
cont:
LDA#C0h
STA$000D
CLR$000E
BSET2,$000F
LDX#50h
;initializetheserialasynchronousport
wait:
BRCLR5,$0010,wait;uploadusercode
LDA$0011
STAx
INCX
DEC$0050
BNEwait
JMP$0051;jumptotheusercode
上例是MC68HC05B6微控制器负责安全的启动模块代码
MC68HC05B6微控制器中,有掩模的启动代码以防止安全位置位后代码被上传出来。
它会
检查EEPROM中的第一个字节的内容,如果是0,看作是个安全熔丝已被编程,处理器就跳到
循环的末端。
这类保护的破解是相对容易的。
如处理器在循环里只执行一个指令,攻击时可用不同的
时钟噪声导致处理器误操作。
不需要小心地与时钟信号同步,只需要随机制造噪声就可在数
次攻击内成功。
插入噪声是相对容易的,无需使用外部发生器,瞬间短路晶振即可。
当谐振
器在不同的泛音上产生震荡会发出很多噪声。
大部分情况下需要在确定的时钟周期内获得所
需结果,在这种情况下用信号发生器更好。
使用时钟噪声来攻击某些微控制器也许是很困难的。
例如德仪的MPS430微控制器在内部
RC震荡器工作的启动模块。
很难与内部时钟同步,攻击时很难估计精确的时间。
一些智能卡
在处理器指令流里会随机插入延迟,使得攻击更为困难。
使用功耗分析会有帮助,但要求非
常昂贵的设备来实时获得参考信号。
5-
(2)电源噪声攻击(Powerglitches)
电源供应电压的波动会导致晶体管阈值电平的漂移。
结果就是一些触发器在不同的时间
里采样它们的输入,或读出错误的安全熔丝的状态。
通常用瞬间增加电源电压或电压跌落
来制造噪声,一般在10个时钟周期内。
电源噪声通常用在微控制器的程序接口上,能影响处
理器运行或硬件安全电路。
一般地,弱点比时钟噪声更难找到并利用,因为对于时域参数,
振幅,上升/下降时间都是变量。
一个例子是上例提到的攻击MC68C05B6.如果在执行AND$0100指令时电源电压减少50-70
%,处理器从EEPROM中取出的值是FFh而不是实际的值。
这会对应熔丝未加密状态。
窍门是小
心计算执行时间来减少电源电压,否则处理器会停止运行或进入复位状态。
这种任务并不难,复位后目标指令在第一个一百周期内被执行。
破解者可以使用矢量发生器或构建一个自己的噪声源。
另一个是微芯的老旧的PIC16F84。
芯片的擦除操作会解除安全保护。
但同时会芯片上程
序和数据存储器中的内容。
安全保护电路在硬件设计上是在安全熔丝复位之前擦掉存储器。
但我们发现在芯片擦除操作时电源电压几微秒内增加到大约10V,会中断存储器擦除操作,
但安全熔丝正常完成复位,这使得有可能读出存储器里的内容。
如此高压需要谨慎使用,如
果时间过长会损伤芯片。
新版本的PIC16F84A增加了防欠压和过压攻击的能力。
如果电源电
压低于3V或6V,通过编程接口的任意修改存储器的操作会被立即中断。
不是一直需要电源噪声超过电源电压范围的规格。
例如,PIC18F84A微控制器,保护机
制可以阻止在芯片擦除操作开始后使用大于50mV的噪声。
那会导致中止程序存储器的擦除操
作但不会擦掉熔丝。
上述例子表明噪声攻击时无需特殊工具就有很好的效果。
智能卡里有时钟监控电路但极
少微控制器有。
(6)数据保持能力分析(Dataremanence)
处理器一般会把密钥保存在静态RAM里,如果元器件被篡改就会掉电,RAM内容丢失,从
而保护密钥不被窃取。
众所周知的是在低于零下20度时,SRAM里的内容会“冰冻”。
很多元
器件把温度低于这个阈值视为发生篡改事件。
我们做了一些实验来确定现代SRAM数据保持能
力与温度的关系。
我们的实验表明传统的思维不再有效。
即使在高温下,数据保持能力也是
个问题。
数据保持能力不仅仅对SRAM有影响,对DRAM,UVEPROM,EEPROM和闪存也有影响。
结果是,仍然可以从已擦除的存储器中获得一些信息。
这会给安全设备带来很多问题。
6-
(1)低温下SRAM的数据保持能力
安全工程师都很关注断电后SRAM器件能保持数据的时间。
原因如下:
很多产品使用密钥
或类似的方法进行加密和别的安全相关的计算,需要不能被读出或改变。
最普遍的解决方法
是把安全密钥放在带篡改传感器的易失存储器中。
一旦检测到发生篡改,易失传感器会掉电
或短路到地。
但如果数据保留时间大于破解者打开元器件并对存储器上电的时间,那保护机
制就被摧毁了。
在二十世纪八十年代,发现低温能将SRAM的数据保存时间增加到几秒甚至几分钟。
对于
那个时候的元器件,发现零下20度就可以增加数据保存时间,并且会随着温度的降低而增加
保持的时间。
有些就增加了温度传感器,温度低于零下20度就触发篡改事件,立即清零存储
器。
本次试验是重复这个工作,察看2000年后的产品是否也有此特性。
另一个需要关注的是即使部分内容已被破坏,安全信息也能被复原。
假设破解者获得了
n=128位密钥中的m=115位,也就是90%的信息。
他可以通过搜索n!
/(m!
(n-m)!
=128!
/(115!
13!
)=2.12*1017~258个可能的密钥。
通过1万台电脑,每台每秒进行10亿次搜索密钥的操作,破解者只需6个小时就能搜遍所有密钥。
如果只有80%的信息,也就是知道128位密钥中的103位,那就有2.51*1026~288种可能。
几乎增大了一百倍,破解者要花百万年来搜索密钥,故认为均匀的128位密钥不能被恢复。
我们做了一块特殊的测试板来测试SRAM芯片。
所有信号通过4MHz的PIC16F877来控制,
微控制器通过RS232接口与计算机相连,进行信息的传输。
SRAM芯片的电源供应由CMOS开关
芯片MAX314来控制。
同时有液晶显示器和两个按钮来手动控制设备。
为方便芯片的插拔,
板上有个锁紧座。
SRAM芯片放在冷藏室内,通过扁平电缆来控制。
实例如下图:
测试板的外观
我们使用LM135H来监控温度,它的输出电压与温度成正比,系数为10mV/K。
使用普通的
数字万用表就能读出温度值。
每个SRAM芯片都在两种条件下测试:
一种是断电后电源脚短路到地,另一种是引脚悬空。
每个芯片都要在存储器内容全1和全0状态下测试。
八个不同的SRAM芯片在不同的温度下进行测试。
芯片都是购买自半导体分销商。
包括Da
llasDS2064-200,GoldStarGM76C88AL-15,HyundaiHY6264AP-10LLandHY62256BLP-70,NECD4364C-15andD4364C-15L,SamsungK6T0808C1D-DB70,ToshibaTC5564APL-15。
我们也测量了电源的电流,待机模式都是在室温测得的。
因为电流很小,不能直接用数字万用表测量。
使用了一个放大100倍的运放,测出的数据如表格。
我们定义数据保持时间
为至少有80%的存储器内容还存在的时间。
实例如下图:
室温下,不同的SRAM芯片的功耗和数据保持时间
可以看到一个重要的现象:
芯片的功耗越小,它的数据保持时间就越长。
电源脚连到地
的数据保存时间都比悬空的要短。
一旦SRAM芯片开始丢失信息,就会很快完全丢失。
通过比较两种芯片NEC4364C-15和NEC4364C-15L,后一种是低电压版,可以看出低电压
版在任何温度下都有更长的保持时间。
相反的情形出现于HY6264A-10LL和HY62256BL-70。
前面那个是超低电压版。
尽管第二个是低电压版,但它却有更长的数据保持时间,这是因为
它使用了更小的晶体管,功耗更小。
实例如下图:
温度和数据保持时间的对应关系
我们测试并记录了现代SRAM芯片样品的数据保持时间特性,这是个温度的函数。
与常识
相反,有好几种芯片在低于零下20度时的数据保持时间极为危险。
对于保持80%数据一分钟
的温度,不同器件的差异很大。
有些需要冷却到零下50度,有些在室温下就可以了。
另一个
意想不到的结果是存储器保持时间不仅因不同类型的器件而不一样,即使是同一工厂制造的
同一类型但系列不一样的器件的保持时间也不一样。
大概是芯片制造厂的品质控制没有包括数据保持时间。
同样工艺的芯片,低功耗的有更长的数据保持时间。
因此,安全处理器需要
在篡改时可靠擦除存储器,这在芯片使用前变得越发重要。
因为这与时间相关,对于单个的
元器件并不实用。
但是,测量每个批次的功耗可以给出一个实用的参考。
6-
(2)非易失存储器的数据保持能力
与SRAM只有两种稳定的逻辑状态不一样
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 侵入 攻击 详解