baozoudexcd 发表于 2023-12-6 16:44:24

关于STC8H3K64S4单片机ID的疑问


最近在做的一个工程,使用了STC8H3K64S4单片机,需要用这个单片机的ID做加密。该单片机没有CHIPID寄存器,ID号在ISP下载时烧录进FLASH。关于ID,我有以下疑问,求大神指导:

1、该ID号是由下载软件烧写进单片机的FLASH里的,也就是说该ID是通过上位机生成的,那么如何保证唯一性?
2、该ID储存在FLASH空间,我将该空间设置为EEPROM后,可以对该地址的值随意改变。那是不是只要有人获取一套ID与密码,然后在后续生产中,将所有单片机的ID都改为获取到的ID,再在指定位置写入获取到的密码,就等同与ID加密失效。

AI-32位8051 发表于 2023-12-7 09:08:12

ID号 不是烧进去的,本身就是固化在单片机里的

baozoudexcd 发表于 2023-12-7 09:22:14

本帖最后由 baozoudexcd 于 2023-12-7 09:23 编辑

STCAI-32位8051 发表于 2023-12-7 09:08
ID号 不是烧进去的,本身就是固化在单片机里的
您好,关于这个问题,我做了一个测试。
我的电路板上有两个按键,按键1按下后,会将ID修改为0x01~0x07;按键2按下后,通过串口输出ID值。测试结果如下:
1、当按键1按下后,再按下按键2,串口输出的ID值为0x01~0x07。反复上下电后,按下按键2,依旧输出0x01~0x07,说明ID值确实已经被更改。
2、使用烧写软件重新烧写程序后,直接按下按键2,串口输出正确的ID值。说明烧写软件会将正确的ID值烧写进单片机FLASH中。

乘风飞扬 发表于 2023-12-7 17:10:53

baozoudexcd 发表于 2023-12-7 09:22
您好,关于这个问题,我做了一个测试。
我的电路板上有两个按键,按键1按下后,会将ID修改为0x01~0x07;按 ...

ID是出厂前固化在芯片里的,烧录时上位机软件从芯片内部(用户不允许访问区域)读取出来,然后写入到Flash里(用户允许访问区域)。
IAP类型的芯片,用户ID存放区域与EEPROM区域重叠的话是可以被改写的。如果不想被改写的话可以使用固定EEPROM大小的芯片(如:STC8H3K60S4)或者使用新出带CHIPID寄存器的芯片。

baozoudexcd 发表于 2023-12-7 18:03:28

乘风飞扬 发表于 2023-12-7 17:10
ID是出厂前固化在芯片里的,烧录时上位机软件从芯片内部(用户不允许访问区域)读取出来,然后写入到Flash ...

感谢指导!那么参照我问题中第二条的方法,是不是可以破解掉STC8H3K64S4这种单片机的ID加密

乘风飞扬 发表于 2023-12-8 09:51:41

baozoudexcd 发表于 2023-12-7 18:03
感谢指导!那么参照我问题中第二条的方法,是不是可以破解掉STC8H3K64S4这种单片机的ID加密 ...

每次烧录时都会将该芯片的ID号重新写入到指定地址。
修改EEPROM区域内容,需要通过芯片执行相应程序代码。
如果你的代码都被对方获取并且可以根据他们需要进行修改的话,已经没有保密性可言了。也就没必要修改ID了,直接删除你的ID加密代码更简单。

baozoudexcd 发表于 2023-12-8 14:02:54

乘风飞扬 发表于 2023-12-8 09:51
每次烧录时都会将该芯片的ID号重新写入到指定地址。
修改EEPROM区域内容,需要通过芯片执行相应程序代码 ...

感谢指导!如果对方通过读取FLASH的方式获取到我的HEX文件。有没有可能先运行一小段引导程序修改ID值,然后再加载HEX文件里的程序
页: [1]
查看完整版本: 关于STC8H3K64S4单片机ID的疑问