公司开发的程序,如何安全可靠的烧录在单片机里啊?

我碰到过几个人,都说能不能帮他破解一些程序,就是把别人产品程序读出来。
我没干过这种事,一直觉得,难度挺大,感觉还不如按功能山寨一个简单。
特别是那种带服务器的物联网产品,哪怕程序给你读出来,都没用。
第一是要破解他们的协议,光这个就搞死人。
第二是要知道他们的服务器IP和端口。
第三是要他们服务器要给你这台设备授权,这个基本无解。
比如我们无际特训营的项目6,用的是我们自己研发的服务器。
每个设备,必须要后台授权,才能使用。
哪怕硬件做到一模一样,烧录程序被破解了,没有云平台的支持,也白搭,除非云平台也自己做。
但问题又来了,网关的通讯协议设计也是一个经验活。
就像前段时间,我们用涂鸦云的一个WiFi模组,突然停产了,整个产品直接废了,换WiFi模块都没用,别人平台不给你接入。
去破解,真的还不如自己重新研发一个来得快。
我工作时,就碰到过一次程序加密的需求。
不过,之前的工程师已经做好了。
他们是用类似XZ8802加密芯片干的,不过很多年前了,不知道现在有没有更好的方案。
虽然这款芯片采用硬件加密的方法,但所有的加密,都需要靠软件配合,哪怕是用了加密芯片
XZ8802是通过IIC协议和单片机通讯的。
主要特点和工作原理:
1.客户自定义密码:
XZ8802允许用户设置自定义密码,这增加了破解的难度。如果芯片被非法取下或破坏,系统将无法正常启动。
2.固化ID号:
每个XZ8802芯片都有一个针对客户的固化ID号,这个ID号是不可更改的,可以有效防止芯片被破解或复制。
3.密码尝试限制:
设定了密码尝试次数的限制,通常最多允许连续8次输入密码。如果密码输入错误达到这个次数,芯片可能会被永久锁定,无法再次使用。
4.存储空间:
XZ8802芯片自带有一定容量的存储空间,用于存储加密数据或固件。
所以,有这个芯片做辅助,加密的方式就有很多种,就看算法怎么去设计了。
我的初步思路是,烧录时,把XZ8802的唯一ID读出来,写到单片机Flash里去。
或者把单片机的唯一ID,写到XZ8802里去。
上电后,只有ID匹配,才能运行程序。
这样,即便对方读了程序,芯片ID不对应,程序也执行不了。
在数据通讯时,还可以加一些算法,比如CRC啥的,增加破解难度。
实际去做的时候,还会有很多细节问题,只是大概思路。
还有这种方式,烧录程序会多一个步骤,增加一颗XZ8802芯片,也大约增加几毛到1块钱的成本。

给TA买糖
共{{data.count}}人
人已赞赏
单片机自学指南

为什么单片机上的程序不建议使用malloc()?

2024-2-21 20:20:30

单片机自学指南

为什么越来越多的人要转行做嵌入式呢?

2024-2-28 19:11:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧