MSP430常用加密总结

 1> 为什么要加密 , 如何加密?
当您的产品推向市场的时候 , 您的竞争对手就开始盯上它了 , 如果您的产品硬件很容易被模仿 , 而且您使用的MSP430单片机没有被加密的话 , 那么您辛辛苦苦的劳动成功就很容易成为您竞争对手的产品了 , 使用JTAG调试工具FET虽然可以将程序下载到芯片内部 , 但只有使用专业编程器能够防止程序被窃取 。
2> JTAG、BSL、BOOTLOADER、熔丝的区别和关系是什么?
JTAG接口能够访问MSP430单片机内部所有资源 , 通过JTAG可以对芯片进行程序下载、代码调试、内存修改等等 , 通过JTAG还能烧断加密熔丝 , 熔丝一旦被烧断 , JTAG接口绝大部分功能失效 , 就再也不能通过它进行编程了 。
BSL接口是利用芯片内部驻留的bootloader程序实现的自编程 , 通过特定的时序使得CPU进入bootloader代码断 , 然后利用每个MSP430芯片内部都有的Timer A构成一个软件串口来与上位机通讯 , 这样可以将代码下载到芯片内部 。 实现BSL除了JTAG接口的一些引脚外 , 还需要用到两个TA0功能引脚 , 因此在设计产品时如果需要加密 , 则应该考虑将这两个引脚也连出来 。 要烧断熔丝(加密)必须使用JTAG接口;烧断熔丝后只能通过BSL或者用户代码来实现编程更新 。
3> BSL的验证密码是怎么回事?
BSL也能读出芯片内部的代码 , 这样可以实现编程后的校验等功能 。 通过BSL擦除所有Flash信息时不需要验证密码 , 但是要进一步操作 , 就得输入32字节密码进行验证 。
BSL的协议规定这32字节密码为芯片FLASH区域的最高32字节 , 也就是程序的16个中断向量 , 如果您拥有这段程序的最后32字节 , 就能通过BSL将芯片内部所有代码读取出来 。
4> 为什么要使用高级加密?
32字节的密码看似几乎完全没可能使用穷举法来实现破解 , 但是各位别忘了 , msp430的16个中断向量未必每一个都用到了 , 没用到的中断向量为0