论坛» 综合技术» 基础知识

几种常用的单片机加密方法

专家
2020-03-09 08:41 1楼

总结前人的经验,摸索着写一点实用的方法,供大家参考:在这里不讲加密算法,只讨论结合软硬件的加密方法,总结了一下大该有以下几种:
一、加密方法
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、原理
就是在存储器某个区块放入一个唯一的序列号(长一点,无规律),每个芯片不同。原理跟电话产品防伪标志相近| PC机 | <------------>| 带自定义算法序列号单片机系统 |
控制方法:
1、PC根据传回来的序列号根据算法判断是否合法,合法就运行,不合法处理它。当然,如果是**的序列号,可自毁。
2、单片机内部的序列号经加密算法处理,单片机系统同样要防止软件被更改,可在单片机内部加入CRC等数据校验。一般情况下,序列号如果不合算法,单片机系统应让程序运行出错,这样**者一般不会去修改序列号,如果修改了也没关系,因为PC还能判断是否合法。
3、序列号传送时可采用双向加密算法认证,相当于银卡的数据交换方式。
传送过程:
PC发送随机SEED数据---->单片机系统跟据随机SEED算出加密的序列号----->PC根据算法判断序列号是否合法这样在序列号的传送过程中,数据每次不同,解密者无法看到序列号的明码。这样PC软件他同样不容易更改。
注意:加密算法可以很简单理解一个为异或,当然算法由你自已随意定,反正目的不能上别人一看软件就懂。**者只是**一个产品只能得到一个序列号,即使序列号是明码,他也只能知道是一个。如他随便修改一个序列号一般情况就不符合算法,除非他看懂你的软件算法,我想这是一般解密者最不愿意做的事情。
单片机系统的量产:
产生这样的序列号,单片机系统如何生成?如果用手工一个个去计算调入,得重新编译是不可能的事情。如果编写一个软件生成数据放入到HEX文件中,那样不说工作量好大,编程时还必须一次次装入HEX文件,量产同样无法完成。这个可于
MiniPro TL866 编程器完成。
编程器的介绍可查看:http://www.autoelectric.cn/minipro
TL866编程器有个自动编号功能,可利用DLL动态库调用实现任意的序列号.如何使用DLL设定序列号,可参考编程器安装包内的DLL实例,内有详细说明。后面讲的用单片机唯一的特性标识进行加密也用到DLL调用,基本大同小异。
经过这样的加密,达到一个目的,就是解密者必须修改你的软件后才能放心使用,但是每次升级同样会受你控制,好像微软随时可以黑你屏一样的道理,否则可能随时会被你宰了!!但这种方法只适合连接PC或网络的系统。
三、用单片机唯一的特征标识进行加密
加密原理:
单片机必须有唯一标志,单片机程序内只要判断是否是这个标志,就可防止程序直接复制使用。理论上可以做到很难破解,本人认为是最有效又实用的方法。达到目的:解密者最不愿意做的事让他必须做。
一般大部分搞单片机解密的都是暴力破解,因为这个最容易,只要牚握技巧,有设备,工艺熟练就可了,不用太强的专业知识。如果复制后,程序无法运行,那就蒙了,因为这个时候就要去看汇编语言了,我想信有很多汇编高手,能很容易**。但我也同时认为,怎么多型号的单片机,汇编指令差别好大,每一种单片机的汇编都很熟的人应不多了。所以这会大大增加**难度。如果一个加密设计好的软件,跟据单片机的唯一特征字来加密,有时他可能不得不看懂里面的加密算法。这样加密目的就达到了。
开发人员需要做的事:
有了唯一特征字,并不是加密万无一失了。如果你只是在程序中只用一条语句判断,是不是这个芯片的特征字,则程序被读出后,解密者只要简单的修改程序,直接跳过判断语句。可能只要几分钟就解决了。所以在程序要加入加密算法,尽量不用IF判断语句。可用子程序调用地址来参与特征字的加密运算等等方法,如何防反汇编及修改软件等不在这里讨论,网上可以找到有关这方面的很多资料。


工程师
2020-03-09 20:53 2楼

多数MCU,其实加密不行!

工程师
2020-03-09 21:01 3楼

我想起了,“宇宙第一的8051设计公司 STC单片机”,不是号称破解的话,奖励10W人民币嘛!不知道STC加密性如何了,还说是第N代加密技术

工程师
2020-03-09 21:07 4楼

尽量使用市面上较少见的MCU,还有破解难度和成本就很高~

专家
2020-03-10 14:13 5楼
院士
2020-03-10 22:32 6楼

谢谢分享。

菜鸟
2020-03-11 16:25 7楼

在传统的加密算法中,攻击者通过侵入式或非侵入式等物理攻击进入设备,能够导致密钥泄漏,给密码设备安全性带来极大威胁;如果攻击者窃取到关键密钥,那么整个安全机制便岌岌可危。物理不可克隆函数(Physical Unclonable Functions,以下简称“PUF”)是最近几年出现的新型硬件加密组件,主要利用芯片制造过程中工艺偏差引起的随机差异,以有效避免数字密钥易被攻击的缺点。和传统的加密方法不同的是,PUF并不是把关键信息存储在非易失性存储器,而是从物理材料的复杂固有特性里提取标志。所以,PUF产生的密钥有着低成本、易挥发、不可预测且结构简单等优势,也因此是在相关安全应用上是极好的方法,比如芯片加密、密钥存储、认证、FPGA知识产权保护和ID生成。

近日韩国ICTK的研发人员经过多年研究,成功研发并量产了多款基于PUF技术的安全芯片,为用户信息安全保驾护航。ICTK研发的基于PUF的安全芯片已经在众多知名智能家电品牌大批量使用,同时在车联网安全领域也有众多汽车厂家正在使用。

何为PUF技术?
PUF(Physical Unclonable Function)技术是半导体安全技术的最新突破,是一种芯片领域的”生物特征”识别技术,也可以称为”芯片NDA/指纹”技术,PUF是从每颗的芯片中提取唯一的密钥KEY。

PUF的提出是因为传统的安全加密体系都是基NVM(Non Volatile Memory)存储式加密,这种加密方式把明文通过加密算法转换成密文后,会将密文和密钥信息存放在NVM中,黑客会从NVM里获取密钥信息,从而破译密文,因此存在很大安全漏洞。所以这种方式的安全性取决于密钥的安全性,一旦密钥被窃取,就很容易还原出各种明文信息。基于PUF的全新安全加密模式是通过硬件PUF安全芯片加密,在NVM中只存储密文信息。密钥在PUF芯片内部物理结构中,使用即生成,使用后销毁,全程不对外输出任何密钥信息。黑客只能在NVM中获取密文信息,没有PUF密钥,永远无法解密。

ICTK安全芯片具有以下特征:

ü支持ECC/AES/SM2/SM3/SM4/SHA256加密算法

ü真随机数发生器(TRNG)

üI²C通信接口

ü支持1.8V和3.3V供电

ü15.1 Kbytes Flash存储空间

ü支持TLS

适用于物联网、车联网、防伪认证、医疗、工业、消费类电子等众多行业。

物联网作为一个庞大的网络,其所面临的安全挑战更是不容小觑。安全性高、实时性强和功耗低的安全芯片能够在物联网安全领域发挥关键作用。PUF利用不可控的制造工艺随机差异生成具有唯一标识的签名数据。自身特有的轻量级和防篡改属性在知识产权保护、物联网系统安全和硬件设备认证等方面具有广泛的应用前景。

如需了解请联系深圳市艾矽科技有限公司

电话:+86-18575537557

邮箱:info@ictk-china.com


专家
2020-03-12 14:05 8楼
谢谢分享hyw316

深圳市艾矽科技有限公司

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]