sasmike 发表于 2015-1-9 09:31:21

如何利用STM32的ID号进行加密?

96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。
看到许多朋友利用STM32的ID编码结合来进行产品加密,哪位能给个详细的思路啊?

Angel_YY 发表于 2018-3-10 10:31:34

产品唯一的身份标识非常适合:
● 用来作为序列号(例如USB字符序列号或者其他的终端应用)
● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
● 用来激活带安全机制的自举过程
96位的产品唯一身份标识所提供的参考号码对任意一个STM32微控制器,在任何情况下都是唯一的。用户在何种情况下,都不能修改这个身份标识。
这个96位的产品唯一身份标识,按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。
基地址:0x1FFF F7E8

每个CPU 出厂的时候都
配置的一个ID,96 位的.这个唯一码可以利用作软件加密.......

static u32 CpuID;
static u32 Lock_Code;

void GetLockCode(void)
{
//获取CPU唯一ID
CpuID=*(vu32*)(0x1ffff7e8);
CpuID=*(vu32*)(0x1ffff7ec);
CpuID=*(vu32*)(0x1ffff7f0);
//加密算法,很简单的加密算法
Lock_Code=(CpuID>>1)+(CpuID>>2)+(CpuID>>3);
}

XinLiYF 发表于 2018-3-10 13:41:05

可以做产品的激活码。

stm1024 发表于 2018-3-10 16:45:02

主要有几种功能吧:
1.防止逆向。这样的话即使别人把你的代码dump了,换个同样的MCU就不能工作了。具体思路可以自己设计一个算法。

2.售后凭据。在产品出厂前登记MCU的ID,这样后续服务的时候,作为购买了产品的凭据,例如安富莱的开发板就是这么做的。

3.作为产品的License。有点像软件的激活码的感觉,不过这种一般用处不大,毕竟硬件产品都销售给了客户。

meifan119 发表于 2020-3-26 17:13:44

1,不要在程序中直接出现id地址,例如STM32:1FFFF7E8 1FFFF7EC 1FFFF7F0 STM8: 0x4865~0x4870 2, 利用校验和或是crc对程序区进行校验,防止改程序QQ9272078
页: [1]
查看完整版本: 如何利用STM32的ID号进行加密?