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