打印

【分享】+MSP430系列MCU加密功能的研究

[复制链接]
5260|46
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhao3462910|  楼主 | 2013-12-26 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在刚接触MSP430系列MCU的时,首先了解了它的JTAG和BSL口下载,找了些资料。这个很容易弄懂。之后考虑到程序的保密性,想研究下MSP430加密功能,现把之前找的一些资料汇总归纳如下:
1、保护信息Flash
很多仪表类产品都会独立运行一个自动校正功能的程序,将校正数据存放在信息Flash段内,然后再烧入运行程序来使用这些数据,这时就需要设置信息Flash不被擦除。BSL模式下只要验证密码正确也能做到保护信息Flash的功能。
2、高级加密和BSL密码验证
小容量Flash的器件由于有效中断向量少,而且范围受限制,所以极容易人采用BSL密码穷举的方式暴力**,这时只要将未用到的中断向量设置为随机数,即可防止这类暴力**,这就是高级加密。
BSL编程可以不需要密码验证,但是必须先擦除所有Flash内容才能进行编程,这样有效防止了盗版行为,但是如果编程时不希望擦除信息Flash内容,就必须使用BSL验证密码,这与前面的高级加密是挂钩的,所以我们设计了BSL密码保存为文件和从文件载入功能。个人认为BSL读代码的意义不大,因为既然你拥有了内部程序的验证密码,理所当然的你就应该拥有它的全部代码,所以不需要再读了。
3、离线编程模式默认
有客户跟我说了个他遇到的特殊情况:他的产品样机已经交给客户了,但是发现程序需要更新,于是打算派人带我的编程器去客户那边更新程序,编程器里载入了最新的代码,由于产品代码加密了,所以离线编程模式设置为BSL,现在的问题是他担心客户将他产品上的芯片焊下来换成未加密的空白芯片,这样当他使用BSL载入最新的代码后,客户就能将他的代码读出来了。如果再买一台编程器采用离线模式设置成JTAG并选择烧融丝选项,两台都拿过去,成本又太大了。
这里采用两个途径来解决:A、离线编程模式默认为JTAG,当然你得选择加密项,jtag编程发现被加密以后,再选择BSL来载入代码;B、BSL载入时使用保护信息Flash项并输入验证密码,如果是空白芯片,那么密码验证失败,就不会给目标代码编程了。
目前这两种方法都已经在我的编程器上实现了。
4、产品序列号
如果希望在产品中保留一些与程序无关的内容,比如说一个产品同时为多个客户设计,但是需要从串口输出这些厂家的名称,难道需要给每一个厂家都生成一个目标代码来交给工人编程吗?不需要,只要在编程时从软件上输入厂家的名称即可,当然,程序中最好做个判断,如果读出的厂家信息全为FF,那就就得输出一个默认的厂家名才行。
另外就是生产日期,每天都不一样,如果同样需要打印出来的话,这对程序设计者来说将是一件痛苦的事情,这里也为您解决了。
评分
参与人数 1威望 +3 收起 理由
喵小棋 + 3 很给力!

相关帖子

沙发
dirtwillfly| | 2013-12-26 21:16 | 只看该作者
谢谢分享,很有用

使用特权

评论回复
板凳
firstblood| | 2013-12-27 00:25 | 只看该作者
BSL编程可以不需要密码验证,但是必须先擦除所有Flash内容才能进行编程,这样有效防止了盗版行为,但是如果编程时不希望擦除信息Flash内容,就必须使用BSL验证密码,这与前面的高级加密是挂钩的,所以我们设计了BSL密码保存为文件和从文件载入功能。

使用特权

评论回复
地板
firstblood| | 2013-12-27 00:26 | 只看该作者
MSP430单片机只是一部分的带有BSL编程的,这一部分是的可进行编程保护的

使用特权

评论回复
5
zhao3462910|  楼主 | 2013-12-27 09:45 | 只看该作者
firstblood 发表于 2013-12-27 00:25
BSL编程可以不需要密码验证,但是必须先擦除所有Flash内容才能进行编程,这样有效防止了盗版行为,但是如果 ...

正确。之前我也查了很多资料。还有对编程器的使用。

使用特权

评论回复
6
zhao3462910|  楼主 | 2013-12-27 09:46 | 只看该作者
dirtwillfly 发表于 2013-12-26 21:16
谢谢分享,很有用

好东西。大家分享。

使用特权

评论回复
7
zxf0168| | 2013-12-28 21:01 | 只看该作者
加密是个好办法啊

使用特权

评论回复
8
waitingf| | 2013-12-28 21:27 | 只看该作者
技术成熟后就得考虑加密的问题了

使用特权

评论回复
9
angerbird| | 2013-12-28 23:12 | 只看该作者
BSL编程可以不需要密码验证,但是必须先擦除所有Flash内容才能进行编程,这样有效防止了盗版行为,但是如果编程时不希望擦除信息Flash内容,就必须使用BSL验证密码

使用特权

评论回复
10
angerbird| | 2013-12-28 23:13 | 只看该作者
离线编程模式设置为BSL,现在的问题是他担心客户将他产品上的芯片焊下来换成未加密的空白芯片,这样当他使用BSL载入最新的代码后,客户就能将他的代码读出来

使用特权

评论回复
11
angerbird| | 2013-12-28 23:13 | 只看该作者
所以说在开发设计的时候主要要考虑选取带有BSL编程功能的单片机的

使用特权

评论回复
12
someonewho| | 2013-12-28 23:15 | 只看该作者
对于大牛来说加密技术确实不错 但是对于菜鸟来说就不是那么回事了

使用特权

评论回复
13
justbybing| | 2013-12-28 23:38 | 只看该作者
楼上说的有理哈

使用特权

评论回复
14
zhao3462910|  楼主 | 2013-12-29 18:54 | 只看该作者
angerbird 发表于 2013-12-28 23:13
离线编程模式设置为BSL,现在的问题是他担心客户将他产品上的芯片焊下来换成未加密的空白芯片,这样当他使 ...

采用两个途径来解决:A、离线编程模式默认为JTAG,当然你得选择加密项,jtag编程发现被加密以后,再选择BSL来载入代码;B、BSL载入时使用保护信息Flash项并输入验证密码,如果是空白芯片,那么密码验证失败,就不会给目标代码编程了。

使用特权

评论回复
15
zhao3462910|  楼主 | 2013-12-29 18:54 | 只看该作者
zxf0168 发表于 2013-12-28 21:01
加密是个好办法啊

对,,至少不让他们那么轻易的**掉...:lol

使用特权

评论回复
16
zhao3462910|  楼主 | 2013-12-29 18:55 | 只看该作者
angerbird 发表于 2013-12-28 23:12
BSL编程可以不需要密码验证,但是必须先擦除所有Flash内容才能进行编程,这样有效防止了盗版行为,但是如果 ...

正解...:handshake

使用特权

评论回复
17
haidixibahe| | 2013-12-29 18:59 | 只看该作者
为了以后 好好学学加密技术

使用特权

评论回复
18
chao11yue| | 2013-12-29 19:30 | 只看该作者
木有文档分享吗?

使用特权

评论回复
19
engtafanzhuan| | 2013-12-29 19:57 | 只看该作者
呵呵 楼主头像不错

使用特权

评论回复
20
xichengmadia| | 2013-12-29 20:44 | 只看该作者
很好 不容错过的好资料

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:物联网改变世界,提高生活品质!

342

主题

1189

帖子

6

粉丝