打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
常用的单片机加密手段(二)

昨天写了一种常用的单片机加密手段,受到很多电子同行的反响,也引起来很多此类话题讨论,是我没想到的。由于现在的公众号还没开通原创功能,没办法针对同学们的提问进行解答,而且内容也比较复杂,所以我单独再开一章来讲解关于单片机加密方面,大家普遍比较关心的问题。

第一:昨天的那种常用方法,有部分同学担心量产效率问题。效率肯定是影响的,既要保证安全性,必然要牺牲少许效率,但是影响远远比同学们想象的影响低。

其实就是烧写两次程序,首先,写一个读取芯片ID,然后根据我们设计的算法计算出来数据,并且写入到EEPROM里数据的这样一个程序1,我们的功能程序作为程序2。那烧写程序时,我们先烧写程序1进入单片机,固话好我们的数据后,再然后烧写程序2到单片机;或者采用流水线式工作,工作人员甲专门烧写程序1来一遍,工作人员乙烧写程序2来一遍。程序1的功能其实非常简单,因此烧写起来肯定很快,不管如何影响到一定的效率,但是影响是非常小的。

第二:昨天的那种方法,就可以确保万无一失了么?当然不是。这个世界上就不存在绝对安全的东西,就看付出多大的代价。据称STM32的某些型号内部的96位的ID是烧写在system区域,而破解者找到了原厂的调试工具,可以直接烧录改变这个ID。在利益面前,总是会有人去做这种事情,甚至说这种原厂调试工具的泄露,不排除是他们自己人做的。

那我们电子工程师的劳动成果就这么白白窃取,我们无能为力么?当然不是了。安全和攻击一直在较量着,我们只需要多方面增强我们产品的安全性,让破解着花费的代价,超过了重新开发出来花费的代价,那就可以让破解着直接望而却步了。我们一个产品可以采用多层加密的手段来做,这样就可以尽可能的加大破解者的难度,提高我们产品的安全性能。

------------------------------------------------------------------

下面我给大家介绍几种安全加密方面的方法,由于部分方法详细讲解比较复杂,我只是简单给大家介绍一下原理,先让各位同学涨一下见识,让你知道有这么回事。当你真的要去采用这种方法去加密的时候,你再专门到网络上查找详细办法的资料进行学习研究,最终应用在你的产品上。

一、打磨芯片。如果我们的用量比较少,几百片的应用,那产品做好以后,我们只需要用砂纸把芯片上的丝印给磨掉就行了,这个事情比较麻烦,只适合小批量的产品来做。当到几千片的时候,你采购芯片的时候,可以让一些代理商帮你用激光打掉或者修改芯片上的丝印,这种方法一般会略微收点费用,如果你觉得划算就可以做。打掉芯片型号可以增加破解者难度,他需要猜测所用的芯片型号,修改芯片丝印可以混淆他的破解方向。当你的用量非常大的时候,我想你有资本让芯片经销商或者厂家帮你修改丝印。

二、加密芯片。市面上有一些专门做加密的公司,他们的加密算法都是非常专业的,起码比我们做电子产品开发的人专业的多,我们可以购买加密芯片来进行加密,可以尽可能选择偏门并且价格不贵的加密芯片来进行加密,同样芯片要磨掉丝印,这样再次提高你的产品加密等级。

三、自己做一个假的“唯一ID”。方法和昨天的方法类似,烧写方法和上边讲的方法一样,只需要我们烧录程序1的时候,每烧录一个设备,这个特定的数据加1一次烧写到下个设备中,这样我们的设备就带了唯一ID了。同时根据这个“假唯一ID”生成一个数字,也存在EEPROM另外一个地方,其他的理论和昨天的唯一ID类似,这样我们的设备就自动带了我们自己设计的唯一ID。这个是什么意思呢?我们在我们板子上的存储器,或者是单片机的内部存储器的一个特定地址,比如内部存储器0x00001234这个地址,这地址只有我们开发者知道,我们在这里藏了一个唯一的ID。当上电程序运行的时候,可以来读取这个“假唯一ID”进行计算,计算完了结果和我们的存储在别处的预先数据进行比较,比较结果,结果一样才运行程序。

当然,这个方法和真实的唯一ID同时使用,这个时候他即使破解了并且改变了单片机内部的硬件唯一ID,那么程序他依然不能用起来我们的设备。这个方法看起来简单,但是破解难度极大,理由是破解者很难猜测到你居然还自己加了一个唯一ID,他想不到这一层,他就难以找到正确的破解思路,而且这个和真实唯一ID一起运用,可以在上边讲的程序1里一次性完成,程序1的程序复杂度没增加多少,但是加密性却增加了很多。

四、利用偏门的价格便宜的单片机,这种单片机往往知道的人少,并且打磨掉丝印的前提下,用扩频码进行通信校验加密。这个用法比较复杂,需要了解扩频码的人来用,而且你得找一个很冷门的不容易被破解掉的小芯片作为自己单独的加密芯片,偶尔用在FPGA的加密中,因为FPGA自己不带程序空间。扩频序列是这样一种序列,他是一种算法,只要你给他一个初值,按照他的算法去计算,他可以通过赋给他的初值,产生2的n次方个数字后,才能再次重复,其他的不属于扩频算法的数字,给了初值后,很快就会重复,这就是扩频码的特殊性。

那好了,我们找一个n是50的这样一个编码,这样可以产生2的50次方个数字。系统上电后,初始化完毕,产生一个随机数字,这个随机数字主单片机和加密单片机共同获取,这个冷门的单片机就以1秒一个数字的速度,以这个随机数字为基准开始产生扩频码,发送给主芯片进行校验。主芯片1秒校验一次,正确则继续工作,不正确停止工作。如果不是把主单片机和加密单片机同时破解的前提下,要把扩频加密的这组码字给完全读下来需要2的50次方秒,大概需要几千年才能完全彻底分析出来。

加密手段其实也有很多,我所讲到的只是我所了解的电子工程师一些简单实用的常规手段,更为复杂的我也不懂,得咨询专业的加密解密的工作人员。

--------------------------------------------------------

这里再多讲两句,有的工程师给别人代开发产品,开发个样品什么的,简单的东西用不到这么复杂的手段,但是又得给对方做小批量实验,怎么办呢?简单实用的办法教大家一招,你只需要在程序里加一个运行次数限制,或者是运行时间限制,这样就可以让对方实验,实验没问题了,给钱了,你就可以去掉这个限制,这是保护我们工程师成果的一个简单手段。这里就不用担心他们再去破解了,再去破解还不如直接给你开发费来的便宜。

--------------------------------------------------------------

任何加密手段都不是绝对加密的,退一万步讲,即使你的加密系统再完善,那如果你的员工把你的加密手段泄密出去,那也一样被破解。所以我们能做的就是多层次,多方位做加密,让破解者破解起来无比困难,觉得破解不划算,还不如购买我们的产品或者重新开发来的划算,这个时候我们的目的就达到了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
一种常用的单片机程序加密手段
MCU常见的加密手段
单片机里面的UID,他是干什么的你知道吗?
想破解单片机解密芯片?这几张图告诉你该怎样做
STM32加密
STC创始人姚永平:8051单片机全球领导者是如何炼成的
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服