當今的嵌入式系統常常處理應用代碼(IP)和數據等敏感信息,因此安全是其設計的一個主要關注因素。為了確立一個合理的基礎來判斷建議的安全系統是否足以御敵或是防衛過當,就必須識別所察覺到的安全威脅。這意味著我們需要弄清對手有哪些,他們有什么樣的能力,他們的目標是什么?我們要保護什么,我們要防范誰的威脅或什么威脅?世界上并沒有一個包打天下的解決方案,也沒有百分之百安全的安全系統。然而,安全系統不必是完美無缺的解決方案,也不需要全然牢不可破以至于失去應用價值。安全系統只要足夠安全即可,也就是在它所保護的數據的預期有效時間內,它能夠抵御可能的敵人進攻即可。
若沒有應用環境,安全就沒有意義
嵌入式系統設計師經常誤解安全,認為諸如特定的加密算法和安全協議等安全措施只是系統的附加特性。安全是一個過程,而不是永遠保持不變的一款產品或一種終極狀態。而且,也不能在產品將永遠保持安全的假設下,把安全措施簡單地加入到一款產品中。當今設計師面臨的最棘手難題之一就是明確嵌入式系統的安全要求和目標。有助于解決這一難題的方法很多,本文所討論的方法涉及威脅建模和風險評估,目的是幫助設計師定義安全策略,然后設計對策來實施安全策略。
安全設計——在設計的初始階段檢測威脅
在設計安全解決方案的時候,首先必須做的就是定義一個威脅模型,然后再創建安全策略。一旦評估完成,就能安心地選擇具體的技術來實現安全對策。威脅決定應對策略,策略決定設計。參見圖1
圖1 設計安全方案需要(1)定義一個威脅模型,(2)創建一個安全策略。
許多設計師都會犯同一個錯誤,在設計安全系統時沒有首先明確和了解可能遇到的真正威脅,以及這些威脅會給他們的終端產品帶來的重大風險。相反,他們教條地把各類安全技術堆在一起,并希望能獲得很高的安全性。這樣做代價高昂,沒有系統能防御所有的安全威脅,在設計中囊括那些沒有必要的技術和防御沒有實際威脅的風險毫無意義。
威脅建模——價值意味著風險
對于資源受限的設備,嵌入式系統必須在存儲容量、功耗、處理能力、上市時間及成本等參數和安全需求之間獲取一種平衡。盡管存在資源不足的挑戰,通過仔細考慮威脅模型并設計系統使其工作在能滿足該模型的可用計算能力限制之內,仍有可能開發出使產品在開放環境中有效工作的系統。
對系統設計師來說,考慮“威脅建模”的原理非常有用。威脅建模是基于一種假設,即每個系統都有值得保護的固有價值。然而,因為這些系統是有價值的,他們對內部或外部威脅也是開放的,這些威脅能夠且經常給終端產品帶來損害。設計完成后的安全漏洞常常是無法修正的,且危及投入的資金和開發資源,因此需要在設計周期的初始階段增強對安全評估的需求,并在整個設計周期進行監測和重復修正。
本質上,我們可以把威脅模型定義為:“識別一組可能的攻擊,以便考慮配合一套徹底的風險評估策略。”有了威脅模型,我們就能評估攻擊的概率、潛在危害和優先級。
威脅建模很難,但是很有必要。威脅建模需要考慮系統是怎樣受到攻擊的。若建模成功,它就能解決潛在的系統安全故障隱患,諸如怎樣發生故障、以及故障時出現什么情況等問題。通常在市場和成本的壓力下,這個評估以一種特別的方式來進行,即通過集思廣益征集系統有可能受到的所有攻擊(當然,潛在的黑客或許比您更超前一步)。對這個過程來說,一個更加系統化及可重復的方法是使用攻擊樹,這個概念首先是由Bruce Schneier[1,2]提出來的。攻擊樹提供一種將攻擊系統的不同方式進行系統性分類的方法。大致來說,就是以一種樹的結構描述系統所受的攻擊,樹結構模型中的節點代表攻擊。樹的根節點是攻擊者的總目標,達到該目標的不同路徑則是葉節點,如圖2所示。
圖2. 代表任何必須保護知識產權(IP)的嵌入式系統的攻擊樹,此類系統包括手機、VoIP、視頻監控系統等
當正確完成威脅建模時,真正的威脅就被確定下來了。然而,如果弄錯了可能存在的威脅的話,其代價將是高昂的。設計師弄錯威脅的一個案例是DVD的保護措施。盡管DVD碟片被加密,密鑰也放在播放機里,只要播放機里包含抗篡改硬件,這種保護方式是沒有問題的。但引入軟件播放器時,密鑰會曝露出來,通過逆向工程就能恢復密鑰,也使任何人都能隨便復制和散布任何DVD內容。
在這種情況下,它是有缺陷的威脅模型。雖然有安全措施,但是這無法真正解決問題。
風險評估
僅僅列出一堆威脅是不夠的,由于不同威脅的風險不同,因此還需要知道每種威脅的風險。威脅建模的下一個步驟是風險評估,這是在任何安全系統設計中的一個至關重要的部分。風險評估的一些基礎問題,即“保護什么”、“為什么要保護”和“防范的對象是誰”,應在設計周期的最初階段厘清。盡早采取表1所示的措施,將有助于您選擇有效、安全的防范技術和防御策略。
表1. 風險評估
安全策略
識別出威脅,并權衡風險后,接下來就該建立安全策略了。安全策略是解決方案背后的戰略,而技術僅僅是戰術手段。安全策略描述“為什么”,而不是“如何做”。
例如,基于FPGA設計的安全策略目標之一也許是“保持配置位流的機密性”,這是一個系統目標。“如何做”或對策的實施可能是采用諸如AES等對稱密鑰加密的方式,對配置位流進行加密以便實現這個目標。
整體的設計流程總結如下:
了解系統的真正威脅,并評估這些威脅的風險。
評估哪些威脅是最危險的,并且最可能發生。
將系統性防御這些威脅所需的安全策略進行描述并歸檔。這將是一系列的聲明,例如:“只有可信任的代碼才允許進入受限制的內存”,或“密碼密鑰必須保密”。
設計并實施能加強系統安全策略的防范措施。理論上,這些防范措施是保護、檢測和回應的混合機制。
防范措施
在確定了潛在的攻擊,且已定義好安全目標后,就可以考慮實施防范技術來減輕風險。一套有效的安全防范措施包括三個不同的部分:保護、檢測、回應。這些對策必須基于系統已知威脅來合理地共同工作。如果保護機制被攻破,必須依靠檢測和回應機制來抵御攻擊。如果回應機制不存在或無效,那擁有檢測機制也就沒有意義。
在嵌入式系統中,保護、檢測和回應技術可以采取許多形式(參見表2)。這些技術互相配合,可以阻止潛在的攻擊,或者在受到攻擊后提供有用的法庭審核信息。
表2. 防范技術
結語
安全設計是一個動態的、與具體的系統相關的過程,且往往很復雜。對于本文中談論的每種安全話題,都有大量研究和專門技術資料供設計師研究和學習。在開始進行設計時,最重要的事情就是盡早開始安全需求評估,定義系統安全目標,并經常性地根據系統用途及市場的變化來確定是否最初的威脅已經改變或擴展。
您什么時候才能知道系統是足夠安全的?澳大利亞新南威爾士Country Energy負責安全的Robbie Sinclair曾經說過:“在您感覺不夠安全之前,安全措施總是會過量的。”當您開始安全評估時,請給出您對“多大程度的安全才算安全”這個問題的答案。
Philip Giordano是ADI公司高級應用工程師,1998年加入ADI公司,目前負責嵌入式處理器的新產品開發,重點是安全特性。
-
嵌入式系統
+關注
關注
41文章
3587瀏覽量
129435 -
安全
+關注
關注
1文章
340瀏覽量
35693 -
檢測
+關注
關注
5文章
4480瀏覽量
91443
發布評論請先 登錄
相關推薦
評論