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

評論