单片机加密的几种方法
单片机程序固件加密的另一种思路

0引言:MCU 的发展过程和固件加密重要性随着大规模集成电路的出现和发展,单片机(MCU )将原有计算机上的CPU 、RAM 、ROM 、定时计数器和多种I/O 接口集成到一个芯片,从而形成芯片级的计算机。
这也是TI 工程师的Gary Boone 和Michael Cochran 发明的全球第一颗微控制器(MCU )———TMS 1000系列(图1)的雏形。
之后,日本电子厂商开始生产汽车用微控制器,包括用于车内娱乐、自动雨刷、电子锁和仪表盘的4位MCU ,以及用于发动机控制的8位MCU 。
时至今日,单片机除了传统的玩具市场、工业控制、汽车电子、白家电等,在物联网以及智能化浪潮来临以后,单片机更加成为产品设备的核心部件,一方面设备需要进行实时性高效智能的信息,另一方面还要能与其他设备进行信息互换,这些需求都需要由单片机来完成。
而中国拥有最为广泛的消费群体和应用场景,单片机在国内的发展优势也更为明显。
从图2所示,预计到2022年,中国MCU 市场规模将突破300亿元大关,预计达到319亿元!可以说,单片机因应用而生,除了芯片本身硬件性能,与应用相关的程序固件越发显得重要,固件安全的需求也就越来越受到关注!1单片机的信息安全首先,广义上的“安全”,也可视作为“信息安全”,它具有三个重要的特点:1)保密性:需要确保信息不为其它未授权的个人或团体所获得。
2)完整性:维持和确保信息的完整,不被未授权的篡改。
3)可行性:被授权访问信息的主体,在需要信单片机程序固件加密的另一种思路丘宁冰创芯工坊科技(深圳)有限公司图1TI 的TMS 1000系列MCU图2中国MCU 市场规模增长与预测息的时候能及时访问并获取。
保密性Confidentiality,Integrity完整性和可行性Availability,简称:CIA。
从以上特征描述,引申出处理信息安全的三种常用工具:标识、认证以及授权,也简称为:IAA。
1)标识:Identity首先,信息访问者标明主体身份,但是不确定该主体确实可访问该信息?所以,得验证其真假;2)认证:Authentication身份认证也就是核实主体声称的内容是否属实?以便在主体身份核实后,进行更细化的动作3)授权:Authorization作为更精细的信息处理,需要解决的问题包括:确保哪些信息可被授权人查看?被查看的信息是否保持完整,未被未授权的修改?以及被授权人可以随时方便的访问可查看的信息。
单片机数据加密算法

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

• 18•本文从单片机系统的组成及技术特点出发,分析了单片机系统常见的加密方法及其优缺点,充分利用解密中的汇编代码可读性差的特点,提出了一种基于唯一ID 的单片机程序综合加密方法。
单片机又称为微控制单元,或单芯片微型计算机,其广泛应用于智能仪表、实时工控、通讯设备、导航系统、家用电器等各种领域。
一个单片机产品由硬件和软件组成,硬件的通用性和可见性,硬件加密一般难以实施,加密措施通常通过软件实现。
如何保护好自己的单片机技术成果和知识产权,提高解密成本,是单片机开发者在产品设计中必需考虑的要素之一。
1 常见的加密与解密分析解密的目的是为了省去耗时耗力的开发过程,轻易地做出一个功能相同或相似的产品。
解密过程的第一步是复制硬件,硬件一般由通用器件和印制电路板组成,一般没复制难度;然后读取出单片机的程序文件,基本都可以实现,而且越是使用量大的单片机,读取技术越成熟;最后破解程序中的加密措施,让程序烧录到新的单片机在复制的硬件上正常运行,完成破解。
下面先分析常见的加密方防止通用的编程调试工具读取;关闭调试接口,如stm32系列的JTAG 接口和SWD 接口,此方法可以有效防止常规的破解工具读取,增加一定的破解难度;切断物理意义上的通讯线路,这种方法保护更有效,但从此不能再对单片机写入程序,对于售后服务来说是一种风险。
如stm32系列单片机的存储器读保护级别。
1.3 使用专业的加密芯片使用加密芯片的成本更加高,对于成本敏感的单片机产品接受度很低。
1.4 使用唯一ID号一些单片机在出厂的候芯片内部给予了一个唯一的ID 。
选择一种特殊的算法,利用这个唯一的ID ,产生一组数据X ,把这个数据预先烧录到存储器里。
单片机上电初始化的时候,先读出存储器里的这个数据X ,然后读出自身的ID 号通过加密算法算出一个值Y ,然后比较XY 值是否一样,如果一样则继续工作,否则停止工作,这是最实用的一种方法。
1.5 利用外部电路参数校正对于一些非纯数字电路,电路自身存在有较大的参数偏差,利用软件校正参数偏差,使得每一块电路板的程序电路一种基于唯一ID的单片机程序综合加密方法天地(常州)自动化股份有限公司 陈 贤法及其特点。
AT89C系列单片机加解密原理

AT89C系列单片机加解密原理AT89C系列单片机加解密原理单片机解密简单就是擦除单片机片内的加密锁定位。
由于AT89C系列单片机擦除操作时序设计上的不合理。
使在擦除片内程序之前首先擦除加密锁定位成为可能。
AT89C系列单片机擦除操作的时序为:擦除开始---->擦除操作硬件初始化(10微秒)---->擦除加密锁定位(50----200微秒)--->擦除片内程序存储器内的数据(10毫秒)----->擦除结束。
如果用程序监控擦除过程,一旦加密锁定位被擦除就终止擦除操作,停止进一步擦除片内程序存储器,加过密的单片机就变成没加密的单片机了。
片内程序可通过总线被读出。
对于AT89C系列单片机有两种不可破解的加密方法。
一、永久性地破坏单片机的加密位的加密方法。
简称OTP加密模式。
二、永久性地破坏单片机的数据总线的加密方法。
简称烧总线加密模式。
OTP加密模式原理这种编程加密算法烧坏加密锁定位(把芯片内的硅片击穿),面不破坏其它部分,不占用单片机任何资源。
加密锁定位被烧坏后不再具有擦除特性,89C51/52/55有3个加密位进一步增加了加密的可靠性。
一旦用OTP模式加密后,单片机片内的加密位和程序存储器内的数据就不能被再次擦除,89C51/52/55单片机就好象变成了一次性编程的OTP型单片机一样。
如果用户程序长度大于89C51单片机片内存储器的容量,也可使用OPT模式做加密,具体方法如下:1、按常规扩展一片大容量程序存储器,如27C512(64K)。
2、把关键的程序部分安排在程序的前4K中。
3、把整个程序写入27C512,再把27C512的前4K填充为0。
4、把程序的前4K固化到AT89C51中,用OPT模式做加密。
5、把单片机的EA脚接高电平。
这样程序的前4K在单片机内部运行,后60K在片外运行。
盗版者无法读出程序的前4K程序,即使知道后60K也无济于事。
炼总线加密模式原理因为单片机片内的程序代码最终都要通过数据总线读出,如果指导单片机的数据总线的其中一条线永久性地破坏,解密者即使擦除了加密位,也无法读出片内的程序的正确代码。
51单片机的加密与解密 - 单片机

51单片机的加密与解密 - 单片机51 单片机的加密与解密单片机在当今的电子技术领域,单片机的应用无处不在。
51 单片机作为一种经典的单片机类型,因其简单易用、性价比高而被广泛采用。
然而,随着其应用的普及,51 单片机的加密与解密问题也逐渐引起了人们的关注。
首先,我们来了解一下为什么要对 51 单片机进行加密。
在许多实际应用中,单片机内部运行的程序往往包含了开发者的核心技术、商业机密或者独特的算法。
如果这些程序被未经授权的人员读取和复制,可能会导致知识产权的侵犯、商业竞争的不公平,甚至可能对产品的安全性和稳定性造成威胁。
因此,为了保护开发者的权益和产品的安全性,对 51 单片机进行加密是非常必要的。
那么,常见的 51 单片机加密方法有哪些呢?一种常见的方法是代码混淆。
通过对程序代码进行复杂的变换和重组,使得代码难以理解和分析。
比如,将关键的变量名、函数名进行重命名,使用复杂的控制流结构等。
这样,即使攻击者获取了代码,也很难理清程序的逻辑和功能。
另一种方法是使用硬件加密模块。
一些 51 单片机芯片本身就提供了硬件加密的功能,例如加密锁、加密密钥存储等。
通过在程序中使用这些硬件加密模块,可以增加破解的难度。
还有一种加密方式是对程序进行加密存储。
将程序在存储时进行加密,只有在单片机运行时通过特定的解密算法进行解密后才能执行。
这样,即使存储介质被读取,攻击者得到的也是加密后的乱码。
然而,尽管有了这些加密手段,51 单片机的解密仍然是可能的。
解密的动机通常是为了获取他人的技术成果用于非法复制或者破解产品限制。
常见的 51 单片机解密方法主要包括以下几种。
逆向工程是一种常见的解密手段。
攻击者通过对单片机的硬件进行分析,包括芯片的引脚、内部电路等,尝试推断出程序的运行方式和存储结构。
此外,通过软件分析也是一种方法。
利用专业的工具对单片机的运行状态进行监测和分析,尝试找出加密算法的漏洞或者获取解密的关键信息。
还有一种比较暴力的方法是通过物理手段破解。
几种常用的单片机加密方法

几种常用的单片机加密方法一、加密方法1、烧断数据总线。
这个方法我想应不错,但应有损坏的风险,听说也能**。
2、芯片打磨改型,这个方法有一定作用,改了型号能误导,但同时也增加成本,解密者一般也能分析出来。
3、用不合格的单片机的的存储器:这个方法听起来不错,值得一试。
很多单片机有这种情况,有的是小容量改为大容量来用,**者应很难发现。
例:8031/8052 单片机就是8731/8752掩模产品中的不合格产品,内部可能有ROM。
可把8031/8052 当8751/8752 来用.但使用时要测试可靠。
4、其他还有添加外部硬件电路的加密方法。
但那样增加成本,效果不一定好。
5、软件加密,是一些防止别人读懂程序的方法,单一的这种方法不能防止别人全盘复制。
须配合其他的加密方法。
6、通过序列号加密,这个方法当你的产品是连接PC时或网络,我想是一个比较理想的方法。
原理跟电话产品防伪标志相近。
就是在你的单片机中生成一个唯一的随机长序列号,并加入复杂的特种算法,或加入你们重新编码的企业信息在里面,每个芯片内不同,复制者只能复制到一个序列号。
这个方法不能防止复制,但能发现复制品,并可在升级或在网络状态控制它或让他自毁。
如果产品不联机或不可升级,则这个方法完全无效,只能是在上法院时可当作证据,因为内含特种算法破解者是无法知道的。
7、通过单片机唯一的特性标识(不可修改)进行加密这个方法最好,能很好的防止复制。
但大多单片机没有唯一标识。
STC单片机里面含唯一标识,但本人没用过,下次一定要研究使用一下。
理论上只要含唯一标识是单片机都可实现,ATMEL AVR系列单片大部分型号有RC校正字节(几十个芯片才有一个相同,并且不可修改)能实现这个理想功能,可做到即使芯片内程序被读出也无法直接在另一个同型号的单片机上正常运行。
并且如果用这个唯一标识来生成含有加密算法的序列号,结合第6种方法,哪应是最理想的加密方法。
以上方法应都是一种加密的思路,各种方法可接合着用,6、7两种方法是本人认为比较合适,实现起来比较容易的方法。
单片机代码加密防破解方法

单片机代码加密防破解方法摘要:一、单片机代码加密的必要性二、单片机代码加密方法1.编写时加密2.运行时解密3.加密算法选择三、加密技术的局限性及应对策略四、案例分享五、总结与建议正文:一、单片机代码加密的必要性随着科技的不断发展,单片机应用范围越来越广泛,其在工业控制、智能家居、物联网等领域发挥着重要作用。
然而,单片机程序的安全性越来越受到威胁,加密单片机代码以防止被破解成为必要手段。
一旦单片机程序被破解,可能导致设备失控、数据泄露等严重后果。
因此,加密单片机代码具有显著的现实意义。
二、单片机代码加密方法1.编写时加密:在将代码写入单片机之前,可以使用加密算法对代码进行加密。
这种方法在编写时较为麻烦,但能有效防止代码在存储和传输过程中的泄露。
常见的加密算法有AES、DES等。
2.运行时解密:在单片机运行时,可以根据特定条件对加密代码进行解密。
这种方法可以在保证代码安全性的同时,降低加密和解密过程中的执行速度影响。
解密条件可以设置为特定时间段、特定操作等。
3.加密算法选择:选择合适的加密算法是提高代码安全性的关键。
常用的加密算法有对称加密算法(如AES)、非对称加密算法(如RSA)和哈希算法等。
在选择加密算法时,需综合考虑算法的安全性、执行速度和资源占用等因素。
三、加密技术的局限性及应对策略虽然加密技术能有效提高单片机代码的安全性,但仍存在一定局限性。
首先,加密和解密过程会消耗部分计算资源,可能导致程序执行速度降低。
其次,加密算法可能被破解,尤其是弱加密算法。
此外,硬件保护措施(如FPGA)容易被攻击者绕过。
为应对这些局限性,可以采取以下策略:1.采用多层加密:对代码进行多层加密,增加破解难度。
2.动态加密:根据程序运行状态,动态生成加密代码。
3.选择强加密算法:使用安全性较高的加密算法,如AES。
4.结合其他安全措施:如硬件保护、防火墙等。
四、案例分享在实际应用中,有许多方法可以应用于单片机代码加密。
单片机基于唯一ID加密新算法探讨

前辈们针对唯一ID加密算法提供了格式各样的算法,我看后也是受益匪浅,先如今也和大家分享一下我的加密算法思路,共同探讨下此法是否可行。
用唯一ID,目的是逼迫盗版者需要反汇编修改代码。
1、完全写自己的armlink ,fromelf 等类似工具〔linux 开源代码〕,加入自己的一些东西,让生成的bin和公共的不一样,这样破解者如果用通用的armlink fromelf所产生的代码必然和自己的工具产生不一样,这个时候,破解者必须破解你加入的一些东西,不然程序完全不能运行。
armlink 可以产生很多自己定义的段,然后对各种段offset。
同时程序配合offset。
2、修改fromelf类似的工具,在把elf文件转化bin文件过程中,任何程序的路口地址都需要动态的偏移,这样,如果用常规fromelf转换,一定出错。
这也加大破解难度。
举个例子,比如我有A ,B两个程序,但是我B程序link后,在elf的时候B程序整体地址偏移0x04,而A函数调用B函数是通过偏移0x4调用的。
但是破解者,如果反汇编编译,那么B函数肯定不会编译0x4,那么A调用B是offset 0x4的,所以程序崩溃。
系统中,有多种偏移,那么破解者头就大了,必须断点调试什么的改,这样的破解,相信代价太高了。
以上思路的原则就是,结合编程c代码,link 和elf转换工具,把bin按照自己的思路组合,如果破解者反汇编,必须要匹配的link和elf工具,不然编译出来的代码不能运行。
如果非要破解,代价高的很。
以上就是我的观点,不知道是否可行,欢迎各位探讨。
很多人纠结ID的算法,这里我没有将,因为我的理解是,只要有唯一ID,然后做一个简单加密,论坛中也有很多高手说明了各种方法。
这里不再赘述!补充:很多前辈都已经讲了很多种基于唯一ID的加密方法。
而我的思路是在他们的方法基础上,让盗版者在反汇编这条路让更难走。
而我文章开头讲了,唯一ID的作用就是让盗版者走反汇编这条路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机加密的几种方法
(1)单片机加密方法:
科研成果保护是每一个科研人员最关心的事情, 目的不使自己的辛苦劳动付注东流。
加密方法有软件加密, 硬件加密, 软硬件综合加密, 时间加密, 错误引导加密, 专利保护等措施。
有矛就有盾, 有盾就有矛, 有矛、有盾, 才促进矛、盾质量水平的提高。
加密只讲盾, 也希望网友提供更新的加密思路。
现先讲一个软件加密: 利用MCS-51 中A5 指令加密,( 本人85 年发现的, 名软件陷阱), 其实世界上所有资料, 包括英文资料都没有讲这条指令, 其实这是很好的加密指令。
A5 功能是二字节空操作指令。
加密方法在A5 后加一个二字节或三字节操作码, 因为所有反汇编软件都不会反汇编A5 指令, 造成正常程序反汇编乱套, 执行程序无问题。
仿制者就不能改变你的源程序, 你应在程序区写上你的大名、单位、开发时间及仿制必究的说法, 以备获得法律保护。
我曾抓到过一位“获省优产品”仿制者, 我说你们为什么把我的名字也写到你的产品中?
硬件加密:8031/8052 单片机就是8031/8052 掩模产品中的不合格产品, 内部有ROM( 本人85 年发现的), 可以把8031/8052 当8751/8752 来用, 再扩展外部程序器, 然后调用8031 内部子程序。
当然你所选的同批8031 芯片的首地址及所需用的中断入口均应转到外部程序区。
(2) 单片机加密方法:
各位, 我在这里公开场合讲加密, 有的只能讲思路, 有的要去实验, 要联想, 要综合应用各种方法, 甚至有的不能言传, 只能意会。
因为这里有的造矛者也在看我们如何造盾, 当然, 我们也要去看人家怎样造矛, 目前国内、外最高造矛的水平怎样。
“知已知彼, 才能百战百胜”。
硬件加密: 使他人不能读你的程序
① 用高电压或激光烧断某条引脚, 使其读不到内部程序, 用高电压会造成一些器件损坏。
② 重要RAM 数据采用电池( 大电容, 街机采用的办法) 保护, 拔出芯片数据失去。
机器不能起动, 或能初始化, 但不能运行。
用真真假假方法加密:
擦除芯片标识。
把8X52 单片机, 标成8X51 单片机, 并用到后128B 的RAM 等方法, 把
AT90S8252 当AT89C52, 初始化后程序段中并用到EEPROM 内容, 你再去联想吧!
用激光( 或丝印) 打上其它标识。
如有的单片机引脚兼容, 有的又不是同一种单片机, 可张冠李戴, 只能意会了, 这要求你知识面广一点。
用最新出厂编号的单片机, 如2000 年后的AT89C 就难解密, 或新的单片机品种, 如AVR 单片机。
DIP 封装改成PLCC,TQFP,SOIC,BGA 等封装。
如果量大可以做定制ASIC, 或软封装。
用不需外晶振的单片机工作( 如AVR 单片机中的AT90S1200) 。
使用更复杂的单片机FPGA+AVR+SRAM=AT40K 系列。
(3) 单片机加密方法:
硬件加密与软件加密只是为叙说方便而分开来讲, 其实它们是分不开的, 互相支撑, 互相依存的。
软件加密: 其目的是不让人读懂你的程序, 不能修改程序, 你可以 .......
利用单片机未公开, 未被利用的标志位或单元, 作为软件标志位, 如8031/8051 有一个用户标志位,PSW.1 位, 是可以利用的。
程序入口地址不要用整地址, 如:XX00H,XXX0H, 可用整地址-1, 或-2, 而在整地址处加二字节或三字节操作码。
在无程序的空单元也加上程序机器码, 最好要加巧妙一点。
用大容量芯片, 用市场上仿真器不能仿真的芯片, 如内部程序为64KB 或大于
64KB 的器件, 如:AVR 单片机中ATmega103 的Flash 程序存储器为128KB 。
AT89S8252/AT89S53 中有EEPROM, 关键数据存放在EEPROM 中, 或程序初始化时把密码写到EEPROM 中, 程序执行时再查密码正确与否, 然后 ....... 。
当然不能告说人家这是什么器件, 尽量不让人家读懂程序, 在这里说谎, 骗人是正当防卫。
用“真真假假, 假假真真” , 把几种不同品种的单片机放在同一设备中, 如主芯片用AVR( 说是MCS51), 键盘显示用AT89C2051( 说是GAL),I/O 口扩展驱动用PIC( 说是AT90S1200) 等, 当然要求你知识面广一点。
如果你用高级语言C 编写程序就简单了, 因为C 语言程序移植方便。
有些国家的产品能做到三年保修, 三年保不坏, 三年后保坏, 或三年后保有故障, 可能用什么技术? 你去想吧。
例: 每次开机或关机,EEPROM 某单元加1, 也可二个、三个单元连接起来计数, 达到某值停止工作。
硬件用软件代替, 软件用硬件代替。
用大规模CPLD 可编程器件。