如何進(jìn)行連網(wǎng)系統(tǒng)的安全防護(hù)設(shè)計
發(fā)布時間:2017-12-29 來源:Andrew Girson, Dan Smith 責(zé)任編輯:wenwei
【導(dǎo)讀】理想的嵌入式軟件一向兼具安全和防護(hù)設(shè)計。然而,連網(wǎng)技術(shù)讓嵌入式系統(tǒng)設(shè)計增加了新的顧慮,它需要特別強(qiáng)調(diào)安全性和防護(hù)性。對這兩個概念的詳細(xì)了解、加上在設(shè)計周期之初就適當(dāng)?shù)貞?yīng)用最佳實踐,能大大提高產(chǎn)品的整體安全性和防護(hù)性。這些最佳實踐包括:采用編碼標(biāo)準(zhǔn)、使用靜態(tài)分析工具、代碼審查和威脅建模。
理想的嵌入式軟件一向兼具安全和防護(hù)設(shè)計。然而,“連網(wǎng)”給醫(yī)療、自動駕駛和物聯(lián)網(wǎng)(IoT)設(shè)備等安全關(guān)鍵的應(yīng)用中,帶來了無法容忍程度的安全漏洞。
安全與防護(hù)的緊密結(jié)合,加上受到威脅程度的提高,使得開發(fā)者必須充分了解安全與防護(hù)之間的區(qū)別,而且從設(shè)計一開始就應(yīng)用行業(yè)最佳實踐,才能確保兩者都被設(shè)計進(jìn)產(chǎn)品中(圖1)。
圖1:過濾缺陷:理想的軟件和硬件設(shè)計要求在整個設(shè)計過程中采用多層次質(zhì)量保證、防御和安全保護(hù)。(來源:Barr Group)
設(shè)計不佳的影響
隨著物聯(lián)網(wǎng)的崛起,系統(tǒng)現(xiàn)在很容易受到“遠(yuǎn)程攻擊”的影響。最近的一起事件涉及索尼網(wǎng)絡(luò)安全攝像機(jī)被發(fā)現(xiàn)存在后門帳戶。這些端口可能被黑客用于使用僵尸網(wǎng)絡(luò)(botnet)惡意軟件感染系統(tǒng),并發(fā)起更多攻擊。索尼因此開發(fā)了固件補(bǔ)丁,用戶可以下載來關(guān)閉后門。但實例中,還有許多編碼或設(shè)計錯誤是不可恢復(fù)且可能造成災(zāi)難性后果的。
為了證明這點,兩名安全研究人員曾經(jīng)以遠(yuǎn)程無線方式 “黑”了一輛行駛中的Jeep Grand Cherokee,接管了儀表盤功能、方向盤、傳動和剎車制動系統(tǒng)等。當(dāng)然,這一“劫持”并非惡意,而是經(jīng)過司機(jī)許可,讓研究人員得以展示如何輕松地攻擊網(wǎng)絡(luò)運營商的互聯(lián)網(wǎng)絡(luò)有多么簡單。盡管如此,這次的黑客入侵實驗還是導(dǎo)致Chrysler召回了140萬輛車。
當(dāng)然,系統(tǒng)不一定非要連到互聯(lián)網(wǎng),才易受攻擊、不安全:編寫不佳的嵌入式代碼和設(shè)計決策已造成這樣的傷害了。例如1983年推出治療癌癥用的Therac-25放射治療機(jī),就是一個關(guān)于系統(tǒng)設(shè)計應(yīng)該避免哪些錯誤的經(jīng)典研究案例。軟件錯誤、缺少硬件互鎖,以及整體性較差的設(shè)計決策等多種因素結(jié)合在一起,導(dǎo)致了致命的輻射劑量。
導(dǎo)致Therac-25造成致命事故的元兇包括:
•不成熟和不充分的軟件開發(fā)過程(“未經(jīng)測試的軟件”)
•不完整的可靠性建模和故障模式分析
•未針對關(guān)鍵軟件進(jìn)行(獨立)審查
•舊版軟件的重新使用不當(dāng)
主要故障模式之一涉及頻繁溢出的測試?yán)讨械?字節(jié)計數(shù)器。如果操作人員在溢出時為機(jī)器提供手動輸入,系統(tǒng)使用基于軟件的互鎖將會失效。
1996年6月,歐洲太空總署的火箭Ariane5(Flight 501)在發(fā)射后,偏離其預(yù)定的飛行計劃,而不得不引爆自毀,這是由于為了求快,而省略了溢出檢查所導(dǎo)致的。當(dāng)一個保持水平速度的變量溢出時,就無法進(jìn)行檢測并作出適當(dāng)響應(yīng)。
盡管如此,關(guān)鍵的程序代碼和安防漏洞仍然未得到審查。事實上,Barr Group的《2017年嵌入式系統(tǒng)安全與安防調(diào)查》顯示,在工程師所進(jìn)行的項目中,如果連接至互聯(lián)網(wǎng)的項目被黑客攻擊,就會整個掛掉:
•22%未將安全性能作為設(shè)計要求
•19%沒遵循編碼標(biāo)準(zhǔn)
•42%根本沒有或只偶爾進(jìn)行代碼審查
•48%的人未對其在互聯(lián)網(wǎng)上的通信進(jìn)行加密
•超過33%未執(zhí)行靜態(tài)分析。
了解安全與防護(hù)的真正意義,是朝著彌補(bǔ)這一局面邁出的重要一步。
定義安全和防護(hù)性
安全和防護(hù)(safety & security)這兩個詞經(jīng)常被混用。有些開發(fā)者經(jīng)常會有這樣的誤解:如果能編寫出好的代碼,那么項目就將是安全且受保護(hù)的。但顯然不是。
一個“安全”的系統(tǒng)是指:在正常運行過程中,系統(tǒng)本身不會對用戶,或其他任何人造成傷害的系統(tǒng)。“安全關(guān)鍵”(safety critical)系統(tǒng)是一種在故障時,可能導(dǎo)致傷害或傷亡的系統(tǒng)。因此,設(shè)計者的目標(biāo)就是盡可能確保系統(tǒng)不出故障或者癱瘓。
另一方面,“防護(hù)”主要關(guān)注于產(chǎn)品在授權(quán)用戶使用其資產(chǎn)的同時,也防范未經(jīng)授權(quán)的接入(如黑客)的能力。這些資產(chǎn)包括流動或動態(tài)數(shù)據(jù)、代碼和知識產(chǎn)權(quán)(IP)、處理器和系統(tǒng)控制中心、通信端口、內(nèi)存和具有靜態(tài)數(shù)據(jù)的存儲器。
現(xiàn)在應(yīng)該變得較明朗了,雖然系統(tǒng)能加以防護(hù),但并不一定自動具有安全性:危險的系統(tǒng)也可能與安全可靠的系統(tǒng)一樣具有防護(hù)性。然而,不具防護(hù)性的系統(tǒng)總是不安全的,因為即使一開始時它的功能是安全的,但其易于受到未經(jīng)授權(quán)侵入的脆弱性,意味著它可能在任何時候變得不安全。
實現(xiàn)安全和防護(hù)設(shè)計
當(dāng)談到設(shè)計安全時,有很多因素要考慮,正如Therac-25的例子一樣。然而,設(shè)計師只能控制其設(shè)計方面,而本文著重的是固件。
關(guān)鍵任務(wù)應(yīng)用的一個很好例子是現(xiàn)代化汽車。這些車輛內(nèi)可能有1億多行代碼,但卻掌握在經(jīng)常缺乏訓(xùn)練或分心的用戶(駕駛員)手中。為了補(bǔ)強(qiáng)這部分用戶的需求,以攝像機(jī)和傳感器,以及車對基礎(chǔ)設(shè)施(V2I)和車對車(V2V)通信的形式添加了更多的安全特征和代碼。代碼量不斷增加,而且是呈指數(shù)級增長!
盡管海量代碼使得這種系統(tǒng)的編碼和調(diào)試更加困難,但如果遵循一些核心原則,則可以省去大部分調(diào)試時間,例如:
•對實時性能、成本、可升級性、安防性、可靠性和安全性有影響的硬件/軟件分配
•實施容錯區(qū)域。
•避免單點故障(圖2)
•處理由代碼錯誤、程序本身、內(nèi)存管理或虛假中斷引起的異常
•將溢出檢查包括在內(nèi)(Therac-25和Ariane火箭省略了)
•清理來自外界的污染數(shù)據(jù)(使用范圍檢查和CRC)。
•在每一層級進(jìn)行測試(單元測試、集成測試、系統(tǒng)測試、模糊處理、校驗和驗證等)
圖2:安全關(guān)鍵系統(tǒng)避免單點故障。(資料來源:美國卡內(nèi)基梅隆大學(xué)教授Phil Koopman)
為安全起見,設(shè)計師或開發(fā)者需要熟悉用戶和設(shè)備認(rèn)證、公鑰基礎(chǔ)設(shè)施(PKI)和數(shù)據(jù)加密的復(fù)雜性。除了向授權(quán)用戶提供資產(chǎn)和保護(hù)資產(chǎn)免受未經(jīng)授權(quán)的訪問外,安全性還意味著系統(tǒng)在面對攻擊或故障時不會做不安全或者無法預(yù)料到的事。
當(dāng)然,攻擊有各種形式,包括基本拒絕服務(wù)(DoS)和分布式DoS(DDoS)。雖然開發(fā)者無法控制系統(tǒng)受到什么攻擊,但他們可以控制系統(tǒng)對攻擊的反應(yīng),且這種應(yīng)對認(rèn)知必須在全系統(tǒng)范圍內(nèi)實施。系統(tǒng)最薄弱的環(huán)節(jié)決定了系統(tǒng)的整體安全程度,而假設(shè)攻擊者會發(fā)現(xiàn)該薄弱環(huán)節(jié)才是明智之舉。
針對薄弱環(huán)節(jié)的示例之一就是遠(yuǎn)程固件更新(RFU),可通過設(shè)備的遠(yuǎn)程固件更新特性對系統(tǒng)進(jìn)行攻擊。此時的系統(tǒng)十分容易受到攻擊,所以配備防范策略是明智之舉,例如:讓用戶選擇是禁用RFU,還是加載需對后續(xù)圖像進(jìn)行數(shù)字簽名的更新。
這看起來似乎與直覺想法相反,但密碼學(xué)基本不會是最弱環(huán)節(jié)。相反,攻擊者會尋找由于實施、協(xié)議保護(hù)、API、用例和側(cè)信道攻擊等其它脆弱的攻擊面。
在這些領(lǐng)域投入多少工作、時間和資源,取決于防護(hù)威脅的類型,每一種威脅都有具體的防范措施。開發(fā)者可以采取如下一些常見舉措來提升產(chǎn)品的抗攻擊能力:
•使用無外部存儲器的微控制器
•禁用JTAG接口。
•實施安全啟動。
•使用主密鑰生成每個單元的設(shè)備專用密鑰
•使用目標(biāo)代碼混淆
•實施開機(jī)自檢(POST)和內(nèi)建自測試(BIST)
說到“混淆”,有一種理論提倡“隱藏式防護(hù)”(security through obscurity)。但若只依賴該想法,卻可能致命,因為每個秘密都會產(chǎn)生一個潛在的“軟肋”。無論是通過社會工程(social engineering)、不滿的員工,還是通過自卸和逆向工程等技術(shù),秘密遲早都將不再是秘密。當(dāng)然,隱藏式防護(hù)自有用處,例如讓密鑰保有秘密。
確保安全和防護(hù)
雖然有許多技術(shù)和技巧可以幫助開發(fā)者和設(shè)計師實現(xiàn)高度的安全性和防護(hù)性,但是有一些基本步驟可以確保系統(tǒng)在盡可能合理的情況下進(jìn)行優(yōu)化。首先,基于“久經(jīng)考驗”的編碼規(guī)則、功能安全、行業(yè)和特定應(yīng)用標(biāo)準(zhǔn)進(jìn)行設(shè)計。這些準(zhǔn)則包括MISRA和MISRA-C、ISO 26262、汽車開放系統(tǒng)架構(gòu)(Autosar)、IEC 60335和IEC 60730等。
采用像MISRA這樣的編碼標(biāo)準(zhǔn)不僅有助于規(guī)避錯誤,還可以使代碼更易閱讀、一致及可移植(圖3)。
圖3:采用像MISRA這樣的編碼標(biāo)準(zhǔn)不僅有助于規(guī)避錯誤,還可以使代碼更易閱讀、一致及可移植(圖3)。(來源:Barr Group)
其次,使用靜態(tài)分析(圖4)。這涉及分析軟件,而非執(zhí)行程序。它是種象征性執(zhí)行,所以本質(zhì)上是模擬。相比之下,在目標(biāo)平臺上運行實際的代碼時,動態(tài)分析將會發(fā)現(xiàn)缺陷。
圖4:靜態(tài)分析工具運行源文件的“模擬”、語法和邏輯分析,并輸出警告而非目標(biāo)文件。(來源:Barr Group)
雖然靜態(tài)分析并非靈丹妙藥,但它確實增加了另一層保證,因為它能很好地檢測潛在的錯誤;例如使用未初始化的變量、可能的整數(shù)溢出/下溢以及有符號和無符號數(shù)據(jù)類型的混用。此外,靜態(tài)分析工具正在不斷改善中。
通常,靜態(tài)分析意味著使用專用工具(如PC-Lint或Coverity),但開發(fā)者還應(yīng)考慮重新分析自己的代碼。
第三,進(jìn)行代碼審查。這將提高代碼的正確性,同時也有助于可維護(hù)性和可擴(kuò)展性。代碼審查還有助于召回/保修維修和產(chǎn)品責(zé)任索賠。
第四,進(jìn)行威脅建模。從使用攻擊樹開始。這要求開發(fā)者像攻擊者一樣思考并執(zhí)行以下操作:
•確定攻擊目標(biāo):
o每次攻擊都有一棵單獨的樹
•對于每棵樹(目標(biāo)):
o確定不同的攻擊
o確定每次攻擊的步驟和選項
值得注意的是,若從多個角度進(jìn)行此類分析,則可大幅提高其效益。
誰有時間把它做對?
顯而易見,執(zhí)行上述四個基本步驟就能輕松地減少錯誤,并增加安全性和防護(hù)性;但這需要時間,因此,開發(fā)者必須進(jìn)行相應(yīng)的時間預(yù)算。雖然項目規(guī)模不同,但重要的是必須盡可能實際。
例如,添加15%到50%的設(shè)計時間,以利于代碼審查。一些系統(tǒng)需要完整的代碼審查;有些不需要。靜態(tài)分析工具可能需要10到數(shù)百小時進(jìn)行初始設(shè)置,但一旦進(jìn)入開發(fā)過程的某一部分或階段,產(chǎn)品開發(fā)就無需額外時間進(jìn)行產(chǎn)品開發(fā)了,他們最終都通過更好的系統(tǒng)獲得回報。
連網(wǎng)技術(shù)讓嵌入式系統(tǒng)設(shè)計增加了新的顧慮,它需要特別強(qiáng)調(diào)安全性和防護(hù)性。對這兩個概念的詳細(xì)了解、加上在設(shè)計周期之初就適當(dāng)?shù)貞?yīng)用最佳實踐,能大大提高產(chǎn)品的整體安全性和防護(hù)性。這些最佳實踐包括:采用編碼標(biāo)準(zhǔn)、使用靜態(tài)分析工具、代碼審查和威脅建模。
本文轉(zhuǎn)載自電子工程專輯。
推薦閱讀:
特別推薦
- 授權(quán)代理商貿(mào)澤電子供應(yīng)Same Sky多樣化電子元器件
- 使用合適的窗口電壓監(jiān)控器優(yōu)化系統(tǒng)設(shè)計
- ADI電機(jī)運動控制解決方案 驅(qū)動智能運動新時代
- 倍福推出采用 TwinSAFE SC 技術(shù)的 EtherCAT 端子模塊 EL3453-0090
- TDK推出新的X系列環(huán)保型SMD壓敏電阻
- Vishay 推出新款采用0102、0204和 0207封裝的精密薄膜MELF電阻
- Microchip推出新款交鑰匙電容式觸摸控制器產(chǎn)品 MTCH2120
技術(shù)文章更多>>
- 邁向更綠色的未來:GaN技術(shù)的變革性影響
- 集成電阻分壓器如何提高電動汽車的電池系統(tǒng)性能
- 帶硬件同步功能的以太網(wǎng) PHY 擴(kuò)大了汽車?yán)走_(dá)的覆蓋范圍
- 精準(zhǔn)監(jiān)測電離分?jǐn)?shù)與沉積通量,助力PVD/IPVD工藝與涂層質(zhì)量雙重提升
- ADC 總諧波失真
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
電工電路
電機(jī)控制
電解電容
電纜連接器
電力電子
電力繼電器
電力線通信
電流保險絲
電流表
電流傳感器
電流互感器
電路保護(hù)
電路圖
電路圖符號
電路圖知識
電腦OA
電腦電源
電腦自動斷電
電能表接線
電容觸控屏
電容器
電容器單位
電容器公式
電聲器件
電位器
電位器接法
電壓表
電壓傳感器
電壓互感器
電源變壓器