假如您是一位電子工程師,受聘于一家公司,職責是為汽水自動售貨機添加嵌入式安全性能。在面試時,憑著對加密技術(shù)的淵博知識,您給新雇主留下了深刻印象。現(xiàn)在,表現(xiàn)的時候到了。從表面看來,這個工作應(yīng)該像利用優(yōu)良的加密算法挑選芯片一樣簡單,但現(xiàn)實世界可不是這樣簡單的。
自動售貨機等嵌入設(shè)備的安全隱憂
為什么要召集大隊人馬來保護汽水自動售貨機?因為汽水自動售貨機存在安全隱憂,而且世界各地的機器制造商都感受到了這種實際存在的問題。通過機器固件提高安全性呈現(xiàn)出日益上升的趨勢,雖然乍一看來,這些機器似乎并不需要這樣的安全性能。汽水自動售貨機是本文所選取的一個例子,你不難想到其他這樣的例子:例如停車計時器、自助洗衣房里的洗衣機和烘干機、收費亭和售票機等。
目前的售貨機正在實現(xiàn)聯(lián)網(wǎng),以便提供有助于削減運營成本和增加收益的直觀實時信息?,F(xiàn)在,機主可以知道哪臺機器需要維修,而且掌握著相關(guān)資料,可以選擇最適合的產(chǎn)品組合并安裝機器。實時信息是對抗競爭和盜賊的有利武器。利用這一信息流的競爭者可以利用這些信息來提高產(chǎn)品的競爭攻勢,也可隱藏機主信息(例如,拒絕服務(wù)攻擊)。同樣,現(xiàn)在盜賊也知道可以搶劫哪臺機器或者何時進行搶劫。
圖1 越來越多的應(yīng)用領(lǐng)域發(fā)現(xiàn)了實現(xiàn)機器聯(lián)網(wǎng)的價值,從而引發(fā)了對嵌入式安全的需求
如何實施保護
上面做了簡要的介紹,得出的結(jié)論是:產(chǎn)品設(shè)計者必須保護由自動售貨機發(fā)送的信息。一種相當簡單的方法就是對網(wǎng)絡(luò)上的信息進行加密,并防止自動收貨機內(nèi)的密鑰和固件被非法訪問。
網(wǎng)絡(luò)信息的加密簡單而直接。首先,確定一種良好的加密算法,最佳候選算法是那些公開算法而非私密性算法,因為公開算法已經(jīng)通過了公眾檢驗,高級加密標準(AES)算法便是一個很好的例子;接著,在自動售貨機的MCU中應(yīng)用該算法。為了實現(xiàn)這一點,您可以通過在固件中嵌入該算法,也可以選擇在硬件中固化該算法的MCU。
最后但同樣重要的是,按照推薦模式使用算法。為了通過加密算法實現(xiàn)信息的安全性,所需的不僅僅是將明文順序全部打亂以獲得密文。大部分公開的算法都有運行的推薦模式,以此來保證它們加密數(shù)據(jù)的保密性。
AES可用的樣例模式包括密碼段鏈接(CBC)、密碼反饋(CFB)、填充密碼塊鏈接(PCBC)、輸出反饋(OFB)和計數(shù)器(CTR),可將他們按照不同組合方式來加以使用,從而提高加密強度。有關(guān)這些算法類型和使用的深入討論不屬于本文討論的范圍。需要知道的一點是,僅僅擁有這些算法并不能保障安全。
防止無正當理由獲悉密鑰或未經(jīng)授權(quán)訪問固件,這種做法不是那么直接,因此理解起來難度較大。對于許多安全措施而言,這往往最容易產(chǎn)生弱點。這一弱點源自對攻擊者資源的低估和對硬件防入侵篡改的集成電路價值的低估。通常,人們把加密等同于安全,因此,沒有看到防篡改保護集成電路的投資價值。
選擇安全MCU,還是采用其他方法
您作為一名受人尊重的電子工程專業(yè)人士,通過閱讀本雜志保持與當前業(yè)界趨勢同步,您能夠快速分析事實,并提出十分簡單的解決方案:利用安全MCU替換自動售貨機中的MCU,并增加少量的額外固件。安全MCU可以保護固件和密鑰,加密通信,并實現(xiàn)硬件防篡改和防侵入。
事實上,它們可以檢測到多種復雜的攻擊,并采取從簡單的延遲應(yīng)答到關(guān)機的各種措施。安全MCU是銀行用來運營ATM機的IC芯片?,F(xiàn)在讓您設(shè)計一個解決方案,方案中不采用安全MCU,能辦到嗎?
事實是,安全MCU成本更高,而且,您的公司也許要堅持使用它們的標準處理器。安全MCU的編寫代碼也比較難,導致更高的工程成本。
現(xiàn)實世界中的工程解決方案
當市場營銷、采購乃至工程師同事們集體投票,對一個看上去具有絕對把握的解決方案進行表決,作為一名工程師,您該怎么做?重新設(shè)定您的期望。我們的做法是,這意味著,不必依賴安全MCU,不必期望固件的更大內(nèi)存,也不要忽視任何改變。
重新評估您的策略。不是把一切都集成一團,以放入安全MCU的單個保護外殼中,而是以不損害安全性能的方式,把系統(tǒng)分解成非安全的和安全的部分。非安全的部分將包含售貨機的核心業(yè)務(wù)(銷售)邏輯,而安全的部分將包括兩個子組件,一個用于保護密鑰,另一個用于驗證系統(tǒng)完整性。
密鑰保護需要在物理保護之下進行存儲和使用,這種物理保護與安全MCU所提供的安全保護相類似。這需要采用一種集成電路,這種集成電路須與安全MCU一樣具備較強的物理性能,此外,無須其他東西。[!--empirenews.page--]
您也必須保護系統(tǒng)的完整性,防止系統(tǒng)運行中受到流氓固件的攻擊,這些流氓固件可繞過加密,篡改數(shù)據(jù)或向未經(jīng)授權(quán)的接收端發(fā)送數(shù)據(jù)。系統(tǒng)完整性的最好保護是,利用哈希算法檢測固件內(nèi)未經(jīng)授權(quán)的改變,并采取相應(yīng)措施。
哈希算法生成一種被稱為給定信息摘要的壓縮指紋。就像人類的指紋一樣,這個摘要是唯一的。被廣泛采用的著名的安全哈希算法(SHA)就是一個哈希算法的范例。為檢測固件篡改,在使用中,您需要定期地產(chǎn)生它的現(xiàn)場摘要,并與出廠時生成的參考進行比較。您也許已經(jīng)在問,是什么能保證任何人都無法偽造摘要或參考。
我們的做法是,我們需要保證摘要和它的參考不被偽造。在輸入哈希算法生成出廠參考之前,我們通過向固件中追加一條任意長度的附加信息的辦法實現(xiàn)這一點。如果您保證附加信息是保密的,那么,只有您才能夠重新生成相同的摘要,這就是您能保證摘要不被偽造的方法。
在使用中,保證參考不被現(xiàn)場偽造的方法是:將它存儲在安全存儲器中。若要知道摘要沒有被偽造這一事實,必須進行身份驗證,本例中,要實現(xiàn)這一點,需要知道嵌入在安全集成電路中的密鑰。
所以,加密僅僅是對數(shù)據(jù)加擾而已,與此相比,身份認證是安全系統(tǒng)的真正基礎(chǔ)。明白了這一點,值得注意的是:哈希密碼算法本身很適合身份認證,這是由于好的哈希算法必須具有3個基本特征。
首先,它們的運算是不可逆的。這意味著,不可能從摘要中恢復出原始信息,所以,私密信息是安全的。第二點是非沖突性,即各種不同的輸入必須生成獨一無二的摘要。在驗證時,唯一的摘要可提升對固件完整性的信任。第三個同時也是最終的性質(zhì)被稱為雪崩,是指哈希算法輸入的任何改變,無論多么小,都會產(chǎn)生摘要的顯著變化。
存在一些經(jīng)過仔細分析的公開方法,這些方法可允許使用加密算法,以實現(xiàn)傳統(tǒng)上由哈希算法實現(xiàn)的功能。這類系統(tǒng)可同時實現(xiàn)身份驗證和加密。同樣,加密算法本身很適合數(shù)據(jù)加擾,由它們所帶來的安全性與密鑰一樣強大。哈希算法的身份認證特點具有互補性,可實現(xiàn)安全系統(tǒng)中密鑰的安全管理。
不同的密碼算法可保護系統(tǒng)的不同層面的安全,在對它們的微妙作用、強度、差異和相互影響有了清晰的了解之后,就可以使用更少的算法組合來實現(xiàn)牢靠的安全性能。對于像我們所面臨的這樣的挑戰(zhàn)而言,這尤其重要,因為我們的代碼空間十分有限。
配套的安全集成電路
對于您的任務(wù)而言,您需要固件空間以及來自防篡改和侵入的安全集成電路的資源。可以通過配套的安全集成電路來解決這一問題。這些安全集成電路與安全MCU一樣,具有硬件防篡改和侵入的功能,但做了一些簡化,可為各種具體應(yīng)用提供相應(yīng)的功能,因而成本更低。
圖2 作為配套的安全裝置的集成電路很小,成本較低,需要非常少的系統(tǒng)資源,但卻可提供與安全MCU相同的物理保護
在我們的例子中,配套的安全集成電路將保護和管理密鑰,以對由加密所帶來的安全性進行互補。它們也可進行各種類型的身份認證,能夠?qū)崿F(xiàn)系統(tǒng)完整性驗證。它們還可實現(xiàn)許多其他功能,包括安全存儲以及可信固件的現(xiàn)場升級。通過提供智能和易用的API,它們可實現(xiàn)這一點,因此,使用配套的安全集成電路不需要深入掌握密碼學,也無須較多代碼空間。
這與那些提供處理和存儲功能的安全MCU不同,因此,您可將所有需要的函數(shù)寫入固件里,而配套的安全集成電路中的函數(shù)是硬連線的,使得它們很緊湊,因而成本更低。Atmel系列“加密認證”產(chǎn)品就是一個例子。通過采用這些低成本(大量購買時的單價為0.5美元)的集成電路芯片,可以在已有平臺上編寫代碼并追加在這個小小的額外固件上。