STM32加密性能?

yejin   2007-11-25 12:22 楼主
                                 没有找到加密说明? 有谁知道吗?

回复评论 (12)

????///??????/

                                  
点赞  2007-11-25 13:27

关于STM32的加密功能,请看STM32编程手册


STM32F10x闪存编程手册[/url] —— [url=http://www.st.com/stonline/products/literature/ds/13259.pdf]英文下载 中文下载
 
Flash存储器可以分段设置读和/或写保护,不知楼主问的是不是这个。
点赞  2007-11-25 17:41

我指的是"知识产权"保护

                                 防止别人盗窃软件。类似于LPCXXX系列的加密功能。
点赞  2007-11-25 20:43

Unprotection

Unprotection
To disable the read protection:
● Erase the entire small information block (user part). As a result, the read protection code (RDP) will be 0xFF. At this stage the read protection is still enabled.
● Program the correct RDP code 0xA5 to unprotect the memory. This operation first forces a Mass Erase of the main block.
● Reset the device (POR Reset) to reload the option bytes (and the new RDP code), andto disable the read protection.

而这些只要满足该流程即可完成读保护的“解密”工作,不能算是软件保护。
点赞  2007-11-25 20:55

解除写保护必须先把Flash存储区擦除,这不算保护吗?

加了写保护后,Flash中的内容不能被读出,而只有在擦除了Flash存储区之后,才能取消这个保护,即保护取消后所有内容都被销毁了,没东西可读了,这不能算是软件保护吗?

好像LPCXXX系列的所谓加密功能也是防止程序被读出,似乎并没有特别之处。LPCXXX的东西看得不多,还望楼上的朋友指教,谢谢。
点赞  2007-11-25 22:14

有道理啊

                                  
点赞  2007-11-26 09:28

6楼的可能是笔误吧,楼主谈的是读保护

                                 5楼的那段英文也是关于读保护的,6楼的解释也是关于读保护的。
点赞  2007-11-26 09:49

LPC&STM32各有缺点。

STM32这样对FLASH读出保护后,连程序本身都无法读取自身。这样我们定义常量和数组时,就要必须分散加载,将数组放到不加密的FLASH中,但这些数组常量往往是非常重在的数据。

我刚开始使用STM32不知理解的对不对。
点赞  2007-11-27 09:19

9楼的理解是不对的

相信你没有仔细地看STM32的相关手册,请看《STM32F10x的闪存编程手册》(英文版下载 中文版下载

在2.4.1节(Read protection)有这样的描述:
This protection is activated by setting an option byte in the information block. Once the protection byte is programmed to a value, Flash memory read accesses are not allowed when the device is in debug mode. All features linked to loading and executing code in RAM are still active (for example, JTAG/SWD, boot in RAM, etc.) and this can be used to disable the read protection (access to the Flash memory still denied).
中文译文为:这项保护是通过设置信息块中的一个选择字节启动的。当保护字节被写入相应的值以后,在调试模式中将不允许读出闪存存储器,所有在RAM中加载和执行的功能(如JTAG/SWD,从RAM启动等)仍然有效,这样可以用于解除读保护(访问闪存仍然被禁止)。
 
在第2.4.2节还有一张表清楚地列出了读保护和写保护的作用范围:

 
从上述文字和列表中可以看出,当读保护生效时CPU执行程序时可以读受保护的Flash区,有两个例外情况:1)调试执行程序时;2)从RAM启动并执行程序时。
 
所以说9楼的理解“STM32这样对FLASH读出保护后,连程序本身都无法读取自身”是不对的。
点赞  2007-11-27 10:59

对STM32的Flash施加读保护后,Flash的第0~3页也将处于写保护状

除了我在10楼解释的特点之外,STM32还有一个特别的保护,即对Flash存储区施加读保护后,即使没有启用写保护,Flash的第0~3页也将处于写保护状态,这是为了防止修改复位或中断向量而跳转到RAM区执行非法程序代码。
点赞  2007-11-27 15:38

使用芯片的唯一ID即可啦。

                                 STM32芯片具有一个96位的唯一ID号,那么只要程序中加一段ID识别程序即可。比方说这次生产的产品有5K,那么我会从芯片厂家获得这5K芯片的ID范围,在程序中添加一段ID校验,即使有人破解读出了本程序,在其他批次的STM32芯片也无法正常运行啊。
点赞  2009-2-6 14:34
加密是可以,但怎么防止别人破解呀,如写个代码在RAM中运行,就可以读出所以FLASH中的数据呀
点赞  2012-3-14 10:58
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复