CC3200 片外FLASH如何加密?
TI员工,你好:
CC3200现在的程序是放在片外FLASH的,这样我们的程序(bin文件)很容易被读出,然后抄袭,我想问下这个怎么解决呢?
BR!
ZHANG LIN
据说,片外的flash拷贝后就完成山寨了。片外的flash是CC3100的(cc3200=M4+CC3100),内部通过SPI完成片外FLASH的操作,M4应该是上电后通过CC3100加载bootloader。但是不理解的是,TI很多细节没有描述清楚。
to: mianjiang zhang:
是啊,很多没说的太清楚。在TI的文档(编号:(SWRU367B)中有对片内ROM的描述,FLASH不太清楚。
是否有可以加密的片外串行FLASH呢?
1.3.2.2 ROM
CC3200 comes with factory programmed zero-wait-state ROM with the following firmware components:
? Device Initialization
? Bootloader
? Peripheral driver library (DriverLib) release for product-specific peripherals and interfaces
SPI flash没有自带加密的都是标准的,市面有加密芯片,实现实时的加密写入和解密输出,价格不菲。提供个思路供你参考:未加密bin->MCU根据每个芯片不同的ID码加密->存入flash->每次开机根据ID码解密已经存在的已加密的bin文件->加载并运行。实现存放的代码不同。直接拷贝内容到ID码不同的芯片是无法使用的。
To:mianjiang zhang ,
非常感谢你热心的回答。价格贵的加密FLASH估计出于成本考虑我们不会用。
ID加密的方法:还不清楚你的方法是否可行,但是这是个不错的思路。
其实我的思路也是差不多的。也是通过ID码加密,但是这个只做认证用,我不太明白的是怎么加密这个BIN文件并加载运行。
我只是把这个 “算法*ID”的东西放入FLASH中作为认证使用,MCU认证FLASH。
但是这样的话在生产的时候就会比较麻烦,因为不同的FLASH烧录的BIN文件不同,或者需要自己做工具来生成这个BIN文件。
在启动后先运行一段校验程序就很好解决了.比如说,首次开机上电后等待接收"KEY",可以由服务器发送广播统一的"KEY",接着从机收到同样的"KEY",再根据本身不同的ID码进行运算后保存起来.这样每个Flash的KEY内容就不同了.
未加密bin->MCU根据每个芯片不同的ID码加密->存入flash->每次开机根据ID码解密已经存在的已加密的bin文件->加载并运行。
这种方案很好,但是我是不是要写一段程序用来在开机时解密bin并加载到Ram执行呢?这段程序应该放在哪儿?还有Cc3200是否有中断向量表重映射的API呢?
大家好:
CC3200估计TI会出内部带FLASH版本的IC,但是这个外部加密还是不太明白。
另外我看到UNIFLASH中在FORMAT时有“Secure”选项。另外在UNIFLASH的 “QUICK GUIDE”网页上也提到了“EFUSE”。
我想问: (1)这个“Secure”选项是加密的片外串行FLASH,对吗?
(2)这个"EFUSE"是在片外的flash上吗?
谢谢。
你说的是对的,但是目前还没有出secure CC3200, 所以这个选项还用不着。
可是这样的话KEY是存在flash里面的,这样的KEY还是有被拿出来的危险啊,没有解决根本问题啊。