詳解芯片UID加密方案
出處:電子產(chǎn)品世界 發(fā)布于:2018-07-25 14:42:07
嵌入式系統(tǒng)產(chǎn)品的加密和解密永遠(yuǎn)是一對矛盾的統(tǒng)一體。為了保護(hù)產(chǎn)品研發(fā)人員的技術(shù)成果,研究新型加密技術(shù)是非常有必要的。這里我們聊聊使用芯片UID加密的方案。
首先需要明確的是,沒有一種加密是“”可靠的,但是加密手段可以增加非法使用者的解密成本,借此來防止技術(shù)被“輕易”盜取。本次以LPC1000的UID加密方案為例進(jìn)行介紹。
一、LPC1000系列的加密方案
通過分析得出,基于CortexM0或CortexM3內(nèi)核的LPC1000系列MCU通過軟件加密的方法有兩種:
1、使用代碼讀保護(hù)機(jī)制,限制用戶訪問片內(nèi)Flash;
2、通過芯片UID并添加加密算法使每片MCU內(nèi)的程序具有性。
代碼讀保護(hù)機(jī)制是通過使能系統(tǒng)中的不同安全級別,以便限制訪問片內(nèi)Flash,本次不做重點(diǎn)介紹。
二、UID加密
UID是標(biāo)識符(unique identifier),在LPC1000系列微控制器的每一顆芯片都具有的標(biāo)識符,該標(biāo)識符為128位二進(jìn)制序列。因此我們可以利用芯片UID的性對程序進(jìn)行加密,使每一個產(chǎn)品中的程序也具有性,即使非法使用者獲取了MCU中的程序復(fù)制到其他芯片中也是不能正常運(yùn)行的,從而達(dá)到保護(hù)開發(fā)者的知識產(chǎn)權(quán)不被侵犯和盜用的目的。
三、LPC1000的UID加密方案
基本思路是使用上位機(jī)軟件通過編程器讀取芯片的UID,經(jīng)加密算法運(yùn)算后生成密鑰,程序的同時向MCU的Flash中某個地址寫入密鑰;MCU上電后,首先讀取芯片的UID,再通過與上位機(jī)相同的加密算法運(yùn)算后計算出密鑰,并與之前寫入Flash中的密鑰比較,若相同則繼續(xù)執(zhí)行用戶程序,否則跳入死循環(huán)或執(zhí)行程序開發(fā)者指定的代碼。
?圖1 LPC1000 UID加密方案流程圖
實(shí)現(xiàn)此方案需要準(zhǔn)備的資源如下。
硬件資源:
LPC1766FBD100芯片;
SmartPRO 5000U-PLUS編程器;
QFP100-NXP適配座;
SmartCortex M3-1700開發(fā)板(測試用,非必需)。
軟件資源:
SmartPRO 2008 2.0.56.exe上位機(jī)軟件;
Programmer.rar編程器上位機(jī)UID加密補(bǔ)丁;
Uid.rar編程器上位機(jī)UID加密算法;
LPC1766在Keil4下的工程模板;
Keil4開發(fā)環(huán)境;
Microsoft Visual C++ 6.0。
1、下位機(jī)
下位機(jī)(即LPC1766芯片)上電并初始化后,首先讀取芯片的UID,解析密鑰并與Flash中的密鑰比較判斷后,再繼續(xù)執(zhí)行用戶代碼。這里我們舉例采用的加密算法是將UID的補(bǔ)碼作為密鑰,加密方法比較簡單,用戶可自行對加密算法進(jìn)行修改,寫出復(fù)雜的加密算法。
讀取芯片UID的方法是通過調(diào)用芯片內(nèi)部的IAP函數(shù)實(shí)現(xiàn)
2、上位機(jī)
在下位機(jī)LPC1766的程序編寫完成并生成hex或bin文件后,按照以下步驟對MCU進(jìn)行加密:
首先,在Microsoft Visual C++ 6.0下編寫加密算法,這里我們已經(jīng)編寫完成,僅需解壓uid.rar并打開其中的VC工程。用戶需要在uid.cpp中的UidAlgorithm函數(shù)中添加自定義算法
加密算法編寫完成后,編譯將生成一個名為uid.dll的算法文件。
第二步,安裝SmartPRO 2008軟件,我們默認(rèn)安裝在C:\Program Files路徑下;
第三步,安裝SmartPRO 2800加密補(bǔ)丁,方法是將Programmer.rar解壓到C:\Programd Files\SmartPRO 2008\Programmer路徑下,覆蓋原來的文件;
第四步,將加密算法生成的uid.dll文件復(fù)制到C:\Programd Files\SmartPRO 2008\Programmer下,SmartPRO 2008啟動后將會自動調(diào)用uid.dll;
第五步,連接硬件,將LPC1766芯片放入適配座ZY503D中,連接USB通信電纜和電源;
第六步,燒寫文件,啟動SmartPRO 2008軟件,選擇芯片“LPC1766@LQFP100”,打開燒錄文件(在Keil編寫下位機(jī)程序時生成的hex或bin文件 )。此時會出現(xiàn)一個如圖4的特殊提示,這是因為Keil編譯器在編譯時沒有將Flash中前8個字單元的內(nèi)容進(jìn)行代碼有效校驗和的填充而產(chǎn)生該警告,點(diǎn)擊“確定”即可,編譯器在過程中會調(diào)用校驗算法自動添加校驗。關(guān)于代碼有效校驗和填充的相關(guān)內(nèi)容請參考LPC1766用戶手冊中“Flash編程”一章的相關(guān)內(nèi)容。
第七步,開始,點(diǎn)擊“組合”即可,默認(rèn)執(zhí)行的是擦除、編程、校驗三個步驟的結(jié)合。
成功編程后,如果重新讀取Flash,打開緩沖區(qū),定位到0x00002000處,可以看到已經(jīng)寫入的密鑰。如圖5所示,與此前設(shè)計的加密算法和加密預(yù)期效果一致。
驗證方法:取下適配座中的芯片,焊接到TinyARMT17板上,查到SmartCortex M3-1700開發(fā)板底板上,連接P0.11到BEEP插針,如所示。開發(fā)板上電后即可聽到蜂鳴器的鳴叫。以此驗證芯片計算出的密鑰與Flash中寫入的密鑰校驗一致,芯片程序正常運(yùn)行。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 恒玄BES2800芯片:6nm工藝+雙核M55+藍(lán)牙5.4的融合之作2025/11/5 9:30:36
- AR眼鏡芯片有哪些選擇2025/10/31 15:13:48
- 一文了解車規(guī)級芯片認(rèn)證標(biāo)準(zhǔn)2025/9/16 15:40:14
- 探究 MCU 芯片靜電高但產(chǎn)品靜電指標(biāo)不佳的原因2025/9/4 16:12:23
- 138譯碼器的工作原理2025/8/29 17:04:49
- 高溫環(huán)境下電源IC選型建議
- 安防監(jiān)控設(shè)備連接器應(yīng)用分析
- 高速PCB信號完整性(SI)設(shè)計核心實(shí)操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護(hù)設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實(shí)操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題









