strongerHuang整理算法
公司或者我的辛辛苦苦開發的程序,確定誰都不想被人輕易破解並利用。下面爲你們分享單片機破解,以及防止破解的。編程
嵌入式專欄c#
1安全
單片機解密是什麼?網絡
單片機解密又叫單片機破解、芯片解密、IC解密等,可是這嚴格說來這幾種稱呼都不科學,但已經成了習慣叫法,咱們把CPLD解密,DSP解密都習慣稱爲單片機解密,單片機只是能裝載程序芯片的其中一個類。架構
單片機(MCU)通常都有內部程序區和數據區(或者其一)供用戶存放程序和工做數據(或者其一)。爲了防止未經授訪問或拷貝單片機的機內程序,大部分單片機都帶有加密鎖定位或者加密字節,以保護片內程序。測試
若是在編程時加密鎖定位被使能(鎖定),就沒法用普通編程器直接讀取單片機內的程序,這就叫單片機加密。加密
單片機程序基本上都存在於Flash中,大部分可以讀取或者識別Flash上的數據就可以得到Firmware文件,從而給複製產品帶來了機會。設計
單片機攻擊者藉助專用設備或者自制設備,利用單片機芯片設計上的漏洞或軟件缺陷,經過多種技術手段,就能夠從芯片中提取關鍵信息,獲取單片機內程序這就叫單片機解密。3d
能燒錄程序並能加密的芯片還有 DSP,CPLD,PLD,AVR,ARM等。
固然,具存儲功能的存儲器芯片也能加密,好比DS240一、DS250一、AT88S010四、DM260二、AT88SC0104D等,當中也有專門設計有加密算法用於專業加密的芯片或設計驗證廠家代碼工做等功能芯片,該類芯片業能實現防止電子產品複製的目的。
嵌入式專欄
2
單片機解密方法
1.軟件攻擊
該技術一般使用處理器通訊接口並利用協議、加密算法或這些算法中的安全漏洞來進行攻擊。好比一個典型事例是對早期XXX系列單片機的攻擊。攻擊者利用了該系列單片機擦除操做時序設計上的漏洞,使用自編程序在擦除加密鎖定位後,中止下一步擦除片內程序存儲器數據的操做,從而使加過密的單片機變成沒加密的單片機,而後利用編程器讀出片內程序。
目前在其餘加密方法的基礎上,能夠研究出一些設備,配合必定的軟件,來作軟件解密。
還有好比利用某些編程器定位插字節,經過必定的方法查找芯片中是否有連續空位,也就是說查找芯片中連續的FF FF字節,插入的字節可以執行把片內的程序送到片外的指令,而後用解密的設備進行截獲,這樣芯片內部的程序就被解密完成了。
2.電子探測攻擊
該技術一般以高時間分辨率來監控處理器在正常操做時全部電源和接口鏈接的模擬特性,並經過監控它的電磁輻射特性來實施攻擊。
由於單片機是一個活動的電子器件,當它執行不一樣的指令時,對應的電源功率消耗也相應變化。這樣經過使用特殊的電子測量儀器和數學統計方法分析和檢測這些變化,便可獲取單片機中的特定關鍵信息。
3.過錯產生技術
該辦法就是使得單片機異常運行從而使得單片機處於非保護狀態。
該技術使用異常工做條件來使處理器出錯,而後提供額外的訪問來進行攻擊。使用最普遍的過錯產生攻擊手段包括電壓衝擊和時鐘衝擊。
低電壓和高電壓攻擊可用來禁止保護電路工做或強制處理器執行錯誤操做。時鐘瞬態跳變也許會復位保護電路而不會破壞受保護信息。電源和時鐘瞬態跳變能夠在某些處理器中影響單條指令的解碼和執行。
4.探針技術
經過該技術使芯片內部都徹底暴露!直接暴露芯片內部連線,而後觀察、操控、干擾單片機以達到攻擊目的。
爲了方便起見,人們將以上四種攻擊技術分紅兩類:
一類是侵入型物理攻擊,這類攻擊須要 破壞封裝,而後藉助半導體測試設備、顯微鏡和微定位器,在專門的實驗室花上幾小時甚至幾周時間才能完成。全部的微探針技術都屬於侵入型攻擊。
另一類屬於非侵入型攻擊,被攻擊的單片機不會被物理損壞。在某些場合非侵入型攻擊是特別危險的,這是由於非侵入型攻擊所需設備一般能夠自制和升級,所以很是廉價。大部分非侵入型攻擊須要攻擊者具有良好的處理器知識和軟件知識。與之相反,侵入型的探針攻擊則不須要太多的初始知識,並且一般可用一整套類似的技術對付寬範圍的產品。
所以,對單片機的攻擊每每從侵入型的反向工程開始,積累的經驗有助於開發更加廉價和快速的非侵入型攻擊技術。
嵌入式專欄
3
侵入式解密過程
侵入型攻擊的第一步是揭去芯片封裝(簡稱「開蓋」有時候稱「開封」,英文爲 「DECAP」,decapsulation)。有兩種方法能夠達到這一目的:
第一種是徹底溶解掉芯片封裝,暴露金屬連線。
第二種是隻移掉硅核上面的塑料封裝。
第一種方法須要將芯片綁定到測試夾具上,藉助綁定臺來操做。第二種方法除了須要具有攻擊者必定的知識和必要的技能外,還須要我的的智慧和耐心,但操做起來相對比較方便,徹底實驗室中操做。
芯片上面的塑料能夠用小刀揭開,芯片周圍的環氧樹脂能夠用濃硝酸腐蝕掉。熱的濃硝酸會溶解掉芯片封裝而不會影響芯片及連線。該過程通常在很是乾燥的條件下進行,由於水的存在可能會侵蝕已暴露的鋁線鏈接,這就可能形成解密失敗。接着在超聲池裏先用丙酮清洗該芯片以除去殘餘硝酸,並浸泡。
最後一步是尋找保護熔絲的位置並將保護熔絲暴露在紫外光下。通常用一臺放大倍數至少100倍的顯微鏡,從編程電壓輸入腳的連線跟蹤進去,來尋找保護熔絲。若沒有顯微鏡,則採用將芯片的不一樣部分暴露到紫外光下並觀察結果的方式進行簡單的搜索。
操做時應用不透明的物體覆蓋芯片以保護程序存儲器不被紫外光擦除。將保護熔絲暴露在紫外光下5~10分鐘就能破壞掉保護位的保護做用,以後,使用簡單的編程器就 可直接讀出程序存儲器的內容。
對於使用了防禦層來保護EEPROM單元的單片機來講,使用紫外光復位保護電路是不可行的。對於這種類型的單片機,通常使用微探針技術來讀取存儲器內容。在芯片封裝打開後,將芯片置於顯微鏡下就可以很容易的找到從存儲器連到電路其它部分的數據總線。
因爲某種緣由,芯片鎖定位在編程模式下並不鎖定對存儲器的訪問。利用這一缺陷將探針放在數據線的上面就能讀到全部想要的數據。在編程模式下,重啓讀過程並鏈接探針到另外的數據線上就能夠讀出程序和數據存儲器中的全部信息。
還有一種可能的攻擊手段是藉助顯微鏡和激光切割機等設備來尋找保護熔絲,從而尋查和這部分電路相聯繫的全部信號線。
因爲設計有缺陷,所以,只要切斷從保護熔絲到其它電路的某一根信號線,或者切割掉整個加密電路。又或者鏈接1~3根金線,一般稱爲FIB(focused ion beam),就能禁止整個保護功能。這樣使用簡單的編程器就能直接讀出程序存儲器的內容。
雖然大多數普通單片機都具備熔絲燒斷保護單片機內代碼的功能,但因爲通用低檔的單片機並不是定位於製做安全類產品,所以,它們每每沒有提供有針對性的防範措施且安全級別較低。
加上單片機應用場合普遍,銷售量大,廠商間委託加工與技術轉讓頻繁,大量技術資料外瀉,使得利用該類芯片的設計漏洞和廠商的測試接口,並經過修改熔絲保護位等侵入型攻擊或非侵入型攻擊手段來讀取單片機的內部程序變得比較容易。
嵌入式專欄
4
防止單片機被解密的幾點建議
做爲電子產品的設計工程師很是有必要了解當前單片機攻擊的最新技術。由於任何一款單片機從理論上講,攻擊者都可利用足夠的投資和時間使用以上方法來解密!爲避免辛苦勞做的成果被竊取,提出如下建議:
1.在選定加密芯片前,要充分調研,瞭解單片機破解技術的新進展,包括哪些單片機是已經確承認以破解的。儘可能不選用已可破解或同系列、同型號的芯片選擇採用新工藝、新結構、上市時間較短的單片機。
2.對於安全性要求高的項目,儘可能不要使用普及程度最高,被研究得也最透的芯片。
3.產品的原創者,通常具備產量大的特色,因此可選用比較生僻、偏冷門的單片機來加大仿冒者採購的難度,選用一些生僻的單片機。
4.在設計成本許可的條件下,應選用具備硬件自毀功能的智能卡芯片,以有效對付物理攻擊;另外程序設計的時候,加入時間到計時功能,好比使用到1年,自動中止全部功能的運行,這樣會增長破解者的成本。
5.若是條件許可,可採用兩片不一樣型號單片機互爲備份,相互驗證,從而增長破解成本。
6.打磨掉芯片型號等信息或者從新印上其它的型號,以假亂真。
7.能夠利用單片機未公開,未被利用的標誌位或單元,做爲軟件標誌位。
8.你應在程序區寫上版權信息,以備得到法律保護。
9.採用高檔的編程器,燒斷內部的部分管腳,還能夠採用自制的設備燒斷金線,這個目前國內幾乎不能解密,即便解密,也須要上萬的費用,須要多個母片。
10.採用保密硅膠,好比環氧樹脂灌封膠,封住整個電路板,PCB上多一些沒有用途的焊盤,在硅膠中還能夠摻雜一些沒有用途的元件,同時把MCU周圍電路的電子元件儘可能抹掉型號。
11.能夠用編程器把空白區域中的FF改爲00,也就是把一些未使用的空間都填充好,這樣通常解密器也就找不到芯片中的空位,也就沒法執行之後的解密操做。
嵌入式專欄
5
總結
固然,要想從根本上防止單片機被解密,那是不可能的。加密技術不斷髮展,解密技術也不斷髮展,如今無論哪一個單片機,只要有人肯出錢去作,基本均可以作出來,只不過代價高低和週期長短的問題,編程者還能夠從法律的途徑對本身的開發做出保護,好比寫相關專利。
3.美國再發實體清單,北理、南航、南理工上榜,「國防七子」終於齊了!
5.Windows 擁抱 Android,微軟在下怎樣的一步棋?
6.散裝vs批發誰效率高?變量訪問被ARM架構安排的明明白白
免責聲明:本文系網絡轉載,版權歸原做者全部。如涉及做品版權問題,請與咱們聯繫,咱們將根據您提供的版權證實材料確認版權並支付稿酬或者刪除內容。