若沒(méi)有應(yīng)用環(huán)境,安全就沒(méi)有意義。嵌入式系統(tǒng)設(shè)計(jì)師經(jīng)常誤解安全,認(rèn)為諸如特定的加密算法和安全協(xié)議等安全措施只是系統(tǒng)的附加特性。安全是一個(gè)過(guò)程,而不是永遠(yuǎn)保持不變的一款產(chǎn)品或一種終極狀態(tài)。而且,也不能在產(chǎn)品將永遠(yuǎn)保持安全的假設(shè)下,把安全措施簡(jiǎn)單地加入到一款產(chǎn)品中。設(shè)計(jì)師應(yīng)該在設(shè)計(jì)過(guò)程開始的時(shí)候,就把安全和其他參數(shù)如成本、性能和功耗等一并進(jìn)行考慮。 在設(shè)計(jì)的初始階段,利用安全設(shè)計(jì)檢測(cè)威脅 在設(shè)計(jì)安全解決方案的時(shí)候,首先必須做的就是定義一個(gè)威脅模型,然后再創(chuàng)建安全策略。一旦評(píng)估完成,就能安心地選擇具體的技術(shù)來(lái)實(shí)現(xiàn)安全對(duì)策。威脅決定應(yīng)對(duì)策略,策略決定設(shè)計(jì)。 許多設(shè)計(jì)師都會(huì)犯同一個(gè)錯(cuò)誤,在設(shè)計(jì)安全系統(tǒng)時(shí)沒(méi)有首先明確和了解可能遇到的真正威脅、以及這些威脅會(huì)為他們的終端產(chǎn)品帶來(lái)的重大風(fēng)險(xiǎn)。相反,他們教條地把分類的安全技術(shù)堆在一起,并希望能獲得很高的安全性。這樣做代價(jià)高昂,沒(méi)有系統(tǒng)能防御所有的安全威脅,在設(shè)計(jì)中囊括那些沒(méi)有必要的技術(shù)和防御沒(méi)有實(shí)際威脅的風(fēng)險(xiǎn)毫無(wú)意義。 即使威脅建模有價(jià)值,它本身也存在風(fēng)險(xiǎn) 對(duì)于資源受限的設(shè)備,嵌入式系統(tǒng)必須在存儲(chǔ)容量、功耗、處理能力、上市時(shí)間及成本等參數(shù)和安全需求之間獲取一種平衡。盡管存在資源不足的挑戰(zhàn),通過(guò)仔細(xì)考慮威脅模型并設(shè)計(jì)系統(tǒng)使其工作在能滿足該模型的可用計(jì)算能力限制之內(nèi),仍有可能開發(fā)出使產(chǎn)品在開放環(huán)境中有效工作的系統(tǒng)。 對(duì)系統(tǒng)設(shè)計(jì)師來(lái)說(shuō),考慮“威脅建模”的原理非常有用。威脅建模是基于一種假設(shè),即每個(gè)系統(tǒng)都有值得保護(hù)的固有價(jià)值。然而,因?yàn)檫@些系統(tǒng)是有價(jià)值的,他們對(duì)內(nèi)部或外部威脅也是開放的,這些威脅能夠且經(jīng)常給終端產(chǎn)品帶來(lái)?yè)p害。設(shè)計(jì)完成后的安全漏洞常常是無(wú)法修正的,且危及投入的資金和開發(fā)資源,因此需要在設(shè)計(jì)周期的初始階段增強(qiáng)對(duì)安全評(píng)估的需求,并在整個(gè)設(shè)計(jì)周期中進(jìn)行監(jiān)測(cè)和重復(fù)修正。 本質(zhì)上,我們可以把威脅模型定義為識(shí)別一組可能的攻擊,以便考慮配合一套徹底的風(fēng)險(xiǎn)評(píng)估策略。有了威脅模型,您就能估計(jì)攻擊的概率、潛在危害和優(yōu)先級(jí)。 威脅建模很難,但是很有必要,威脅建模需要考慮系統(tǒng)是怎樣被攻擊的。建模完成后,它解決了潛在的系統(tǒng)安全故障隱患,解決了諸如它是如何產(chǎn)生、以及在出現(xiàn)安全故障時(shí)發(fā)生了什么等問(wèn)題。通常在市場(chǎng)和成本的壓力下,這個(gè)評(píng)估以一種特別的方式來(lái)進(jìn)行,即通過(guò)集思廣益征集系統(tǒng)有可能受到的所有攻擊(當(dāng)然,潛在的黑客或許比您更超前一步)。對(duì)這個(gè)過(guò)程來(lái)說(shuō),一個(gè)更加系統(tǒng)化及可重復(fù)的方法是使用攻擊樹,這個(gè)概念首先是由Bruce Schneier [1,2]提出來(lái)的。攻擊樹提供一種將攻擊系統(tǒng)的不同方式進(jìn)行系統(tǒng)性分類的方法。大致來(lái)說(shuō),就是您以一種樹的結(jié)構(gòu)描述了系統(tǒng)所受的攻擊,在樹結(jié)構(gòu)中節(jié)點(diǎn)代表著攻擊時(shí)間。樹的根節(jié)點(diǎn)是攻擊者的總目標(biāo),達(dá)到該目標(biāo)的不同路徑則是葉節(jié)點(diǎn)。 當(dāng)正確完成威脅建模時(shí),真正的威脅就被確定下來(lái)了。然而,如果弄錯(cuò)了可能存在的威脅的話,其代價(jià)將是高昂的。設(shè)計(jì)師弄錯(cuò)威脅的一個(gè)案例是DVD的保護(hù)。盡管DVD碟片被加密,密鑰也被放在播放機(jī)里,只要播放機(jī)里包含抗篡改硬件,這種保護(hù)方式是沒(méi)有問(wèn)題的。但當(dāng)引入軟件播放器時(shí),密鑰就被曝露出來(lái),通過(guò)反向工程就能恢復(fù)密鑰,也使任何人都能自由復(fù)制和散布任何DVD內(nèi)容。在這種情況下,它是有缺陷的威脅模型。雖然有安全措施,但是這無(wú)法真正解決問(wèn)題。 僅僅列出一堆威脅是不夠的,由于不同威脅的風(fēng)險(xiǎn)不同,您還需要知道每種威脅的風(fēng)險(xiǎn)。威脅建模的下一個(gè)步驟是風(fēng)險(xiǎn)評(píng)估,這是在任何安全系統(tǒng)設(shè)計(jì)中的一個(gè)至關(guān)重要的部分。 風(fēng)險(xiǎn)評(píng)估 在風(fēng)險(xiǎn)評(píng)估中,不可避免地要討論一些基礎(chǔ)問(wèn)題,即What、Why以及Who? What—您在保護(hù)什么?在設(shè)計(jì)最初階段,就需要在您的系統(tǒng)中確定需要保護(hù)的關(guān)鍵對(duì)象。這些對(duì)象可能包括密鑰、特殊算法、器件標(biāo)識(shí)符、數(shù)字媒體、生物特征識(shí)別或產(chǎn)品固件。 Why—您為什么要保護(hù)這個(gè)設(shè)計(jì)?您是否需要作為與商業(yè)伙伴協(xié)議的一部分而保護(hù)IP,該商業(yè)伙伴只在您承諾在自己設(shè)計(jì)的產(chǎn)品中能保護(hù)其安全才會(huì)向您提供IP?您是否需要在一個(gè)醫(yī)療設(shè)備或商業(yè)銷售點(diǎn)系統(tǒng)中保證機(jī)密的用戶信息是安全的?您所設(shè)計(jì)的產(chǎn)品是否將是黑客攻擊目標(biāo)的熱門產(chǎn)品?所有這些問(wèn)題都將決定對(duì)有效的安全防范技術(shù)的選擇。 Who—是誰(shuí)真正地想要您的IP?當(dāng)然,攻擊者名單是列不盡的。不管他是享受攻擊挑戰(zhàn)的經(jīng)驗(yàn)豐富的技術(shù)專家,還是意圖獲取您的IP的大型組織、政府或競(jìng)爭(zhēng)對(duì)手,關(guān)鍵都是要識(shí)別攻擊者的動(dòng)機(jī)、資源和專有技術(shù),這樣您才能設(shè)計(jì)適當(dāng)?shù)姆烙胧?br /> 安全策略 一旦您已經(jīng)識(shí)別出了您的威脅,并且權(quán)衡了風(fēng)險(xiǎn),接下來(lái)就該建立安全策略了。安全策略是解決方案背后的戰(zhàn)略,而技術(shù)僅僅是戰(zhàn)術(shù)手段。安全策略描述“為什么”,而不是“如何做”。 例如,一個(gè)基于FPGA設(shè)計(jì)的安全策略目標(biāo)之一也許是“保持配置碼流的機(jī)密性”,這是系統(tǒng)的目標(biāo)之一。“如何做”或?qū)Σ叩膶?shí)施可能會(huì)是采用諸如AES等對(duì)稱密鑰加密的方式,對(duì)配置碼流進(jìn)行加密以便實(shí)現(xiàn)這個(gè)目標(biāo)。 下面總結(jié)了如何將這個(gè)工作放入到整體的設(shè)計(jì)流程中。 了解系統(tǒng)的真正威脅、并且評(píng)估這些威脅的風(fēng)險(xiǎn),評(píng)估哪些威脅是最危險(xiǎn)的并最可能發(fā)生。將系統(tǒng)性防御這些威脅所需的安全策略進(jìn)行描述并歸檔。這將是一系列的聲明,例如:“只有可信任的代碼才允許進(jìn)入到受限制的內(nèi)存”,或“密碼密鑰必須保密”。 設(shè)計(jì)并實(shí)施能加強(qiáng)系統(tǒng)安全策略的防范措施。理論上,這些防范措施是保護(hù)、檢測(cè)和回應(yīng)的混合機(jī)制。 防范措施 在系統(tǒng)確定了潛在的攻擊,且已定義好安全目標(biāo)后,就可以考慮實(shí)施防范技術(shù)來(lái)減輕風(fēng)險(xiǎn)。一套有效的安全防范措施包括3個(gè)不同的部分,并且它們依次發(fā)揮作用:保護(hù)、檢測(cè)、回應(yīng)。 為了解釋保護(hù)、檢測(cè)和回應(yīng)之間的關(guān)系,我們來(lái)看一個(gè)經(jīng)典的汽車盜竊案例。偷車賊如果想要偷竊您的新車,他必須首先破環(huán)車門鎖。如果竊賊想要開走汽車而不僅是搶劫車內(nèi)財(cái)物,他可能遇到許多安全措施,包括由于沒(méi)有使用正確的鑰匙而導(dǎo)致觸發(fā)引擎關(guān)斷開關(guān),或者由于聲音、沖擊或篡改而激活警報(bào)聲。甚至車主還會(huì)采納其他額外的、意料之外的安全措施,如Lojack汽車恢復(fù)系統(tǒng),盡管該系統(tǒng)還存在安全漏洞,但也可能把警察直接帶到盜車賊身邊。在安全設(shè)計(jì)術(shù)語(yǔ)中,門鎖和引擎關(guān)斷機(jī)制是保護(hù)對(duì)策,而警報(bào)是檢測(cè)對(duì)策,警察和Lojack系統(tǒng)是回應(yīng)對(duì)策。 這些對(duì)策必須基于系統(tǒng)已知威脅來(lái)合理地共同工作。如果保護(hù)機(jī)制被攻破,必須依靠檢測(cè)和回應(yīng)機(jī)制來(lái)抵御攻擊。如果回應(yīng)機(jī)制不存在或無(wú)效,那擁有檢測(cè)機(jī)制也就沒(méi)有意義。 在嵌入式系統(tǒng)中,保護(hù)機(jī)制也許采取加密的形式、反篡改的機(jī)制[3]、或采用多種物理安全形式如機(jī)械性地搞亂連接處理器、內(nèi)存裝置數(shù)據(jù)線以及關(guān)鍵元件封裝的硬件接入點(diǎn)。例如,媒體播放器一般使用加密法來(lái)實(shí)施數(shù)字版權(quán)管理(DRM),以便作為對(duì)音樂(lè)和電影內(nèi)容的保護(hù)。 檢測(cè)機(jī)制如入侵傳感器可被用于檢測(cè)開路或短路,從而指示發(fā)生了企圖物理性損害設(shè)備的行為。 回應(yīng)是系統(tǒng)的最后防御。通常,回應(yīng)機(jī)制將關(guān)閉或禁用設(shè)備,或刪除敏感內(nèi)容以預(yù)防發(fā)生危害。回應(yīng)機(jī)制也能記錄檢測(cè)到的攻擊類型及發(fā)生時(shí)間,這樣就能在受到攻擊后提供有用的法庭審核信息。 結(jié)語(yǔ) 安全設(shè)計(jì)就是一個(gè)動(dòng)態(tài)的、與具體的系統(tǒng)相關(guān)的過(guò)程,且往往很復(fù)雜。對(duì)于本文中談?wù)摰拿糠N安全話題,都有大量研究和專門技術(shù)資料供設(shè)計(jì)師研究和學(xué)習(xí)。在開始進(jìn)行設(shè)計(jì)時(shí),最重要的事情就是盡早開始您的安全需求評(píng)估,定義系統(tǒng)安全目標(biāo),并經(jīng)常性地根據(jù)系統(tǒng)用途及市場(chǎng)的變化來(lái)確定是否最初的威脅已經(jīng)改變或擴(kuò)展。 什么時(shí)候您才會(huì)知道您的系統(tǒng)是足夠安全的?澳大利亞新南威爾士Country Energy負(fù)責(zé)安全的Robbie Sinclair曾經(jīng)說(shuō)過(guò):“在您感覺(jué)到不夠安全之前,安全措施總是過(guò)量的。”當(dāng)您開始您的安全評(píng)估時(shí),請(qǐng)給出您對(duì)“多大程度的安全才算安全”這個(gè)問(wèn)題的答案。 |
“設(shè)計(jì)師應(yīng)該在設(shè)計(jì)過(guò)程開始的時(shí)候,就把安全和其他參數(shù)如成本、性能和功耗等一并進(jìn)行考慮。” 好文章,學(xué)習(xí) |
好 |