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