電子發(fā)燒友網(wǎng)訊:本文介紹了眾多微處理器MCU和智能卡破解的方法:包括已知的非侵入式攻擊,如功耗分析和噪聲干擾以及侵入式攻擊,如反向工程和微探測(cè)分析。并討論了眾多防護(hù)技術(shù),包括低成本的隱匿方法到新的集成電路設(shè)計(jì)方法.
背景知識(shí):
硅芯片安全措施的演變
工業(yè)控制器的硬件安全措施與嵌入式系統(tǒng)同時(shí)開(kāi)始發(fā)展。三十年前的系統(tǒng)是由分離的部件如CPU,ROM,RAM,I/O緩沖器,串口和其他通信與控制接口組成的。如圖1-1所示:
圖1-1 通用的嵌入式控制器。PCB上的每個(gè)部件很容易辨別且極易被復(fù)制。
在早期,除法律和經(jīng)濟(jì)外,幾乎沒(méi)有保護(hù)措施來(lái)防止別人復(fù)制這些設(shè)備。例如:ROM是用低成本的掩膜技術(shù)制造的,可用EPROM輕易復(fù)制,但后者通常要貴3-10倍或更多,或通過(guò)定制掩膜ROM,那就需要很長(zhǎng)的時(shí)間和很大的投資。另一種是在游戲機(jī)中廣泛使用的簡(jiǎn)易ASIC,如圖1-2。這些ASIC主要用于I/O部分來(lái)取代數(shù)十個(gè)邏輯器件,在降低成本的同時(shí)防止競(jìng)爭(zhēng)者的復(fù)制,使之不得不應(yīng)用更大且更貴的解決方案。實(shí)際上ASIC不會(huì)更安全,用示波器來(lái)簡(jiǎn)單分析信號(hào)或窮舉所有可能的引腳組合就可以在數(shù)小時(shí)內(nèi)得知它的具體功能。
圖1-2 游戲機(jī)中的專用集成電路(ASIC)
從七十年代后期開(kāi)始,微控制器提供一種基于CPU的控制板的非常好的取代方法。它們不僅有內(nèi)部存儲(chǔ)器和通用I/O接口,還有一些保護(hù)措施以防止未經(jīng)授權(quán)訪問(wèn)內(nèi)部存儲(chǔ)器的內(nèi)容。
不幸的是,早期的MCU沒(méi)有提供非易失存儲(chǔ)能力,重要的數(shù)據(jù)不得不存在MCU外部的分離芯片上,因此很容易被讀出數(shù)據(jù)。最近銷售的一些廉價(jià)USB狗也用此法來(lái)進(jìn)行軟件保護(hù),如圖1-3所示。
圖1-3 Aladdin HASP4 USB狗
安全領(lǐng)域的下一步進(jìn)展就是把EEPROM芯片放在與MCU同一封裝的內(nèi)部。如圖1-4。破解這些芯片是不容易的。一種專業(yè)的方法是打開(kāi)樣品的封裝,用微探針來(lái)獲得數(shù)據(jù)?;?qū)⑿酒匦潞冈谝粋€(gè)分開(kāi)的封裝內(nèi)。這兩種設(shè)備都不是低級(jí)破解者所能擁有的。這些破解者會(huì)嘗試用自制的微探針(舊芯片的焊線區(qū)域是相當(dāng)大的)或利用軟件上的缺陷來(lái)讀出數(shù)據(jù)。
圖1-4 微芯Microchip的PIC12CE518微控制器打開(kāi)封裝后的照片,可見(jiàn)非易失數(shù)據(jù)存儲(chǔ)器和MCU是分開(kāi)封在同一封裝內(nèi)部的。
(譯者注:近來(lái)的堆疊芯片,如手機(jī)中用的Flash+SRAM的combo存儲(chǔ)器,結(jié)構(gòu)與之類似,不同的是在垂直方向疊加。破解方法亦類似。結(jié)構(gòu)見(jiàn)圖1-5。)
圖1-5 意法ST 某型32位MCU打開(kāi)封裝后的SEM圖片
一些MCU始終沒(méi)有任何特殊的硬件安全保護(hù)。它們僅僅是基于不公開(kāi)編程算法來(lái)保護(hù)。這可能有偽裝回讀功能,或用校驗(yàn)功能來(lái)代替。一般這些MCU不會(huì)提供非常好的保護(hù)能力。實(shí)際上,在一些智能卡中,適當(dāng)使用校驗(yàn)功能能夠起到很強(qiáng)的保護(hù)作用。
下一步增強(qiáng)安全保護(hù)的措施就是增加一個(gè)硬件安全熔絲(security fuse譯者注:安全熔絲就是寄存器)來(lái)禁止訪問(wèn)數(shù)據(jù)。這很容易做到,不需要完全重新設(shè)計(jì)MCU架構(gòu),僅利用熔絲來(lái)控制編程接口的回讀功能,如圖1-6所示。缺點(diǎn)是熔絲位很容易被定位并進(jìn)行入侵攻擊。
例如:熔絲的狀態(tài)可以通過(guò)直接把熔絲位的輸出連到電源或地線上來(lái)進(jìn)行修改。有些例子中僅僅用激光或聚焦離子束來(lái)切斷熔絲的感應(yīng)電路就可以了。用非侵入式攻擊也一樣可以成功。因?yàn)橐粋€(gè)分離的熔絲版圖異于正常的存儲(chǔ)陣列??梢杂媒M合外部信號(hào)來(lái)使熔絲位處與不能被正確讀出的狀態(tài),那樣就可以訪問(wèn)存在內(nèi)部芯片上的信息了。用半侵入式攻擊可以使破解者快速取得成功但需要打開(kāi)芯片的封裝來(lái)接近晶粒。一個(gè)眾所周知的方法就是用紫外線來(lái)擦掉安全熔絲。
圖1-6 微芯PIC12C508微控制器的安全熔絲位于程序存儲(chǔ)器陣列的外部。
再下一步就是將安全熔絲做成存儲(chǔ)器陣列的一部分,如果已設(shè)好熔絲,可禁止外部讀寫(xiě)數(shù)據(jù)。一般的熔絲與主存儲(chǔ)器離得很近,或干脆與主存儲(chǔ)器共享一些控制線。因?yàn)榫A廠使用與主存儲(chǔ)器相同的工藝來(lái)制造,熔絲很難被定位和復(fù)位。非侵入式攻擊仍然可用,但需要時(shí)間去尋找。同樣,半侵入式攻擊也可用。當(dāng)然破解者需要更多的時(shí)間去尋找安全熔絲或控制電路負(fù)責(zé)安全監(jiān)視的部分,但這些可以自動(dòng)完成的。進(jìn)行侵入式攻擊將是很困難的,需要手工操作,那將花費(fèi)更多的成本來(lái)破解。
圖1-7 飛思卡爾Freescale的MC68HC705C9A微控制器在200倍顯微鏡下可見(jiàn)安全熔絲是存儲(chǔ)器讀寫(xiě)控制邏輯的一部分
更進(jìn)一步的是用主存儲(chǔ)器的一部分來(lái)控制外部對(duì)數(shù)據(jù)的訪問(wèn)。這可以用上電時(shí)鎖定特定區(qū)域地址的信息,將它作為安全熔絲?;蛴妹艽a來(lái)控制對(duì)存儲(chǔ)器的訪問(wèn)。例如德儀的MSP430F112,只有輸入正確的32字節(jié)密碼后才能進(jìn)行回讀操作。如果沒(méi)輸入密碼,只有擦掉芯片后才能操作。盡管這個(gè)保護(hù)方法看上去比先前的更有效,它有一些缺點(diǎn)可以用低成本的非侵入式攻擊如時(shí)序分析和功耗分析來(lái)破解。如果安全熔絲的狀態(tài)是上電或復(fù)位后的存儲(chǔ)器的一部分,這就給破解者用電源噪聲來(lái)破解的機(jī)會(huì),強(qiáng)制電路進(jìn)入存儲(chǔ)器中的錯(cuò)誤狀態(tài)。
圖1-8 PIC16F648A偽頂層金屬層圖案使得對(duì)芯片進(jìn)行微探測(cè)攻擊更困難,200X
別的一些使入侵攻擊開(kāi)銷更多的措施包括使用頂層金屬網(wǎng)格。所有的網(wǎng)格都用來(lái)監(jiān)控短路和開(kāi)路,一旦觸發(fā),會(huì)導(dǎo)致存儲(chǔ)器復(fù)位或清零。普通的MCU不會(huì)使用這種保護(hù)方法,因?yàn)樵O(shè)計(jì)較難,且在異常運(yùn)行條件下也會(huì)觸發(fā),如:高強(qiáng)度電磁場(chǎng)噪聲,低溫或高溫,異常的時(shí)鐘信號(hào)或供電不良。故有些普通的MCU使用更廉價(jià)的偽頂層金屬網(wǎng)格,但這也有非常高效的光學(xué)分析進(jìn)行微探測(cè)攻擊的方法。在智能卡中,電源和地之間鋪了一些這樣的網(wǎng)格線。在這些方法中發(fā)現(xiàn)一些設(shè)計(jì)缺陷使得可以進(jìn)行微探測(cè)攻擊。同樣,這些網(wǎng)格不能保護(hù)非侵入式攻擊。因?yàn)閷?dǎo)線之間有電容,并且光線可以通過(guò)導(dǎo)線抵達(dá)電路的有效區(qū)域,半侵入式攻擊仍然可能。
可編程的智能卡制造商走得更遠(yuǎn),干脆砍掉標(biāo)準(zhǔn)的編程接口。取而代之的是啟動(dòng)模塊,可以在代碼載入后擦掉或屏蔽掉自己。這些卡只能在初始化時(shí)被編程一次,之后只能響應(yīng)使用者的嵌入軟件所支持的讀寫(xiě)存在卡里的數(shù)據(jù)或程序。
圖1-9 意法ST的ST16系列智能卡芯片表面金屬層的敏感網(wǎng)格。
近期的一些智能卡使用存儲(chǔ)器總線編碼(Bus encryption)技術(shù)來(lái)防止微探測(cè)攻擊。即使破解者獲得數(shù)據(jù)總線的數(shù)據(jù)也不可能知道密碼或別的敏感信息。這種保護(hù)措施直指侵入式和半侵入式攻擊。但非侵入式攻擊仍然可以像正常的CPU一樣訪問(wèn)控制非編碼信息。事實(shí)上,幾年前就發(fā)現(xiàn)廉價(jià)地破解編碼信息的方法。
圖1-10 100倍顯微鏡下的英飛凌Infineon SLE66系列的智能卡芯片上的硬件總線編碼模塊,保護(hù)存儲(chǔ)器免受微探測(cè)攻擊。
另外一些需要提及的改進(jìn)是將標(biāo)準(zhǔn)的模塊結(jié)構(gòu)如解碼器,寄存器文件,ALU和I/O電路用類似ASIC邏輯來(lái)設(shè)計(jì)。這些設(shè)計(jì)稱為混合邏輯(Glue logic),廣泛用于智能卡?;旌线壿嬍沟脤?shí)際上不可能通過(guò)手工尋找信號(hào)或節(jié)點(diǎn)來(lái)獲得卡的信息進(jìn)行物理攻擊。這種技術(shù)廣泛用于盜版,并可提升常見(jiàn)CPU內(nèi)核的性能和安全性。例如Ubicom的SX28微控制器的引腳和程序都兼容于微芯的PIC16C57,但它使用了混合邏輯設(shè)計(jì),閃存,大容量RAM使它的性能獲得大幅提升。在PIC微控制器中,破解者很容易跟蹤內(nèi)存到CPU的數(shù)據(jù)總線,但在SX微控制器中,幾乎不可能知道總線的物理位置,反向工程和微探測(cè)攻擊將是非常困難且耗費(fèi)時(shí)間
圖1-11 Ubicom的SX28微控制器引入混合邏輯設(shè)計(jì),提升了性能和安全性。
更常用的是芯片由不同模塊組成,但每個(gè)模塊使用混合邏輯設(shè)計(jì)。如賽普拉斯的CY7C63001A微控制器。在這種情況下,破解者更容易跟蹤模塊之間的總線和控制線,并對(duì)芯片進(jìn)行侵入式和半侵入式攻擊?;旌线壿嬙O(shè)計(jì)不能防止非侵入式攻擊,但需要更快更昂貴的設(shè)備。半侵入式攻擊面臨偽設(shè)計(jì)模塊的問(wèn)題。當(dāng)然破解者可以自動(dòng)操作來(lái)進(jìn)行窮舉搜索并嘗試攻擊所有可能區(qū)域。結(jié)果很可能是花了很長(zhǎng)時(shí)間并沒(méi)有取得成功。另一方面,破解者可以直接攻擊存儲(chǔ)器器或它的控制電路。
圖1-12 賽普拉斯Cypress的CY7C63001A微控制器使用部分混合邏輯設(shè)計(jì),但內(nèi)部總線很容易被訪問(wèn)。
技術(shù)的進(jìn)步增加了入侵攻擊的成本。十年前很容易使用激光切割器和簡(jiǎn)單的探針臺(tái)就可以讀寫(xiě)芯片表面的任何點(diǎn),但對(duì)于現(xiàn)代的深亞微米半導(dǎo)體芯片就需要用到不一般的且昂貴的技術(shù),這難倒了很多潛在的破解者。如PIC16F877很容易在顯微鏡下觀察并進(jìn)行反向工程,藏在頂層金屬下的第二層金屬和多晶硅層仍然可見(jiàn)。但在PIC16F887A微控制器中使用了平坦化工藝,使得不會(huì)顯示更深的層。唯一的方法是用物理或化學(xué)的方法除去頂層金屬。
圖1-13 500倍顯微鏡下,通過(guò)PIC16F877的頂層看到第二層金屬和多晶硅層。
圖1-14 500倍顯微鏡下,看不到PIC16F877A的頂層金屬下有什么特別的。
另外一個(gè)需要注意的是大量二手的半導(dǎo)體制造和測(cè)試設(shè)備出現(xiàn)在市場(chǎng)上,雖不能用于攻擊高端產(chǎn)品,但用于破解舊技術(shù)制造的芯片已經(jīng)夠了。
存儲(chǔ)器的種類
一個(gè)微控制器依照位于存儲(chǔ)器內(nèi)的程序進(jìn)行操作。有多種不同的存儲(chǔ)器類型,大部份曾被用于微控制器。多數(shù)的現(xiàn)代微控制器是以互補(bǔ)型金屬氧化半導(dǎo)體技術(shù)制造。 芯片上的存儲(chǔ)器可能是CMOS型的(SRAM 和一些 EEPROM)或MOS型的。 后者有比較好的性能和小的尺寸。
早期的微控制器使用掩模ROM和紫外線擦除的編程儲(chǔ)存器來(lái)儲(chǔ)存程序,使用SRAM來(lái)儲(chǔ)存數(shù)據(jù)。在大批量且低成本需求的場(chǎng)合,掩模ROM仍然被大量使用。通常這些微控制器的封裝上沒(méi)有具體型號(hào)的印字,僅有廠商的商標(biāo)。內(nèi)部工廠預(yù)編程的ROM里有軟件版本號(hào)。
圖1-15 使用掩模ROM的MCU,通常封裝上只有工廠的內(nèi)部編碼。
掩模ROM有極好的性能,但它不能被再編程,也就是說(shuō)不能升級(jí)程序。帶UV EPROM的MCU通常有兩種方式:一種是帶石英窗的陶瓷封裝,可重新擦除后再編程。另一種是大量生產(chǎn)的標(biāo)準(zhǔn)塑料封裝,也稱為OTP(One-Time Programmable只能編程一次)UV EPROM 不方便的地方是:編程的時(shí)候需要高壓;一次只能寫(xiě)入一個(gè)字或一個(gè)字節(jié),導(dǎo)致整個(gè)芯片的編程需要很長(zhǎng)時(shí)間。即使是可擦除的版本也只能被編程百來(lái)次,進(jìn)行擦除操作時(shí),需要在非常強(qiáng)的紫外線下放置20-30分鐘。
SRAM也在一些需要快速讀寫(xiě)或頻繁升級(jí)的微控制器中作程序存儲(chǔ)器。如賽普拉斯的USB 2.0微控制器C7Y68013。SRAM也被達(dá)拉斯半導(dǎo)體的加密型微控制器所用,因?yàn)樵诜榔平鈭?chǎng)合需要更短的擦除時(shí)間。
更先進(jìn)的EEPROM比UV EPROM有一些進(jìn)步:可在數(shù)百或數(shù)千個(gè)周期內(nèi)再次編程;通常用芯片上的充電泵電路產(chǎn)生高壓;很快可以編程完畢。對(duì)EEPROM的更進(jìn)一步的發(fā)展是閃存(flash EEPROM),它在現(xiàn)代的微控制器和智能卡中是主流的存儲(chǔ)器。它提供了更快的編程時(shí)間,且可以按塊來(lái)擦除,節(jié)省了很多時(shí)間;并且可以被擦寫(xiě)數(shù)萬(wàn)次。大部分的現(xiàn)代微控制器將閃存作為程序存儲(chǔ)器,這就可以現(xiàn)場(chǎng)升級(jí)代碼而無(wú)須昂貴的燒錄器。
有種方法是把SRAM和EPROM整合在一起,那就可以達(dá)到快速的讀寫(xiě)時(shí)間,且非易失。但它太貴,只在小部分的智能卡和ASIC中有應(yīng)用。
每種存儲(chǔ)器都有優(yōu)勢(shì)和不足,硬件設(shè)計(jì)師根據(jù)需求來(lái)取舍。普通的微控制器在同一晶粒上有不同的存儲(chǔ)器,如SRAM和EPROM用在OTP PIC微控制器中。SRAM,掩模ROM和EEPROM用在飛思卡爾MC68H05微控制器中。
CPLD中,主要用EPROM,EEPROM和閃存。FPGA大多是基于SRAM的,也有公司提供反熔絲和閃存的非易失FPGA。反熔絲是一種特殊的OTP存儲(chǔ)器,用于將芯片內(nèi)金屬線之間的互聯(lián)進(jìn)行編程。這些互聯(lián)很小,約100納米寬,很難確定它們的狀態(tài)?;诜慈劢z的技術(shù),提供了很高的安全性。
安全保護(hù)的類型
通過(guò)編程接口對(duì)片上存儲(chǔ)器進(jìn)行寫(xiě),校驗(yàn),讀和擦除操作,這可以用硬件(JTAG)或軟件(bootloader)來(lái)實(shí)現(xiàn)。在硬件接口方面,安全保護(hù)通常是使用安全熔絲來(lái)控制接口的操作,如,阻止存儲(chǔ)器中的數(shù)據(jù)發(fā)送到輸出緩沖器里。至于軟件接口,一般使用密碼保護(hù),但通常軟件會(huì)檢測(cè)某個(gè)硬件安全熔絲的狀態(tài)。一些微控制器使用了這兩種方法,軟件啟動(dòng)載入模塊控制系統(tǒng)的編程,另一個(gè)快速的硬件接口用來(lái)大批量生產(chǎn)的編程。每一種都有它的優(yōu)勢(shì)和劣勢(shì)。通過(guò)軟件,有更好的靈活性和更好的編程控制能力,但會(huì)在時(shí)間延遲和功耗方面泄漏一些信息。硬件的執(zhí)行速度更快,對(duì)噪聲攻擊不敏感,不會(huì)通過(guò)功耗泄漏信息。在硅芯片的資源上,兩者都占用類似大小的空間,對(duì)于現(xiàn)代的微控制器,與其它較大的部分如程序存儲(chǔ)器,處理器和模擬接口相比,這部分幾乎可以忽略不計(jì)。制造商就可以在同一個(gè)芯片上放置兩種或更多的編程接口。如通過(guò)異步接口進(jìn)行在線串行編程,標(biāo)準(zhǔn)的并行編程,軟件啟動(dòng)模塊通過(guò)異步接口編程。
一些制造商故意不提供它們的微控制器的編程規(guī)格。這對(duì)它本身并沒(méi)有提供很好的保護(hù),只是給破解稍稍增加成本而已。這些信息可以通過(guò)在開(kāi)發(fā)板上或通用編程器對(duì)芯片進(jìn)行編程而獲得。
很明顯,對(duì)于最高等級(jí)的安全,系統(tǒng)沒(méi)有任何編程接口,并且不能讀寫(xiě)所存儲(chǔ)的數(shù)據(jù)。這通常用于掩模ROM微控制器和智能卡。對(duì)這種保護(hù),實(shí)用破解方法是用微探針接觸數(shù)據(jù)總線來(lái)恢復(fù)信息或使用功耗分析和噪聲攻擊來(lái)利用軟件的缺陷。當(dāng)微控制器進(jìn)行編程但不提供任何返回信息,只有校驗(yàn)和寫(xiě)檢查,這可以提供相對(duì)高的安全等級(jí)。當(dāng)然,這需要完全執(zhí)行以避免破解者強(qiáng)制系統(tǒng)一次只校驗(yàn)一個(gè)字節(jié)。
大部分現(xiàn)代的微控制器有一個(gè)或多個(gè)安全熔絲來(lái)控制片上存儲(chǔ)器的讀寫(xiě)。這些熔絲可以用軟件或硬件來(lái)實(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ì)嘗試使用噪聲攻擊來(lái)跳過(guò)安全檢查,或使用功耗分析來(lái)觀察猜測(cè)的密碼正確與否。
硬件執(zhí)行方面,安全熔絲物理上位于芯片上。這可以是主存儲(chǔ)器陣列邊上的分離的單個(gè)單元,甚至更遠(yuǎn)。所有的PIC和AVR微控制器都這樣。這兩者的安全性能并不高,熔絲很容易被找到并被屏蔽。
安全熔絲在主存儲(chǔ)器中可以提供提供更好的保護(hù),這很難找到并屏蔽它們。主存儲(chǔ)器和熔絲可以通過(guò)位線(Bit line)接在一起。如zilog的Z86E33微控制器,或通過(guò)字線(Word line)接在一起,如意法的ST62T60。有趣的是MC68HC705C9A使用了多種安全措施。熔絲單元放在主存儲(chǔ)器單元之間,合用位線。如果熔絲被紫外線擦除了,主存儲(chǔ)器也會(huì)被擦掉。對(duì)存儲(chǔ)器進(jìn)行反向工程,發(fā)現(xiàn)很難分辨哪部分屬于存儲(chǔ)器,哪部分屬于熔絲。但同時(shí),半侵入式攻擊可以很好工作,因?yàn)槿劢z有分開(kāi)的控制電路,這很容易被破解而不影響主存儲(chǔ)器。
圖1-16 200倍顯微鏡下,Z86E33微控制器的熔絲沿位線緊挨著主存儲(chǔ)器
圖1-17 200倍顯微鏡下,ST62T60微控制器的熔絲沿字線緊挨著主存儲(chǔ)器
下一個(gè)硬件安全保護(hù)方面的進(jìn)展是將熔絲區(qū)域嵌入到主存儲(chǔ)器陣列中,共享控制或數(shù)據(jù)線,這樣的安全性能更好,熔絲已經(jīng)成為存儲(chǔ)器的一部分,很難進(jìn)行定位。
將某一部分存儲(chǔ)器作為安全熔絲可以達(dá)到更高的安全性能。這種情況下,不擾亂其它部分存儲(chǔ)器的內(nèi)容,找到位置并復(fù)位是異常困難的。這并不意味著別的破解方法不能湊效。但可以減少成功的機(jī)會(huì)。
安全熔絲可以通過(guò)多種方法來(lái)監(jiān)控。最簡(jiǎn)單的方法就是在上電時(shí);復(fù)位時(shí);進(jìn)入編程模式時(shí)檢查熔絲的狀態(tài)。使用電源噪聲或激光脈沖,可以用很短的時(shí)間就改變?nèi)劢z地狀態(tài)。熔絲狀態(tài)保存在觸發(fā)器或寄存器中并不好,因?yàn)橛|發(fā)器的狀態(tài)可以通過(guò)缺陷注入攻擊來(lái)改變。
更多內(nèi)容請(qǐng)下載:MCU解密全攻略?為何所有MCU都能被破解
評(píng)論
查看更多