173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32用id加密

keros@mark 2023-03-19 资讯中心

如何获得stm32 cpu的唯一ID

STM32每一个芯片内部都有一个唯一的96位的ID号,可以通关过以下方式进行读取:

由于唯一ID是一个96位的数据,所以你要创建3个32位变量用于存储ID号

static u32 CpuID[3];

接着执行读取函:

void GetLockCode(void)

{

//获取CPU唯一ID

CpuID[0]=*(vu32*)(0x1ffff7e8);

CpuID[1]=*(vu32*)(0x1ffff7ec);

CpuID[2]=*(vu32*)(0x1ffff7f0);

}

数就可以了。

如何用 stm32的单片机 id做加密

由于ID号是不可修改的,你可以先读出来,然后进行一个算法,把算法产生的数据存到FLASH里面,然后每次程序开始时候把算法数据读出来,把ID号进行运算,看看是否匹配,不能匹配,程序停止,否则程序程序正常运行;

stm32加密怎么可以看出来

stm32加密这样可以看出来:

1、读出完整程序段,搜索关键字节E8F7FF1F,因为STM32唯一的96位(12字节)ID基地址位于0x1FFF7E8,若程序段中涉及ID校验必然会读取芯片中ID索引该地址。

2、用工具读取此芯片该地址的96位(12字节)ID码,找到空片区写入此地址,更改索引地址:例如此芯片ID码为34FFDA054E50383119651843选取起始地址区域0x80000020,在前四个字节输入"34FF1843",后12字节输入34FFDA054E50383119651843,芯片中索引的E8F7FF1F均改成20000008,这是常用软加密的去除方法。

STM32的加密库在哪儿?

关于STM32加密

摘要:

知识产权的保护,如何让自已辛勤的劳动成果不被别人抄袭,采用有效的手段对IC加密是值得每一个设计者关注的问题。

当然,有人说,没有解不了密的IC,的确,解密是一项技术,只要有人类在不断的研究,它就有破解的一天;但是加密后的IC会增加破解的难度与破解成本,当破解的成本大于收益时,自然就会使破解者望而却步。

STM32芯片这两年销量很好,它的性能和价格都很不错,但如何对STM32进行加密呢,本人结合自已使用STM32 MCU一年多的经验,总结一下我对它加密的理解与方法。

关键字: STM32 加密 读保护

加密,最基本的方法是置读保护,这样可以防止外部工具非法访问,在STM32官网发布的 串口ISP软件中有置读保护和加密选项,选择一个就可以了,这样外部工具就无法对FLASH进行读写操作,但我要重新烧写FLASH怎么办?只能清读保护,而清读保护后,芯片内部会自动擦除FLASH全部内容。

还有人说,置读保护还不够安全,说要采用芯片内的唯一ID来加密,在程序里识别芯片的ID,如果ID不对,则程序不运行,当然,这样安全性又要更高一些,但每个芯片的ID不一样,因此对应的程序也应该不一样,那如何处理呢?有网友说:采购的时候,产品同批生产的ID号应该是连续的,可以通过判别ID的范围;还有网友说,在烧录工具里做一个算法,读取芯片ID,再修改相应的二进制文件。当然还会有很多种方法,这里不展开讨论。

以上介绍的只是一种情况,在实际的应用中还会发生第二种情况。

我们知道,STM32的内部FLASH是用户可编程的,也就是说它支持IAP,而IAP中的APP代码一般是需要开放的,那么只有保证BOOT的代码安全,才能确保不被破解。

前面提到,当IC置读保护后,外部工具不能访问内部FLASH,但CPU可以访问,破解者完全可以自已编写一段代码通过BOOT下载到IC 运行,然后在程序中读出你的BOOT代码。

只能加以限制,使别人的代码运行不了,才能保证BOOT不被读出。

常用的方法是采用加密算法,如AES;流程如下:

APP代码加密,下载时,在BOOT中解密,这样,只有通过正确加密的APP代码才能正常的运行,因此加密的算法就成了你的密钥,而这个是你独有的。

参考资料:《STM32F1x Flash Programming.pdf》作者:STMicroelectronics

本文标签:stm32用id加密

产品列表
产品封装
友情链接