(1)過錯産生(shēng)技(jì)術(shù)
該技(jì)術(shù)使用異常工作(zuò)條件來(lái)使處理(lǐ)器(qì)出錯,然後提供額外的訪問來(lái)進行(xíng)攻擊。使用最廣泛的過錯産生(shēng)攻擊手段包括電(diàn)壓沖擊和(hé)時(shí)鍾沖擊。低(dī)電(diàn)壓和(hé)高(gāo)電(diàn)壓攻擊可(kě)用來(lái)禁止保護電(diàn)路工作(zuò)或強制(zhì)處理(lǐ)器(qì)執行(xíng)錯誤操作(zuò)。時(shí)鍾瞬态跳(tiào)變也許會(huì)複位保護電(diàn)路而不會(huì)破壞受保護信息。電(diàn)源和(hé)時(shí)鍾瞬态跳(tiào)變可(kě)以在某些(xiē)處理(lǐ)器(qì)中影(yǐng)響單條指令的解碼和(hé)執行(xíng)。
(2)軟件攻擊
該技(jì)術(shù)通(tōng)常使用處理(lǐ)器(qì)通(tōng)信接口并利用協議、加密算(suàn)法或這些(xiē)算(suàn)法中的安全漏洞來(lái)進行(xíng)攻擊。軟件攻擊取得(de)成功的一個(gè)典型事例是對早期ATMEL AT89C 系列單片機的攻擊。攻擊者利用了該系列單片機擦除操作(zuò)時(shí)序設計(jì)上(shàng)的漏洞,使用自編程序在擦除加密鎖定位後,停止下一步擦除片內(nèi)程序存儲器(qì)數(shù)據的操作(zuò),從而使加過密的單片機變成沒加密的單片機,然後利用編程器(qì)讀出片內(nèi)程序。
目前在其他加密方法的基礎上(shàng),可(kě)以研究出一些(xiē)設備,配合一定的軟件,來(lái)做(zuò)軟件攻擊。
近期國內(nèi)出現了了一種51芯片解密設備(成都一位高(gāo)手搞出來(lái)的),這種解密器(qì)主要針對SyncMos. Winbond,在生(shēng)産工藝上(shàng)的漏洞,利用某些(xiē)編程器(qì)定位插字節,通(tōng)過一定的方法查找芯片中是否有(yǒu)連續空(kōng)位,也就是說查找芯片中連續的FF FF字節,插入的字節能夠執行(xíng)把片內(nèi)的程序送到片外的指令,然後用解密的設備進行(xíng)截獲,這樣芯片內(nèi)部的程序就被解密完成了。
(3) 電(diàn)子探測攻擊
該技(jì)術(shù)通(tōng)常以高(gāo)時(shí)間(jiān)分辨率來(lái)監控處理(lǐ)器(qì)在正常操作(zuò)時(shí)所有(yǒu)電(diàn)源和(hé)接口連接的模拟特性,并通(tōng)過監控它的電(diàn)磁輻射特性來(lái)實施攻擊。因為(wèi)單片機是一個(gè)活動的電(diàn)子器(qì)件,當它執行(xíng)不同的指令時(shí),對應的電(diàn)源功率消耗也相應變化。這樣通(tōng)過使用特殊的電(diàn)子測量儀器(qì)和(hé)數(shù)學統計(jì)方法分析和(hé)檢測這些(xiē)變化,即可(kě)獲取單片機中的特定關鍵信息。
目前RF編程器(qì)可(kě)以直接讀出老的型号的加密MCU中的程序,就是采用這個(gè)原理(lǐ)。
(4)探針技(jì)術(shù)
該技(jì)術(shù)是直接暴露芯片內(nèi)部連線,然後觀察、操控、幹擾單片機以達到攻擊目的。
2. 侵入型芯片解密的一般過程
侵入型攻擊的第一步是揭去芯片封裝(簡稱“開(kāi)蓋”有(yǒu)時(shí)候稱“開(kāi)封”,英文為(wèi)“DECAP”,decapsulation)。有(yǒu)兩種方法可(kě)以達到這一目的:第一種是完全溶解掉芯片封裝,暴露金屬連線。第二種是隻移掉矽核上(shàng)面的塑料封裝。第一種方法需要将芯片綁定到測試夾具上(shàng),借助綁定台來(lái)操作(zuò)。第二種方法除了需要具備攻擊者一定的知識和(hé)必要的技(jì)能外,還(hái)需要個(gè)人(rén)的智慧和(hé)耐心,但(dàn)操作(zuò)起來(lái)相對比較方便,完全家(jiā)庭中操作(zuò)。
芯片上(shàng)面的塑料可(kě)以用小(xiǎo)刀揭開(kāi),芯片周圍的環氧樹(shù)脂可(kě)以用濃硝酸腐蝕掉。熱的濃硝酸會(huì)溶解掉芯片封裝而不會(huì)影(yǐng)響芯片及連線。該過程一般在非常幹燥的條件下進行(xíng),因為(wèi)水(shuǐ)的存在可(kě)能會(huì)侵蝕已暴露的鋁線連接 (這就可(kě)能造成解密失敗)。
接着在超聲池裏先用丙酮清洗該芯片以除去殘餘硝酸,并浸泡。
最後一步是尋找保護熔絲的位置并将保護熔絲暴露在紫外光下。一般用一台放大(dà)倍數(shù)至少(shǎo)100倍的顯微鏡,從編程電(diàn)壓輸入腳的連線跟蹤進去,來(lái)尋找保護熔絲。若沒有(yǒu)顯微鏡,則采用将芯片的不同部分暴露到紫外光下并觀察結果的方式進行(xíng)簡單的搜索。操作(zuò)時(shí)應用不透明(míng)的紙片覆蓋芯片以保護程序存儲器(qì)不被紫外光擦除。将保護熔絲暴露在紫外光下5~10分鍾就能破壞掉保護位的保護作(zuò)用,之後,使用簡單的編程器(qì)就可(kě)直接讀出程序存儲器(qì)的內(nèi)容。
對于使用了防護層來(lái)保護EEPROM單元的單片機來(lái)說,使用紫外光複位保護電(diàn)路是不可(kě)行(xíng)的。對于這種類型的單片機,一般使用微探針技(jì)術(shù)來(lái)讀取存儲器(qì)內(nèi)容。在芯片封裝打開(kāi)後,将芯片置于顯微鏡下就能夠很(hěn)容易的找到從存儲器(qì)連到電(diàn)路其它部分的數(shù)據總線。由于某種原因,芯片鎖定位在編程模式下并不鎖定對存儲器(qì)的訪問。利用這一缺陷将探針放在數(shù)據線的上(shàng)面就能讀到所有(yǒu)想要的數(shù)據。在編程模式下,重啓讀過程并連接探針到另外的數(shù)據線上(shàng)就可(kě)以讀出程序和(hé)數(shù)據存儲器(qì)中的所有(yǒu)信息。
還(hái)有(yǒu)一種可(kě)能的攻擊手段是借助顯微鏡和(hé)激光切割機等設備來(lái)尋找保護熔絲,從而尋查和(hé)這部分電(diàn)路相聯系的所有(yǒu)信号線。由于設計(jì)有(yǒu)缺陷,因此,隻要切斷從保護熔絲到其它電(diàn)路的某一根信号線(或切割掉整個(gè)加密電(diàn)路)或連接1~3根金線(通(tōng)常稱FIB:focused ion beam),就能禁止整個(gè)保護功能,這樣,使用簡單的編程器(qì)就能直接讀出程序存儲器(qì)的內(nèi)容。
雖然大(dà)多(duō)數(shù)普通(tōng)單片機都具有(yǒu)熔絲燒斷保護單片機內(nèi)代碼的功能,但(dàn)由于通(tōng)用低(dī)檔的單片機并非定位于制(zhì)作(zuò)安全類産品,因此,它們往往沒有(yǒu)提供有(yǒu)針對性的防範措施且安全級别較低(dī)。加上(shàng)單片機應用場(chǎng)合廣泛,銷售量大(dà),廠商間(jiān)委托加工與技(jì)術(shù)轉讓頻繁,大(dà)量技(jì)術(shù)資料外瀉,使得(de)利用該類芯片的設計(jì)漏洞和(hé)廠商的測試接口,并通(tōng)過修改熔絲保護位等侵入型攻擊或非侵入型攻擊手段來(lái)讀取單片機的內(nèi)部程序變得(de)比較容易。
芯片解密技(jì)術(shù)發展到今天,其發展一直是伴随着芯片的設計(jì)以及使用而在發展。由于客戶對IC解密/單片機解密的需求,産生(shēng)了如龍芯世紀等等的解密機構,也推動了解密技(jì)術(shù)的更新和(hé)發展。
目前加密的最新技(jì)術(shù)不斷出現、IC解密燒斷數(shù)據腳、解密開(kāi)蓋過程中存在的漏酸的可(kě)能以及電(diàn)路修改過程中誤操作(zuò)等,這些(xiē)都有(yǒu)可(kě)能造成芯片解密的失敗;另外目前單片機的程序存儲是靠內(nèi)部電(diàn)子作(zuò)為(wèi)介質來(lái)存儲的,當芯片使用周期比較長或受到外部強磁場(chǎng)等環境的影(yǐng)響,也會(huì)導緻 芯片解密 失敗。如果采用純軟件的方式破解,和(hé)母片的編程軟件和(hé)編程方式甚至編程語言等有(yǒu)很(hěn)大(dà)關系,也存在失敗的概率。