綜述你曾經(jīng)可靠的手機突然死機,鍵盤全部罷工,電話無法撥打或接聽,短信也不能收發(fā),甚至正常關(guān)機都不行。無奈之下,你取下電池強行關(guān)機,但重新開機后手機再次死機。這顯然不是普通故障。幾小時后,你發(fā)現(xiàn)不止你的手機這樣,還有上百萬人跟你一樣,手機突然無故死機。 這是我們遭受到一場大規(guī)模硬件攻擊之后可能發(fā)生的情況。這場攻擊的根源在于越來越復雜的集成電路,它們正是人們?nèi)粘R蕾嚨母鞣N設(shè)備的核心部件?,F(xiàn)代集成電路已經(jīng)非常復雜,任何一個工程師團隊都不足以了解他們設(shè)計電路中的所有部分。因此,集成電路的研發(fā)工作現(xiàn)在都由世界各地的團隊共同完成,每個團隊只負責整個設(shè)計的一部分,在印刷電路板之前,才把各部分設(shè)計集成起來。電路復雜性也決定了根本不可能用窮舉法來測試它。芯片中的任何一個編碼缺陷往往都會潛伏很長的時間,直至被一些觸發(fā)條件(如特定的數(shù)據(jù)或時間)激活——這有點像木馬病毒,在發(fā)作前會一直安全地存儲在硬件中。 硬件攻擊的物理本質(zhì)使得它的潛在危害遠勝病毒及其他惡意軟件。軟件病毒可在機器之間傳播,但從理論上說,我們可從任何受感染的系統(tǒng)中徹底清除它們。然而計算機在遭受硬件攻擊后是無法修復的,至少目前還不行,除非更換硬件。 修復系統(tǒng)的惡意硬件非常困難。所有使用微處理器的設(shè)備,甚至可以說所有的電子設(shè)備,都很脆弱。集成電路在現(xiàn)代通信系統(tǒng)及全球電力供應系統(tǒng)里處于核心地位,在飛機上負責襟翼的定位,在汽車防抱死剎車系統(tǒng)(ABS)中負責調(diào)節(jié)制動力,在銀行保險庫和 ATM機上負責安全授權(quán),在股票市場負責交易運作。集成電路還是武裝部隊使用的幾乎所有關(guān)鍵系統(tǒng)的核心??梢韵胂?,一起精心策劃的硬件攻擊,能夠讓金融系統(tǒng)癱瘓,或者讓軍隊或政府的關(guān)鍵部門陷入混亂。 由于硬件木馬在激活之前可以隱藏很多年,它們也許、甚至非??赡芤驯恢踩胗布毕葜辛恕km然到目前為止尚未證實有大規(guī)模硬件攻擊發(fā)生,但是這類攻擊是不可避免的。 從基于軟件的網(wǎng)絡(luò)攻擊中我們可以看得非常清楚,即使很少一部分人不懷好意地使用黑客技術(shù),都會造成巨大的危害。因此,我們需要考慮的問題不是硬件攻擊是否會發(fā)生,而攻擊將采用何種方式?攻擊步驟是什么?而最重要的問題或許是,如何檢測并阻止攻擊,或者至少降低攻擊帶來的損失。 模塊化
出錯的時候: 芯片會一直正常工作,直到其中的流氓電路被激活并發(fā)起攻擊。觸發(fā)條件可以有多種形式,如特定數(shù)據(jù)和時間,或者是外部發(fā)送的特定編碼格式數(shù)據(jù)包中的“喚醒呼叫”。一旦激活,木馬隨即就會公開或秘密地展開攻擊。
簡單來講,集成電路,也就是我們常說的芯片,是一種刻蝕在半導體晶片(通常是硅)上的電路?,F(xiàn)代芯片非常小,最大也就幾平方厘米,但可容納數(shù)十億個晶體管。由于現(xiàn)代芯片擁有如此高的復雜性,一些可能被木馬利用的漏洞也存在其中。 根據(jù)功能不同,現(xiàn)代芯片可劃分成若干個子單元,即模塊(block)。以手機處理器為例,有的模塊用于存儲相機拍攝的視頻,有的用于把視頻壓縮成 MPEG文件,有的可將 MPEG文件轉(zhuǎn)換成可無線傳輸?shù)母袷?。模塊間的數(shù)據(jù)通過系統(tǒng)總線(system bus)傳輸,后者就像是連接芯片不同部分的高速公路。 當一家公司著手設(shè)計新款芯片時,首先要規(guī)劃出芯片所需的功能模塊。其中一些模塊是自主設(shè)計的,要么從零開始設(shè)計,要么對自家早期產(chǎn)品加以改進。其他一些功能模塊,比如通過天線接收數(shù)據(jù)的模塊,則可以從專門開發(fā)特定功能的第三方那里獲得使用許可。 從第三方那里獲取的模塊并不是一塊塊實際的晶片,因為制造集成電路的目的就是要把所有功能模塊印刷到同一塊晶片上。相反,那些模塊是以數(shù)據(jù)文件的形式提供的,其中完整地描述了模塊被刻蝕到硅片上的方法。這樣的文件可以包含數(shù)千條指令,人們要想讀懂其中的內(nèi)容幾乎是不可能的。模塊供應商通常還會向購買者提供一些軟件,模塊買家可以用它來模擬該模塊在不同情況下的使用效果。在芯片開始印制之前,設(shè)計公司還會將所有模塊集成在一起,建立模型并使用計算機進行仿真測試,以保證芯片能夠按照設(shè)計初衷正常工作。只有模型通過這一系列測試,公司才會開始漫長而且耗資巨大的實體芯片制造。 這樣的設(shè)計流程還是會留下漏洞。由于流氓硬件(即存在漏洞的電路)需要特定的觸發(fā)條件來激活,芯片制造商不得不對模型進行盡可能全面的觸發(fā)測試,以保證硬件是“干凈”的。這一點完全不可能做到,因為宇宙中可能的觸發(fā)方式無窮無盡。觸發(fā)分為兩種:一種叫內(nèi)部觸發(fā),前面手機的例子中基于時間的觸發(fā)就屬于這一種;另一種則是外部觸發(fā),例如接收包括特定字符串的文本信息或電子郵件。即使設(shè)計公司竭盡所能進行測試,也只能覆蓋所有可能輸入中非常小的一部分。在實際測試中,只要模塊能按預期工作,制造商一般就認為它們功能正常。 安全芯片![]() |
|