怎樣破解芯片,芯片解密方法介紹
不需要對芯片進行初始化,解密時時把芯片放在測試電路中分析。這種芯片解密方法容易操作,學習成本較低。但通常需要很多時間和精力來尋找對特定芯片的非侵入式攻擊破解方法,包括反匯編軟件和理解硬件版圖。
非侵入式攻擊芯片解密包括被動和主動兩種方式。
被動攻擊觀察它的信號和電磁輻射,如功耗分析和時鐘攻擊,不會對被攻擊芯片發(fā)生作用。
主動攻擊有窮舉攻擊和噪聲攻擊,特點是將信號加到芯片上,用示波器或邏輯分析儀,捕捉所有信號。然后可以通過分析波形并回復獨有的命令。
時序攻擊屬于側信道攻擊/旁路攻擊,側信道攻擊是指利用信道外的信息,比如加解密的速度/加解密時芯片引腳的電壓/密文傳輸?shù)牧髁亢屯緩降冗M行攻擊的方式,一個詞形容就是“旁敲側擊”。
時序攻擊破解芯片包括執(zhí)行適時跳過需要的分支和操作條件;使用緩存;不固定時間處理指令如倍頻和分頻;還有大量的其他原因。
解密飛思卡爾的68HC08微控制器的內(nèi)部存儲器載入模塊在輸入正確的八字節(jié)密碼后可以訪問內(nèi)部閃存。為達到正確和錯誤的密碼都處理相同的時間,程序中增加了額外的空操作指令。這對時序攻擊提供了很好的保護。一些微控制器有內(nèi)部阻容振蕩器,那樣處理器的工作頻率與電壓和芯片的溫度相關。這使得時序分析很困難,攻擊時需要穩(wěn)定元器件的溫度并減少電源線上的噪聲和電壓波動。一些智能卡有內(nèi)部隨機時鐘信號使得攻擊時測量時間延遲無效。
窮舉攻擊是對系統(tǒng)嘗試數(shù)量眾多的密鑰。通常是使用高速計算機來尋找匹配的密鑰。例如對MCU單片機中的密碼保護設置,密碼本身長度為32字節(jié)(256位),抵擋暴力攻擊已經(jīng)足夠了。但密碼分配在與處理器中斷矢量相同的存儲器地址。那么,首先減少存儲器內(nèi)矢量一直指向的區(qū)域。然后當軟件被更新時,只有小部分的密碼被修改,因為大部分中斷子程序指向的矢量是相同的地址。芯片破解知道早前密碼中的一個,就很容易做系統(tǒng)的搜索,在合理的時間內(nèi)找到正確的密碼。窮舉攻擊也可用在ASIC或CPLD的芯片解密。使用所有可能的邏輯組合到元器件可能的輸入端并觀察所有輸出。
窮舉攻擊破解芯片也稱為黑箱分析,因為破解者不知道被測試元器件的情況。通過所有可能的信號組合,嘗試獲得元器件的功能。這種破解方法對相對小的芯片很有效。
另一個問題是破解者使用的ASIC或CPLD有觸發(fā)器,故輸出將可能是當前狀態(tài)或輸入的狀態(tài)。但如果預先檢查并分析信號,搜索的范圍可以顯著減少。例如,時鐘輸入,數(shù)據(jù)總線和一些控制信號是很容易認出的。
窮舉攻擊破解芯片對很多半導體芯片有效,是將外部高壓信號(通常是兩倍于電源電壓)加到芯片引腳上,來試圖進入工廠測試或編程模式。這些引腳用數(shù)字萬用表很容易發(fā)現(xiàn),因為它們沒有保護二極管到電源腳。一旦發(fā)現(xiàn)對高壓敏感的引腳,破解者就可以嘗試可能的邏輯信號組合來加到別的引腳上,找出用于進入工廠測試或編程模式的部分。破解者也可用元器件的通信協(xié)議來找出設計者嵌入在軟件中的測試和更新用得隱藏功能。
芯片運行的功耗取決于它當前的狀態(tài)。依照CMOS晶體管的原理,各部分動態(tài)時的功耗比靜態(tài)的要大。當輸入電壓加到反向器上,會引起一個晶體管短路,這個晶體管電流的增加比靜態(tài)消耗的寄生漏電要大得多。在電源線上加個10-20歐的電阻,就可以測量電流的波動。為達到更好的效果,需要使用至少12位精度和50MHz采樣速度的模數(shù)轉換器。
這些獲得的參數(shù)在解密芯片時可以用來區(qū)別芯片的不同指令并估計總線上同時翻轉的位數(shù)。通過平均多次重復同樣操作的電流,即使是沒有通過總線的很小信號也能區(qū)別開。有些信號如移位狀態(tài)特別有用,因為很多密碼的密鑰產(chǎn)生算法使用移位操作來逐一移出單個密鑰倒進位標志。即使狀態(tài)位的變化不能直接測量,它們通常會改變指令次序或微碼的執(zhí)行,這會導致功耗的明顯變化。
不同指令導致不同級別的指令解碼和運算單元的活動,可被清晰地區(qū)別開,故運算部分能被推測出。處理器的不同單元在時鐘沿相關的不同時間里有獨有的開關狀態(tài),能被高頻儀器分離出來。
有多種不同的功耗分析技術用在破解芯片算法上。整個分析過程是相對簡單的,只需要標準的現(xiàn)有的廉價儀器設備。功耗分析技術主要有兩種:簡單功耗分析和差分功耗分析。
簡單功耗分析解密是在密碼或別的安全相關操作時直接觀察功耗,可以得知設備運行時的信息如密鑰資料。如果破解者知道密碼算法,很容易通過觀察處理器指令次序,特別是移位條件轉移,找到一些位的信息。如果算法或邏輯運算的結果很容易被看出,如進位狀態(tài),零或負標志,就可以獲得更多的信息。
差分功耗分析解密是種更有效的技術,因為破解者不需要知道芯片加密算法是如何執(zhí)行的。它使用靜態(tài)分析和已知密碼運算的大量功耗跡線來獲取隱藏信息。用統(tǒng)計方法鑒別功耗的微小區(qū)別,可用來恢復密鑰中的單個的位信息。 功耗特性當然包括噪聲部分。額外的噪聲可以通過減少獲取信號的探針長度并小心使用測量儀器來降低它。測量接在地線上的電阻的功耗有一些優(yōu)勢。首先,減少了噪聲電平。其次,可以用示波器的探頭直接測量信號,因為大部分探針站有公共的地線與外部電源地相連。為了增加信噪比,可以通過提高平均采樣數(shù)來獲得。
有源探頭能降低輸入電容,增加對輸入信號的帶寬。一種方法是用高速低噪聲的運放來構建相對簡單的探頭,另一種是用很短的同軸電纜直連到示波器的輸入端。在這些情況下,探頭的輸入電容顯著減少。
噪聲攻擊是快速改變輸入到芯片的信號,以影響它的正常運行。通常噪聲是疊加在電源上或時鐘信號上,但噪聲也可以是外加的短暫電場或電磁脈沖。在離芯片表面數(shù)百微米處放置兩根金屬針,然后加上少于1微秒的數(shù)百伏電壓的窄脈沖,晶圓襯底會感應出一個電場,使得鄰近晶體管的閾值電壓發(fā)生變化。最近出現(xiàn)一種改進的方法:使用幾百圈金屬線繞在微探針的針尖構成一個小型電感。當電流進入線圈會產(chǎn)生磁場,針尖將集中磁力線。
單片機的每個晶體管和與它相連的線路構成有時延特性的RC電路。處理器的最大可用時鐘頻率取決于該電路的最大延遲。同樣的,每個觸發(fā)器在接收輸入電壓和由此引致的輸出電壓之間有個特征時間窗口。這個窗口由給定的電壓和溫度來確定。如果用時鐘噪聲(比正常的時鐘脈沖要短得多)或電源噪聲(電源電壓的快速波動)將會影響芯片里的某些晶體管,導致一個或多個觸發(fā)器進入錯誤狀態(tài)。通過改變參數(shù),處理器會被導致執(zhí)行許多完全不同的錯誤指令,有時甚至是不被微碼支持的。盡管我們不會預先知道何種噪聲會導致何種芯片的何種錯誤,但它能相當簡單地進行系統(tǒng)的搜索。
1、時鐘噪聲攻擊
時鐘信號的噪聲攻擊在目前是最簡單的,且相當實用的芯片解密方法。實際應用中的噪聲通常用來取代跳轉條件并試驗先前的測試指令??梢栽诎踩艽a問詢處理時創(chuàng)建一個攻擊窗口,簡單預防執(zhí)行這些指令。指令噪聲也能用來擴大循環(huán)的時間。如串口子程序在輸出緩沖后再讀更多的內(nèi)容;或在密鑰操作時減少循環(huán)次數(shù)來傳一個弱的密碼。
為獲得噪聲,時鐘需要臨時增加一個或大于半個周期,有些觸發(fā)器在到達新狀態(tài)之前就獲得輸入。時鐘噪聲通常針對處理器的指令流。對硬件執(zhí)行安全保護的微控制器沒有什么效果。實際中,僅使用時鐘噪聲來攻擊微控制器或智能卡的軟件程序接口。
這類保護的破解是相對容易的。如處理器在循環(huán)里只執(zhí)行一個指令,攻擊時可用不同的時鐘噪聲導致處理器誤操作。不需要小心地與時鐘信號同步,只需要隨機制造噪聲就可在數(shù)次攻擊內(nèi)成功。插入噪聲是相對容易的,無需使用外部發(fā)生器,瞬間短路晶振即可。當諧振器在不同的泛音上產(chǎn)生震蕩會發(fā)出很多噪聲。大部分情況下需要在確定的時鐘周期內(nèi)獲得所需結果,在這種情況下用信號發(fā)生器更好。
使用時鐘噪聲來攻擊某些微控制器也許是很困難的。例如德儀的MPS430微控制器在內(nèi)部RC震蕩器工作的啟動模塊。很難與內(nèi)部時鐘同步,攻擊時很難估計精確的時間。一些智能卡在處理器指令流里會隨機插入延遲,使得攻擊更為困難。使用功耗分析會有幫助,但要求非常昂貴的設備來實時獲得參考信號。
2、電源噪聲攻擊
電源供應電壓的波動會導致晶體管閾值電平的漂移。結果就是一些觸發(fā)器在不同的時間里采樣它們的輸入,或讀出錯誤的安全熔絲的狀態(tài)。通常用瞬間增加電源電壓或電壓跌落來制造噪聲,一般在10個時鐘周期內(nèi)。電源噪聲通常用在微控制器的程序接口上,能影響處理器運行或硬件安全電路。一般地,弱點比時鐘噪聲更難找到并利用,因為對于時域參數(shù),振幅,上升/下降時間都是變量。
一個例子是上例提到的攻擊MC68C05B6.如果在執(zhí)行AND $0100指令時電源電壓減少50-70%,處理器從EEPROM中取出的值是FFh而不是實際的值。這會對應熔絲未加密狀態(tài)。竅門是小心計算執(zhí)行時間來減少電源電壓,否則處理器會停止運行或進入復位狀態(tài)。這種任務并不難,復位后目標指令在第一個一百周期內(nèi)被執(zhí)行。破解者可以使用矢量發(fā)生器或構建一個自己的噪聲源。
另一個是微芯的老舊的PIC16F84。芯片的擦除操作會解除安全保護。但同時會芯片上程序和數(shù)據(jù)存儲器中的內(nèi)容。安全保護電路在硬件設計上是在安全熔絲復位之前擦掉存儲器。但我們發(fā)現(xiàn)在芯片擦除操作時電源電壓幾微秒內(nèi)增加到大約10V,會中斷存儲器擦除操作,但安全熔絲正常完成復位,這使得有可能讀出存儲器里的內(nèi)容。如此高壓需要謹慎使用,如果時間過長會損傷芯片。新版本的PIC16F84A增加了防欠壓和過壓攻擊的能力。如果電源電壓低于3V或6V,通過編程接口的任意修改存儲器的操作會被立即中斷。
不是一直需要電源噪聲超過電源電壓范圍的規(guī)格。例如,PIC18F84A微控制器,保護機制可以阻止在芯片擦除操作開始后使用大于50mV的噪聲。那會導致中止程序存儲器的擦除操作但不會擦掉熔絲。
上述例子表明噪聲攻擊時無需特殊工具就有很好的效果。智能卡里有時鐘監(jiān)控電路但極少微控制器有。
芯片密鑰存儲于靜態(tài)RAM里,在破解某些芯片時RAM內(nèi)容丟失,從而保護密鑰不被竊取。很多芯片使用密鑰或類似的方法進行加密和別的安全相關的計算,需要不能被讀出或改變。最普遍的解決方法是把安全密鑰放在帶篡改傳感器的易失存儲器中。一旦檢測到發(fā)生篡改,易失傳感器會掉電或短路到地。但如果數(shù)據(jù)保留時間大于破解者打開元器件并對存儲器上電的時間,那保護機制就被摧毀了。
在早期芯片解密者發(fā)現(xiàn)低溫能將SRAM的數(shù)據(jù)保存時間增加到幾秒甚至幾分鐘。對于那個時候的元器件,發(fā)現(xiàn)零下20度就可以增加數(shù)據(jù)保存時間,并且會隨著溫度的降低而增加保持的時間。有些就增加了溫度傳感器,溫度低于零下20度就觸發(fā)篡改事件,立即清零存儲器。本次試驗是重復這個工作,察看2000年后的產(chǎn)品是否也有此特性。
另一個需要關注的是即使部分內(nèi)容已被破壞,安全信息也能被復原。假設破解者獲得了n=128位密鑰中的m=115位,也就是90%的信息。他可以通過搜索n!/(m!(n-m)!=128!/(115!13!)=2.12*1017~258個可能的密鑰。通過1萬臺電腦,每臺每秒進行10億次搜索密鑰的操作,破解者只需6個小時就能搜遍所有密鑰。如果只有80%的信息,也就是知道128位密鑰中的103位,那就有2.51*1026~288種可能。幾乎增大了一百倍,破解者要花百萬年來搜索密鑰,故認為均勻的128位密鑰不能被恢復。
軟件攻擊是使用處理器通信接口,利用協(xié)議、加密算法或這些算法中的安全漏洞來進行攻擊的。軟件攻擊取得成功的一個典型事例是對早期ATMEL AT89C 系列單片機的攻擊。攻擊者利用了該系列單片機擦除操作時序設計上的漏洞,使用自編程序在擦除加密鎖定位后,停止下一步擦除片內(nèi)程序存儲器數(shù)據(jù)的操作,從而使加過密的單片機變成沒加密的單片機,然后利用編程器讀出片內(nèi)程序。目前在其他加密方法的基礎上,可以研究出一些設備,配合一定的軟件,來做軟件攻擊。
該技術使用異常工作條件來使處理器出錯,然后提供額外的訪問來進行攻擊。使用最廣泛的要數(shù)電壓沖擊和時鐘沖擊,低電壓和高電壓攻擊可用來禁止保護電路工作或強制處理器執(zhí)行錯誤操作,而時鐘瞬態(tài)跳變會復位保護電路同時不破壞受保護信息,電源和時鐘瞬態(tài)跳變可以在某些處理器中影響單條指令的解碼和執(zhí)行。
該技術是直接暴露芯片內(nèi)部連線,然后觀察、操控、干擾單片機以達到攻擊目的。該技術通常以高時間分辨率來監(jiān)控處理器在正常操作時所有電源和接口連接的模擬特性,并通過監(jiān)控它的電磁輻射特性來實施攻擊。因為單片機是一個活動的電子器件,當它執(zhí)行不同的指令時,對應的電源功率消耗也相應變化。這樣通過使用特殊的電子測量儀器和數(shù)學統(tǒng)計方法分析和檢測這些變化,即可獲取單片機中的特定關鍵信息。
以上芯片解密技術可以分成兩大類,一類是侵入型攻擊需要破壞封裝,然后借助半導體測試設備、顯微鏡和微定位器,在專門的實驗室花上幾小時甚至幾周時間才能完成,所有的微探針技術都屬于侵入型攻擊;類是非侵入型攻擊,被攻擊的單片機不會被物理損壞。
Atmel | Feeling | Freescale | Fujitsu | Hitachi |
Holtek | Hynix | Infineon | Intel | Lattice |
Macronix | Maxim | Microchip | Mitsubishi | Motorola |
Myson | NEC | NTK | Nuvoton | NXP |
Philips | Rohm | Renesas | Samsung | Silicon |
SST | ST | STC | Syncmos | TI |
PIC | 51 | AVR | CPLD | Winbond |