2019-07-14 16:58发布
你我然后 发表于 2018-10-12 14:00 针对你说的定位问题,在你编译的时候就已经定位。 比如 我的程序编译的时候就定位在在RAM里0x20001000处。解密的时候把解密后的程序直接放在RAM 的0x20001000处就可以了,因此也不存在定位问题。 RAM太小,你就加大RAM...
吕少大大 发表于 2018-10-12 14:29 加密的目的是不让别人获取程序代码,或者获取了也不能使用。 很少像你说的,把代码加密后存入FLASH,然后CPU读取FLASH解密再放到RAM中运行。
muuwfwr 发表于 2018-10-12 14:47 这种加密方法是我最近研究的一个产品里用的方法,它的FLASH内容可以读,只是读出来的是加密的代码,不能写到其它序列号的STM32中。也算是一个加密的方法吧。这个方法类似你说的软件ID加密。 你说的这个软件ID加密方法在解密时怎么办?如果不把代码放在RAM里,CPU取指的时候得知道这是加密的代码,还要负责解密。STM32好像不 ...
你我然后 发表于 2018-10-12 14:54 肯定还有一部分解密的代码你没有读出来。 关键是要读出那段解密代码,解密代码是不会加密的。有可能是bootloader之类的东西。
最多设置5个标签!
明白,感谢。
再问一下STM32本身的加密是怎样实现的?
比如有没有这样的方式:系统存储器的BootLoader在写FLASH的时候就使用硬件加密了,然后在取指后,硬件解密后CPU再执行?
很少像你说的,把代码加密后存入FLASH,然后CPU读取FLASH解密再放到RAM中运行。
加密的基本方式又两种,一是硬件加密,二是软件加密。
硬件加密:一般是烧断熔丝,或者锁死FLASH(TI的FLASH型DSP用这种),目的都是防止别人读取程序代码。
软件加密:一般是ID加密,或者使用专用芯片加密。软件加密的程序,别人即使读到了FLASH中的代码,复制到其他板子上,也是不能正常工作的。
这种加密方法是我最近研究的一个产品里用的方法,它的FLASH内容可以读,只是读出来的是加密的代码,不能写到其它序列号的STM32中。也算是一个加密的方法吧。这个方法类似你说的软件ID加密。
你说的这个软件ID加密方法在解密时怎么办?如果不把代码放在RAM里,CPU取指的时候得知道这是加密的代码,还要负责解密。STM32好像不支持这个。
个人感觉STM32还是ROP更安全些。
肯定还有一部分解密的代码你没有读出来。
关键是要读出那段解密代码,解密代码是不会加密的。有可能是bootloader之类的东西。
看到那部分Boot代码了,8K代码量,正在头疼。
一周热门 更多>