本文導讀
ZDP14x0系列芯片是內置開源GUI引擎的圖像顯示專用驅動芯片,在實際產品開發中需要加密保護,防止應用程序被讀取和盜用,本文將介紹如何實現UID加密安全啟動。
UID加密安全啟動原理
ZDP14x0系列芯片具有64位全球唯一UID,基于UID實現加密可以保證程序移植到另一個芯片無法運行,詳細加密啟動實現原理如圖1。
芯片上電運行,先從加密文件中讀取加密數據,然后將加密數據與初始化數據對比是否一致。若一致,表明程序是首次運行,則讀取芯片UID并進行加密計算,并將加密數據寫入加密文件覆蓋初始化數據。若不一致,表明程序已運行過,需要讀取芯片UID數據進行加密運算得到加密數據,然后與加密文件的數據進行對比。若數據一致,證明程序與芯片綁定正常,UI正常運行;否則程序異常,報警不運行UI。
圖1 UID加密原理
UID接口函數介紹
了解了UID加密安全啟動原理,接下來看看UID的接口函數。ZDP14x0 UID分為64位全球唯一UID和64位用戶可自定義UID。UID接口函數包括全球UID獲取接口、自定義UID獲取接口、自定義UID設置接口,需要注意的是自定義UID只能設置一次,鎖定后無法修改。
圖2 UID接口函數
3個UID接口函數的入口參數都是chip_uid_t類型的結構體,其定義如圖3。
圖3 chip_uid_t類型結構體
UID加密程序實現
了解了UID加密安全啟動原理和UID函數接口,接下來看看安全啟動程序的實現,詳細程序如圖4。
圖4 UID加密安全啟動程序
程序開始部分定義了初始化數據,加密文件存放的路徑,以及一些局部變量。然后從指定目錄讀取加密文件數據,若文件讀取失敗則報警提示不往下運行,讀取成功則對比是否和初始化數據一致。若與初始化數據一致,則調用加密文件寫接口函數,讀取UID進行加密并寫入加密文件。若與初始化數據不一致,則調用加密文件校驗接口函數,與UID加密數據進行對比校驗。 加密文件寫接口函數實現如圖5,調用全球唯一UID讀取接口讀取UID,讀取成功后做加密計算,然后將加密數據寫入到加密文件。操作成功則繼續運行,否則報警提示。
圖5 UID加密安全啟動程序
加密文件校驗接口函數實現如圖6,調用全球唯一UID讀取接口讀取UID,讀取成功后做加密計算,然后與加密文件數據對比。數據一致則繼續運行,否則報警提示。
圖6 加密文件校驗程序
UID加密Demo示例
本UID加密安全啟動示例已上傳到gitee,在資料中的路徑為hmi_zdp14x0?3.UI_build_projectuser_projects uid_secret_boot_demo,歡迎下載體驗。
-
芯片
+關注
關注
455文章
50851瀏覽量
423879 -
驅動芯片
+關注
關注
13文章
1285瀏覽量
54661 -
GUI
+關注
關注
3文章
660瀏覽量
39698
原文標題:ZDP14x0系列小技巧-如何實現UID加密安全啟動
文章出處:【微信號:立功科技,微信公眾號:立功科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論