你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STMF1加密后的FLASH代码怎么运行?

[复制链接]
s40742360 提问时间:2015-8-25 13:14 /
阅读主题, 点击返回1楼
收藏 评论17 发布时间:2015-8-25 13:14
17个回答
s40742360 回答时间:2015-8-26 18:10:47
本帖最后由 s40742360 于 2015-8-26 18:28 编辑
adlu 发表于 2015-8-26 17:47
加密的目的是不让别人获取程序代码,或者获取了也不能使用。
很少像你说的,把代码加密后存入FLASH,然后C ...

这种加密方法是我最近研究的一个产品里用的方法,它的FLASH内容可以读,只是读出来的是加密的代码,不能写到其它序列号的STM32中。也算是一个加密的方法吧。这个方法类似你说的软件ID加密。
你说的这个软件ID加密方法在解密时怎么办?如果不把代码放在RAM里,CPU取指的时候得知道这是加密的代码,还要负责解密。STM32好像不支持这个。

个人感觉STM32还是ROP更安全些。


党国特派员 回答时间:2015-8-27 09:54:20
s40742360 发表于 2015-8-26 18:10
这种加密方法是我最近研究的一个产品里用的方法,它的FLASH内容可以读,只是读出来的是加密的代码,不能写 ...

肯定还有一部分解密的代码你没有读出来。
关键是要读出那段解密代码,解密代码是不会加密的。有可能是bootloader之类的东西。
adlu 回答时间:2015-8-27 09:55:30
ROP是Read Out Protection的缩写,字面意思就是读保护,属于我说的硬件加密方式。
我不知道你是怎么理解软件ID加密的。
我所说的ID加密方式,不是对FLASH中的指令代码进行加密,没有解密过程,只有验证ID的过程。
程序基本流程和不加密的程序相同,只是在上电后先调用一个自定义的验证ID的函数,假设名为checkID( )。
实现的方法是这样的:
1.将FALSH中某个地址,假设是0xABCD,作为ID校验密码的存放地址;
2.读取ID、读取0xABCD中的校验码;
3.将这两个参数作为checkID( )的输入参数,经过自己的加密算法计算后,如果两个参数匹配,则程序继续往下运行,否则,擦除FLASH的部分或全部内容,销毁程序。

当然需要由一个通用的ID校验码,假设为0x12345,当checkID( )检测到输入的校验码是0x1234,就使用芯片ID进行计算生成与ID匹配的校验码,再写到地址0xABCD中。在批量烧录的代码中,使用的是通用ID校验码,程序第一次运行时,会根据自己的ID更新校验码。这样,别人即使读到FLASH中的代码,也是不能在其他不同ID的芯片上运行的。

可在程序中间多个地方调用checkID( ),以防止反汇编轻易跳过加密代码。

理论上是没有一种加密方法是绝对不可破解的,只是增加破解难度。
同时使用硬件加密和软件加密可以使代码更加安全。

为了保护广大程序猿的劳动成果,以上方法欢迎转发,求扩散!!!
s40742360 回答时间:2015-8-27 15:11:37
党国特派员 发表于 2015-8-27 09:54
肯定还有一部分解密的代码你没有读出来。
关键是要读出那段解密代码,解密代码是不会加密的。有可能是boo ...

看到那部分Boot代码了,8K代码量,正在头疼。
s40742360 回答时间:2015-8-27 15:42:57
本帖最后由 s40742360 于 2015-8-27 15:45 编辑
adlu 发表于 2015-8-27 09:55
ROP是Read Out Protection的缩写,字面意思就是读保护,属于我说的硬件加密方式。
我不知道你是怎么理解软 ...

你说的也是一个办法。
其实,软件加密的本质就是个函数:密文=f(明文, 密钥),或者密文=f(明文)。密文肯定是公开的,如果明文也是公开的,手头如果有足够的分析样本,那被破解的可能性就有了。如果代码还可以被跟踪,那基本就可以被完全破解了。这就成了软件加密的软肋,更关键的是破解成本不大。所以,软件加密还是暴露的信息越少越安全。

硬件解密的话,成本就高了,打磨芯片、拍照、分析可不是随便谁能做到的。
Tension 回答时间:2015-8-27 15:58:59
压根没人“加密”程序,Windows也不例外。
党国特派员 回答时间:2015-8-28 09:20:00
s40742360 发表于 2015-8-27 15:42
你说的也是一个办法。
其实,软件加密的本质就是个函数:密文=f(明文, 密钥),或者密文=f(明文)。密文肯定 ...

你说的对,还是硬件加密要好些,对于一般的人破解成本要高些,
党国特派员 回答时间:2015-8-28 09:22:24
s40742360 发表于 2015-8-27 15:11
看到那部分Boot代码了,8K代码量,正在头疼。

ARM破解相对X86要好些,指令都是对齐的,X86指令加花更恶心。 blank4.png blank3.png blank2.png null1.png null.png
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版