要破解MCU,學(xué)校里不會(huì)有人講這個(gè),大概很多老師們也不會(huì)。為什么要破解,為了興趣?研究?掙錢?還可能是太無聊了。不管怎樣,學(xué)習(xí)下MCU的防破解技術(shù),就像了解你家的門鎖一樣有價(jià)值。
本文雖然來自于一篇老帖子,但是內(nèi)容卻并不過時(shí),下面就開始正傳。
微控制器的硬件安全措施與嵌入式系統(tǒng)同時(shí)開始發(fā)展。三十年前的系統(tǒng)是由分離的部件如CPU,ROM,RAM,I/O緩沖器,串口和其他通信與控制接口組成的。
在早期,除法律和經(jīng)濟(jì)外,幾乎沒有保護(hù)措施來防止復(fù)制這些設(shè)備。例如,ROM是用低成本的掩模技術(shù)制造的,可用EPROM輕易復(fù)制,但后者通常要貴3-10倍或更多?;蚨ㄖ蒲谀OM,那就需要很長的時(shí)間和很大的投資。另一種是在游戲機(jī)中廣泛使用的簡易ASIC。這些ASIC主要用于I/O部分來取代數(shù)十個(gè)邏輯器件,在降低成本的同時(shí)防止競爭者的復(fù)制,使之不得不應(yīng)用更大且更貴的解決方案。實(shí)際上ASIC不會(huì)更安全,用示波器來簡單分析信號或窮舉所有可能的引腳組合就可以在數(shù)小時(shí)內(nèi)得知它的具體功能。
從七十年代后期開始,微控制器提供一種非常好的取代基于CPU的控制板的方法。它們不僅有內(nèi)部存儲(chǔ)器和通用I/O接口,還有一些保護(hù)措施以防止未經(jīng)授權(quán)訪問內(nèi)部存儲(chǔ)器的內(nèi)容。
不幸的是,早期的MCU沒有提供非易失存儲(chǔ)能力,重要的數(shù)據(jù)不得不存在MCU外部的分離芯片上,因此很容易被讀出數(shù)據(jù)。一些廉價(jià)USB狗也用此法來進(jìn)行軟件保護(hù)。
圖1:Aladdin HASP4 USB狗
下一步進(jìn)展就是把EEPROM芯片放在與MCU同一封裝的內(nèi)部。破解這些芯片是不容易的。一種專業(yè)的方法是打開樣品的封裝,用微探針來獲得數(shù)據(jù)?;?qū)⑿酒匦潞冈谝粋€(gè)分開的封裝內(nèi)。這兩種設(shè)備都不是低級破解者所能擁有的。這些破解者會(huì)嘗試用自制的微探針(舊芯片的焊線區(qū)域是相當(dāng)大的)或利用軟件上的缺陷來讀出數(shù)據(jù)。
圖2:PIC12CE518微控制器打開封裝后的照片,可見非易失數(shù)據(jù)存儲(chǔ)器和MCU是分開封在同一封裝內(nèi)部的。
圖3:某型32位MCU打開封裝后的SEM圖
一些MCU始終沒有任何特殊的硬件安全保護(hù)。它們僅僅是基于不公開編程算法來保護(hù)。這可能有偽裝回讀功能,或用校驗(yàn)功能來代替。一般這些MCU不會(huì)提供非常好的保護(hù)能力。實(shí)際上,在一些智能卡中,適當(dāng)使用校驗(yàn)功能能夠起到很強(qiáng)的保護(hù)作用。
下一步增強(qiáng)安全保護(hù)的措施就是增加一個(gè)硬件安全熔絲(security fuse——安全熔絲就是寄存器)來禁止訪問數(shù)據(jù)。這很容易做到,不需要完全重新設(shè)計(jì)MCU架構(gòu),僅利用熔絲來控制編程接口的回讀功能。缺點(diǎn)是熔絲位很容易被定位并進(jìn)行入侵攻擊。例如:熔絲的狀態(tài)可以通過直接把熔絲位的輸出連到電源或地線上來進(jìn)行修改。有些例子中僅僅用激光或聚焦離子束來切斷熔絲的感應(yīng)電路就可以了。用非侵入式攻擊也一樣可以成功。
因?yàn)橐粋€(gè)分離的熔絲版圖異于正常的存儲(chǔ)陣列??梢杂媒M合外部信號來使熔絲位處與不能被正確讀出的狀態(tài),那樣就可以訪問存在內(nèi)部芯片上的信息了。用半侵入式攻擊可以使破解者快速取得成功但需要打開芯片的封裝來接近晶粒。一個(gè)眾所周知的方法就是用紫外線來擦掉安全熔絲。
圖4:PIC12C508微控制器的安全熔絲位于程序存儲(chǔ)器陣列的外部。
再下一步就是將安全熔絲做成存儲(chǔ)器陣列的一部分,如果已設(shè)好熔絲,可禁止外部讀寫數(shù)據(jù)。一般的熔絲與主存儲(chǔ)器離得很近,或干脆與主存儲(chǔ)器共享一些控制線。因?yàn)榫A廠使用與主存儲(chǔ)器相同的工藝來制造,熔絲很難被定位和復(fù)位。非侵入式攻擊仍然可用,但需要時(shí)間去尋找。同樣,半侵入式攻擊也可用。當(dāng)然破解者需要更多的時(shí)間去尋找安全熔絲或控制電路負(fù)責(zé)安全監(jiān)視的部分,但這些可以自動(dòng)完成的。進(jìn)行侵入式攻擊將是很困難的,需要手工操作,那將花費(fèi)更多的成本來破解。
圖5:MC68HC705C9A微控制器在200倍顯微鏡下可見安全熔絲是存儲(chǔ)器讀寫控制邏輯的一部分
更進(jìn)一步的是用主存儲(chǔ)器的一部分來控制外部對數(shù)據(jù)的訪問。這可以用上電時(shí)鎖定特定區(qū)域地址的信息,將它作為安全熔絲。或用密碼來控制對存儲(chǔ)器的訪問。例如德儀的MSP430F112,只有輸入正確的32字節(jié)密碼后才能進(jìn)行回讀操作。如果沒輸入密碼,只有擦掉芯片后才能操作。盡管這個(gè)保護(hù)方法看上去比先前的更有效,它有一些缺點(diǎn)可以用低成本的非侵入式攻擊如時(shí)序分析和功耗分析來破解。如果安全熔絲的狀態(tài)是上電或復(fù)位后的存儲(chǔ)器的一部分,這就給破解者用電源噪聲來破解的機(jī)會(huì),強(qiáng)制電路進(jìn)入存儲(chǔ)器中的錯(cuò)誤狀態(tài)。
圖6:PIC16F648A偽頂層金屬層圖案使得對芯片進(jìn)行微探測攻擊更困難,200倍放大
別的一些使入侵攻擊開銷更多的措施包括使用頂層金屬網(wǎng)格。所有的網(wǎng)格都用來監(jiān)控短路和開路,一旦觸發(fā),會(huì)導(dǎo)致存儲(chǔ)器復(fù)位或清零。普通的MCU不會(huì)使用這種保護(hù)方法,因?yàn)樵O(shè)計(jì)較難,且在異常運(yùn)行條件下也會(huì)觸發(fā),如:高強(qiáng)度電磁場噪聲,低溫或高溫,異常的時(shí)鐘信號或供電不良。故有些普通的MCU使用更廉價(jià)的偽頂層金屬網(wǎng)格,但這也有非常高效的光學(xué)分析進(jìn)行微探測攻擊的方法。在智能卡中,電源和地之間鋪了一些這樣的網(wǎng)格線。在這些方法中發(fā)現(xiàn)一些設(shè)計(jì)缺陷使得可以進(jìn)行微探測攻擊。同樣,這些網(wǎng)格不能保護(hù)非侵入式攻擊。因?yàn)閷?dǎo)線之間有電容,并且光線可以通過導(dǎo)線抵達(dá)電路的有效區(qū)域,半侵入式攻擊仍然可能。
可編程的智能卡制造商走得更遠(yuǎn),干脆砍掉標(biāo)準(zhǔn)的編程接口。取而代之的是啟動(dòng)模塊,可以在代碼載入后擦掉或屏蔽掉自己。這些卡只能在初始化時(shí)被編程一次,之后只能響應(yīng)使用者的嵌入軟件所支持的讀寫存在卡里的數(shù)據(jù)或程序。
圖7:ST16系列智能卡芯片表面金屬層的敏感網(wǎng)格
近期的一些智能卡使用存儲(chǔ)器總線編碼(Bus encryption)技術(shù)來防止微探測攻擊。即使破解者獲得數(shù)據(jù)總線的數(shù)據(jù)也不可能知道密碼或別的敏感信息。這種保護(hù)措施直指侵入式和半侵入式攻擊。但非侵入式攻擊仍然可以像正常的CPU一樣訪問控制非編碼信息。事實(shí)上,幾年前就發(fā)現(xiàn)廉價(jià)地破解編碼信息的方法。
圖8:100倍顯微鏡下的SLE66系列的智能卡芯片上的硬件總線編碼模塊,保護(hù)存儲(chǔ)器免受微探測攻擊。
另外一些需要提及的改進(jìn)是將標(biāo)準(zhǔn)的模塊結(jié)構(gòu)如解碼器,寄存器文件,ALU和I/O電路用類似ASIC邏輯來設(shè)計(jì)。這些設(shè)計(jì)稱為混合邏輯(Glue logic),廣泛用于智能卡。混合邏輯使得實(shí)際上不可能通過手工尋找信號或節(jié)點(diǎn)來獲得卡的信息進(jìn)行物理攻擊。這種技術(shù)廣泛用于盜版,并可提升常見CPU內(nèi)核的性能和安全性。例如,SX28微控制器的引腳和程序都兼容于微芯的PIC16C57,但它使用了混合邏輯設(shè)計(jì),閃存,大容量RAM使它的性能獲得大幅提升。在PIC微控制器中,破解者很容易跟蹤內(nèi)存到CPU的數(shù)據(jù)總線,但在SX微控制器中,幾乎不可能知道總線的物理位置,反向工程和微探測攻擊將是非常困難且耗費(fèi)時(shí)間。
圖9:SX28微控制器引入混合邏輯設(shè)計(jì),提升了性能和安全性。
更常用的是芯片由不同模塊組成,但每個(gè)模塊使用混合邏輯設(shè)計(jì)。如CY7C63001A微控制器。在這種情況下,破解者更容易跟蹤模塊之間的總線和控制線,并對芯片進(jìn)行侵入式和半侵入式攻擊?;旌线壿嬙O(shè)計(jì)不能防止非侵入式攻擊,但需要更快更昂貴的設(shè)備。半侵入式攻擊面臨偽設(shè)計(jì)模塊的問題。當(dāng)然破解者可以自動(dòng)操作來進(jìn)行窮舉搜索并嘗試攻擊所有可能區(qū)域。結(jié)果很可能是花了很長時(shí)間并沒有取得成功。另一方面,破解者可以直接攻擊存儲(chǔ)器器或它的控制電路。
圖10:的CY7C63001A微控制器使用部分混合邏輯設(shè)計(jì),但內(nèi)部總線很容易被訪問。
技術(shù)的進(jìn)步增加了入侵攻擊的成本。十年前很容易使用激光切割器和簡單的探針臺(tái)就可以讀寫芯片表面的任何點(diǎn),但對于現(xiàn)代的深亞微米半導(dǎo)體芯片就需要用到不一般的且昂貴的技術(shù),這難倒了很多潛在的破解者。如PIC16F877很容易在顯微鏡下觀察并進(jìn)行反向工程,藏在頂層金屬下的第二層金屬和多晶硅層仍然可見。但在PIC16F887A微控制器中使用了平坦化工藝,使得不會(huì)顯示更深的層。唯一的方法是用物理或化學(xué)的方法除去頂層金屬。
圖11:500倍顯微鏡下,通過PIC16F877的頂層看到第二層金屬和多晶硅層。
圖12:500倍顯微鏡下,看不到PIC16F877A的頂層金屬下有什么特別的。
安全保護(hù)的類型
通過編程接口對片上存儲(chǔ)器進(jìn)行寫,校驗(yàn),讀和擦除操作,這可以用硬件(JTAG)或軟件(bootloader)來實(shí)現(xiàn)。在硬件接口方面,安全保護(hù)通常是使用安全熔絲來控制接口的操作,如,阻止存儲(chǔ)器中的數(shù)據(jù)發(fā)送到輸出緩沖器里。至于軟件接口,一般使用密碼保護(hù),但通常軟件會(huì)檢測某個(gè)硬件安全熔絲的狀態(tài)。一些微控制器使用了這兩種方法,軟件啟動(dòng)載入模塊控制系統(tǒng)的編程,另一個(gè)快速的硬件接口用來大批量生產(chǎn)的編程。每一種都有它的優(yōu)勢和劣勢。通過軟件,有更好的靈活性和更好的編程控制能力,但會(huì)在時(shí)間延遲和功耗方面泄漏一些信息。硬件的執(zhí)行速度更快,對噪聲攻擊不敏感,不會(huì)通過功耗泄漏信息。在硅芯片的資源上,兩者都占用類似大小的空間,對于現(xiàn)代的微控制器,與其它較大的部分如程序存儲(chǔ)器,處理器和模擬接口相比,這部分幾乎可以忽略不計(jì)。制造商就可以在同一個(gè)芯片上放置兩種或更多的編程接口。如通過異步接口進(jìn)行在線串行編程,標(biāo)準(zhǔn)的并行編程,軟件啟動(dòng)模塊通過異步接口編程。
一些制造商故意不提供它們的微控制器的編程規(guī)格。這對它本身并沒有提供很好的保護(hù),只是給破解稍稍增加成本而已。這些信息可以通過在開發(fā)板上或通用編程器對芯片進(jìn)行編程而獲得。
很明顯,對于最高等級的安全,系統(tǒng)沒有任何編程接口,并且不能讀寫所存儲(chǔ)的數(shù)據(jù)。這通常用于掩模ROM微控制器和智能卡。對這種保護(hù),實(shí)用破解方法是用微探針接觸數(shù)據(jù)總線來恢復(fù)信息或使用功耗分析和噪聲攻擊來利用軟件的缺陷。當(dāng)微控制器進(jìn)行編程但不提供任何返回信息,只有校驗(yàn)和寫檢查,這可以提供相對高的安全等級。當(dāng)然,這需要完全執(zhí)行以避免破解者強(qiáng)制系統(tǒng)一次只校驗(yàn)一個(gè)字節(jié)。
大部分現(xiàn)代的微控制器有一個(gè)或多個(gè)安全熔絲來控制片上存儲(chǔ)器的讀寫。這些熔絲可以用軟件或硬件來實(shí)現(xiàn)。軟件的方法就是密碼存儲(chǔ)在存儲(chǔ)器中或一個(gè)特定的存儲(chǔ)器位置當(dāng)作一個(gè)安全熔絲。例如,在MC68HC908系列,使用了密碼保護(hù)。
MC68HC705B系列的熔絲位于數(shù)據(jù)EEPROM存儲(chǔ)器的第一個(gè)字節(jié)。兩種方法的安全性都較高,因?yàn)楹茈y從物理上找到熔絲和密碼的位置并復(fù)位它們。同時(shí),破解者會(huì)嘗試使用噪聲攻擊來跳過安全檢查,或使用功耗分析來觀察猜測的密碼正確與否。
硬件執(zhí)行方面,安全熔絲物理上位于芯片上。這可以是主存儲(chǔ)器陣列邊上的分離的單個(gè)單元,甚至更遠(yuǎn)。所有的PIC和AVR微控制器都這樣。這兩者的安全性能并不高,熔絲很容易被找到并被屏蔽。
安全熔絲在主存儲(chǔ)器中可以提供提供更好的保護(hù),這很難找到并屏蔽它們。主存儲(chǔ)器和熔絲可以通過位線(Bit line)接在一起。如Z86E33微控制器,或通過字線(Word line)接在一起,如意法的ST62T60。有趣的是MC68HC705C9A使用了多種安全措施。熔絲單元放在主存儲(chǔ)器單元之間,合用位線。如果熔絲被紫外線擦除了,主存儲(chǔ)器也會(huì)被擦掉。對存儲(chǔ)器進(jìn)行反向工程,發(fā)現(xiàn)很難分辨哪部分屬于存儲(chǔ)器,哪部分屬于熔絲。但同時(shí),半侵入式攻擊可以很好工作,因?yàn)槿劢z有分開的控制電路,這很容易被破解而不影響主存儲(chǔ)器。
圖13:200倍顯微鏡下,Z86E33微控制器的熔絲沿位線緊挨著主存儲(chǔ)器
圖14:200倍顯微鏡下,ST62T60微控制器的熔絲沿字線緊挨著主存儲(chǔ)器
硬件安全保護(hù)方面的新進(jìn)展是將熔絲區(qū)域嵌入到主存儲(chǔ)器陣列中,共享控制或數(shù)據(jù)線,這樣的安全性能更好,熔絲已經(jīng)成為存儲(chǔ)器的一部分,很難進(jìn)行定位。將某一部分存儲(chǔ)器作為安全熔絲可以達(dá)到更高的安全性能。這種情況下,不擾亂其它部分存儲(chǔ)器的內(nèi)容,找到位置并復(fù)位是異常困難的。這并不意味著別的破解方法不能湊效。但可以減少成功的機(jī)會(huì)。
安全熔絲可以通過多種方法來監(jiān)控。最簡單的方法就是在上電時(shí);復(fù)位時(shí);進(jìn)入編程模式時(shí)檢查熔絲的狀態(tài)。使用電源噪聲或激光脈沖,可以用很短的時(shí)間就改變?nèi)劢z地狀態(tài)。熔絲狀態(tài)保存在觸發(fā)器或寄存器中并不好,因?yàn)橛|發(fā)器的狀態(tài)可以通過缺陷注入攻擊來改變。
-
mcu
+關(guān)注
關(guān)注
146文章
17173瀏覽量
351655 -
破解
+關(guān)注
關(guān)注
2文章
23瀏覽量
14281
原文標(biāo)題:怎樣防住那些想破解MCU的人
文章出處:【微信號:mcugeek,微信公眾號:MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論