工程師成為破解單片機大咖,這個方法及對策真的必備?(乾貨分享)

工程師 Flash 軟件 Atmel 數學 電子發燒友網 2018-12-03

單片機一般都有內部ROM/EEPROM/FLASH供用戶存放程序。為了防止未經授權訪問或拷貝單片機的機內程序,大部分單片機都帶有加密鎖定位或者加密字節,以保護片內程序。

如果在編程時加密鎖定位被使能(鎖定),就無法用普通編程器直接讀取單片機內的程序,這就是所謂拷貝保護或者說鎖定功能。事實上,這樣的保護措施很脆弱,很容易被破解。

單片機攻擊者藉助專用設備或者自制設備,利用單片機芯片設計上的漏洞或軟件缺陷,通過多種技術手段,就可以從芯片中提取關鍵信息,獲取單片機內程序。

因此,作為電子產品的設計工程師非常有必要了解當前單片機攻擊的最新技術,做到知己知彼,心中有數,才能有效防止自己花費大量金錢和時間辛辛苦苦設計出來的產品被人家一夜之間仿冒的事情發生。

首先想要先給大家介紹下JTAG、BSL、BOOTLOADER、熔絲的區別和關係是什麼?

JTAG接口能夠訪問MSP430單片機內部所有資源,通過JTAG可以對芯片進行程序下載、代碼調試、內存修改等等,通過JTAG還能燒斷加密熔絲,熔絲一旦被燒斷,JTAG接口絕大部分功能失效,就再也不能通過它進行編程了。

BSL接口是利用芯片內部駐留的bootloader程序實現的自編程,通過特定的時序使得CPU進入bootloader代碼斷,然後利用每個msp430芯片內部都有的Timer A構成一個軟件串口來與上位機通訊,這樣可以將代碼下載到芯片內部。

實現BSL除了JTAG接口的一些引腳外,還需要用到兩個TA0功能引腳,因此在設計產品時如果需要加密,則應該考慮將這兩個引腳也連出來。要燒斷熔絲(加密)必須使用JTAG接口;燒斷熔絲後只能通過BSL或者用戶代碼來實現編程更新。

BSL的驗證密碼是怎麼回事?

BSL也能讀出芯片內部的代碼,這樣可以實現編程後的校驗等功能。通過BSL擦除所有Flash信息時不需要驗證密碼,但是要進一步操作,就得輸入32字節密碼進行驗證。

BSL的協議規定這32字節密碼為芯片FLASH區域的最高32字節,也就是程序的16箇中斷向量,如果您擁有這段程序的最後32字節,就能通過BSL將芯片內部所有代碼讀取出來。

為什麼要使用高級加密?

32字節的密碼看似幾乎完全沒可能使用窮舉法來實現破解,但是各位別忘了,msp430的16箇中斷向量未必每一個都用到了,沒用到的中斷向量為0xffff,如果您的程序只用到了復位向量,那麼破解者只需嘗試最多32768次(中斷向量為偶數,所以除以2)就能將其破解,另外,如果芯片本身Flash容量較小,比如4K字節,那麼破解者只需嘗試最多2K次就能將其破解。

這對自動操作的計算機來說幾乎是一瞬間的事情。那麼如果用到的中斷向量越多,就越難破解,最好的辦法就是將所有未用到的中斷向量全部填充為隨機數據,這就是“高級加密”。

好的,看了這麼多文字了,我們先來個彩蛋!

1. 單片機攻擊技術

目前,攻擊單片機主要有四種技術,分別是:

(1)軟件攻擊

該技術通常使用處理器通信接口並利用協議、加密算法或這些算法中的安全漏洞來進行攻擊。軟件攻擊取得成功的一個典型事例是對早期ATMEL AT89C 系列單片機的攻擊。攻擊者利用了該系列單片機擦除操作時序設計上的漏洞,使用自編程序在擦除加密鎖定位後,停止下一步擦除片內程序存儲器數據的操作,從而使加過密的單片機變成沒加密的單片機,然後利用編程器讀出片內程序。

(2)電子探測攻擊

該技術通常以高時間分辨率來監控處理器在正常操作時所有電源和接口連接的模擬特性,並通過監控它的電磁輻射特性來實施攻擊。因為單片機是一個活動的電子器件,當它執行不同的指令時,對應的電源功率消耗也相應變化。這樣通過使用特殊的電子測量儀器和數學統計方法分析和檢測這些變化,即可獲取單片機中的特定關鍵信息。

(3)過錯產生技術

該技術使用異常工作條件來使處理器出錯,然後提供額外的訪問來進行攻擊。使用最廣泛的過錯產生攻擊手段包括電壓衝擊和時鐘衝擊。低電壓和高電壓攻擊可用來禁止保護電路工作或強制處理器執行錯誤操作。時鐘瞬態跳變也許會復位保護電路而不會破壞受保護信息。電源和時鐘瞬態跳變可以在某些處理器中影響單條指令的解碼和執行。

(4)探針技術

該技術是直接暴露芯片內部連線,然後觀察、操控、干擾單片機以達到攻擊目的。為了方便起見,人們將以上四種攻擊技術分成兩類,一類是侵入型攻擊(物理攻擊),這類攻擊需要破壞封裝,然後藉助半導體測試設備、顯微鏡和微定位器,在專門的實驗室花上幾小時甚至幾周時間才能完成。所有的微探針技術都屬於侵入型攻擊。

另外三種方法屬於非侵入型攻擊,被攻擊的單片機不會被物理損壞。在某些場合非侵入型攻擊是特別危險的,這是因為非侵入型攻擊所需設備通常可以自制和升級,因此非常廉價。

大部分非侵入型攻擊需要攻擊者具備良好的處理器知識和軟件知識。與之相反,侵入型的探針攻擊則不需要太多的初始知識,而且通常可用一整套相似的技術對付寬範圍的產品。

因此,對單片機的攻擊往往從侵入型的反向工程開始,積累的經驗有助於開發更加廉價和快速的非侵入型攻擊技術。

2. 侵入型攻擊的一般過程

侵入型攻擊的第一步是揭去芯片封裝。有兩種方法可以達到這一目的:第一種是完全溶解掉芯片封裝,暴露金屬連線。第二種是隻移掉硅核上面的塑料封裝。第一種方法需要將芯片綁定到測試夾具上,藉助綁定臺來操作。第二種方法除了需要具備攻擊者一定的知識和必要的技能外,還需要個人的智慧和耐心,但操作起來相對比較方便。

芯片上面的塑料可以用小刀揭開,芯片周圍的環氧樹脂可以用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉芯片封裝而不會影響芯片及連線。該過程一般在非常乾燥的條件下進行,因為水的存在可能會侵蝕已暴露的鋁線連接。

接著在超聲池裡先用丙酮清洗該芯片以除去殘餘硝酸,然後用清水清洗以除去鹽分並乾燥。沒有超聲池,一般就跳過這一步。這種情況下,芯片表面會有點髒,但是不太影響紫外光對芯片的操作效果。最後一步是尋找保護熔絲的位置並將保護熔絲暴露在紫外光下。

由於某種原因,芯片鎖定位在編程模式下並不鎖定對存儲器的訪問。利用這一缺陷將探針放在數據線的上面就能讀到所有想要的數據。在編程模式下,重啟讀過程並連接探針到另外的數據線上就可以讀出程序和數據存儲器中的所有信息。

還有一種可能的攻擊手段是藉助顯微鏡和激光切割機等設備來尋找保護熔絲,從而尋查和這部分電路相聯繫的所有信號線。由於設計有缺陷,因此,只要切斷從保護熔絲到其它電路的某一根信號線,就能禁止整個保護功能。

3. 應對單片機破解的幾點建議

任何一款單片機,從理論上講,攻擊者均可利用足夠的投資和時間使用以上方法來攻破。所以,在用單片機做加密認證或設計系統時,應儘量加大攻擊者的攻擊成本和所耗費的時間。這是系統設計者應該始終牢記的基本原則。除此之外,還應注意以下幾點:

(1)在選定加密芯片前,要充分調研,瞭解單片機破解技術的新進展,包括哪些單片機是已經確認可以破解的。儘量不選用已可破解或同系列、同型號的芯片。

(2)儘量不要選用MCS51系列單片機,因為該單片機在國內的普及程度最高,被研究得也最透。

(3)產品的原創者,一般具有產量大的特點,所以可選用比較生僻、偏冷門的單片機來加大仿冒者採購的難度。

(4)選擇採用新工藝、新結構、上市時間較短的單片機,如ATMEL AVR系列單片機等。

(5)在設計成本許可的條件下,應選用具有硬件自毀功能的智能卡芯片,以有效對付物理攻擊。

(6)如果條件許可,可採用兩片不同型號單片機互為備份,相互驗證,從而增加破解成本。

(7)打磨掉芯片型號等信息或者重新印上其它的型號,以假亂真。

當然,要想從根本上防止單片機被解密,程序被盜版等侵權行為發生,只能依靠法律手段來保障。

主題:前華為資深工程師帶你玩轉嵌入式軟件調試方法

主講人:李翔

主題簡介及亮點 :

高效的調試方法對於嵌入式系統開發至關重要。CLI命令行作為業界證明的優秀調試手段可以快速、高效提升開發效率,而且可以應用到您的絕大多數項目中,也是您構建自己的軟件平臺的基礎關鍵組件。

本次直播主要介紹軟件調試幾種主流方法,重點詳細講解CLI的設計原理和源代碼實現並教您如何製作一個自己的CLI。

嵌入式軟件開發工程師、單片機軟件開發工程師、軟件開發工程師等

參與直播將獲得如下知識點:

1、瞭解嵌入式軟件開發主流的調試手段

2、CLI設計原理和源碼實現

3、如何製作一個自己的CLI

現在凡報名本次直播課程,掃下方二維碼進群,並在朋友圈轉發本次直播的海報,便可獲得:

1、免費觀看直播特權

2、一套【嵌入式系統及應用】視頻資料

工程師成為破解單片機大咖,這個方法及對策真的必備?(乾貨分享)

點“閱讀原文”即可報名

相關推薦

推薦中...