介紹
網絡通信(和互聯網)是不安全的。網絡提供商和設備制造商已經意識到這一點,并且已經開發出相應技術來保障重要數據流量的安全。這其中包括我們目前使用的標準技術,比如企業網絡中的IPsec/SSL VPN、瀏覽器上進行在線采購和捐贈的SSL/TLS流量、用于手機通話和數據的空中加密。不過在使用這些技術時,需要依賴密鑰和其他敏感的安全參數。怎樣能夠保證密鑰的安全呢?如果攻擊者能夠取得你的密鑰,流量的安全何在?更嚴重的是,如果你不知道有人已經獲得了你的密鑰或者私人數據,情況會怎么樣?攻擊者可以在你不知道的情況下,自行獲取你的重要信息。但是風險還不止于此,精通技術的攻擊者實際上能夠在你的系統上安裝代碼,采集敏感的安全參數或者其他數據,或者讓你的系統進行異常操作。
移動寬帶網絡飛速發展,設備的數量不斷增多,在整個移動網絡內確保用戶的安全具有極端重要的意義。另一項變革是無線回程正在向基于IP的共享回程轉型,這使得設備更加容易使用,技術更容易被掌握和理解。共享IP網絡的缺陷在于安全機制也是通用的且為人所熟知,也就更容易受到挑戰。另外,移動寬帶網絡引入了更加豐富的基站種類,并且布置在非安全位置(尤其是毫微微蜂窩基站)。最后,由運營商共享設施、設備和/或回程的多租戶模式正在變得更加流行。后兩個因素使得網絡更容易受到來自本地的物理攻擊,也使得設備可以進行物理改變從而增加遠程攻擊的力度和可能性。
本文將討論為了防范攻擊、改善系統安全性而在嵌入式系統和處理器(尤其是針對無線基礎設施和企業而設計的嵌入式系統和處理器)中所使用的幾種不同技術。
威脅——我們需要防范的
很重要的一點是通過加密服務確保“傳輸中數據”和“靜態數據”的安全。如前文所述,當今有大量協議可用于提供這些安全服務。“傳輸中數據”指在網絡中移動的數據。傳輸協議中的標準數據存在于協議棧的幾個不同層級中,比如L2層的以太網MACsec、L3層的IPsec和L4層及以上的SSL/TLS/DTLS、SRTP、SSH等等。“靜態數據”指存儲在硬盤驅動器或者其他靜態介質上的數據。靜態數據安全標準包括IEEE 標準1619和ANSIT光纖通道安全。傳輸中數據和靜態數據協議中使用的加密技術都依賴于密鑰和其他敏感安全參數(SSP)。SSP不僅包含密鑰本身,也包含其他可用于理解所用安全機制的關鍵信息(比如在IPsec協議下:使用什么密碼;防止重送窗口處于什么狀態;或者這種安全關聯的密鑰超時狀態是什么)。必須確保平臺或者系統本身的安全,才能保護這些關鍵信息和其他關鍵信息。
對系統的攻擊可以是本地的,也可以是遠程的。本地攻擊指攻擊者通過物理方式連接系統,遠程攻擊指通過附屬網絡發起的攻擊。一般來說,本地攻擊更具侵入性和破壞性,因為攻擊者是通過物理的方式連接到系統、板件、設備或者設備上的端口。但遠程攻擊,尤其是由內部人員發起的遠程攻擊(比如軟件編程人員在安全漏洞中編碼)也具有破壞性。沒有哪個平臺能夠提供“萬無一失”的安全性。
所能實現的安全水平取決于投入的時間和資金。我們的目標是創建足夠的準入障礙,讓攻擊者不得不權衡侵入平臺所花的時間和資金會不會超過成功攻擊所帶來的效益(見圖1)。
另一個需要考慮的項目是“誰”可能攻擊系統,如果攻擊成功會造成什么樣的破壞。潛在的攻擊者包括短時黑客、客戶、競爭對手、政府機構乃至集團犯罪。攻擊的復雜程度以及為系統入侵所提供的資金量都會有很大差異。系統架構人員會在這個清單中的某個地方劃一條線,并決定愿意花多少錢來保護這個特定的平臺。例如,防范某個客戶入侵自己的基站(毫微微蜂窩)所需的成本以及如果入侵成功所帶來的風險可能都比較低。與此相反,如果一個資金雄厚的大型機構購買了你的平臺(合法或者非法渠道),然后系統地分解平臺并逐一分析各個組成部分和缺陷,防范這種攻擊所帶來的成本可能會超過開發機構的承受上限。
就威脅而言,最后需要討論的是攻擊者最可能想獲得什么樣的信息以及如何保護這樣的信息。如前文所述,首先需要保護的是SSP和密鑰。這很關鍵。因為傳輸中數據和靜態數據的安全協議依靠的就是這些密鑰和SSP。重要的是使攻擊者不能讀取或者修改這類數據。系統可能還含有與其他安全方法有關或者無關的其他敏感數據,比如口令、使用信息和用戶數據(當存儲在系統中的時候)。
系統制造商必須防范其系統被置入流氓軟件。根據攻擊者意圖的不同,這類軟件可能會執行各種惡意任務,比如進行拒絕服務攻擊;用代碼替代制造商軟件以達到清除功能和(或)安全機制的目的;在制造商軟件中植入代碼用來惡意收集信息;升級某個用戶的授權水平;通過安全漏洞獲取和(或)探查操作系統版本或者應用代碼。
最后,系統制造商們花費大量資源開發出了新產品,他們希望投資成果不會被他人復制和克隆。為什么讓你的辛苦工作落入競爭對手的手中呢?
圖1:實例:選擇投資,保護您的設計
這項技術看似復雜而且昂貴,你是否真的需要?
系統安全,或稱為“平臺信任”,正在嵌入式行業中日益普及。有幾組標準在規格制定方面是完全或部分針對平臺自身的安全而制定的。
第三代合作伙伴項目(3GPP)為世界大多數移動無線基礎設施制定了標準。3GPP有多項標準要求使用受信的執行環境和SSP保護。這其中包括“TS 33.401 – 系統架構演進(SAE);安全架構”和“TS 33.320 – 家庭基站(HNB)安全/演進的家庭基站(HeNB)”。
美國國家標準和技術研究所(NIST)已經制定出FIPS 140標準,規定了加密模塊的安全要求。該標準有多個版本,設定了四個層次的安全等級,逐級提高對SSP創建、存儲和歸零的要求。最新的“版本3”草案還加入了對軟件和固件完整性檢查的要求。
作為使用最廣泛的TCG標準,受信任的平臺模塊(TPM)依照TCG標準被部署在幾乎全部的企業級PC和許多服務器上。TPM是一種微控制器,用于存儲密鑰、口令和數字證書。雖然TPM對PC/企業市場有效,但并非針對嵌入式市場而開發。
[page]
安全環境邊界
在討論具體的安全系統技術之前,我們必須首先討論安全環境邊界,因為這會影響所需的保護類型。
系統架構師首先要采取的步驟之一是在自己的系統中設定安全邊界。安全邊界在不同標準中的命名也有所不同。例如,TS 33.401規范稱之為“安全環境”,而TS 33.320稱其為“受信任的環境”。NIST FIPS140標準稱之為“加密邊界”。不管其命名如何,安全環境邊界都是一個明確定義的連續界限,用于為模塊建立物理邊緣,并包含所有的安全、加密操作 和敏感安全參數。所有支持安全操作的硬件、固件和軟件功能都發生在這個邊界內部。常見的安全邊界定義方式為將整個系統包含在內,即包含全部板件。但也可以 定義出更加緊湊的邊界(例如,包含單個IC)。
圖2:安全邊界示例
安全邊界的定義對接口保護和SSP、固件、軟件的保護方式有影響。例如,在使用板/系統級邊界的時候,可以用明文方式將敏感參數存儲在DRAM等板級存 儲器中。與此相反,在采用基于IC的邊界時,任何存儲在DRAM中的SSP都會落在已經建立的安全邊界之外;因此要對這類數據進行加密并提供完整的保護。 盡管如此,使用比較緊湊的邊界(例如基于IC的邊界)仍然有其合理性,因為它具備多種優勢,允許將單個安全設計重復用于多個系統或多種封裝。
不管安全邊界的位置在什么地方,關鍵在于系統硬件要能夠支持系統架構人員所要求的模型。
硬件可信根
所有安全系統的基礎是“可信根”。“可信根”是一種無條件受信任的組件。該組件一般存儲對系統具有關鍵意義的機密,提供受信任功能,并通過這些功能和機 密將信任擴展到其他實體。在可信根向系統其余部分和外部實體擴展信任的過程中,必須具備對攻擊的抗御能力。另外可信根必須以硬件而非軟件的方式提供。
硬件可信根一般為系統將要執行的功能類型存儲密鑰。其中部分密鑰公開,部分密鑰保密。公共密鑰指在安全系統中使用的密鑰,雖然值是公開的但不會破壞系統 的安全性。保密密鑰指在可信根中以保密方式持有的密鑰,不會以任何形式直接提供。如果保密密鑰被攻擊和發現,系統就會被侵入。在嵌入式系統設計中,存儲在 硬件可信根中的數據包括:芯片主機密鑰或者根密鑰;公共安全引導密鑰;認證密鑰;安全數據存儲密鑰;其他用于描述系統行為的系統特定參數。
安全引導
“安全引導”指提供軟件和配置完整性檢查和認證的過程。在軟件鏡像或配置被允許在處理器上運行之前,應首先檢查鏡像以確保鏡像未經修改(即完整性檢查) 并確保鏡像由系統制造商創建(即認證)。安全引導的過程包括:利用加密散列函數(比如SHA-256)來確保完整性;利用公共密鑰加密(比如RSA或者 ECC橢圓曲線加密)為鏡像進行數字簽名。系統制造商在工廠中留存私鑰,而把公鑰當作硬件可信根的組成部分提供給系統。只有經過正確私鑰數字簽名的軟件才 能在器件上運行,進而在系統上運行。由于使用了公鑰加密技術,即便攻擊者獲得了公共安全引導密鑰,也不會增大系統的安全風險。
除完整性 檢查和認證之外,系統制造商有權廢除被認定為不安全的舊軟件版本。產品進入現場使用階段后,通常會發現一些軟件安全漏洞。除非進行防回滾檢查,否則經過正 確簽名的較早鏡像將在系統上運行。軟件的當前版本是安全引導頭的組成部分。防回滾檢查功能將在安全引導階段對當前軟件版本與最低限度可接受軟件版本進行比 較。當前版本信息作為完整性檢查的組成部分受到保護,在不修改SHA-256散列結果(最終是簽名)的情況下不能單獨進行修改。如果當前版本低于最低可接 受的版本,系統將不會引導和運行。
系統制造商可能還希望為軟件提供保密性,保護開發商的知識產權不被克隆。如果系統使用現成的硬件,安 全引導流程將防止競爭對手通過簡單購買或構建相同硬件并克隆軟件的方式制作出相同或極其類似的產品。軟件鏡像在存儲到板載閃存之前會事先進行加密和實施完 整性保護,在網絡中傳輸時也是如此(以升級為例)。安全引導流程還包含解密操作,并作為鏡像認證流程的一部分。密鑰塊(key Blob)也是安全引導頭的組成部分。“密鑰塊”是一種加密密鑰存儲結構,作用是在加密密鑰處于安全邊界之外時對它們進行保護。一旦密鑰塊位于安全邊界之 內,系統會使用芯片主機密鑰對密鑰塊進行解密,以得出真正的解密密鑰。芯片主機密鑰是一種保密密鑰,不會提供給除安全引導硬件之外的任何資源。當解密密鑰 恢復后,將被安全引導流程用于解密源代碼。
分層安全引導流程
引導嵌入式處理器和 系統一般會涉及多個引導階段(圖4)。安全引導依賴于可信且不可改變的初始引導加載程序。為滿足這些要求,處理器使用存儲在ROM中的第一級引導代碼。按 原理來說,ROM是不可修改的。初始引導代碼隨即檢查下一引導階段的完整性并使用硬件可信根密鑰對其進行認證。一旦下一階段軟件認證通過,CPU將開始執 行經過驗證的潛在的解密代碼。這個過程可以根據系統制造商的需要在多個階段反復進行。這樣會創建一個“信任鏈”,在這個“信任鏈”中,軟件和配置文件層疊 在前一個階段之上,并可以確保安全性(前提是前一個階段的安全性得到保證)。每個階段都經過逐步檢查,以確保其合規性。如果任何一個階段未能通過安全引導 檢查,則系統將無法引導和運行。
敏感安全參數(SSP)和數據存儲
一般來說,我 們定義SSP的目的是用來包含任何短期密鑰、安全會話狀態和其他不需要在電源重啟后保留的安全參數。FIPS 140-3標準的定義包含SSP定義中的關鍵安全參數和公共安全參數。他們將關鍵安全參數(CSP)定義為“任何安全相關的機密信息(例如秘密的加密私 鑰、共享機密、口令和PIN等認證數據),這些信息一旦被泄漏或者修改就會損害加密模塊的安全性”;將公共安全參數定義為“任何安全相關的公共信息,這些 信息一旦被修改同樣會損害加密模塊的安全性。”不管具體的定義如何,SSP以及設備制造商認定的任何關鍵數據都必須得到保護。
圖4:分層安全引導流程和信任鏈
一旦系統安全地完成引導,就會產生需要保護的短期數據。如果該數據存儲在安全環境邊界之外或者在安全環境邊界之內用明文存儲,都必須使用某種加密技術予以保護。如果數據存儲在安全邊界之內,全部邊界接口都必須是安全的,同時要防止對明文數據的訪問。
在SSP和敏感數據存儲中普遍采用的幾種方法:
· 內部安全存儲器
· 緩存加鎖
· 為存往DRAM中的數據加密
第一種方法是提供一種內部安全存儲器,不在DRAM中進行外部緩存,一般采用小型SRAM。這個存儲器可以用來存儲少量數據,但無法為容納大量數據而進行擴展。
緩存加鎖是指在DRAM或數據緩存中指定一個范圍,防止存儲在這個緩存范圍中的數據被回寫到外部DRAM中。這樣做的效果相當于將緩存加鎖部分安放到片 上RAM中。緩存加鎖可以在任何一級緩存上實現,但對于處理器的系統緩存來說效果最好。以處理器為參考點,系統緩存一般屬于3級緩存,比1級緩存大128 到256倍。加鎖1級或者2級緩存也可以實現,但不能過度,以免過多地降低處理器和系統的性能。系統緩存加鎖有多個優勢。首先,加鎖范圍大小比經濟可行的 專用內部安全存儲器更大,從而提供更大的安全數據存儲空間。系統緩存加鎖的第二個優勢在于,它可用于鎖定片上安全數據和指令。出于對性能或者安全的考慮, 可將指令鎖定在緩存中。例如,可能需要防止某些關鍵代碼段被暴露。在安全引導過程中,該代碼可從閃存中解密,然后存放在加鎖的系統緩存中,避免在DRAM 中以明文方式暴露。系統緩存加鎖適用于少量或中量數據。但是,當緩存線被加鎖后,緩存和存儲系統的總體性能會受到影響。如果緩存被“過度加鎖”,系統性能 就會嚴重下降。
最后一種方法是為存往DRAM的數據提供某種加密。為DRAM數據加密的這種方法具有更強的擴展性,因為不存在內部 SRAM或者系統緩存加鎖帶來的大小限制。有兩種方案可供討論。第一種方案是通用的方法,即“確切”地找出哪些是敏感數據,然后給這些數據加密。安全引擎 使用名為“安全上下文”的數據結構來存儲密鑰和與特定安全會話有關的其他信息。通用解決方案為安全上下文提供解密和加密,或者僅在上下文進入和離開安全引 擎時提供上下文的密鑰。這種方法在保護上下文數據方面性能良好,但無法保護尚未被識別的敏感數據。第二種方案是一種可覆蓋大量數據的優秀技術,用于為整個 或更大的DRAM段提供可選加密。TS 33.320這樣規定:“包括加密密鑰、認證證書、用戶信息、用戶層數據和控制層數據在內的敏感數據不得在家庭基站(HeNB)中以明文方式提供給非授權 的訪問。”這項要求可以通過DRAM加密予以滿足。
[page]
安全的長期數據存儲
除了短期數據,系統可能還需要安全地存儲長期數據。長期數據是那些不會因電源重啟而丟失的數據,一般存儲在板載非易失性存儲器中。需要長期存儲的數據有 口令、預共享密鑰、證書和文件。安全系統處理器可使用從芯片主機密鑰或安全數據存儲密鑰中派生出的密鑰,或者使用由芯片主機密鑰隨機生成并封裝的密鑰,為 長期敏感數據提供數據保密性和完整性。不管是哪種方法都會把數據關聯到處理器本身,使得在芯片主機密鑰或者安全數據存儲密鑰具有統計唯一性的前提下,只有 該特定處理器才可以解密數據、對數據進行完整性檢查和使用數據。
上述方法一般用于長期數據,因為解密和完整性檢查對于實時數據來說速度太慢。不過如果恢復數據造成的延遲對應用來說可以接受,那么短期數據也可以使用這種方法。
邊界接口保護
如上文所述,處理器或附加存儲器中可能存有SSP和敏感數據。不管處理器或板件是否是安全環境邊界,處理器提供的部分接口將在邊界上可用。因此,必須將 每個接口考慮在內,評估有哪些數據直接或間接通過這些接口進行訪問。接口可以是網絡接口(比如以太網)、外設接口(比如UART或者PCI-e總線)、調 試接口(比如JTAG)和測試接口(比如掃描)。必須采用接入控制方法來限制對外部接口敏感數據的訪問。這些方法包括:
· 存儲器保護單元。保護存儲器區域不受非安全總線主控器和非安全DMA的控制和訪問。
· 外設資產保護。為外設限制性訪問分配安全和非安全狀態。
· 掃描保護。保證沒有敏感數據在IC掃描過程中被訪問。
· 安全調試。保護敏感數據不被調試端口訪問,比如JTAG和處理器調試端口。
敏感安全參數歸零
歸零指通過修改或者刪除數據存儲內容的方式來擦除SSP和其他敏感數據,進而防止數據被恢復。根據NIST FIPS 140規范的要求,應按照安全水平的不同進行不同程度的歸零。FIPS 140要求針對維護和篡改檢測進行歸零。維護包括從系統中以標準操作移除板件。歸零必須對安全邊界內所有位置(包括硬件邏輯、寄存器和存儲器)的敏感數據 進行重寫。歸零必須清除全部明文敏感數據和SSP。還可能需要刪除用于對安全邊界外數據進行加密的密鑰。
即便系統不需要通過清零來滿足 某種標準(比如NIST FIPS 140),也必須認真考慮清零功能,以防范“冷啟動攻擊”。“冷啟動攻擊”指通過系統重啟開關或者簡單斷開和恢復電源的方式進行冷啟動。這種攻擊的原理是 DRAM和SRAM的內容即便在斷電后數秒到數分鐘內仍然可讀。而且通過冷卻存儲器,還能讓這個時間顯著延長。如果沒有歸零功能,冷啟動攻擊會導致包括 SSP在內的存儲器內容被恢復。
Axxia 通信處理器
用于安全系統的AXM2502解決方案
LSI的AXM2502是首款通過片上安全系統復合體(SSC)來實現安全系統功能的Axxia產品。將安全系統功能直接集成到通信處理器中,可以減少潛在的攻擊點,便于運營商和設備制造商:
· 保護軟件和配置的機密性、完整性、可靠性并防止回滾
· 保護敏感安全參數和數據免遭竊取和修改
· 通過反克隆技術保護知識產權
SSC提供下列技術:
· 硬件可信根
· 靈活的安全環境邊界
· 安全引導和受信任執行
· 安全的敏感參數和數據存儲
· 安全的長期數據存儲
· 邊界接口保護
· 敏感安全參數歸零
· 安全調試
用于滿足多標準基站要求的AXM2502解決方案支持2G、3G和4G基站設計。AXM2502產品支持GSM、WCDMA、LTE和LTE Advanced基站架構,并提供從CDMA和WCDMA HSPA 3G基站到LTE和LTE Advanced eNode基站的無縫升級。它還具有很強的擴展性,可以滿足微型基站到超級宏基站等不同規模配置的需求,并且支持很高的用戶密度,同時能夠在各種 AXM2502產品以及Axxia通信處理器3400(ACP3400)系列的不同產品間實現軟件兼容。
基于銅纜、光纖和微波的匯聚型 移動回程(使用IP無線電接入網絡)快速增長,正在促使網絡運營商采用流量整形、互聯網卸載、安全和安全網絡等先進的數據包過濾功能。這就要求具備對流量 的分析和控制能力。這個能力可通過使用AXM2502多核CPU架構以及包含深度數據包檢測、流量管理、安全系統復合體和安全協議處理器在內的多種片上加 速器來實現。安全協議處理器加速器為用戶面和IPsec等傳輸安全技術提供安全通信。
AXM2502解決方案針對性能和物料清單 (BOM)成本進行了優化。該單芯片解決方案集成了多個中央處理單元、數據路徑、以太網交換功能、流量管理功能、服務質量功能、安全系統功能、安全網絡功 能、多業務TDM處理功能(用于傳統協議,比如偽線支持)和時序分組功能。作為補充,它還提供可支持移動回程、IP傳輸和以太網交換的完整軟件套件。
最后,有了LSI的基于API的軟件,系統架構人員和軟件開發人員就可以更加輕松地使用AXM2502解決方案開發自己的系統。LSI軟件可以協助系統設計人員配置AXM2502解決方案,并提供構建安全設備所需的必要屬性。
圖5:AXM2502 Axxia通信處理器