目前常見的STM32及GD32系列的MCU芯片都具有唯一UID,目前深圳市維動智芯科技科提供全系列芯片軟解密等服務(wù),歡迎來電咨詢,聯(lián)系電話:13717069599
UID是唯一標識符(unique identifier),在STM32系列微控制器的每一顆芯片都具有全球唯一的標識符,該標識符為128位二進制序列。因此我們可以利用芯片UID的唯一性對程序進行加密,使每一個產(chǎn)品中的程序也具有唯一性,即使非法使用者獲取了MCU中的程序復(fù)制到其他芯片中也是不能正常運行的,從而達到保護開發(fā)者的知識產(chǎn)權(quán)不被侵犯和盜用的目的。
加密可利用的資源:STM32有一個ID號,加密芯片有一個ID號。加密芯片有DES算法,HASH算法,可運行程序。
1、比較密碼:STM32程序預(yù)存一個8字節(jié)密碼,加密芯片預(yù)存一個相同的密碼,STM32把這個密碼發(fā)給加密芯片,加密芯片與預(yù)存的密碼比較,相同返回一個正確值。好像這個功能只能做到?jīng)]有加密芯片確實不能跑,但好像很容易破解掉,數(shù)據(jù)傳輸明文,容易跟蹤。也很容易模擬出這個結(jié)果。
2、加密傳輸比較密碼:同樣在STM32和加密芯片都預(yù)存一個8字節(jié)密碼,STM32讀取一個加密芯片生成的隨機數(shù),然后與8位密碼做一個DES運算,把這個結(jié)果發(fā)給加密芯片比較。加密芯片用同樣的隨機數(shù)和密碼做DES運算,結(jié)果是和STM32算出來是一樣的,比較正確后返回正確。這個比第1個好一點,密文傳輸。還是可以模擬出結(jié)果。
3、HASH運算與第2是一樣的。
以上3種感覺加密強度一般。把STM32破解,讀出程序反匯編,可以找到相應(yīng)的密碼,比較跳轉(zhuǎn)的指令,改掉。真是有這樣的牛人的。
如果利用ID號捆綁,這樣不利于維護。保修長的產(chǎn)品是麻煩事。
主要還是探討第4種方法,把部分程序的算法,函數(shù)放到加密芯片中去。
一、把數(shù)據(jù)分析的函數(shù)放進加密芯片。網(wǎng)絡(luò)通訊數(shù)據(jù)格式按照一定的協(xié)議規(guī)約組包,收到后發(fā)給加密芯片解釋,STM32得到解析后的數(shù)據(jù)進行操作。這樣做是不是感覺強多了,破解STM32是沒有用了,把PC發(fā)的網(wǎng)絡(luò)數(shù)據(jù)與加密芯片發(fā)出來的數(shù)據(jù)比較,推導(dǎo)組包規(guī)則,可能嗎?好像可能!但如果加密芯片多發(fā)一些隨機數(shù)參合進來,怎么樣?
這個難度大多了吧。
但隨著芯片解密技術(shù)的不斷升級,目前針對所有擁有UID的單片機都可以提供單片機解密服務(wù),歡迎來電咨詢。