Flash型单片机的加密与解密
芯片破解

单片机解密1、背景单片机(MCU)一般都有内部EEPROM/FLASH供用户存放程序和工作数据。
为了防止访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。
如果在编程时加密锁定位被使能(锁定),就无法用普通的编程器直接读取单片机内的程序,这就是所谓单片机加密或者说锁定功能。
事实上,这样的保护措施很脆弱,很容易破解。
单片机攻击者借助专用设备或自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片提取关键信息,获取单片机内程序。
2、解密方法1)软件方法:主要针对SyncMos. Winbond等在生产工艺上的漏洞,利用某些编程器空位插字节,通过一定的方法查找芯片中是否有连续的空位,也就是查找芯片中连续的FF FF 字节,插入的字节能够执行把片内的程序送到片外的指令,然后用破解的设备进行截获,这样芯片内部的程序就被破解完成了。
2)硬件电路修改方法:其流程为a:测试使用高档编程器等设备测试芯片是否正常,并把配置字保存。
注:配置字指的是在PIC等系列的单片机里,其芯片内部大都有设置一个特殊的存储单元,地址是2007,由用户自由配置,用来定义一些单片机功能电路单元的性能选项。
b:开盖可以手工或开盖机器开盖。
c:做电路修改对不同芯片,提供对应的图纸,让厂家切割和连线,对每一个割线连线一般需要提供芯片位置概貌图、具体位置图、FIB示意图三张图纸(部分小的芯片只提供概貌图和FIB图)。
d:读程序取回电路修改后的单片机,直接用编程器读出程序。
e:烧写样片按照读出的程序和配置,烧写样片提供给客户。
这样就结束了IC解密。
3)软件和硬件结合的方法,比如对HOTEK,MDT等单片机破解。
3、芯片解密服务流程当客户有芯片解密的需求后,可以通过联系解密客户服务厂家进行沟通、咨询,提供详细的需解密的芯片信号及后缀、封装等相关特征。
厂家根据客户提供的具体型号由技术部门进行评估,确认是否能破解,若能破解,厂家确认好所需的费用和解密的周期,客户提供完好的母片并支付部分定金(对于某些芯片,可能还需要必要的测试环境),解密服务正式启动。
Flash型单片机的加密与解密

Flash型单片机的加密与解密2005 年4 月A 版摘要:随着Flash 型单片机的普及,单片机加密的技术已经有了较大的变化。
本文以HCS12 系列单片机为例,介绍一种典型的加解密机制,并着重讨论使用密码加解密的方法以及相应的用户接口程序设计思路。
关键词:Flash 型单片机;加密;解密;密码引言厂商利用单片机进行产品开发时,都会关心其代码和数据的保密性。
考虑到用户在编写和调试代码时所付出的时间和精力,代码的成本是不言而喻的。
早期的单片机,代码是交给芯片制造商制成掩膜ROM。
有两种加密的机制,一是彻底破坏读取代码的功能,无论是开发者还是使用者都永远无法读取其中的内容。
从安全上来说,这种方式很彻底,但是已经无法检查ROM 中的代码了。
另一种方法是不公开读取方法,厂商仍可以读取代码。
这种方式留有检查代码的可能性,但是并不能算是一种真正的“加密”,被破解的可能性是存在的。
客观地讲,一方面希望加密很彻底,而另外一方面又希望留有检查代码的可能,这是相互矛盾的要求。
自Flash 技术得到广泛应用以来,各类单片机制造商纷纷采用了多种不同的芯片加密方法,对比掩膜ROM 芯片来说,Flash ROM 在线可编程特性使得芯片的加密和解密方式变得更加灵活和可靠。
在Flash 型单片机中,芯片的加密和解密工作都是通过对Flash ROM 的编程来完成的,由于用户程序可以在线地改写ROM 的内容,可以编写一套加密和解密的小程序,随用户程序下载到芯片中,通过运行该程序,在线修改Flash ROM 的内容,对芯片进行加密和解密,使整个的加解密过程更为简单灵活。
Freescale 公司的HCS12 单片机采用的加解密思路有一定的典型性,我们对此作了一些研究,现以MC9S12DP256 单片机为例,介绍Flash 型单片机的加密解密方法。
单片机数据加密算法

单片机数据加密算法
1. 对称加密算法,对称加密算法使用相同的密钥来加密和解密数据。
常见的对称加密算法包括AES(高级加密标准)、DES(数据加密标准)和3DES。
这些算法在单片机上通常具有较高的执行效率和较小的存储需求。
2. 非对称加密算法,非对称加密算法使用公钥和私钥来加密和解密数据。
常见的非对称加密算法包括RSA、ECC(椭圆曲线加密)和DSA(数字签名算法)。
这些算法通常比对称加密算法更复杂,因此在单片机上的实现可能需要更多的计算资源。
3. 哈希函数,哈希函数用于将任意长度的数据映射为固定长度的哈希值。
常见的哈希函数包括SHA-1、SHA-256和MD5。
在单片机上,哈希函数通常用于验证数据的完整性和生成消息摘要。
4. 随机数生成器,随机数生成器用于生成加密过程中需要的随机数。
在单片机上,通常使用伪随机数生成器来产生随机数序列。
在选择单片机数据加密算法时,需要综合考虑安全性、执行效率和存储需求。
合适的加密算法可以保护数据安全,同时不会对单
片机的性能造成过大的影响。
同时,还需要注意算法的实现细节,以防止可能的侧信道攻击和其他安全风险。
最终选择的加密算法应该能够满足具体应用场景的安全需求。
(完整版)单片机解密方法简单介绍(破解)

单片机解密方法简单介绍下面是单片机解密的常用几种方法,我们做一下简单介绍:1:软解密技术,就是通过软件找出单片机的设计缺陷,将内部OTP/falsh ROM 或eeprom代码读出,但这种方法并不是最理想的,因为他的研究时间太长。
同一系列的单片机都不是颗颗一样。
下面再教你如何破解51单片机。
2:探针技术,和FIB技术解密,是一个很流行的一种方法,但是要一定的成本。
首先将单片机的C onfig.(配置文件)用烧写器保存起来,用在文件做出来后手工补回去之用。
再用硝酸熔去掉封装,在显微镜下用微形探针试探。
得出结果后在显微镜拍成图片用FIB连接或切割加工完成。
也有不用FIB用探针就能用编程器将程序读出。
3:紫外线光技术,是一个非常流行的一种方法,也是最简单的一种时间快、像我们一样只要30至1 20分钟出文件、成本非常低样片成本就行。
首先将单片机的Config.(配置文件)用烧写器保存起来,再用硝酸熔去掉封装,在显微镜下用不透光的物体盖住OTP/falsh ROM 或eeprom处,紫外线照在加密位上10到120分钟,加密位由0变为1就能用编程器将程序读出。
(不过他有个缺陷,不是对每颗OT P/falsh都有效)有了以上的了解解密手段,我们开始从最简的紫外光技术,对付它:EMC单片机用紫外光有那一些问题出现呢?:OTP ROM 的地址(Address:0080H to 008FH) or (Address:0280h to 028FH) 即:EMC的指令的第9位由0变为1。
因为它的加密位在于第9位,所以会影响数据。
说明一下指令格式:"0110 bbb rrrrrrr" 这条指令JBC 0x13,2最头痛,2是B,0X13是R。
如果数据由0变为1后:"0111 bbb rrrrrrr"变成JBS 0x13,2头痛啊,见议在80H到8FH 和280H到28FH多用这条指令。
FLASH解锁

接触dsp已经有一段时间了,从Hellodsp得到了很多帮助,前段时间本人也进行了第一次烧写,幸运的遇到了FLASH锁死的情况,不知该哭该笑,我们系很少人玩DSP,少写过的人不多,遇到锁死的就更少了,没人给解决,只能在网上搜,最终皇天不负有心人,搞定!!废话不多说,下面就分享一下该怎么解锁(部分借用网络资源,在此感谢!!):根据得到的.out文件,通过hex2000.exe来得到相应的ASCII码文件,文件中00 08 00 3F 7F F8 EE EE FF FF FF FF FF FF FF FF FF FF FF FF FF FF为密码区,其中00 08 00 3F 7F F8为密码区地址,后面16组为实际密码,LSB到HSB。
需要:对应的.out 和.map文件,分别用来生成hex文件和查看链接关系。
配置:build.bat 批处理文件,用windows的命令提示符来得到所需要的hex文件,编码为ASCII;用记事本打开内填写hex2000.exe在你电脑中的目录build.cmd 命令文件,采用hex2000.exe程序选项命令来得到所需文件。
具体命令:-memwidth 16 设定存储器格式为16bit ,不用管-romwidth 16 设定rom格式为16bit&,不用管-a 设定输出文件格式,填写你的.OUT名如我的是Tlv320aic23x.out-o 设定输出文件名,随便起个名字,是你得到密码的文件名-map 设定输出映射文件,填写你的.map名如我的是Tlv320aic23x.map-boot 设定引导数据流,不做操作hex2000.exe 程序文件,ccs自带的,路径为..\C2000\cgtools\bin\hex2000.exe更多有关此程序的命令选项请参考相关资料。
00 3F 7F F8 这段数字后的数据为地址003f7ff8中的内容,也即密码区的首字节,根据前面得到的ascii格式的文本文件,搜索3F 7F数据组合,然后其后的就是实际烧进去的数据。
单片机加密及几种方法

单片机加密及几种方法单片机加密的几种方法(1)单片机加密方法:科研成果保护是每一个科研人员最关心的事情, 目的不使自己的辛苦劳动付注东流。
加密方法有软件加密, 硬件加密, 软硬件综合加密, 时间加密, 错误引导加密, 专利保护等措施。
有矛就有盾, 有盾就有矛, 有矛、有盾, 才促进矛、盾质量水平的提高。
加密只讲盾, 也希望网友提供更新的加密思路。
现先讲一个软件加密: 利用MCS-51 中A5 指令加密,( 本人85 年发现的, 名软件陷阱), 其实世界上所有资料, 包括英文资料都没有讲这条指令, 其实这是很好的加密指令。
A5 功能是二字节空操作指令。
加密方法在A5 后加一个二字节或三字节操作码, 因为所有反汇编软件都不会反汇编A5 指令, 造成正常程序反汇编乱套, 执行程序无问题。
仿制者就不能改变你的源程序, 你应在程序区写上你的大名、单位、开发时间及仿制必究的说法, 以备获得法律保护。
我曾抓到过一位“获省优产品”仿制者, 我说你们为什么把我的名字也写到你的产品中?硬件加密:8031/8052 单片机就是8031/8052 掩模产品中的不合格产品, 内部有ROM( 本人85 年发现的), 可以把8031/8052 当8751/8752 来用, 再扩展外部程序器, 然后调用8031 内部子程序。
当然你所选的同批8031 芯片的首地址及所需用的中断入口均应转到外部程序区。
(2) 单片机加密方法:各位, 我在这里公开场合讲加密, 有的只能讲思路, 有的要去实验, 要联想, 要综合应用各种方法, 甚至有的不能言传, 只能意会。
因为这里有的造矛者也在看我们如何造盾, 当然, 我们也要去看人家怎样造矛, 目前国内、外最高造矛的水平怎样。
“知已知彼, 才能百战百胜”。
硬件加密: 使他人不能读你的程序① 用高电压或激光烧断某条引脚, 使其读不到内部程序, 用高电压会造成一些器件损坏。
② 重要RAM 数据采用电池( 大电容, 街机采用的办法) 保护, 拔出芯片数据失去。
单片机破解

单片机破解的常用方法及应对策略摘要:介绍了单片机内部密码破解的常用方法,重点说明了侵入型攻击/物理攻击方法的详细步骤,最后,从应用角度出发,提出了对付破解的几点建议。
关键词:单片机;破解;侵入型攻击/物理攻击1引言单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。
为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。
如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。
事实上,这样的保护措施很脆弱,很容易被破解。
单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。
因此,作为电子产品的设计工程师非常有必要了解当前单片机攻击的最新技术,做到知己知彼,心中有数,才能有效防止自己花费大量金钱和时间辛辛苦苦设计出来的产品被人家一夜之间仿冒的事情发生。
2单片机攻击技术目前,攻击单片机主要有四种技术,分别是:(1)软件攻击该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。
软件攻击取得成功的一个典型事例是对早期ATMELAT89C系列单片机的攻击。
攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。
(2)电子探测攻击该技术通常以高时间分辨率来监控处理器在正常操作时所有电源和接口连接的模拟特性,并通过监控它的电磁辐射特性来实施攻击。
因为单片机是一个活动的电子器件,当它执行不同的指令时,对应的电源功率消耗也相应变化。
这样通过使用特殊的电子测量仪器和数学统计方法分析和检测这些变化,即可获取单片机中的特定关键信息。
Flash文件的破解与加密方法探秘

Flash文件的破解与加密方法探秘破解和防破解是必是同时存在的对立体。
如同制造病毒和防范病毒一样,制造病毒的言论从不会公开出现在一些名门场合,所以每当病毒来袭,防范的一方总是措不及防。
我们更希望看到的不是偷偷摸摸,而是从破解和防范中学习到实用的技术和知识。
一、破解篇这里所谈的破解,包括提取swf、破解已加密及未加密的swf,即通常所说的“swf to fla”。
获取swf的工具·Flash Saver - 保存网页中的swf·Flash文件格式转换器(FlashChanger) - 转换未加壳的exe 为swf·Flash吸血鬼- 不得已时用之。
提取范围很广,只要能看到Flash的窗口,包括加壳及未加壳的exe、网页等等。
在使用Flash吸血鬼提取swf的过程中建议不要进行其他操作,否则速度会变得极其缓慢,配置不好的机器有可能死机。
这也是这款软件目前版本(v2.2)最大的一个不足之处。
如果想中止程序,可以在任务管理器中结束。
使用Temporary Internet Files(IE缓存)下载MV、SWF等资源偶尔会有网友问我关于网上MV 如何下载,其实方法很简单,只要到Temporary Internet Files 文件夹下就能找到想找的大部分网络资源。
Temporary Internet Files 是IE 的临时文件夹。
目录一般在C:\Documents and Settings\你的用户名\Local Settings\Temporary Internet Files使用Temporary Internet Files 查找资源的技巧:先清空Temporary Internet Files,然后用IE 打开或刷新你要找的资源(比如MV) 所在的网页。
再刷新Temporary Internet Files 就能看到了,如果资源比较大,需要过一会,等下载完后再刷新才能看到。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Flash型单片机的加密与解密
厂商利用单片机进行产品开发时,都会关心其代码和数据的保密性。
考虑到用户在编写和调试代码时所付出的时间和精力,代码的成本是不言而喻的。
早期的单片机,代码是交给芯片制造商制成掩膜ROM。
有两种加密的机制,一是彻底破坏读取代码的功能,无论是开发者还是使用者都永远无法读取其中的内容。
从安全上来说,这种方式很彻底
,但是已经无法检查ROM中的代码了。
另一种方法是不公开读取方法,厂商仍可以读取代码。
这种方式留有检查代码的可能性,但是并不能算是一种真正的“加密”,被破解的可能性是存在的。
客观地讲,一方面希望加密很彻底,而另外一方面又希望留有检查代码的可能,这是相互矛盾 的要求。
自Flash技术得到广泛应用以来,各类单片机制造商纷纷采用了多种不同的芯片加密方法,对比掩膜ROM芯片来说,Flash ROM在线可编程特性使得芯片的加密和解密方式变得更加灵活和可靠。
在Flash型单片机中,芯片的加密和解密工作都是通过对Flash ROM的编程来完成的,由于用户程序可以在线地改写ROM的内容,可以编写一套加密和解密的小程序,随用户程序下载到芯片中,通过运行该程序,在线修改Flash ROM的内容,对芯片进行加密和解密,使整个的加解密过程更为简单灵活。
Freescale公司的HCS12单片机采用的加解密思路有一定的典型性,我们对此作了一些研究,现以MC9S12DP256单片机为例,介绍Flash型单片机的加密解密方法。
BDM
Freescale公司的很多单片机都借用一种被称为后台调试模式(Background Debug Mode,BDM)作为下载和调试程序的接口。
BDM是一种单线调试模式,芯片通过一个引脚与编程器进行通信。
在HCS12系列单片机中,内部都置有标准的BDM调试模块。
该模块的有三种作用:
1) 对内部存储器的读写。
将用户程序下载到目标芯片中或是将存储器中的数据读出。
2) 对单片机工作方式和资源进行配置。
部分涉及到单片机工作方式和资源配置的寄存器只能在特殊模式下由编程器发送BDM命令来修改。
3) 程序调试。
利用BDM模块可以读写内存和CPU内部寄存器,调试程序。
在HCS12单片机未加密的状态下,使用BDM硬件命令可以将Flash ROM中的程序读出或将新的程序写入。
BDM命令可以由独立的硬件系统来送出,我们一般称此类系统为BDM编程器。
BDM编程器的时序协议是公开的,任何人都可以根据协议设计硬件、编写程序,实现BDM编程器的功能。
使用BDM接口,编程器可以很容易的访问到目标系统的存储器,这给程序调试和烧写带来了很大
在带有BDM模块的单片机中引入数据保密机制并非HCS12系列的首创,先前的HC12系列单片机的D家族中,就已经引入了屏蔽Lockout BDM读写的机制,可惜,该机制在单片机的扩展工作模式下存在着漏洞。
相比之下,HCS12系列单片机中的保密机制更加完善,无论在BDM模式下或是扩展模式下,都可以屏蔽外部对Flash ROM的读写。
在HCS12系列单片机中,加密可以分成两种方法:完全加密和使用密码的加密。
这两种加密的方法根据用户的需求,使用的场合也有所不同。
所谓完全加密,就是将芯片彻底的保护起来,屏蔽对芯片的所有读操作。
在MC9S12DP256单片机中,加密是通过对某一Flash单元($FF0F)编程来实现的。
加密后的芯片,BDM编程器对Flash的读操作就被禁止了。
采用完全加密,读取ROM代码的可能性就不存在了,这是一种最为“安全”的加密方法。
如果用户 想修改ROM的内容,唯一的办法就是将Flash的内容全部擦除,这一操作可以通过BDM编程器来完成。
使用BDM编程器擦除Flash ROM和EEPROM的过程与在普通模式下对片内的Flash ROM擦除操作过程基本一样,区别是对寄存器或是存储单元的读写要改由BDM命令来实现。
通过BDM编程器将一连串完整的擦除指令序列送给单片机,就可将Flash ROM和EEPROM的内容全部擦除了。
在全擦除操作完成后,BDM编程器将系统复位,系统会自动检查全擦除操作是否成功。
如果成功
,BDM状态寄存器的UNSEC位会自动置“1”,系统进入解密状态。
由于系统靠检查Flash ROM和EEPROM是否清空来决定系统是否保持加密状态,所以,如果用户程序偶然将Flash ROM和EEPROM的内容全部擦除,那么系统也将自动解密。
为了留有读取ROM代码的可能,用户可以采用一种带有密码的加密方式。
解密时,用户只要给出正确的密码(称为“后门密码”),就可以读写ROM,而不破坏其内容了。
使用这种方法,用户需要在加密之前,设定4个字长的密码,并将其存放在Flash中
,MC9S12DP256存放密码的Flash地址是从$FF00到$FF07。
设定的密码可以随用户程序一起下载到芯片中。
解密时,接受用户输入的密码并验证的工作只能由一个用户接口程序来完成的,不能使用BDM编程器。
接口的方式没有限制,如SCI、SPI、IIC、MSCAN等等,只要用户能够将正确的密码输入,任何一种接口方式都是可以的,最为典型的接口是串口。
假设接收的密码存在变量KEY0-KEY7中,验证密码的程序如下:
;* TEST KEYS
;******************
TESTKEYS
BSET FCNFG,$20 ;置KEYACC为1
LDD KEY0
STD $FF00
LDD KEY2
STD $FF02
LDD KEY4
STD $FF04
LDD KEY6
STD $FF06 ;验证KEY0-KEY7
BCLR FCNFG,$20 ;清KEYACC为0
LDAA FSEC
ANDA #$03
CMPA #$02
BNE FAIL&n
bsp; ; 是否验证成功?
SUCCESS ; 密码验证成功
LDAA FSTAT ; 清除Flash状态寄存器
ORAA #%00110000
STAA FSTAT
LDAA #0
STAA FCNFG
BRCLR FSTAT,$80,*
LDD #$FFFE
STD $FF0E ; 改写加密状态,复位后系统不再加密
LDAA #$20
STAA FCMD
BSET FSTAT,#$80 ; 开始执行
BRCLR FSTAT,$40,*
RTS ; 返回
FAIL RTS
程序返回后,如果用户输入的密码和原值符合,系统将会把保密寄存器FSEC的最后两位SEC[1:0]改写到未加密的状态,系统自动解密。
如果验证没有通过,系统将保持加密状态。
需要注意,不管使用哪种方式将系统解密,解密后的系统虽然可以暂时读取Flash,但是由于单元$FF0F中的最后两位仍处于加密状态(全擦除后,“11”的组合仍为加密状态),系统在下次复位后,仍会回到加密的状态,所以为了彻底解密系统,必须改写这两位为“10”。
整个程序的流程如图1所示。
图1 解密用户接口程序流程图
通过研究我们发现,使用带有密码的加密方式,看似给破解代码留有了可能性,但因为接受
和验证密码都需要由用户程序完成,只要用户程序设计的可靠,这种可能性是很小的。
为了增强用户接口程序的可靠性和灵活性,我们提出以下几种可能的设计思路:
针对穷举密码的对策:MC9S12DP256的密码长达8个字节,如果不将密码限定在ASCII码的范围内
,那么可以选择的密码数量将达到1.8*1019 种。
为了防患破解者穷举密码,用户可以设定允许输入错误密码的次数,如果出错超过一定次数,接口程序就不再接收新的密码了。
允许出错的次数可以根据安全需要和使用方便综合考虑。
灵活的对外接口:使用密码加解密时,用户程序使用的对外接口是没有任何限制的。
本文中的串口程序只是一例,MC9S12DP256片内集成了众多的接口模块,如SCI、SPI、IIC、MSCAN、J1850等等。
使用哪一个接口,用户可以根据方便和安全考虑自己选择,这样也会使破解者难以入手。
用户程序级密码验证:用户还可以给接口程序增设一级密码验证的步骤。
只有通过该密码验证,才能进一步输入解密的密码。
因为加密后,Flash ROM就无法读写了,用户程序可以将增设的密码也保存到Flash中,留待验证。
另外,如果某一个模块既要作为接受密码的接口,又有其他的用途,也应该留有一个交互界面,在使用前让用户选择该模块的用途。
远程加解密:在很多场合,用户对于单片机的控制是通过以太网等介质远程实现的,只要有相应的接口程序,能够远程对单片机进行加解密,这无疑会给用户的工作带来很大的方便。
Flash在线编程技术的出现给单片机中的加密机制带来了很大的改变。
通过对HCS12系列单片机加解密方法的分析,我们认为这种加解密的机制具有足够的安全性,以及灵活的加解密方式。
另外,使用密码解密的可靠性很高,实现的过程依赖于用户程序,只要精心设计接口程序,用户完全可以将这种风险降至最低。
参考文献:
1. 邵贝贝,‘单片机嵌入式应用的在线开发方法’,清华大学出版社,2004.
2. 'MC9S12DP256B Device User Guide', V02.14, 9S12DP256BDGV2/D Motorola Inc.。