近來,嵌入式應(yīng)用正在包括硬件在內(nèi)的各個(gè)層次上構(gòu)建安全性。不過,廣泛的加密應(yīng)用、標(biāo)準(zhǔn)和協(xié)議使得人們很難創(chuàng)建一個(gè)通用的平臺(tái)。表1所示的常用加密標(biāo)準(zhǔn)和表2所示的常用加密協(xié)議只是給出了一些可選擇的加密線索。嵌入式系統(tǒng)是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟硬件可裁剪,適用于應(yīng)用系統(tǒng)對(duì)功能,對(duì)可靠性、成本、體積、功耗有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)本身是一個(gè)相對(duì)模糊的定義。目前嵌入式系統(tǒng)已經(jīng)滲透到我們生活中的每個(gè)角落,工業(yè)、服務(wù)業(yè)、消費(fèi)電子……,而恰恰由于這種范圍的擴(kuò)大,使得“嵌入式系統(tǒng)”更加難于明確定義。
根據(jù)IEEE(電氣和電子工程師協(xié)會(huì))的定義,嵌入式系統(tǒng)是“控制、監(jiān)視或者輔助裝置、機(jī)器和設(shè)備運(yùn)行的裝置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。從中可以看出嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機(jī)械等附屬裝置。目前國(guó)內(nèi)一個(gè)普遍被認(rèn)同的定義是:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
如為了加快處理過程可以將Rabbit 4000的加密加速功能可以與SSL堆在一起使用,但它只能為于8位微控制器和另一個(gè)網(wǎng)絡(luò)設(shè)備之間傳送的數(shù)據(jù)提供安全性。這樣,硬件也可以提供一些安全保障。不過它不能保證信息的正確性,或來自特定的源,只能保證從A點(diǎn)到B點(diǎn)傳輸?shù)臄?shù)據(jù)不會(huì)被篡改或?yàn)g覽。
雖然SSL/TLS提供端點(diǎn)的認(rèn)證和加密,但錯(cuò)誤的配置很容易受到如中間人攻擊(man-in-the-middle attack)之類的影響。由于會(huì)被不恰當(dāng)?shù)氖褂茫蚤_發(fā)人員在了解怎樣使安全使用的同時(shí)還要了解怎樣不濫用它們。安全數(shù)字音樂協(xié)會(huì)(SDMI)呵用基于硬件的密鑰系統(tǒng)實(shí)現(xiàn)數(shù)字水印方案,雖是一個(gè)數(shù)字版權(quán)管理(DRM)機(jī)構(gòu),但是被發(fā)現(xiàn)是有缺陷的,因此在互聯(lián)網(wǎng)檔案中不見蹤影,它與DVD電影中使用的內(nèi)容加擾系統(tǒng)(CSS)非常相似。
表1:常用加密標(biāo)準(zhǔn)。
表2:常用加密協(xié)議。
1999年,音樂界及有關(guān)人士組成了SDMI(安全數(shù)字音樂促進(jìn):Secure Digital Music Initiative)組織,目前加入SDMI的技術(shù)和娛樂公司已經(jīng)超過了160家。SDMI建議所有在Internet上發(fā)行的CD和音樂數(shù)據(jù)都應(yīng)該加入數(shù)字水印編碼,而與SDMI相容的播放器或播放軟件就可以知道音樂數(shù)據(jù)被拷貝的次數(shù),若超出限制次數(shù)則無法播放。
SDMI最初是使用唯一的、不可更改的密鑰。但通常情況下,這樣做必須使用更多的硬件來防止篡改。對(duì)于物理安全不成問題的許多系統(tǒng)來說,諸如Trusted Computing Group公司的信任平臺(tái)模塊(TPM)這樣的平臺(tái)就可以為系統(tǒng)提供基本的安全性。 威盛科技(VIA)公司開發(fā)的Padlock版本則增加了像AES加密之類的性能。這類平臺(tái)可以支持許多操作系統(tǒng)特性,比如Vista的加密文件系統(tǒng)BitLocker。
Zilog公司開發(fā)的基于32位ARM922T的Zatara微控制器集成了保證微控制器安全所要求的大部分功能,包括安全啟動(dòng)ROM和篡改檢測(cè)支持(圖1)。更值得一提的是它帶有40kB的安全RAM,如果篡改檢測(cè)電路受到攻擊,這部分RAM將歸零。
圖1:Zilog公司的32位Zatara安全事務(wù)微控制器采用了ARM922內(nèi)核,與安全有關(guān)的特性包括安全啟動(dòng)ROM和電池支撐的SRAM。
在篡改檢測(cè)變的越來越普遍的同時(shí),在向食物鏈上游的更大處理器轉(zhuǎn)移,大多數(shù)64位處理器配備了外部硬件電路來解決這個(gè)問題。誠(chéng)然,從里到外保證系統(tǒng)的安全對(duì)整個(gè)安全系統(tǒng)來說至關(guān)重要。當(dāng)然,極端安全的系統(tǒng)只有在某些特殊環(huán)境下才有要求,例如控制核反應(yīng)堆或管理大量匯款。在這些情況下,為控制微處理器而增加成本和復(fù)雜性不是問題。
軟件端的安全保障
計(jì)算機(jī)系統(tǒng)由計(jì)算機(jī)硬件和軟件兩部分組成。
軟件系統(tǒng)的最內(nèi)層是系統(tǒng)軟件,它由操作系統(tǒng)、實(shí)用程序、編譯程序等組成。操作系統(tǒng)實(shí)施對(duì)各種軟硬件資源的管理控制。實(shí)用程序是為方便用戶所設(shè),如文本編輯等。編譯程序的功能是把用戶用匯編語(yǔ)言或某種高級(jí)語(yǔ)言所編寫的程序,翻譯成機(jī)器可執(zhí)行的機(jī)器語(yǔ)言程序。支援軟件有接口軟件、工具軟件、環(huán)境數(shù)據(jù)庫(kù)等,它能支持用機(jī)的環(huán)境,提供軟件研制工具。支援軟件也可認(rèn)為是系統(tǒng)軟件的一部分。應(yīng)用軟件是用戶按其需要自行編寫的專用程序,它借助系統(tǒng)軟件和支援軟件來運(yùn)行,是軟件系統(tǒng)的最外層 。
誠(chéng)然,運(yùn)行軟件來保持系統(tǒng)的安全性,需要由系統(tǒng)提供一部分資源,所以這并不是最好的處理方法。
General Software公司推出的帶StrongFrame的嵌入式BIOS是解決系統(tǒng)基礎(chǔ)軟件問題的一種方法。它的啟動(dòng)安全程序(BSA)是一種固件應(yīng)用程序,能在硬件和應(yīng)用程序之間建立信任關(guān)系。它設(shè)計(jì)用于防止由于BIOS、操作系統(tǒng)或應(yīng)用程序進(jìn)行的未授權(quán)篡改而變得不再安全的系統(tǒng)操作。它使用數(shù)字簽名跟蹤受信任的對(duì)象。20kB模塊可以在ROM中壓縮50%。系統(tǒng)可以使用Firmbase Technology公司的信任運(yùn)算庫(kù)(TCB)進(jìn)行擴(kuò)展,而TCB支持允許定制認(rèn)證和授權(quán)的插件式安全認(rèn)證機(jī)制。
General Software公司的方法可用于許多標(biāo)準(zhǔn)處理器架構(gòu)和操作系統(tǒng),而飛思卡爾公司的Mocana設(shè)備安全框架(DSF)則主要用于飛思卡爾的處理器,如PowerQUICC系列。PowerQUICC幾乎從推出伊始就有了加密引擎,因?yàn)樗氖褂脤?duì)象包括了提供虛擬專用網(wǎng)(VPN)支持的路由器和網(wǎng)關(guān)。硬件加密功能顯著提高了安全信息的吞吐量。
Mocana公司有許多軟件產(chǎn)品,如嵌入式安全套件(ESS)。Mocana針對(duì)飛思卡爾處理器開發(fā)的設(shè)備安全框架模塊可以將這個(gè)軟件與PowerQUICC安全引擎集成在一起,因此開發(fā)人員不必直接處理硬件。這些模塊支持SSL服務(wù)器、SSL客戶端、SSH服務(wù)器、SSH客戶端、IPsec/IKEv1和IKEv2以及認(rèn)證管理客戶端(CMC)。基于開放標(biāo)準(zhǔn)設(shè)計(jì)的系統(tǒng)兼容RFC,并能很好地支持多核環(huán)境。
提升安全性能
將安全加速和支持合并在硬件中有它的優(yōu)勢(shì),但這并不是唯一的方式。將支持功能放在微控制器外面實(shí)現(xiàn)通常更容易,并且可能更適合某些特殊的應(yīng)用場(chǎng)合。
使用安全存儲(chǔ)產(chǎn)品是在具有I2C接口的任何微控制器上增加基本安全支持的一種簡(jiǎn)單方法,比如使用Atmel公司的AT88SC25616C加密存儲(chǔ)器(圖2)。系統(tǒng)自身具有完備的安全要素,認(rèn)證全部在芯片內(nèi)部完成。
圖2:Atmel的AT885C2561C有多個(gè)密碼用來限制對(duì)EEPROM中區(qū)內(nèi)數(shù)據(jù)的訪問。在成功進(jìn)行認(rèn)證交換后才能訪問數(shù)據(jù)。
通常,主微控制器上的一個(gè)應(yīng)用可用作進(jìn)入安全存儲(chǔ)器的網(wǎng)關(guān),而該存儲(chǔ)器使用外部源(如用戶或遠(yuǎn)端程序)提供的密鑰。這樣就能訪問芯片內(nèi)部的存儲(chǔ)器,而這個(gè)芯片通常是另外一個(gè)密鑰,可被主機(jī)用來執(zhí)行其它安全功能,如認(rèn)證一個(gè)下載的更新或獲得對(duì)遠(yuǎn)程系統(tǒng)的訪問權(quán)。
大多數(shù)安全存儲(chǔ)器提供這一等級(jí)的支持。Atmel還提供具有多個(gè)密鑰的更復(fù)雜的層次結(jié)構(gòu),可選擇訪問芯片內(nèi)不同的存儲(chǔ)區(qū)。不同的密鑰可以訪問重疊區(qū)域,從而允許對(duì)信息的共享式訪問。正常情況下這些芯片只存儲(chǔ)附加的加密密碼或索引,不過也能存儲(chǔ)少量的數(shù)據(jù)。存儲(chǔ)密鑰可以使附加的加密數(shù)據(jù)被存儲(chǔ)在芯片外面。例如,密鑰可以用來解密硬盤上的數(shù)據(jù)。Atmel的13.56MHz RFID CryptoRF采用同樣的方式工作,不同的是芯片通過RFID閱讀器進(jìn)行訪問。該芯片采用了具有雙認(rèn)證能力的64位加密引擎,存儲(chǔ)容量可達(dá)64kbits。通過將數(shù)據(jù)存放在象希捷的Momentus 5400 PDE.2這樣的硬盤上這種方式可以把大量存儲(chǔ)數(shù)據(jù)鏈接到微控制器(圖3)。安全硬盤提供了對(duì)龐大存儲(chǔ)數(shù)據(jù)的訪問能力,但在主機(jī)和硬盤之間轉(zhuǎn)移的是明碼(未加密)數(shù)據(jù)。
圖3:希捷的Momentus 5400 FDE.2可以存儲(chǔ)大量數(shù)據(jù),同時(shí)提供基于硬件的全盤加密(FDE)。
將加密引擎放在硬盤上的一大優(yōu)點(diǎn)是它可以根據(jù)硬盤的傳輸速率進(jìn)行調(diào)整,硬盤支持多用戶和管理密碼,Momentus 5400 FDE.2也兼容于信任平臺(tái)模塊(TPM)。
新加密方法 -DES
DES的原始思想可以參照二戰(zhàn)德國(guó)的恩格瑪機(jī),其基本思想大致相同。傳統(tǒng)的密碼加密都是由古代的循環(huán)移位思想而來,恩格瑪機(jī)在這個(gè)基礎(chǔ)之上進(jìn)行了擴(kuò)散模糊。但是本質(zhì)原理都是一樣的。現(xiàn)代DES在二進(jìn)制級(jí)別做著同樣的事:替代模糊,增加分析的難度。
它是一種不再被經(jīng)常使用的加密標(biāo)準(zhǔn),很早以前就被許多更強(qiáng)大的技術(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)。對(duì)ZigBee等無線技術(shù)來說這是一項(xiàng)可選功能。使用它的原因是可擴(kuò)展性。不管是理論上還是實(shí)踐上,ECC的擴(kuò)展性都要好于最流行的加密標(biāo)準(zhǔn)AES。
DES 使用一個(gè) 56 位的密鑰以及附加的 8 位奇偶校驗(yàn)位,產(chǎn)生最大 64 位的分組大小。這是一個(gè)迭代的分組密碼,使用稱為 Feistel 的技術(shù),其中將加密的文本塊分成兩半。使用子密鑰對(duì)其中一半應(yīng)用循環(huán)功能,然后將輸出與另一半進(jìn)行“異或”運(yùn)算;接著交換這兩半,這一過程會(huì)繼續(xù)下去,但最后一個(gè)循環(huán)不交換。DES 使用 16 個(gè)循環(huán),使用異或,置換,代換,移位操作四種基本運(yùn)算。
DES是一種比較安全的算法,前只有一種方法可以破解該算法,那就是窮舉法。采用64位密鑰技術(shù),實(shí)際只有56位有效,8位用來校驗(yàn)的。譬如,有這樣的一臺(tái)PC機(jī)器,它能每秒計(jì)算一百萬次,那么256位空間它要窮舉的時(shí)間為2285年。所以這種算法還是比較安全的一種算法。
盡管從推出到被大眾接受往往都需要很長(zhǎng)時(shí)間,但加密技術(shù)一直在不斷創(chuàng)新。挑戰(zhàn)一種新方法通常要求更新的思路。來自SecureRF的lgebraic Eraser就是一個(gè)很好的例子。它使用線性的安全協(xié)議,適用于對(duì)稱(秘鑰)和不對(duì)稱(公鑰)加密算法。
DRM無很好的安全保障
DRM,英文全稱Digital Rights Management, 可以翻譯為:內(nèi)容數(shù)字版權(quán)加密保護(hù)技術(shù)。 由于數(shù)字化信息的特點(diǎn)決定了必須有另一種獨(dú)特的技術(shù),來加強(qiáng)保護(hù)這些數(shù)字化的音視頻節(jié)目?jī)?nèi)容的版權(quán),該技術(shù)就是數(shù)字權(quán)限管理技術(shù)---DRM(digital right management)。
DRM分為兩類,一類是多媒體保護(hù),例如加密電影、音樂、音視頻、流媒體文件。另外一類是加密文檔,例如Word, Excel, PDF等。DRM主要通過技術(shù)手段來保護(hù)文檔、電影、音樂不被盜版。 這項(xiàng)技術(shù)通過對(duì)數(shù)字內(nèi)容進(jìn)行加密和附加使用規(guī)則對(duì)數(shù)字內(nèi)容進(jìn)行保護(hù),其中,使用規(guī)則可以斷定用戶是否符合播放。
DRM對(duì)許多系統(tǒng)來說很重要,甚至是很多不安全因素的克星,但它傾向于固定鏈接基于硬件的安全和加密。它之所以要依賴于硬件支持,部分原因是它需要端到端的內(nèi)容保護(hù)以及滿足系統(tǒng)要求的吞吐量。例如,音頻流或視頻流的加密/解密必須以線速進(jìn)行,否則回放質(zhì)量將受到影響。
DRM技術(shù)的工作原理是,先建立數(shù)字節(jié)目授權(quán)中心。編碼壓縮后的數(shù)字節(jié)目?jī)?nèi)容,可以利用密鑰(Key)進(jìn)行加密保護(hù)(lock),加密的數(shù)字節(jié)目頭部存放著KeyID和節(jié)目授權(quán)中心的URL。用戶在點(diǎn)播時(shí),根據(jù)節(jié)目頭部的KeyID和URL信息,就可以通過數(shù)字節(jié)目授權(quán)中心的驗(yàn)證授權(quán)后送出相關(guān)的密鑰解密(unlock),節(jié)目方可播放。需要保護(hù)的節(jié)目被加密,即使被用戶下載保存,沒有得到數(shù)字節(jié)目授權(quán)中心的驗(yàn)證授權(quán)也無法播放,從而嚴(yán)密地保護(hù)了節(jié)目的版權(quán)。
消費(fèi)者要求似乎在推動(dòng)DRM退出音頻領(lǐng)域,但它在視頻領(lǐng)域仍很重要。高帶寬數(shù)字內(nèi)容保護(hù)(HDCP)技術(shù)可以保護(hù)當(dāng)前的一些HDTV內(nèi)容,并且它已被集成進(jìn)包括藍(lán)光和HDTV驅(qū)動(dòng)設(shè)備在內(nèi)的HDTV源和目標(biāo)設(shè)備中。幸運(yùn)的是,這些器件之間傳送的數(shù)據(jù)一般被認(rèn)為是明碼數(shù)據(jù),因此它不涉及任何加密或保護(hù)。一般來說,只有作為端點(diǎn)的設(shè)備需要滿足這種類型的DRM。
另一方面,保護(hù)應(yīng)用程序的目標(biāo)代碼經(jīng)常是需要的。當(dāng)代碼來自不安全的片外器件(如閃存芯片)時(shí),就可能需要加密。在這種情況下,處理器必須在執(zhí)行時(shí)進(jìn)行數(shù)據(jù)解碼。這種情況并不常見,但有多種微控制器可以完成這個(gè)功能,比如美信公司基于8051的DS5250。
另外一種方法是復(fù)用啟動(dòng)裝載工具(boot loader)將片外代碼解密到片上RAM,然后從RAM執(zhí)行。當(dāng)斷電時(shí)解密代碼會(huì)丟失。典型的替代方法是使用片上代碼保護(hù)機(jī)制,它通常能防止閃存被常用的調(diào)試方法所讀取。在沒有附加密鑰的情況下它通常會(huì)阻止對(duì)閃存進(jìn)行編程。否則一個(gè)欺詐應(yīng)用程序可能被裝載進(jìn)存儲(chǔ)器的一小部分空間中,這段程序再將剩下的代碼下載進(jìn)攻擊器。
多級(jí)安全
微控制器的存儲(chǔ)器和系統(tǒng)保護(hù)系統(tǒng)的一部分功能是控制代碼和對(duì)代碼的訪問。高安全性系統(tǒng)一般會(huì)將這個(gè)功能與安全啟動(dòng)及安全存儲(chǔ)等功能結(jié)合起來形成一個(gè)安全的操作系統(tǒng),如來自美國(guó)國(guó)家安全署(NSA)的安全增強(qiáng)型Linux(SE Linux)。據(jù)悉今后還可擴(kuò)展支持虛擬機(jī)。
除了安全啟動(dòng)和安全存儲(chǔ)外,加密并不是系統(tǒng)安全的必要部分。相反,標(biāo)準(zhǔn)微控制器對(duì)虛擬存儲(chǔ)器和虛擬機(jī)的支持能力足夠用來實(shí)現(xiàn)多級(jí)安全(MLS)。系統(tǒng)中雖然可以集成很多的硬件特性,但在標(biāo)準(zhǔn)微控制器上很少見到。
開發(fā)人員需要了解這些安全因素的理由是,他們不需要額外的硬件,但軟件確實(shí)對(duì)系統(tǒng)的起點(diǎn)做了某種假設(shè),如啟動(dòng)過程和操作系統(tǒng)。無法滿足這些假設(shè)的系統(tǒng)如果不借助于任何加密手段的話通常會(huì)降低性能。遺憾的是,這些安全因素超出了本文討論的范圍,因此不要認(rèn)為只要簡(jiǎn)單地包含了硬件加密或者甚至只是包含了安全啟動(dòng)特性就能夠提供足夠安全的系統(tǒng)。