嵌入式系統(tǒng)應(yīng)用安全問題解決之道研究
硬件可以解決許多安全性問題。例如,Rabbit Semiconduct公司Rabbit 4000中的高級加密標(biāo)準(zhǔn)(AES)加密加速功能可以與SSL堆棧一起使用。它能加快處理過程,但它只能為于8位微控制器和另一個網(wǎng)絡(luò)設(shè)備之間傳送的數(shù)據(jù)提供安全性。它不能保證信息的正確性,或來自特定的源,只能保證從A點到B點傳輸?shù)臄?shù)據(jù)不會被篡改或瀏覽。
SSL/TLS提供端點的認證和加密,但錯誤的配置很容易受到如中間人攻擊(man-in-the-middle attack)之類的影響。由于會被不恰當(dāng)?shù)氖褂茫蚤_發(fā)人員不但需要了解怎樣使用安全軟件和硬件還要了解怎樣不濫用或錯用它們。簡單的在硬件上做文章并不意味著這種方法在長期運行中也能一直管用。安全數(shù)字音樂協(xié)會(SDMI)是一個數(shù)字版權(quán)管理(DRM)機構(gòu),它使用基于硬件的密鑰系統(tǒng)實現(xiàn)數(shù)字水印方案。SDMI被發(fā)現(xiàn)是有缺陷的,并因此在互聯(lián)網(wǎng)檔案中不見蹤影。它與DVD電影中使用的內(nèi)容加擾系統(tǒng)(CSS)非常相似。
表1:常用加密標(biāo)準(zhǔn)。 |
表2:常用加密協(xié)議。 |
SDMI最初是使用唯一的、不可更改的密鑰。但通常情況下,這樣做必須使用更多的硬件來防止篡改。對于物理安全不成問題的許多系統(tǒng)來說,諸如Trusted Computing Group公司的信任平臺模塊(TPM)這樣的平臺就可以為系統(tǒng)提供基本的安全性。
最早以獨立安全芯片方式實現(xiàn)的許多TPM已被廣泛用于IBM筆記本電腦等PC主板中。威盛科技(VIA)公司開發(fā)的Padlock版本則增加了像AES加密之類的性能。這類平臺可以支持許多操作系統(tǒng)特性,比如Vista的加密文件系統(tǒng)BitLocker。
Zilog公司開發(fā)的基于32位ARM922T的Zatara微控制器集成了保證微控制器安全所要求的大部分功能,包括安全啟動ROM和篡改檢測支持(圖1)。更值得一提的是它帶有40kB的安全RAM,如果篡改檢測電路受到攻擊,這部分RAM將歸零。
圖1:Zilog公司的32位Zatara安全事務(wù)微控制器采用了ARM922內(nèi)核,與安全有關(guān)的特性包括安全啟動ROM和電池支撐的SRAM。 |
篡改檢測早已有之。但它變得越來越普遍,并在向食物鏈上游的更大處理器轉(zhuǎn)移。大多數(shù)64位處理器配備了外部硬件電路來解決這個問題,就像附加了一個TPM一樣。誠然,從里到外保證系統(tǒng)的安全對整個安全系統(tǒng)來說至關(guān)重要。
當(dāng)然,極端安全的系統(tǒng)只有在某些特殊環(huán)境下才有要求,例如控制核反應(yīng)堆或管理大量匯款。在這些情況下,為控制微處理器而增加成本和復(fù)雜性不是問題。
軟件端的安全性
不管從哪里開始,軟件對系統(tǒng)安全性都至關(guān)重要。顯然,一開始就運行安全代碼是一個最好用硬件方案解決的問題。但一旦運行,系統(tǒng)就需要額外的安全軟件來管理系統(tǒng)安全性。
General Software公司推出的帶StrongFrame的嵌入式BIOS是解決系統(tǒng)基礎(chǔ)軟件問題的一種方法。它的啟動安全程序(BSA)是一種固件應(yīng)用程序,能在硬件和應(yīng)用程序之間建立信任關(guān)系。它設(shè)計用于防止由于BIOS、操作系統(tǒng)或應(yīng)用程序進行的未授權(quán)篡改而變得不再安全的系統(tǒng)操作。它使用數(shù)字簽名跟蹤受信任的對象。20kB模塊可以在ROM中壓縮50%。系統(tǒng)可以使用Firmbase Technology公司的信任運算庫(TCB)進行擴展,而TCB支持允許定制認證和授權(quán)的插件式安全認證機制。
General Software公司的方法可用于許多標(biāo)準(zhǔn)處理器架構(gòu)和操作系統(tǒng),而飛思卡爾公司的Mocana設(shè)備安全框架(DSF)則主要用于飛思卡爾的處理器,如PowerQUICC系列。PowerQUICC幾乎從推出伊始就有了加密引擎,因為它的使用對象包括了提供虛擬專用網(wǎng)(VPN)支持的路由器和網(wǎng)關(guān)。硬件加密功能顯著提高了安全信息的吞吐量。
Mocana公司有許多軟件產(chǎn)品,如嵌入式安全套件(ESS)。Mocana針對飛思卡爾處理器開發(fā)的設(shè)備安全框架模塊可以將這個軟件與PowerQUICC安全引擎集成在一起,因此開發(fā)人員不必直接處理硬件。這些模塊支持SSL服務(wù)器、SSL客戶端、SSH服務(wù)器、SSH客戶端、IPsec/IKEv1和IKEv2以及認證管理客戶端(CMC)?;陂_放標(biāo)準(zhǔn)設(shè)計的系統(tǒng)兼容RFC,并能很好地支持多核環(huán)境。
提高安全性
將安全加速和支持合并在硬件中有它的優(yōu)勢,但這并不是唯一的方式。將支持功能放在微控制器外面實現(xiàn)通常更容易,并且可能更適合某些特殊的應(yīng)用場合。
使用安全存儲產(chǎn)品是在具有I2C接口的任何微控制器上增加基本安全支持的一種簡單方法,比如使用Atmel公司的AT88SC25616C加密存儲器(圖2)。系統(tǒng)自身具有完備的安全要素,認證全部在芯片內(nèi)部完成。
圖2:Atmel的AT885C2561C有多個密碼用來限制對EEPROM中區(qū)內(nèi)數(shù)據(jù)的訪問。在成功進行認證交換后才能訪問數(shù)據(jù)。 |
通常,主微控制器上的一個應(yīng)用可用作進入安全存儲器的網(wǎng)關(guān),而該存儲器使用外部源(如用戶或遠端程序)提供的密鑰。這樣就能訪問芯片內(nèi)部的存儲器,而這個芯片通常是另外一個密鑰,可被主機用來執(zhí)行其它安全功能,如認證一個下載的更新或獲得對遠程系統(tǒng)的訪問權(quán)。
大多數(shù)安全存儲器提供這一等級的支持。Atmel還提供具有多個密鑰的更復(fù)雜的層次結(jié)構(gòu),可選擇訪問芯片內(nèi)不同的存儲區(qū)。不同的密鑰可以訪問重疊區(qū)域,從而允許對信息的共享式訪問。
正常情況下這些芯片只存儲附加的加密密碼或索引,不過也能存儲少量的數(shù)據(jù)。存儲密鑰可以使附加的加密數(shù)據(jù)被存儲在芯片外面。例如,密鑰可以用來解密硬盤上的數(shù)據(jù)。
Atmel的13.56MHz RFID CryptoRF采用同樣的方式工作,不同的是芯片通過RFID閱讀器進行訪問。該芯片采用了具有雙認證能力的64位加密引擎,存儲容量可達64kbits。
通過將數(shù)據(jù)存放在象希捷的Momentus 5400 PDE.2這樣的硬盤上這種方式可以把大量存儲數(shù)據(jù)鏈接到微控制器(圖3)。安全硬盤提供了對龐大存儲數(shù)據(jù)的訪問能力,但在主機和硬盤之間轉(zhuǎn)移的是明碼(未加密)數(shù)據(jù)。
圖3:希捷的Momentus 5400 FDE.2可以存儲大量數(shù)據(jù),同時提供基于硬件的全盤加密(FDE)。 |
將加密引擎放在硬盤上的一大優(yōu)點是它可以根據(jù)硬盤的傳輸速率進行調(diào)整。硬盤支持多用戶和管理密碼。Momentus 5400 FDE.2也兼容于信任平臺模塊(TPM)。
新的加密方法
DES(數(shù)據(jù)加密標(biāo)準(zhǔn))是一種不再被經(jīng)常使用的加密標(biāo)準(zhǔn),很早以前就被許多更強大的技術(shù)所代替。同樣,3DES(三重DES)已經(jīng)被更具魯棒性的AES所替代。當(dāng)然,AES也不是終極標(biāo)準(zhǔn)。這正是為什么片上加密系統(tǒng)要不斷發(fā)展以適合最新安全技術(shù)的原因。片上加速器通常支持多種加密標(biāo)準(zhǔn)。
另外一種正在部署的流行加密系統(tǒng)采用的是橢圓形曲線加密法(ECC)。ECC是一種公鑰加密系統(tǒng),基于的是有限域上橢圓曲線的代數(shù)結(jié)構(gòu)。對ZigBee等無線技術(shù)來說這是一項可選功能。使用它的原因是可擴展性。不管是理論上還是實踐上,ECC的擴展性都要好于最流行的加密標(biāo)準(zhǔn)AES。
盡管從推出到被大眾接受往往都需要很長時間,但加密技術(shù)一直在不斷創(chuàng)新。挑戰(zhàn)一種新方法通常要求更新的思路。來自SecureRF的lgebraic Eraser就是一個很好的例子。它使用線性的安全協(xié)議,適用于對稱(秘鑰)和不對稱(公鑰)加密算法。
DRM不提供安全性
DRM對許多系統(tǒng)來說很重要,甚至是很多不安全因素的克星,但它傾向于固定鏈接基于硬件的安全和加密。它之所以要依賴于硬件支持,部分原因是它需要端到端的內(nèi)容保護以及滿足系統(tǒng)要求的吞吐量。例如,音頻流或視頻流的加密/解密必須以線速進行,否則回放質(zhì)量將受到影響。
消費者要求似乎在推動DRM退出音頻領(lǐng)域,但它在視頻領(lǐng)域仍很重要。高帶寬數(shù)字內(nèi)容保護(HDCP)技術(shù)可以保護當(dāng)前的一些HDTV內(nèi)容,并且它已被集成進包括藍光和HDTV驅(qū)動設(shè)備在內(nèi)的HDTV源和目標(biāo)設(shè)備中。幸運的是,這些器件之間傳送的數(shù)據(jù)一般被認為是明碼數(shù)據(jù),因此它不涉及任何加密或保護。一般來說,只有作為端點的設(shè)備需要滿足這種類型的DRM。
另一方面,保護應(yīng)用程序的目標(biāo)代碼經(jīng)常是需要的。當(dāng)代碼來自不安全的片外器件(如閃存芯片)時,就可能需要加密。在這種情況下,處理器必須在執(zhí)行時進行數(shù)據(jù)解碼。這種情況并不常見,但有多種微控制器可以完成這個功能,比如美信公司基于8051的DS5250。
另外一種方法是復(fù)用啟動裝載工具(boot loader)將片外代碼解密到片上RAM,然后從RAM執(zhí)行。當(dāng)斷電時解密代碼會丟失。典型的替代方法是使用片上代碼保護機制,它通常能防止閃存被常用的調(diào)試方法所讀取。在沒有附加密鑰的情況下它通常會阻止對閃存進行編程。否則一個欺詐應(yīng)用程序可能被裝載進存儲器的一小部分空間中,這段程序再將剩下的代碼下載進攻擊器。
多級安全
控制代碼和對代碼的訪問通常是微控制器的存儲器和系統(tǒng)保護系統(tǒng)的一部分功能。高安全性系統(tǒng)一般會將這個功能與安全啟動及安全存儲等功能結(jié)合起來形成一個安全的操作系統(tǒng),如來自美國國家安全署(NSA)的安全增強型Linux(SE Linux)。今后還將擴展支持虛擬機。
除了安全啟動和安全存儲外,加密并不是系統(tǒng)安全的必要部分。相反,標(biāo)準(zhǔn)微控制器對虛擬存儲器和虛擬機的支持能力足夠用來實現(xiàn)多級安全(MLS)。系統(tǒng)中還可以集成更多的硬件特性,但在標(biāo)準(zhǔn)微控制器上很少見到。
開發(fā)人員需要了解這些安全因素的理由是,他們不需要額外的硬件,但軟件確實對系統(tǒng)的起點做了某種假設(shè),如啟動過程和操作系統(tǒng)。無法滿足這些假設(shè)的系統(tǒng)如果不借助于任何加密手段的話通常會降低性能。遺憾的是,這些安全因素超出了本文討論的范圍,因此不要認為只要簡單地包含了硬件加密或者甚至只是包含了安全啟動特性就能夠提供足夠安全的系統(tǒng)。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論