研究笔记
物理攻击方法包括计时攻击、故障攻击、能量分析攻击、电磁波攻击、信息残留、穷举攻击、反向工程、微探测技术、FIB(Focused Ion beam)攻击、紫外线攻击、背面成像技术、主动光探测技术、热注入技术、冷冻探测———安全处理器研究进展
紫外线攻击属于故障注入吗??
密码设备物理攻击:入侵式攻击,半入侵式攻击,非入侵式攻击。
半入侵式攻击(故障诱导型攻击):半入侵式攻击者物理接触设备,要对密码进行拆解,拆开芯片塑料、陶瓷封装,但是攻击和芯片表面没有任何的电子接触,有时可能通过非授权界面进行电气接触,保持芯片钝化膜完好。举例激光注入,攻击者需要利用电动钻头拆包芯片,然后利用化学药剂进行去模处理,在此基础上利用超声波清洗池对芯片进行清洗,最后利用激光注入器对芯片内部进行注入故障。
被动型半入侵式攻击的目标通常是在无需利用或者探测存储单元的数据读取电路的情况下,读取出存储单元的内容。
主动型半入侵式攻击的目标是诱发设备产生故障,可以通过X射线,温度,电磁,光学手段来完成。
故障注入方法影响因素:电磁,电压,时钟,激光,温度等。
侧信道常用攻击手段:差分能量分析DPA(Differential Power Analysis)
故障分析常用攻击手段:差分故障分析DFA(Differential Fault Analysis)
部分故障注入的原理:组合逻辑电路的关键路径为输入输出最长的时延,每一个上升沿执行相应的动作,若时钟来的太快或太慢,不同于关键路径的时候,则会影响写入的数据的正确性,导致输出错误。如环境温度升高,关键路径变长。
电压毛刺:芯片运行过程中,在核心供电电源的位置,引入电压毛刺,当电压降低的时候,关键路径变长,时钟间隔不变,小于关键路径长度,影响设备运行。
时钟毛刺:芯片运行过程中,产生不稳定时钟毛刺,使上升沿提前到来,时间间隔小于关键路径,影响设备运行。
电磁脉冲:芯片运行过程中,在芯片表面进行电磁辐射,产生局部感应电流,影响设备运行。
激光注入:和关键路径没有关系,利用PN结不稳定性,使激光直接照射在与非门电路PN结上,利用光电效应,引起PN结载流子的能级跃迁,使PN结产生异常导通,影响最终输出结果产生错误。
紫外线攻击半侵入式攻击 光注入攻击 :?(激光?)
一:
紫外线攻击也称为UV攻击方法,是利用紫外线照射芯片,让加密的芯片变成了不加密的芯片,然后用编程器直接读出程序。
这种方法比较适合OTP的芯片,做单片机的工程师都知道OTP的芯片只能用紫外线才可以擦除。那么要擦出加密也是需要用到紫外线。
目前台湾生产的大部分OTP芯片都是可以使用这种方法解密的,感兴趣的可以试验或到去下载一些技术资料。OTP芯片的封装有陶瓷封装的一般会有石英窗口,这种事可以直接用紫外线照射的,如果是用塑料封装的,就需要先将芯片开盖,将晶圆暴露以后才可以采用紫外光照射。由于这种芯片的加密性比较差,解密基本不需要任何成本,所以市场上这种芯片解密的价格非常便宜,比如SONIX的SN8P2511解密,飞凌单片机解密等价格就非常便宜。
OTP(one time programmable)器件,也就是一次性可编程器件,归属于非易失性存储器.
非易失性存储器(英语:non-volatile memory,缩写为NVM)是指当电流关掉后,所存储的数据不会消失的电脑存储器。非易失性存储器中,依存储器内的数据是否能在使用电脑时随时改写为标准,可分为二大类产品,即ROM和Flash memory。
存储器分类
ROM:只读存储器(Read Only Memory),非易失性。一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变。计算机中的ROM主要是用来存储一些系统信息,或者启动程序BIOS程序,这些都是非常重要的,只可以读一般不能修改,断电也不会消失。
PROM(Programmable ROM):可编程ROM,只能被编程一次
EPROM(Erasable Programmable ROM,EPROM):不可电擦除,可通过紫外线擦写可编程ROM,擦写可达1000次。
EEPROM(Electrically Erasable Programmable ROM)电子可擦除EPROM。
flash(flash memmory):沿用了EPROM的单管结构和浮栅 / 热电子注入写入方式,兼备EEPROM的比特级电擦除特性,不仅具备电子可擦除可编程(EEPROM)的性能,还可以快速读取数据(NVRAM的优势),它已经成为一种重要的存储技术。固态硬盘(SSD)U盘等就是一种基于闪存的存储器。
OTP本质就是内嵌的一块one time programmable memory,仅可被烧写一次,但可以被多次读取。OTP指的是可编程的次数,并不特指某一种存储器。通常为EPROM。
OTP芯片举例:SPMC65P,PIC16C5X,SN8P2513等
PIC16C5X是美国Microchip推出的世界上第一种8脚的超小型单片机系列,体积虽小但拥有很多功能特点,节省了很多其他单片机应用中必须外接的元器件,所以它是目前最便宜的8位OPT单片机。主要点特如下:
1.采用RISC,仅33条指令,指令字长为12位。除了涉及PC值改变的指令外,其余指令均为单周期指令。在本设计中,单周期为3个时钟周期,即两级流水线设计。2.系统为哈佛结构。数据总线与指令总线各自独立。当一条指令在ALU中执行时,下一条指令已经被取出放到指令寄存器中等待执行了。3.内部有7个特殊功能的寄存器,以操作I/O接口,设置看门狗和定时器的参数等。4.系统可进入睡眠模式。功耗很低。5.12~20根双向可独立的编程I/O口。考虑到兼容所有系列,故本设计有20个I/O接口,A口4位,B口8位,C口8位。6.手册给出的工作频率为约20MHz,本设计基于sim13工艺库,工作频率可达50MHz。
OTP存储位元的特性:此类存储器的每个存储位元(cell),也就是能够存储一位二进制数的最小单位,其结构是由一个浮动栅极场效应晶体管构成的。这个场效应管的浮栅是一个与周围绝缘的孤岛形导体,利用该导体内部是否存在积累电荷来记录一个比特数据。在原始状态或空白状态下,导体内没有蓄积电荷,场效应管处于截止状态,其漏极呈现高电平,以此来表示存储位元中存储的是一位“ 1”。在利用高电压进行烧写操作时,如果写入的是“ 1”,则场效应管不发生任何改变;如果写入的是“ 0”,则会在高电压激发下使一些载流子击穿绝缘层而进入场效应管的浮栅导体, 这样就在导体内部形成一定的蓄积电荷,使得场效应管变为导通状态,其漏极呈现低电平,以此来表示存储位元中存储的是一位“ 0”。
每个存储位元具有以下的天然特性:
(1)在原始状态或空白状态下,本来的内容为1;
(2)如果原来内容是1,在烧写0时,内容变为0;
(3)如果原来内容是1,在烧写或重复烧写1时,内容不变,等于没写;
(4)如果原来内容是0,在烧写或重复烧写 0时,内容不变,等于没写;
(5)如果原来内容是0, 在烧写或重复烧写1时,内容不变,等于没写;
(6) 一旦写入0后,其内容再也无法恢复为1(空白值)
凌阳科技公司为SPMC65准备的套装开发工具,即支持仿真器功能的PC机端软件为FortisIDE,支持烧写 器功能的PC机端软件为Q-Writer
(1)烧写器需要与其支持软件Q-Writer相互 配合才能工作。
(2)在Q-Writer烧写界面中不能在下传和上传程序窗口内修改程序代码。
(3)在烧写过程中,Q-Writer是把一个单片机 内部的所有OTP单元划分为2个相对独立的部分, 分别利用2条操作命令(Program和Secure),并且分别经历2次不同的烧写活动来单独实现烧写的。
(4)对于一次代码烧写活动,烧写器总是把除 了加密信息之外的所有OTP单元全部烧写一遍, 而并不管具体程序的代码长度是多大。
(5)在一次代码烧写过程中,总是从低地址到 高地址的OTP单元依次逐个单元烧写的。
(6)在代码烧写过程中每烧写完一个字节单 元,都会再读回到上传缓冲区中来,并且与下传缓冲区的原始代码字节进行逐个比较。只有所有OTP单元完全对应相同才会宣告成功。
(7)在伴随烧写过程所同步进行的比较活动 中,如果发现某一个OTP单元内容不同于下传缓冲区的原始代码,则会宣告失败。
(8)只要发现有任何一个OTP单元烧写失败 就会立刻中途停止,同时也就放弃了对于后面高地址单元的烧写行为。
(9)由于无论操作模式如何定义,自动烧写命 令Functio>Auto Run都是从空检操作开始的。只有芯片空白时才能够继续后面的烧写等操作,因此,在对于非空白片进行非首次的重复烧写时,该命令绝对不能使用!
OTP芯片重复烧写方法:
下面介绍的三种方法, 都可以实现利用一块OTP单片机芯片, 试验多个程序。 唯一的前提是所试验的程序并没有占用芯片的全部程序空间。
方法一,0FFFF可以变成0FFFFE这样不断向下编程,因此修改程序是在源程序下修改,若全为零则不可。
方法2
纯粹把试验程序存储器分为几段, 分别试验不同的程序。 这样也可以实现一块芯片试验多个程序。可以对较大的OTP存储空间进行分割,分段分次烧写程序代码,来重复利用这8KB的OTP。大块分为7680字节,用于分段分次烧写程序代码;小块分为512字节,用于分段分次烧写一条中断程序入口指令JMP,一片2408A 单片机最多可以提供126次的烧写机会。
方法3
攻击:
现代大部分芯片是基于半导体晶体管构成的,而半导体 晶体管易受电离辐射的影响,当使用光对半导体晶体管进行 照射时,由于光子的能量被晶体管中的电子吸收,当光子的 能 量超过半导体的能隙带宽, 就可以将半导体集成电路的 特定区域离子化,由于这种变化,晶体管的状态进而可能发 生改变。 目前用于光故障注入的光源主要有白光、X 射线、紫 外线及激光,使用这些光源照射芯片都能改变芯片的某个区 域, 但白光、X 射线及紫外线等光源很难将实际的光斑聚焦 到某个特定的位置,不能精确定位注入位置,而对于现代的 微控制器大多工艺技术是纳米级别的,由于激光够在时间和 空间上更加精确控制照射芯片特定区域,激光波长、光斑大 小、 光辐射能量以及光照时间上可以控制, 而激光对 SRAM 存储区影响较为明显,选择激光作为故障注入的照射光源较 为理想。
方法1:故障注入
EPROM存储器可以通过使存储器暴露在紫外线下完成擦除操作。通过紫外线的照射, 在浮动栅极中的电子能量增加,这样电子能解决不传导氧化物阻碍从基底流动到控制栅极的问题,达到擦除存储器单元的目的。
本文使用紫外线照射微控制器内部非易失性存储器,擦 除非易失性存储器中的内容,进而 分析照射时间与存储器位状态翻转数量之间的关系,在芯片 晶圆上涂抹一层紫外线保护墨水,进行光故障注入实验,评估该防护方法的效果。用该方法定位攻击芯片位置,针对高级加密标准(Advanced Encryption Standard, AES)的 S-box进 行光故障注入攻击。
器件:可反复擦写的Flash存储器、经解封的待测密码芯片、发射240nm-260nm波长紫外线的紫外线灯、对密码芯片中Flash储存器进行读写操作的PC及程序烧写器可采用RF-910 程序烧写器、用于控制紫外线故障感应影响范围的紫外控制装置;其中紫外线灯放置在距芯片4cm-6cm处进行照射。
使用紫外线照射微控制器内部非易失性存储器,在芯片晶圆上涂抹一层紫外线保护墨水,例如采用红墨水白板书写笔,将红墨水涂抹在芯片表面,控制紫外线故障感应影响范围。
进行密码芯片光故障注入攻击的方法,其特征在于:该方法包括如下步骤: 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进行对比确定初始密钥的最后一个比特位的状态,获得完整密钥。
一般情况 下,AES密码芯片将密钥写在NVM(Flash存储器)中,在密码算法的执行过程中,密钥会从NVM 中传递到SRAM中去,如果通过紫外线故障感应攻击方法直接改变NVM中密钥信息,那么很容易恢复出AES算法的密钥
两个问题:第一点是确定AES密钥在 Flash存储器的位置;二是控制紫外线故障注入改变密钥一个比特位。本发明为验证紫外线 故障攻击密码芯片方法的可行性,使用了一种简单、易于实现的方法,就可以改变Flash存 储器的单个比特状态。使用一种白板笔用红色墨水涂抹在密码芯片Flash存储器区域,这种 墨水能够有效阻止紫外线直接照射Flash存储器。使用紫外线故障感应系统对Flash存储器 进行照射,观测发现芯片Flash存储器单元第一个比特位翻转发生在第16分钟,有2个比特 位翻转发生在第18分钟,而到25分钟时仅有5个比特位状态发生改变,通过大量试验证明最 先改变的的逻辑地址位置是相同的。通过控制照射时间能够达到注入一个比特位故障的目 的,且通过可以将算法密钥特意写在该区域,即可以达到精确攻击的效果。
方法2:故障注入
使用故障注入提取芯片固件的手段,提取固件能不能提取密钥??
芯片内部内有RDP读取锁定,禁止调试与读取,使用紫外线照射芯片光电效应,跳过此RDP读取检查判断,进行固件提取。OTP可否借鉴?
RDP越过提取密钥,
data保存于内部RAM中,xdata保存于外部扩展SRAM中,code保存于FLASH中
单片机涉及的存储介质:
RAM: 内部RAM,每种51单片机都应该有,共256字节。大小固定
SRAM:内存,掉电消失,外部扩展RAM,比内部RAM稍慢,作用一样,用于定义变量。大小要查单片机具体手册。最大0xFFFF
FLASH:(保存程序代码,只能按扇区更改)。大小要查单片机具体手册。
EEPROM:(保存掉电保存的数据,flash中也可以保存掉电保存的数据,但EEPROM可以按字节寻址,比FLASH稍微灵活一点)。大小要查单片机具体手册。
应提取EEPROM中的数据??
现代大部分芯片是基于半导体晶体管构成的,而半导体 晶体管易受电离辐射的影响,当使用光对半导体晶体管进行 照射时,由于光子的能量被晶体管中的电子吸收,当光子的 能 量超过半导体的能隙带宽, 就可以将半导体集成电路的 特定区域离子化,由于这种变化,晶体管的状态进而可能发 生改变。 目前用于光故障注入的光源主要有白光、X 射线、紫 外线及激光,使用这些光源照射芯片都能改变芯片的某个区 域, 但白光、X 射线及紫外线等光源很难将实际的光斑聚焦 到某个特定的位置,不能精确定位注入位置,而对于现代的 微控制器大多工艺技术是纳米级别的,由于激光够在时间和 空间上更加精确控制照射芯片特定区域,激光波长、光斑大 小、 光辐射能量以及光照时间上可以控制, 而激光对 SRAM 存储区影响较为明显,选择激光作为故障注入的照射光源较 为理想。
方法2:消除加密
(1)单片机一般都有内部程序区和数据区,供用户存放程序和工作数据。为了防止未经授访问或拷贝 单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就叫单片机加密。
攻击者利用紫外线,擦除加密锁定位后,下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
(2)安全保险丝位可以通过聚焦的紫外线擦除。擦除这些熔丝位后,可以使用内部逻辑直接读取存储器。
寻找保护熔丝的位置并将保护 熔丝暴露在紫外光下。一般用一台放大倍数 至少 100 倍的显微镜,从编程电压输入脚的连 线跟踪进去,来寻找保护熔丝。若没有显微镜, 则采用将芯片的不同部分暴露到紫外光下并观 察结果的方式进行简单的搜索。操作时应用不 透明的纸片覆盖芯片以保护程序存储器不被紫 外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用 简单的编程器就可直接读出程序存储器的内容。??
五种不同设备上的实际紫外辐照实验结果