<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 芯片UID加密方案

芯片UID加密方案

作者:ZLG致遠電子 時(shí)間:2017-10-26 來(lái)源:電子產(chǎn)品世界 收藏

  嵌入式系統產(chǎn)品的加密和解密永遠是一對矛盾的統一體。為了保護產(chǎn)品研發(fā)人員的技術(shù)成果,研究新型加密技術(shù)是非常有必要的。這里我們聊聊使用加密的方案。

本文引用地址:http://dyxdggzs.com/article/201710/370606.htm

  首先需要明確的是,沒(méi)有一種加密是“絕對”可靠的,但是加密手段可以增加非法使用者的解密成本,借此來(lái)防止技術(shù)被“輕易”盜取。本次以L(fǎng)PC1000的加密方案為例進(jìn)行介紹。

  一、LPC1000系列的加密方案

  通過(guò)分析得出,基于CortexM0或CortexM3內核的LPC1000系列MCU通過(guò)軟件加密的方法有兩種:

  1、使用代碼讀保護機制,限制用戶(hù)訪(fǎng)問(wèn)片內Flash;

  2、通過(guò)并添加加密算法使每片MCU內的程序具有唯一性。

  代碼讀保護機制是通過(guò)使能系統中的不同安全級別,以便限制訪(fǎng)問(wèn)片內Flash,本次不做重點(diǎn)介紹。

  二、UID加密

  UID是唯一標識符(unique identifier),在LPC1000系列微控制器的每一顆都具有全球唯一的標識符,該標識符為128位二進(jìn)制序列。因此我們可以利用芯片UID的唯一性對程序進(jìn)行加密,使每一個(gè)產(chǎn)品中的程序也具有唯一性,即使非法使用者獲取了MCU中的程序復制到其他芯片中也是不能正常運行的,從而達到保護開(kāi)發(fā)者的知識產(chǎn)權不被侵犯和盜用的目的。

  三、LPC1000的UID加密方案

  基本思路是使用上位機軟件通過(guò)編程器讀取芯片的UID,經(jīng)加密算法運算后生成密鑰,下載程序的同時(shí)向MCU的Flash中某個(gè)地址寫(xiě)入密鑰;MCU上電后,首先讀取芯片的UID,再通過(guò)與上位機相同的加密算法運算后計算出密鑰,并與之前寫(xiě)入Flash中的密鑰比較,若相同則繼續執行用戶(hù)程序,否則跳入死循環(huán)或執行程序開(kāi)發(fā)者指定的代碼。

    

  圖1 LPC1000 UID加密方案流程圖

  實(shí)現此方案需要準備的資源如下。

  硬件資源:

  LPC1766FBD100芯片;

  SmartPRO 5000U-PLUS編程器;

  QFP100-NXP適配座;

  SmartCortex M3-1700開(kāi)發(fā)板(測試用,非必需)。

  軟件資源:

  SmartPRO 2008 2.0.56.exe上位機軟件;

  Programmer.rar編程器上位機UID加密補丁;

  Uid.rar編程器上位機UID加密算法;

  LPC1766在Keil4下的工程模板;

  Keil4開(kāi)發(fā)環(huán)境;

  Microsoft Visual C++ 6.0。

  1、下位機

  下位機(即LPC1766芯片)上電并初始化后,首先讀取芯片的UID,解析密鑰并與Flash中的密鑰比較判斷后,再繼續執行用戶(hù)代碼。這里我們舉例采用的加密算法是將UID的補碼作為密鑰,加密方法比較簡(jiǎn)單,用戶(hù)可自行對加密算法進(jìn)行修改,寫(xiě)出復雜的加密算法。

  讀取芯片UID的方法是通過(guò)調用芯片內部的IAP函數實(shí)現,如圖所示。

    

  圖2 讀取UID

  2、上位機

  在下位機LPC1766的程序編寫(xiě)完成并生成hex或bin文件后,按照以下步驟對MCU進(jìn)行加密:

  首先,在Microsoft Visual C++ 6.0下編寫(xiě)加密算法,這里我們已經(jīng)編寫(xiě)完成,僅需解壓uid.rar并打開(kāi)其中的VC工程。用戶(hù)需要在uid.cpp中的UidAlgorithm函數中添加自定義算法,如圖。

    

  圖3 加密算法工程

  加密算法編寫(xiě)完成后,編譯將生成一個(gè)名為uid.dll的算法文件。

  第二步,安裝SmartPRO 2008軟件,我們默認安裝在C:Program Files路徑下;

  第三步,安裝SmartPRO 2800加密補丁,方法是將Programmer.rar解壓到C:Programd FilesSmartPRO 2008Programmer路徑下,覆蓋原來(lái)的文件;

  第四步,將加密算法生成的uid.dll文件復制到C:Programd FilesSmartPRO 2008Programmer下,SmartPRO 2008啟動(dòng)后將會(huì )自動(dòng)調用uid.dll;

  第五步,連接硬件,將LPC1766芯片放入適配座ZY503D中,連接USB通信電纜和電源;

  第六步,燒寫(xiě)文件,啟動(dòng)SmartPRO 2008軟件,選擇芯片“LPC1766@LQFP100”,打開(kāi)燒錄文件(在Keil編寫(xiě)下位機程序時(shí)生成的hex或bin文件 )。此時(shí)會(huì )出現一個(gè)如圖4的特殊提示,這是因為Keil編譯器在編譯時(shí)沒(méi)有將Flash中前8個(gè)字單元的內容進(jìn)行代碼有效校驗和的填充而產(chǎn)生該警告,點(diǎn)擊“確定”即可,編譯器在下載過(guò)程中會(huì )調用校驗算法自動(dòng)添加校驗。關(guān)于代碼有效校驗和填充的相關(guān)內容請參考LPC1766用戶(hù)手冊中“Flash編程”一章的相關(guān)內容。

    

  圖4 用戶(hù)代碼無(wú)效提示

  第七步,開(kāi)始下載,點(diǎn)擊“組合”即可,默認執行的是擦除、編程、校驗三個(gè)步驟的結合。

  成功編程后,如果重新讀取Flash,打開(kāi)緩沖區,定位到0x00002000處,可以看到已經(jīng)寫(xiě)入的密鑰。如圖5所示,與此前設計的加密算法和加密預期效果一致。

    

  圖5 緩沖區查看密鑰

  驗證方法:取下適配座中的芯片,焊接到TinyARMT17核心板上,查到SmartCortex M3-1700開(kāi)發(fā)板底板上,連接P0.11到BEEP插針,如所示。開(kāi)發(fā)板上電后即可聽(tīng)到蜂鳴器的鳴叫。以此驗證芯片計算出的密鑰與Flash中寫(xiě)入的密鑰校驗一致,芯片程序正常運行。

    

  圖6 開(kāi)發(fā)板驗證

  經(jīng)此方法向芯片下載程序后,若有產(chǎn)品盜版者試圖將程序讀出然后復制到其他芯片上使用,程序將停留在判斷密鑰是否匹配語(yǔ)句,導致程序不再向下執行,從而防止軟件程序被非法使用者盜用。



關(guān)鍵詞: 芯片 UID

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>