ECDSA_SignVerify(SHA256) STM32F4 series
前言 針對驗證簽名部分,因近期客戶需求但MCU部分被綁定無法放入SBSFU去做更新,而且SBSFU更新部分目前提供範例也僅UART,其他interface需要自己coding,最後這邊討論後只做簽名驗證來防程式被修改,該章節會介紹簽名驗證流程和原SBSFU流程 參考軟體包 這邊因單純驗證簽名因此直接參考x-cube-cryptolib即可,因這邊使用F4系列所以這邊參考比較舊相近系列L152,因G4或L4是相對較新的系列避免有些Function不存在 圖解流程基本上如下 其實可以看到MCU會需要處理部分主要是把資料轉換,因這邊選用是SHA256所以是把檔案轉換SHA256格式,再透過ECC校驗,這邊公/私鑰匙的生成是透過OpenSLL生成,使用為外部軟體非在MCU內執行生成 SBSFU簡介 因SBSFU是包含加密更新部分,而F4是屬於比較舊款因此支援部分沒有到這麼多參考圖如下 而已更新步驟來說會如圖,因此你可以看到如果需要加密更新你的code size不能太大另外,或你的Flash size需要夠大(APP Code需要2倍大小,這邊大概說明流程,因這次只使用到驗證簽名部分所以這邊就不詳細說明 ECC驗證簽名Code 在程式上會分成2部分 Boot code和APP code,App code部分比較簡單會透過外部軟體所增加標頭檔部分打包起來 這邊主要2個檔案需要修改1.system_stm32f4xx.c2.ld檔案 這邊是用python寫外部加密打包檔案這邊跟MCU較不相關未來再詳細說明 把APP剛剛規劃標頭檔相關位置填入,因驗證部分會需要知道相關資料位置 在執行檔中需要把Key引用帶入,在執行檔最後加入下方 鑰匙部分也是需要call外部軟體生成(OpenSLL) 最後在main.c部分就比較簡單主要是把加密驗證簽名部分補上即可,前半在做把鑰匙BIN和簽名BIN輸入陣列中 參考
ECDSA_SignVerify(SHA256) STM32F4 series Read More »