社区导航

 

搜索
查看: 13049|回复: 17

怎样对STM32加密,防止被读出复制?

[复制链接]

107

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-5 16:01 | 显示全部楼层 |阅读模式
                                 现有一产品,用STM32来实现,功能基本实现,请教怎样进行一些加密,最大程度防止被读出、复制?谢谢
此帖出自stm32/stm8论坛

115

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-5 16:14 | 显示全部楼层
                                 芯片里面的程序能被读出吗,很有兴趣,呵呵

回复

使用道具 举报

86

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-5 16:49 | 显示全部楼层
1, 使能芯片的读保护功能

2, 灵活使用STM32的唯一ID,上电运行时,如果读ID不对,则程序不能正常运行。

3, 如果需要做IAP,则要对读出或写入的数据进行加密。

暂时想到这些,等待大侠补充。

回复

使用道具 举报

119

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-5 19:56 | 显示全部楼层
                                 补充一下,是需要IAP的。我也想到用芯片本身的ID,但这样的话,每一个芯片的程序都不尽相同,是IAP前上位机就处理好,还是到了具体的芯片上再处理?望各位大虾指导!

回复

使用道具 举报

111

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-6 00:32 | 显示全部楼层
                                 楼上:程序是可以做成相同的。 加密算法,通讯协议要设计好;不能让别人通过升级文件或窃取IAP通讯信息而暴露二进制源码。

回复

使用道具 举报

88

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2010-1-6 13:59 | 显示全部楼层
                                 做成产品,加密肯定是需要的

回复

使用道具 举报

103

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-7 13:18 | 显示全部楼层
                                 麻烦5楼能说的详细点吗?

回复

使用道具 举报

95

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-7 14:05 | 显示全部楼层
提供一个思路

芯片内部先保存一个用唯一ID加密以后生成的数据

做IAP的时候,先把这个数据读出来,解密,再和芯片的ID比较,如果是一致的,说明芯片的来源可靠。


然后IAP应用程序根据芯片ID,对要烧录到芯片的BIN文件进行加密,再把加密过的数据传给芯片,芯片内部的BOOTLOADER代码根据自身ID,对加密以后的数据解密,并烧写入FLASH。这样在通信端口进行传输的数据就都是加密过的数据,保证了通信通道上的安全性。

回复

使用道具 举报

113

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-7 15:14 | 显示全部楼层
                                 只要使能STM32的读保护,就可以保护你的程序被读出。

回复

使用道具 举报

92

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-7 21:26 | 显示全部楼层
                                 使能了读保护,就一定保证不能被读出吗

回复

使用道具 举报

102

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 14:30 | 显示全部楼层
                                 学习了!

回复

使用道具 举报

112

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 20:00 | 显示全部楼层
                                 学习了 谢谢····

回复

使用道具 举报

95

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 21:38 | 显示全部楼层
                                 主要思路就是利用好那个唯一的ID

回复

使用道具 举报

97

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 22:04 | 显示全部楼层
                                 请参考mcuisp.exe的反拷贝功能

回复

使用道具 举报

116

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 23:44 | 显示全部楼层
加密确实是一个问题

特别是带IAP的

值得关注

回复

使用道具 举报

102

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-16 23:58 | 显示全部楼层
                                 现在都瞄着加密……

回复

使用道具 举报

108

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2010-1-17 22:06 | 显示全部楼层
                                 关注一下。

回复

使用道具 举报

10

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2020-5-19 19:46 | 显示全部楼层

三、利用id做软件加密

1,如果板子上有外部存储器,可以先编写一个程序,利用算法把id计算得到一些值存入外部存储器,然后再烧写真正的程序,真正的程序去校验外部存储器的数据是否合法即可

 

2,利用板子上按键组合,或是上电按住某些键,程序在这个时候利用算法把id计算得到一些值存入程序区(stm8为EE区),程序运行时去验证程序区数据是否正确

 

3,轩微编程器有软件加密的功能,编程器会读芯片id,根据算法直接改写缓冲区,达到软件加密的作用

 

4,读出的id通过一定算法,例如异或加上一个数,得到的数据存入flash(只运行一次,运行后标志位也存入flash),下次读到这个标志位,就不运行这个程序。

 

四、做软件加密时注意

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0   STM8: 0x4865~0x4870

2, 利用校验和或是crc对程序区进行校验,防止改程序


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

关闭

站长推荐上一条 1/6 下一条

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2020-6-1 10:21 , Processed in 0.518792 second(s), 36 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表