历史上的今天
返回首页

历史上的今天

今天是:2025年03月30日(星期日)

正在发生

2021年03月30日 | 如何来为MSP430单片机加密?

2021-03-30 来源:eefocus

1、为什么要加密,如何加密?


当您的产品推向市场的时候,您的竞争对手就开始盯上它了,如果您的产品硬件很容易被模仿,而且您使用的MSP430单片机没有被加密的话,那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了,使用JTAG调试工具FET虽然可以将程序下载到芯片内部,但只有使用专业编程器能够防止程序被窃取。


2、JTAG、BSL、BOOTLOADER、熔丝的区别和关系是什么?


JTAG接口能够访问MSP430单片机内部所有资源,通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等,通过JTAG还能烧断加密熔丝,熔丝一旦被烧断,JTAG接口绝大部分功能失效,就再也不能通过它进行编程了。


BSL接口是利用芯片内部驻留的bootloader程序实现的自编程,通过特定的时序使得CPU进入bootloader代码断,然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯,这样可以将代码下载到芯片内部。实现BSL除了JTAG接口的一些引脚外,还需要用到两个TA0功能引脚,因此在设计产品时如果需要加密,则应该考虑将这两个引脚也连出来。


注意:A 、要烧断熔丝(加密)必须使用JTAG接口;B、烧断熔丝后只能通过BSL或者用户代码来实现编程更新。


3、BSL的验证密码是怎么回事?


BSL也能读出芯片内部的代码,这样可以实现编程后的校验等功能。通过BSL擦除所有Flash信息时不需要验证密码,但是要进一步操作,就得输入32字节密码进行验证。BSL的协议规定这32字节密码为芯片FLASH区域的最高32字节,也就是程序的16个中断向量,如果您拥有这段程序的最后32字节,就能通过BSL将芯片内部所有代码读取出来。


4、为什么要使用高级加密?


32字节的密码看似几乎完全没可能使用穷举法来实现破解,但是各位别忘了,msp430的16个中断向量未必每一个都用到了,没用到的中断向量为0xffff,如果您的程序只用到了复位向量,那么破解者只需尝试最多32768次(中断向量为偶数,所以除以2)就能将其破解,另外,如果芯片本身Flash容量较小,比如4K字节,那么破解者只需尝试最多2K次就能将其破解。这对自动操作的计算机来说几乎是一瞬间的事情。那么如果用到的中断向量越多,就越难破解,最好的办法就是将所有未用到的中断向量全部填充为随机数据,这就是“高级加密”。


5、关于TI-TXT文件


TI-TXT文件是TI公司为MSP430单片机定义的一种编程代码格式,其内容为纯文本格式,使用任何文本编辑器都能对其进行阅读,下面是一个这类文件的例子:


@FEFE


B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00


40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00


C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00


F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00


F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00


F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40


00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43


30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE


30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40


FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40


A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C


0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53


F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D


1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41


30 41


@FFFE


5C FF


q


第一行的@FEFE表示从地址0xFEFE开始,有如下代码。每行为16字节,每个字节使用16进制数表示,每两个字节之间用一个空格格开。内容末尾的@FFFE就是程序的复位向量了,表示程序的入口地址为0xFF5C。最后用一个小写的q字符加换行结束,当然也可以把中断向量的那两行放到最前面去,比如下面这段代码的含义跟上面的是一样的,同样符合规则。


@FFFE


5C FF


@FEFE


B2 40 80 5A 20 01 F2 40 9D 00 90 00 F2 40 2E 00


40 00 F2 D0 80 00 01 00 F2 43 33 00 C2 43 95 00


C2 43 9A 00 F2 D0 20 00 53 00 F2 40 1F 00 52 00


F2 43 91 00 F2 43 92 00 F2 43 93 00 F2 43 94 00


F2 43 95 00 F2 43 96 00 F2 43 97 00 F2 43 98 00


F2 43 99 00 F2 43 9A 00 32 D0 D0 00 FD 3F 31 40


00 03 B0 12 A2 FF 0C 93 18 24 3C 40 00 02 0E 43


30 12 00 00 B0 12 C4 FF 3C 40 00 02 3E 40 FE FE


30 12 00 00 B0 12 A6 FF 21 52 3C 40 00 02 3E 40


FE FE 30 12 00 00 B0 12 A6 FF B0 12 FE FE 30 40


A0 FF FF 3F 1C 43 30 41 0A 12 1D 41 04 00 0F 4C


0A 4D 1D 83 0A 93 05 24 EF 4E 00 00 1F 53 1E 53


F7 3F 3A 41 30 41 0A 12 1D 41 04 00 0F 4C 0A 4D


1D 83 0A 93 04 24 CF 4E 00 00 1F 53 F8 3F 3A 41


30 41


q


手动修改TI-TXT文件来实现高级加密:


下面是使用到中断向量较少的一段代码的中断向量:


@FFE0


10 FF A0 FF


@FFFE


5C FF


它与下面这段代码意义是一样的:


@FFE0


10 FF A0 FF FF FF FF FF FF FF FF FF FF FF FF FF


FF FF FF FF FF FF FF FF FF FF FF FF FF FF 5C FF


这里我们把未用到中断向量改成随机数据,就实现高级加密了,不过注意不要把有效的中断向量也改了哦。


@FFE0


10 FF A0 FF A5 5A 37 21 F3 44 E0 77 9A 00 22 33


44 55 66 77 88 99 AA BB CC DD EE 3E E3 0F 5C FF


推荐阅读

史海拾趣

Altitude Technology公司的发展小趣事

随着公司的不断发展,Altitude Technology逐渐在电子行业中崭露头角。然而,市场竞争也日趋激烈,为了保持领先地位,公司决定加大研发投入,致力于技术突破。经过长时间的研发,Altitude Technology成功推出了一款采用最新芯片技术的智能手机,这款手机在性能、功耗和拍照效果等方面均达到了行业领先水平,为公司赢得了更多的市场份额。

AIM - American Iron and Metal公司的发展小趣事

随着国内市场的饱和,AIM开始寻求海外市场的拓展。公司制定了详细的国际化战略,通过参加国际展览、建立海外销售渠道等方式,逐步打开了欧美、东南亚等地区的市场。AIM的产品质量和技术水平得到了国际客户的认可,出口额逐年攀升。

振华新云(CEC)公司的发展小趣事

背景:为了进一步扩大市场份额和提高品牌影响力,振华新云积极开展市场拓展和国际合作。

内容:公司积极参加国内外电子展会和论坛等活动,加强与国内外客户的沟通和交流。同时,积极寻求与国际先进企业的合作机会,共同开展技术研发和市场推广等活动。

成果:通过市场拓展和国际合作,振华新云的产品逐渐走向世界舞台,赢得了广大客户的信赖和好评。同时,公司也积累了宝贵的国际化经验和资源,为未来的国际化发展奠定了坚实基础。

得倍(DBIC)公司的发展小趣事

在技术创新的基础上,倍(DBIC)公司积极拓展市场,加强品牌建设。公司制定了详细的市场营销策略,针对不同区域和行业进行精准推广。同时,倍(DBIC)公司还积极参与国际展会和论坛,与全球合作伙伴建立联系。这些努力使倍(DBIC)公司的品牌知名度不断提高,市场份额也逐步扩大。

广东华裕(GDHY)公司的发展小趣事

在激烈的市场竞争中,倍(DBIC)公司不断优化供应链管理,降低成本,提高效率。公司与全球多家供应商建立了长期稳定的合作关系,确保原材料的稳定供应。同时,倍(DBIC)公司还加强了对生产过程的监控和管理,确保产品质量和交货期。这些措施使倍(DBIC)公司在成本控制和交付能力方面具备了明显的竞争优势。

EOREX公司的发展小趣事

在电子行业竞争日益激烈的背景下,EOREX公司敏锐地洞察到智能家居市场的巨大潜力。他们及时调整战略方向,将研发重心转向智能家居领域,推出了一系列具有创新性和实用性的智能家居产品。同时,EOREX还积极布局全球市场,通过与海外企业的合作与交流,不断引进先进的技术和设计理念,提升自身的竞争力。这些举措使得EOREX在智能家居领域迅速崛起,成为行业内的佼佼者。

问答坊 | AI 解惑

555电路组成的振荡电路集锦

555电路组成的振荡电路集锦…

查看全部问答>

存储示波器资料

本帖最后由 paulhyde 于 2014-9-15 09:13 编辑 大家分享,,,,,,,,,,,  …

查看全部问答>

Bootloader深入讨论

Bootloader介绍 Bootloader移植的必要性 Bootloader是与系统硬件高度相关的初始化软件,它担负着初始化硬件和引导操作系统的双重责任。一些ARM平台可以共用同一种Bootloader,但是总的说来,每一个特定系统的Bootloader都会有所不同。Bootloader ...…

查看全部问答>

关于单片机程序的自动升级问题

例如以单片机的ROM是有10万次擦写的FLASH,现在该如何能像电脑软件一样能自动升级里面的程序而不用拆下来重新烧 1.假设需要更新的程序是放在一个外接的E2PROM里, 2.怎样让单片机执行RAM里的指令,以便更新ROM区 3.通过执行RAM里的指令读出E2PROM的 ...…

查看全部问答>

青岛的嵌入式开发

有青岛的嵌入式开发的吗?能不能跟个贴…

查看全部问答>

求教关于Wince窗口置顶问题

我要实现的目标: 1、一个置顶的小窗口TopBar,显示状态; 2、其它窗口类型为Popup,这些窗口不能覆盖顶部窗口TopBar 就这么简单 现在遇到的问题是,TopBar已经用下面这条语句设置置顶窗口了 复制内容到剪贴板代码: ::SetWindowPos( GetSafeH ...…

查看全部问答>

WINCE5加载顺序

我在使用WINCE5时,在GWES加载到DISPLAY时,总是会有几十秒钟的LCD黑屏才能显示WINCE的界面,我现在想把这个问题解决! 请问:如何能使EXPLORER在gwes之前加载,或者有无更加好的办法!…

查看全部问答>

向各位大大请教一个双向单线隔离的问题。

向各位大大请教一个双向单线隔离的问题。   现在要做一个TTL电平的双向单线光电隔离,请问有没有芯片可以实现这个功能?…

查看全部问答>