单片机
返回首页

stm32f4xx 加密

2019-11-19 来源:eefocus

一、ID获取


34 设备电子签名

电子签名存储在 Flash 区。可以使用 JTAG/SWD 或 CPU 对其进行读取。它包含出厂前编程 的标识数据,这些标识数据允许用户固件或其它外部设备将其接口与 STM32F4xx 微控制器 的特性自动匹配。

34.1 唯一设备 ID 寄存器(96 位)

唯一设备标识符最适合:

● 用作序列号(例如 USB 字符串序列号或其它终端应用程序)

● 在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以

提高 Flash 中代码的安全性

● 激活安全自举过程等

96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远 不能改变这些位。

96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接 起来。

基址:0x1FFF 7A10


程序:


static u32 Lock_Code;

 

void GetLockCode(void)

{

 //获取CPU唯一ID

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

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

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

 printf('nn %x  %x  %xnn',CpuID[2],CpuID[1],CpuID[0]);

 //加密算法,很简单的加密算法

 Lock_Code=(CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3);

}

运行结果:

1)keil  memroy窗口显示 ID地址处数据:

2)串口打印:

由上可知:该stm32芯片的96位 iD号  0x39353633      32334712   0025002a 


二、加密措施


简单方法: 主程序运行前,对比读取ID号 与设置ID是否一致。问题:每个stm32都需要单独配置ID比较值.如何解决?


参考:http://www.61ic.com/Technology/embed/201311/50853.html,待完善。

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章