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