MCU的安全等級正在逐步提升, 一些公司甚至推出了安全主控, 這是很好的現象, 說明大家越來越重視嵌入式領域的資訊安全和程式安全了。 但對於很多特殊行業, 比如消費類電子產品, 低成本的通訊模組、電源控制模組等等, 迫于成本壓力以及更新換代速度問題, 都無法使用更安全的主控MCU, 有很大一部分產品甚至還在使用51單片機。
大家可能都知道破解51單片機是很容易的, 但為什麼容易, 又是如何來破解的, 可能很多人就不大清楚了, 我在這裡結合網上一些前輩整理的資料, 和自己的經驗, 對MCU破解技術做個簡單分析。
大家不要把解密想的很複雜, 他不像研發一款產品那樣, 先確定客戶需求或者新產品主要功能, 然後立項確定技術指標, 分配軟硬體開發任務, 基於硬體偵錯工具, 然後驗證功能, 測試bug, 還要做環境試驗。 行業裡解密的方法有很多,
1
軟體破解
利用軟體破解目標單片機的方法, 利用這種方法, 不會對目標MCU元器件造成物理損傷。 主要是對WINBONGD, SYNCMOS單片機和GAL閘陣列, 這種利用軟體解密設備, 按照一定的步驟操作, 執行片內的程式送到片外的指令, 然後用解密的設備進行截獲, 這樣晶片內部的程式就被解密完成了(GAL採用邏輯猜測), 就可以得到加密單片機中的程式。
2
硬體破解
流程如下:
1、測試
使用高檔程式設計器等設備測試晶片是否正常, 並把配置字保存。
2、開蓋
採用手工或專用開蓋設備進行開蓋處理, 這裡說的開蓋並不是說單片機或者其他MCU真有一個蓋。 簡單解釋一下, MCU其實是一個大型積體電路, 它是由N個電路組合而成的,
3、做電路修改
對不同晶片, 提供對應的圖紙, 讓廠家做電路修改, 目的是讓MCU的存儲區變得可讀。
(切割掉加密熔絲, 這樣就可以直接讀出晶片內部程式)
4、讀程式
取回修改過的MCU, 直接用程式設計器讀出程式, 可以是HEX檔,
5、燒寫樣片給客戶
按照讀出的程式和配置, 燒寫到目標MCU中, 這樣就完成了MCU的破解。 至此, 硬體破解法成功完成。
3
軟硬兼施
採用軟體和硬體結合的方法, 需要對晶片的內部結構非常的熟悉。
另外還有其他一些破解技術, 例如電子探測攻擊、過錯產生技術等等, 但是最終目的只有一個, 就是能夠模仿出目標MCU的功能就可以了。
看到這裡大家應該明白一個道理, 破解MCU並不能做到把MCU中的程式原封不動的還原出來。 目前的技術也做不到, 至少國內應該做不到。 針對以上情況, 加密晶片應運而生, 初期確實能很好的保護MCU的安全, 但很快就被找到了漏洞。
我舉個實際破解的例子分析一下, 大家就能夠明白了。
加密原理:
MCU和加密晶片各存儲一條認證秘鑰, 存儲同樣的加密演算法;
MCU產生亂數發給加密晶片,後者用秘鑰加密後將密文返回,此時MCU解密後,比對明文是否和生成的亂數相等。如果相等,程式正常運行;如果不相等,出錯處理。
因為盜版商沒有這條秘鑰,加密晶片與MCU交互的資料又是隨機變化的,無法找到規律,所以只能把加密晶片的程式破解了,再複製一片加密晶片才能讓MCU的程式跑起來。而加密晶片不同於通用MCU,它內部有很多安全機制,破解難度非常大。
這種加密方案看似非常安全,但其實還是有漏洞的。
破解方法:
首先按照第二種破解方法,獲取到MCU的HEX檔。此處省略N步,不再複述。
使用軟體進行HEX反編譯,反編譯軟體目前有很多。
在反編譯的程式中,找到對比點,比如圖3所示,CJNE語句可能就是這個對比點。因此只要把箭頭2那行語句刪除,然後重新把組合語言下載到MCU中,破解工作就完成了。此時即使沒有加密晶片,MCU也能正常運行了。
其實原因很簡單。MCU是要對加密晶片的返回值進行判斷的,那麼不讓他做判斷,這樣一來不管加密晶片返回值是什麼,程式都能正常運行。
因此這種加密方案很快就被破解了。當然也不是這麼絕對,因為有些MCU即使剖片也不能獲得裡面的HEX或者BIN檔,所以這種破解方案也要看MCU的安全等級夠不夠高。但是足以說明一個問題,這種通過對比加密結果來實現加密的方案,安全等級還是不夠高,還是有破解漏洞的。
因為篇幅有限,本期只做解密技術的簡單介紹。所謂知己知彼,百戰百勝,唯有瞭解了破解技術,才能更有效的做加密防護。下一期,我們會針對常見破解技術,重點講解我曾經用過的國內一家公司的加密晶片產品是如何做到加密防護的。
第4屆中國IOT大會不僅邀請到微軟、高通、華為、Silicon Labs、周立功、和而泰高層發表主題演講,而且成功導入以色列創新元素,現已邀請到8家以色列創新IOT技術公司CEO到深圳發表主題演講和參加融資路演。
掃描下方二維碼
立即報名第4屆中國IOT大會
存儲同樣的加密演算法;MCU產生亂數發給加密晶片,後者用秘鑰加密後將密文返回,此時MCU解密後,比對明文是否和生成的亂數相等。如果相等,程式正常運行;如果不相等,出錯處理。
因為盜版商沒有這條秘鑰,加密晶片與MCU交互的資料又是隨機變化的,無法找到規律,所以只能把加密晶片的程式破解了,再複製一片加密晶片才能讓MCU的程式跑起來。而加密晶片不同於通用MCU,它內部有很多安全機制,破解難度非常大。
這種加密方案看似非常安全,但其實還是有漏洞的。
破解方法:
首先按照第二種破解方法,獲取到MCU的HEX檔。此處省略N步,不再複述。
使用軟體進行HEX反編譯,反編譯軟體目前有很多。
在反編譯的程式中,找到對比點,比如圖3所示,CJNE語句可能就是這個對比點。因此只要把箭頭2那行語句刪除,然後重新把組合語言下載到MCU中,破解工作就完成了。此時即使沒有加密晶片,MCU也能正常運行了。
其實原因很簡單。MCU是要對加密晶片的返回值進行判斷的,那麼不讓他做判斷,這樣一來不管加密晶片返回值是什麼,程式都能正常運行。
因此這種加密方案很快就被破解了。當然也不是這麼絕對,因為有些MCU即使剖片也不能獲得裡面的HEX或者BIN檔,所以這種破解方案也要看MCU的安全等級夠不夠高。但是足以說明一個問題,這種通過對比加密結果來實現加密的方案,安全等級還是不夠高,還是有破解漏洞的。
因為篇幅有限,本期只做解密技術的簡單介紹。所謂知己知彼,百戰百勝,唯有瞭解了破解技術,才能更有效的做加密防護。下一期,我們會針對常見破解技術,重點講解我曾經用過的國內一家公司的加密晶片產品是如何做到加密防護的。
第4屆中國IOT大會不僅邀請到微軟、高通、華為、Silicon Labs、周立功、和而泰高層發表主題演講,而且成功導入以色列創新元素,現已邀請到8家以色列創新IOT技術公司CEO到深圳發表主題演講和參加融資路演。
掃描下方二維碼
立即報名第4屆中國IOT大會