今天讨论一个在产品量产时需要十分关注的问题:产品信息安全。 一般这块分为三类:产品自身的固件信息安全,产品与外部通信协议的信息安全,产品采集存储用户数据的信息安全。 现在无论是生产商还是用户,都十分在意一个产品量产出去了,给别人使用信息保密到底有没有问题。最简单的来说,如果产品的程序直接被人破解了,那问题就大了,第二天可能市面上就会出现大批量的克隆产品。严重一点的,比如pos刷卡机,那就涉及到现金交易问题了。 信息加密,这个手段就很多了,比如常见的就有: 根据芯片独一无二的UID对芯片进行程序加密; 暴力点的,直接打磨或更改芯片型号丝印; 有些单片机可以开启Flash保护; 量产时禁闭调试口等; 如果是协议加密,那就更为复杂了,可以用主流的加密算法加密数据,或者自定义编解码的算法。 最近新出的基于arm v8架构的CM23和CM33核,也是专注于信息安全的。 未来是物联网的时代,与此对应的,也是关注信息安全的时代,对于研发生产过程中的信息安全问题,不知各位网友你们有什么样的”骚操作“呢?不限于理论,想法,经验,方法,欢迎各位畅所欲言! /************************************个人分享************************************/ 我最近正在看CM33核的相关安全模块。不得不说,越是网络发达的时代,信息安全就越是重要,arm新推出的CM33核就是专注信息安全领域。ST发布STM32L5系列就是属于CM33核的,旨在加强物联网安全防御能力。我现在正在看CM33里面的TrustZone部分。我先起个头,说一下这个TrustZone到底是个什么东西: TrustZone是ARM针对消费电子设备设计的一种硬件架构,其目的是为消费电子产品构建一个安全框架来抵御各种可能的攻击。 TrustZone在概念上将SoC的硬件和软件资源划分为安全(Secure World)和非安全(Normal World)两个世界,所有需要保密的操作在安全世界执行(密码核对,数据解码等),其余操作在非安全世界执行(界面操作),安全世界和非安全世界通过一个名为Monitor Mode的模式进行转换。 处理器架构上,TrustZone将每个物理核虚拟为两个核,一个非安全核,运行非安全世界的代码;和另一个安全核,运行安全世界的代码。两个虚拟的核以基于时间片的方式运行,根据需要实时占用物理核,并通过Monitor Mode在安全世界和非安全世界之间切换,类似同一CPU下的多应用程序环境,不同的是多应用程序环境下操作系统实现的是进程间切换,而Trustzone下的Monitor Mode实现了同一CPU上两个操作系统间的切换。 |
只要有产品的市场反馈好,哪怕用别的实现方式绕过专利保护也能给你快速山寨出来。只是代价大小区别而已,毕竟市场经济就是这样。
大家想一想,PS4为例的各代游戏主机用的不是自己定制的芯片吗?只要有决心不是都能破解出来吗?更别说M32、M33这种架构都知道的产品。
我觉得与其讨论怎么加密,不如讨论怎么让自己的产品做出来能有别人抄袭的价值。
点评
点评
这确实是财大气粗的做法,芯片丝印都不用打磨了,直接摆给别人看。
双flash是为了防止单片机程序的篡改和非正常读取吗
点评
点评
就说说我自己用得比较多的Flash加密措施吧
第一种,直接使用STM32自带的读保护功能,使能之后,Flash中的内容不可以通过调试端口读出来。这种方法比较简单,保密级别不高,只需要在烧写程序时勾选就可以。
第二种,通过STM32的自身唯一的UID来做加密。这种方法需要程序中实现,把UID备份在Flash中的某个区域,初次烧写程序时,其实这个区域是空的,这时备份UID,以后每次运行,都判断UID与Flash中备份的是否一致,一致才可运行,不一致的话,你想干啥都行,死机啊重启啊自毁等等。。。
附上两份官方文档,也是主要讲安全的,比较全面。
点评
点评