浅谈知识产权保护方法之加密Kinetis K60(方案一)

2020-02-11 09:08发布

本帖最后由 FSL_FAE_JiCheng 于 2013-10-29 10:57 编辑

      所谓“知识产权保护”,其实就是在产品量产之后防止其芯片内部代码通过外部调试器被有效读取出来的手段,毕竟现在来说硬件电路是比较容易被复制的,如果软件再不设防的话,在山寨技术如此发达的今天(用发达来形容貌似不是很过分吧,呵呵)这个产品估计很快就会被淘汰了。
      因为最近有很多客户问到关于Kinetis的加密锁定问题,所以我觉着还是有必要对其细说说的。其实飞思卡尔对于知识产权保护方面还是做了很大的功夫的,而且使用起来也是比较方便的(这点很重要),具体可以参考Kinetis的Reference Manual中Security这一章,这里我就以在IAR环境下锁定K60为例介绍一下使用方法:
1. 首先简单介绍一下原理,即如果将K60置于Security状态(即锁定状态),则是不能通过Debug接口或者EzPort接口对芯片内部flash有任何操作的(CPU还是可以正常读写flash的,也就是说程序还是可以正常运行的,只不过是不能被外部非法读取了),当然“mass erase”命令除外(我们平时在Jlink Command窗口中敲入的unlock Kinetis命令就是触发这个命令给芯片的),通过“mass erase”命令可以再次将芯片擦除到出厂状态(即unsecure解锁的过程),这样芯片就又可以正常使用了(方便用户之后的程序升级)。咳咳,不过不用担心,解锁之后的芯片其内部的flash已经被完全擦除掉变为空片状态,也就是说内部的代码已经没有了,所以。。。懂的。。。呵呵;
2. 说完Security的原理,下面再聊聊K60实现security的process。我们可以通过K60的FTFL_FSEC寄存器中的SEC位来设定芯片的security状态,如下图所示,芯片默认出厂状态SEC位是为10的,即非加密锁定的,而如果将SEC位设定为00、01或者11任何一种情况,则芯片都将处于锁定状态(这就是我们接下来要干的事了,呵呵)。这里可能会有人疑问,在这个寄存器在重新上电之后会保存内容吗,我只能说“咳咳,都能抢答了”,哈哈,这正是我下面要说的;
15683112016666.png (12.65 KB, 下载次数: 0) 下载附件 2013-10-27 15:09 上传
图2

    加密方案二已更新,浅谈知识产权保护方法之加密Kinetis K60(方案二)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
65条回答
xiaotaiyang
1楼-- · 2020-02-12 00:56
 精彩回答 2  元偷偷看……
FSL_FAE_JiCheng
2楼-- · 2020-02-12 02:22
yinglively 发表于 2013-10-28 11:53
这款MCU可否支持在RAM中运行程序?
在RAM中运行Flash程序读取程序,是否可以将Flash中的数据读出? ...

K60是支持在RAM中运行code的,至于你的意思是在UserCode中人为的加入flash读取程序吗,那这种也是原始作者才能加入的后门,所以一旦代码被加密了外部是肯定读取不到里面内容的除非整片擦除掉~
FSL_FAE_JiCheng
3楼-- · 2020-02-12 02:26
anvy178 发表于 2013-10-28 11:56
会不会从USB 读出的呢?

这个是代码原始作者来决定的。
FSL_FAE_JiCheng
4楼-- · 2020-02-12 07:53
armok 发表于 2013-10-28 12:10
精华 COOL贴。

谢谢阿莫~
yinglively
5楼-- · 2020-02-12 10:45
FSL_FAE_JiCheng 发表于 2013-10-28 13:37
K60是支持在RAM中运行code的,至于你的意思是在UserCode中人为的加入flash读取程序吗,那这种也是原始作 ...

那K60能否支持在RAM中调试程序?
如果可以,我写一个打印Flash内容的调试程序,在RAM中调试运行,这样就可以把Flash中的数据逐一打印出来了。
Gorgon_Meducer
6楼-- · 2020-02-12 13:23
 精彩回答 2  元偷偷看……

一周热门 更多>