单片机一般都有内部EEPROM / FLASH供用户存放程序和工作数据。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序,这就叫单片机加密。
什么叫单片机解密呢?如果要非法读出里的程式,就必须解开这个密码才能读出来,这个过程中单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序,这就叫单片机解密。
大部分单片机程式都有一定的加密措施,但一般的保护措施很脆弱,很容易被破解。因此,电子工程师在做产品设计时,既要了解单片机的加密技术,也要了解当前单片机攻击的最新技术,做到知己知彼,才能有的放矢,防止自己辛辛苦苦设计出来的产品被人家一夜之间仿冒。
大多数情况下,单片机是如何被破解的呢?
首先来看看单片机的结构与组成
1.中央处理器CPU,包括运算器、控制器和寄存器组。是MCU内部的核心部件,由运算部件和控制部件两大部分组成。
2.存储器,包括ROM和RAM。ROM程序存储器即用来存放已编的程序(系统程序由制造厂家编制和写入)。存储数据掉电后不消失。RAM数据存储器,在程序运行过程中可以随时写入数据,又可以随时读出数据。存储数据在掉电后不能保持。
3.输入、输出I/O接口,与外部输入、输出(电路)设备相连接。
此外,还有还有ADC模拟量输入、输出端口等。
再来看看,破解单片机的两种方式:
一、非侵入式攻击
大部分非侵入型攻击需要攻击者具备良好的处理器知识和软件知识。它的优点是:不需要对元器件进行初始化,被攻击的单片机不会被物理损坏。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。
一旦成功,这种攻击很容易普及,并且重新进行,攻击不需要很大的开销,而且这种攻击不会留下痕迹。因此,这被认为是对任意元器件的硬件安全最大的威胁。
非侵入式攻击可以是被动的或主动的。被动攻击,也叫侧面攻击,不会对被攻击元器件发生作用,但通常是观察它的信号和电磁辐射,包括功耗分析和时序攻击。主动攻击,如穷举攻击和噪声攻击,特点是将信号加到元器件上,包括电源线。
下面介绍三种典型的非侵入式攻击:
1.时序攻击(TIming attacks)
一些安全相关的操作使用输入的值和密钥,由半导体芯片执行不同的时间来比较。小心的时序测量和分析就能恢复出密钥。这种攻击成功破解了实际的RSA签名的智能卡。
为了攻击成功,需要收集装置的信息,与处理时间整合比较,如问答延迟(quesTIon-answer delay)。很多密码算法容易受到时序攻击,主要原因是软件来执行算法。时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品。
为防止此类攻击可以使用盲签名(Blinding signatures)技术。利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则,设计者需要小心计算处理器的周期。当密码进行比较时确保正确和错误的时间是一样的,例如:飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部闪存。为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令。这对时序攻击提供了很好的保护。
2.噪声攻击(Glitch attacks)
噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化。最近出现一种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场,针尖将集中磁力线。
3.穷举攻击(也称暴力攻击Brute force attacks)
对于密码,暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥。一个例子是微控制器中的密码保护设置。以TI的MSP430为例,密码本身长度为32字节(256位),抵挡暴力攻击已经足够了。但密码分配在与处理器中断矢量相同的存储器地址。那么,首先减少存储器内矢量一直指向的区域。然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。
结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。暴力攻击也可用在ASIC或CPLD的硬件设计来实现。
另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。
此外还有数据保持能力分析(Data remanence)、功耗分析(Power analysis)、电子探测攻击、软件攻击等非侵入式攻击方式。
二、侵入型攻击
侵入型攻击(物理攻击),这类攻击需要破坏封装,然后借助半导体测试设备、显微镜和微定位器,在专门的实验室花上几小时甚至几周时间才能完成。与非侵入式攻击相反,侵入型的攻击则不需要太多的初始知识,而且通常可用一整套相似的技术对付宽范围的产品。因此,对单片机的攻击往往从侵入型的反向工程开始,积累的经验有助于开发更加廉价和快速的非侵入型攻击技术。
侵入型攻击的一般过程:
第一步:除去芯片封装。有两种方法可以达到这一目的:第一种是完全溶解掉芯片封装,暴露金属连线。第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。
芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接。
第二步:清洗。接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并干燥。
第三步:紫外光照射。寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。
对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。
探针技术是常用的侵入式攻击方式。
探针技术
该技术是直接暴露芯片内部连线,然后观察、操控、干扰单片机以达到攻击目的。所有的微探针技术都属于侵入型攻击。
虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。
由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据存储器中的所有信息。
还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,只要切断从保护熔丝到其它电路的某一根信号线,就能禁止整个保护功能。
那么,我们可以从哪些方面着手防止单片机被破解呢?其实任何一款单片机从理论上讲,攻击者均可利用足够的投资和时间使用以上方法来攻破。破解无法避免,我们能做的就是提高破解成本。
单片机加密技术
单片机加解密可划分为两大类,一类是硬件加密,一类是软件加密。硬件加密,对于单片机来说,一般是单片机厂商将加密熔丝固化在IC内,熔丝有加密状态及不加密状态,如果处于加密状态,一般的工具是读取不了IC里面的程序内容的,要读取其内容,这就涉及到硬件解密,必须有专业的硬件解密工具及专业的工程师。
众所周知,ASIC提供了很好地保护措施来防止多种攻击,只有极少数经验丰富且装备精良的破解者才有可能成功破解。另一个简单的方法是限制访问程序存储器。通常用在智能卡中,但一些微控制器中也用到,所有的客户被与芯片制造商迫签署不扩散协议。
传统软件加密方式归纳起来主要有以下几种;
1.指令伪装法
2.故意破坏单片机芯片特定硬件进行资源加密法,主要有以下几种:a.故意烧坏数据总线;b.破坏芯片的加密锁定位;c.破坏MCS.51的EA引脚。
3.总线加密法:总线加密法主要有地址总线乱序法、数据总线乱序法,或在MCU芯片地址总线与存储器地址总线间增加可编程芯片,使MCU芯片地址与存储器地址之间形成新的映射关系。
此外,还有更加先进的基于芯片身份识别码、片内RC振荡器频率离散性、上电标志等实用的单片机控制程序加密方式,本文不再展开论述,需要的人可以自行查阅资料。
为了保证加密效果,通常需要软硬件综合加密、时间加密、错误引导加密 等多项加密措施联合使用。
总之,在选定加密芯片前,要充分调研,了解单片机破解技术的新进展,包括哪些单片机是已经确认可以破解的,尽量不选用已可破解或同系列、同型号的芯片,比如MCS51系列单片机,因为该单片机在国内的普及程度最高,被研究得也最透。而要选择采用新结构、新工艺、上市时间较短的单片机。比如ATMEGA88/ATMEGA88V,这种国内目前破解的费用需要一万元左右,高昂的破解成本让一般人望而止步;另外,也可以和CPLD结合加密,这样解密费用很高,解密一般的CPLD也要一万左右。
要想从根本上防止单片机被解密是不可能的,加密技术不断发展,解密技术也不断发展,现在不管哪个单片机,只要有人肯出钱去做,基本都可以做出来,只不过代价高低和周期长短的问题,编程者还可以从法律的途径对自己的开发作出保护(比如申请专利)。
SX32Y025000BK1T003/无源晶振 | 0.222 | |
XO32C008000GDHE001/有源晶振 | 1.46 | |
XO32C024000GBHE003/有源晶振 | 1.46 | |
SX32Y008000BC1T001/无源晶振 | 0.5772 | |
SX32Y012000BK1T005/无源晶振 | 0.2331 | |
GRM21BZ71E106KE15L/贴片电容(MLCC) | 0.27694 | |
GRM188Z71A106KA73D/贴片电容(MLCC) | 0.210359 | |
GRM188Z71C475KE21D/贴片电容(MLCC) | 0.2402 | |
ATMEGA48PA-AU/单片机(MCU/MPU/SOC) | 6.17 | |
GRM035R60J475ME15D/贴片电容(MLCC) | 0.162562 |
50万+现货SKU
品类不断扩充中
科技智能大仓储
最快4小时发货
正品有保障
物料可追溯
明码标价节省时间
一站式采购元器件