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