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