STM32 應用程式加密的一種設計方案

2021-09-27 06:37:05 字數 1532 閱讀 9308

0、前言

stm32編譯後的**存在flash中,通過外部工具可以讀出來全部資料,一旦硬體抄板一樣,再將flash資料全部拷貝至抄板微控制器中,既可以完全實現硬體和軟體功能抄襲。因此,需要對自己的應用程式加密,即使被抄板和讀取flash資料,拷貝過後仍然無法執行相應的功能。【ps:沒有解不開的微控制器,主要看解密的經濟效益】

step1:為避免出現uid_base的明文,在讀取uid時,對其位址進行一定的簡單運算,再讀取uid。

#define    addrseed      (0x20170620)

#define methordaddr (addrseed^1+1)

#define methordeuid (addrseed|0x12345678)

volatile const uint32_t uidaddr[3] = ;

//get uid, by calc uidbase

//uid: ptr, 96byte length

static void getuid(volatile uint32_t *uid)

step2:對uid進一步簡單加密。

//encrypt uid

//euid: ptr, 96byte length

static void encryptuid(volatile uint32_t *euid)

step3:對encryptuid計算md5,計算128bit單向雜湊值。

//generate md5 by euid

//key: ptr, 16byte length

void generatemd5(uint8_t *md5)

step4:根據flash頁容量大小,將md5擴充至1024byte,採用隨機數擴充。

//generate key

//key: ptr, 1024 length, md5 extend to 1024

void generatekey(uint8_t *key)

else

}}

二、自動配置流程

具體地,出廠自動配置金鑰流程如下:

step1:上電啟動微控制器,首先執行bootloader程式。

step2。存在公升級任務時,執行step6step7

step3step5

step4:重啟微控制器,進入bootloader。

step6:清除公升級任務標誌。

step7三、出廠韌體合併

一種的STM32的應用餵狗方法

餵狗結構體 typedef struct wdg feed t 函式介面 初始化函式 void wdgfeed start void 餵狗時間更新,在滴答定時中斷裡呼叫 void wdgfeed update uint32 permitted delay 定時餵狗,在應用程式中呼叫 void wdg...

學習筆記 STM32定時器程式應用(一)

pwm互補輸出帶死區時間和剎車控制 講解 時隔11天,我又回來了 之間寫了stm32的三種定時器的一些基本概念,今天我來講解一下相關的程式應用。我們直接從野火的韌體庫例程中拷貝乙個串列埠的例程 usart接髮。由於我們這個例程是關於互補輸出,因此需要兩個gpio 死區時間用軟體配置,而剎車控制也需要...

一種應用程式命令執行架構設計

一種應用程式命令執行架構設計 袁永福 2011 7 5 有感於一些程式中aspx頁面中直接編寫功能性 難於組織和維護,實現不了程式的高度可配置化,自此提出一種應用程式命令執行架構,其架構圖如下 在這個架構中,每乙個應用程式中存在乙個host 宿主 它是應用程式功能模組組織中的頂級結構,它戰略上管理著...