大家可能都知道破解 51 單片機是很容易的,但為什么容易,又是如何來破解的,可能很多人就不大清楚了。其實對于MCU的破解從簡單來講,它并不像我們開發項目那樣復雜,有時候一個漏洞被發現,可能一個小技巧就可以獲取或者篡改用戶程序,行業里解密的方法有很多,每個人破解的思路也不一樣。但大致也就是以下幾種。
軟件破解
利用軟件破解目標單片機的方法,并且利用這種方法,不會對目標 MCU 元器件造成物理損傷。
這種破解方法最早的時候主要是對 WINBONGD,SYNCMOS 單片機和 GAL 門陣列,這種利用軟件解密設備,按照一定的步驟操作,執行片內的程序送到片外的指令,然后用解密的設備進行截獲,這樣芯片內部的程序就被解密完成了(GAL 采用邏輯猜測),就可以得到加密單片機中的程序。
另外對于我們現在市場上比較普遍的ARM系列芯片也同樣適用,比如我們在發布產品的時候沒有把相關的調試接口關閉掉,如SWD接口,那么破譯者完全可以利用這個調試接口,將自己編寫的一段代碼燒錄到MCU的ram中,并將執行這一端代碼,而這一段代碼就可以把我們存放在flash中的固件程序一個字節一個字節的從芯片中讀取出來。
除了這種調試作用的SWD接口外,對于具備OTA功能的產品也要注意保護自己的OTA通道,一旦OTA過程被識破,黑客完全有機會利用這個接口去運行自己的程序,從而將Flash中的信息獲取到。
芯片的唯一ID
以上所講的都是利用芯片本身或者軟件漏洞來獲取用戶固件的案例,那么會有人說,我利用芯片的唯一ID在程序運行過程中對ID做校驗,這樣即便把固件拷貝出來也沒辦法批量生產。
好的,芯片設計中增加了唯一ID確實給芯片的破解增加了一些難度,但黑客往往都是不走尋常路的。
首先這種唯一ID在硬件上就存在漏洞,是有機會被篡改的,ID或者讀取ID的地址。那么我們從軟件上來破解也是可以的。
破解方法:
1. 首先按照上面提到獲取固件的破解方法,獲取到 MCU 的 HEX 文件。2. 使用軟件進行 HEX 反編譯,反編譯軟件目前有很多。3. 在反編譯的程序中,找到對比點,比如圖 3 所示,CJNE 語句可能就是這個對比點。因此只要把箭頭 2 那行語句刪除,然后重新把匯編語言下載到 MCU 中,破解工作就完成了。此時即使沒有加密芯片,MCU 也能正常運行了。
加密芯片是否安全?
關于加密芯片,我想說的是,加密芯片本身還是非常安全的,它內部都設計了相關的防硬件破解的措施,一但對芯片進行硬件探測和破解就會觸發其內部保護電路,將自身數據全部擦除。
但是我們的產品是一個系統,他不是單獨的一個加密芯片,一旦我們的功能的主要部分暴露在非安全區,就給黑客帶來了可乘之機,比如一般的智能硬件產品的功能實現都是在系統的主MCU中,在主MCU之外往往通過SPI或者IIC接口來連接加密芯片對系統進行保護。
加密原理:
MCU 產生隨機數發給加密芯片,后者用秘鑰加密后將密文返回,此時 MCU 解密后,比對明文是否和生成的隨機數相等。如果相等,程序正常運行; 如果不相等,出錯處理。
因為盜版商沒有這條秘鑰,加密芯片與 MCU 交互的數據又是隨機變化的,無法找到規律,所以只能把加密芯片的程序破解了,再復制一片加密芯片才能讓 MCU 的程序跑起來。而加密芯片不同于通用 MCU,它內部有很多安全機制,破解難度非常大。
這種加密方案看似非常安全,但其實主MCU存在安全漏洞,依然會被拷貝出固件,執行類似破解唯一ID加密的方法即可,因此這種加密芯片只能保護個別數據,無法對整個系統進行全面的保護。
硬件破解
前面所講的都有一個前提,那就是用戶忘記關閉調試接口,或者用的OTA程序被破解利用,使得黑客獲取到了芯片內部的固件程序。
接下來我們聊一下另一個情況,工程師認真,沒有留下調試接口,同時OTA邏輯也設計的非常可靠,具備了各種保護邏輯和防重放措施,保證不被黑客檢測到重復的命令信息。
難道這樣就沒辦法破解了嗎?很遺憾,這才是真正研究芯片破解技術的專業人員的起步環境。
全球有很多做芯片破解的公司和研究機構,他們有的甚至在一些院校實驗室和研究所里面,他們往往會為芯片設計公司服務,來幫助設計公司提高自己的芯片安全指標,當然也可以提供芯片破譯服務給有利可圖者提供服務。
芯片的安全就是攻防對決,不斷提高技術水平的過程,接下來我們看一下硬件上是怎么破解一顆芯片的。
流程如下:
1、測試使用高檔編程器等設備測試芯片是否正常,并把配置字保存。
2、開蓋采用手工或專用開蓋設備進行開蓋處理,這里說的開蓋并不是說單片機或者其他 MCU 真有一個蓋。MCU 其實是一個大規模集成電路,它是由 N 個電路組合而成的,而晶圓就是搭載集成電路的載體。將晶圓進行封裝后,就形成了我們日常所用的 IC 芯片,封裝形式可以有多種,比如 TSSOP28、QFN28 等,大家可以自己去百度搜索,這里不再復述。
3、做電路修改對不同芯片,提供對應的圖紙,讓廠家做電路修改,目的是讓 MCU 的存儲區變得可讀。有些 MCU 默認不允許讀出 Flash 或者 E2PROM 中的數據,因為有硬件電路做保護,而一旦切斷加密連線,程序就暴露可讀了。如圖 2 所示
(切割掉加密熔絲,這樣就可以直接讀出芯片內部程序)
4、讀程序取回修改過的 MCU,直接用編程器讀出程序,可以是 HEX 文件,或者 BIN 文件。
5、燒寫樣片給客戶按照讀出的程序和配置,燒寫到目標 MCU 中,這樣就完成了 MCU 的破解。至此,硬件破解法成功完成。
其他硬件破解
開蓋修改電路破除芯片設置的讀保護來對芯片進行破譯,這其實還是最一般的手段,對于很多具備熔絲位以及更高保護措施的芯片,依然有各種破譯辦法,接下來簡單列舉一下:
**電子探測攻擊**
該技術通常以高時間分辨率來監控處理器在正常操作時所有電源和接口連接的模擬特性,并通過監控它的電磁輻射特性來實施攻擊。因為單片機是一個活動的電子器件,當它執行不同的指令時,對應的電源功率消耗也相應變化。這樣通過使用特殊的電子測量儀器和數學統計方法分析和檢測這些變化,即可獲取單片機中的特定關鍵信息。
**過錯產生技術**
該技術使用異常工作條件來使處理器出錯,然后提供額外的訪問來進行攻擊。使用最廣泛的過錯產生攻擊手段包括電壓沖擊和時鐘沖擊。處理器執行錯誤操作。電源和時鐘瞬態跳變可以在某些處理器中影響單條指令的解碼和執行。
**探針技術**
該技術是直接暴露芯片內部連線,然后觀察,阻止,干擾單片機以達到攻擊目的。
**紫外線攻擊方法**
紫外線攻擊也稱為紫外線攻擊方法,就是利用紫外線照射芯片,讓加密的芯片變成了不加密的芯片,然后用編程器直接轉換程序。這種方法適合OTP的芯片,做單片機的工程師都知道OTP OTP芯片的封裝有陶瓷封裝的一半都有石英玻璃,這種是可以直接用紫外線照射的,如果是用塑料封裝的,就需要先將芯片開蓋,將晶圓暴露以后才可以通過這種芯片的加密性比較差,解密基本不需要任何成本,所以市場上這種芯片解密的價格非常便宜,SONIX的SN8P2511解密,飛凌單片機解密等價格就非常便宜。
**FIB恢復加密熔絲方法**
這種方法適用于很多的具有熔絲加密的芯片,最有特色的芯片就是TI的MSP430解密的方法,因為MSP430加密的時候要燒熔絲,那么只要能將熔絲恢復上,那就變一般解密公司利用探針來實現,將熔絲位連上,也有的人因為自己沒有太多的解密設備,需要交由其他半導體線路修改的公司來修改線路,一般可以使用FIB(聚焦離子束)設備這些設備目前在國內的二手設備很多,也價格很便宜,一些有實力的解密公司都配置了自己的設備。這種方法依據需要設備和耗材,不是好的方法,但是很多芯片如果沒有更好的方法的時候,就需要這種方法來實現。
**修改加密線路的方法**
目前市場上的CPLD和DSP芯片設計復雜,加密性能要高,采用上述方法是很難做到解密的,那么就需要對芯片結構作前面的分析,然后找到加密電路,然后利用芯片線路修改的設備將芯片的線路做一些修改,讓加密電路失效,讓加密的DSP或CPLD變成了不加密的芯片從而可以讀出代碼。如TMS320LF2407A解密,TMS320F28335解密,TMS320F2812解密就是采用這種方法。
評論
查看更多