如何進行連網係統的安全防護設計
發布時間:2017-12-29 來源:Andrew Girson, Dan Smith 責任編輯:wenwei
【導讀】理(li)想(xiang)的(de)嵌(qian)入(ru)式(shi)軟(ruan)件(jian)一(yi)向(xiang)兼(jian)具(ju)安(an)全(quan)和(he)防(fang)護(hu)設(she)計(ji)。然(ran)而(er),連(lian)網(wang)技(ji)術(shu)讓(rang)嵌(qian)入(ru)式(shi)係(xi)統(tong)設(she)計(ji)增(zeng)加(jia)了(le)新(xin)的(de)顧(gu)慮(lv),它(ta)需(xu)要(yao)特(te)別(bie)強(qiang)調(tiao)安(an)全(quan)性(xing)和(he)防(fang)護(hu)性(xing)。對(dui)這(zhe)兩(liang)個(ge)概(gai)念(nian)的(de)詳(xiang)細(xi)了(le)解(jie)、加上在設計周期之初就適當地應用最佳實踐,能大大提高產品的整體安全性和防護性。這些最佳實踐包括:采用編碼標準、使用靜態分析工具、代碼審查和威脅建模。
理想的嵌入式軟件一向兼具安全和防護設計。然而,“連網”給醫療、自動駕駛和物聯網(IoT)設備等安全關鍵的應用中,帶來了無法容忍程度的安全漏洞。
安(an)全(quan)與(yu)防(fang)護(hu)的(de)緊(jin)密(mi)結(jie)合(he),加(jia)上(shang)受(shou)到(dao)威(wei)脅(xie)程(cheng)度(du)的(de)提(ti)高(gao),使(shi)得(de)開(kai)發(fa)者(zhe)必(bi)須(xu)充(chong)分(fen)了(le)解(jie)安(an)全(quan)與(yu)防(fang)護(hu)之(zhi)間(jian)的(de)區(qu)別(bie),而(er)且(qie)從(cong)設(she)計(ji)一(yi)開(kai)始(shi)就(jiu)應(ying)用(yong)行(xing)業(ye)最(zui)佳(jia)實(shi)踐(jian),才(cai)能(neng)確(que)保(bao)兩(liang)者(zhe)都(dou)被(bei)設(she)計(ji)進(jin)產(chan)品(pin)中(zhong)(圖1)。

圖1:過濾缺陷:理想的軟件和硬件設計要求在整個設計過程中采用多層次質量保證、防禦和安全保護。(來源:Barr Group)
設計不佳的影響
隨著物聯網的崛起,係統現在很容易受到“遠程攻擊”的影響。最近的一起事件涉及索尼網絡安全攝像機被發現存在後門帳戶。這些端口可能被黑客用於使用僵屍網絡(botnet)惡e意yi軟ruan件jian感gan染ran係xi統tong,並bing發fa起qi更geng多duo攻gong擊ji。索suo尼ni因yin此ci開kai發fa了le固gu件jian補bu丁ding,用yong戶hu可ke以yi下xia載zai來lai關guan閉bi後hou門men。但dan實shi例li中zhong,還hai有you許xu多duo編bian碼ma或huo設she計ji錯cuo誤wu是shi不bu可ke恢hui複fu且qie可ke能neng造zao成cheng災zai難nan性xing後hou果guo的de。
為了證明這點,兩名安全研究人員曾經以遠程無線方式 “黑”了一輛行駛中的Jeep Grand Cherokee,接管了儀表盤功能、方向盤、傳動和刹車製動係統等。當然,這一“劫持”並bing非fei惡e意yi,而er是shi經jing過guo司si機ji許xu可ke,讓rang研yan究jiu人ren員yuan得de以yi展zhan示shi如ru何he輕qing鬆song地di攻gong擊ji網wang絡luo運yun營ying商shang的de互hu聯lian網wang絡luo有you多duo麼me簡jian單dan。盡jin管guan如ru此ci,這zhe次ci的de黑hei客ke入ru侵qin實shi驗yan還hai是shi導dao致zhiChrysler召回了140萬輛車。
當然,係統不一定非要連到互聯網,才易受攻擊、不安全:編寫不佳的嵌入式代碼和設計決策已造成這樣的傷害了。例如1983年推出治療癌症用的Therac-25放射治療機,就是一個關於係統設計應該避免哪些錯誤的經典研究案例。軟件錯誤、缺少硬件互鎖,以及整體性較差的設計決策等多種因素結合在一起,導致了致命的輻射劑量。
導致Therac-25造成致命事故的元凶包括:
•不成熟和不充分的軟件開發過程(“未經測試的軟件”)
•不完整的可靠性建模和故障模式分析
•未針對關鍵軟件進行(獨立)審查
•舊版軟件的重新使用不當
主要故障模式之一涉及頻繁溢出的測試例程中的1字節計數器。如果操作人員在溢出時為機器提供手動輸入,係統使用基於軟件的互鎖將會失效。
1996年6月,歐洲太空總署的火箭Ariane5(Flight 501)在zai發fa射she後hou,偏pian離li其qi預yu定ding的de飛fei行xing計ji劃hua,而er不bu得de不bu引yin爆bao自zi毀hui,這zhe是shi由you於yu為wei了le求qiu快kuai,而er省sheng略lve了le溢yi出chu檢jian查zha所suo導dao致zhi的de。當dang一yi個ge保bao持chi水shui平ping速su度du的de變bian量liang溢yi出chu時shi,就jiu無wu法fa進jin行xing檢jian測ce並bing作zuo出chu適shi當dang響xiang應ying。
盡管如此,關鍵的程序代碼和安防漏洞仍然未得到審查。事實上,Barr Group的《2017年嵌入式係統安全與安防調查》顯示,在工程師所進行的項目中,如果連接至互聯網的項目被黑客攻擊,就會整個掛掉:
•22%未將安全性能作為設計要求
•19%沒遵循編碼標準
•42%根本沒有或隻偶爾進行代碼審查
•48%的人未對其在互聯網上的通信進行加密
•超過33%未執行靜態分析。
了解安全與防護的真正意義,是朝著彌補這一局麵邁出的重要一步。
定義安全和防護性
安全和防護(safety & security)這兩個詞經常被混用。有些開發者經常會有這樣的誤解:如果能編寫出好的代碼,那麼項目就將是安全且受保護的。但顯然不是。
一個“安全”的係統是指:在正常運行過程中,係統本身不會對用戶,或其他任何人造成傷害的係統。“安全關鍵”(safety critical)係統是一種在故障時,可能導致傷害或傷亡的係統。因此,設計者的目標就是盡可能確保係統不出故障或者癱瘓。
另一方麵,“防護”主要關注於產品在授權用戶使用其資產的同時,也防範未經授權的接入(如黑客)的能力。這些資產包括流動或動態數據、代碼和知識產權(IP)、處理器和係統控製中心、通信端口、內存和具有靜態數據的存儲器。
現在應該變得較明朗了,雖然係統能加以防護,但並不一定自動具有安全性:危wei險xian的de係xi統tong也ye可ke能neng與yu安an全quan可ke靠kao的de係xi統tong一yi樣yang具ju有you防fang護hu性xing。然ran而er,不bu具ju防fang護hu性xing的de係xi統tong總zong是shi不bu安an全quan的de,因yin為wei即ji使shi一yi開kai始shi時shi它ta的de功gong能neng是shi安an全quan的de,但dan其qi易yi於yu受shou到dao未wei經jing授shou權quan侵qin入ru的de脆cui弱ruo性xing,意yi味wei著zhe它ta可ke能neng在zai任ren何he時shi候hou變bian得de不bu安an全quan。
實現安全和防護設計
當談到設計安全時,有很多因素要考慮,正如Therac-25的例子一樣。然而,設計師隻能控製其設計方麵,而本文著重的是固件。
關鍵任務應用的一個很好例子是現代化汽車。這些車輛內可能有1億多行代碼,但卻掌握在經常缺乏訓練或分心的用戶(駕駛員)手中。為了補強這部分用戶的需求,以攝像機和傳感器,以及車對基礎設施(V2I)和車對車(V2V)通信的形式添加了更多的安全特征和代碼。代碼量不斷增加,而且是呈指數級增長!
盡管海量代碼使得這種係統的編碼和調試更加困難,但如果遵循一些核心原則,則可以省去大部分調試時間,例如:
•對實時性能、成本、可升級性、安防性、可靠性和安全性有影響的硬件/軟件分配
•實施容錯區域。
•避免單點故障(圖2)
•處理由代碼錯誤、程序本身、內存管理或虛假中斷引起的異常
•將溢出檢查包括在內(Therac-25和Ariane火箭省略了)
•清理來自外界的汙染數據(使用範圍檢查和CRC)。
•在每一層級進行測試(單元測試、集成測試、係統測試、模糊處理、校驗和驗證等)

圖2:安全關鍵係統避免單點故障。(資料來源:美國卡內基梅隆大學教授Phil Koopman)
為安全起見,設計師或開發者需要熟悉用戶和設備認證、公鑰基礎設施(PKI)heshujujiamidefuzaxing。chulexiangshouquanyonghutigongzichanhebaohuzichanmianshouweijingshouquandefangwenwai,anquanxinghaiyiweizhexitongzaimianduigongjihuoguzhangshibuhuizuobuanquanhuozhewufayuliaodaodeshi。
當然,攻擊有各種形式,包括基本拒絕服務(DoS)和分布式DoS(DDoS)。雖(sui)然(ran)開(kai)發(fa)者(zhe)無(wu)法(fa)控(kong)製(zhi)係(xi)統(tong)受(shou)到(dao)什(shen)麼(me)攻(gong)擊(ji),但(dan)他(ta)們(men)可(ke)以(yi)控(kong)製(zhi)係(xi)統(tong)對(dui)攻(gong)擊(ji)的(de)反(fan)應(ying),且(qie)這(zhe)種(zhong)應(ying)對(dui)認(ren)知(zhi)必(bi)須(xu)在(zai)全(quan)係(xi)統(tong)範(fan)圍(wei)內(nei)實(shi)施(shi)。係(xi)統(tong)最(zui)薄(bo)弱(ruo)的(de)環(huan)節(jie)決(jue)定(ding)了(le)係(xi)統(tong)的(de)整(zheng)體(ti)安(an)全(quan)程(cheng)度(du),而(er)假(jia)設(she)攻(gong)擊(ji)者(zhe)會(hui)發(fa)現(xian)該(gai)薄(bo)弱(ruo)環(huan)節(jie)才(cai)是(shi)明(ming)智(zhi)之(zhi)舉(ju)。
針對薄弱環節的示例之一就是遠程固件更新(RFU),可通過設備的遠程固件更新特性對係統進行攻擊。此時的係統十分容易受到攻擊,所以配備防範策略是明智之舉,例如:讓用戶選擇是禁用RFU,還是加載需對後續圖像進行數字簽名的更新。
這看起來似乎與直覺想法相反,但密碼學基本不會是最弱環節。相反,攻擊者會尋找由於實施、協議保護、API、用例和側信道攻擊等其它脆弱的攻擊麵。
在這些領域投入多少工作、時間和資源,取決於防護威脅的類型,每一種威脅都有具體的防範措施。開發者可以采取如下一些常見舉措來提升產品的抗攻擊能力:
•使用無外部存儲器的微控製器
•禁用JTAG接口。
•實施安全啟動。
•使用主密鑰生成每個單元的設備專用密鑰
•使用目標代碼混淆
•實施開機自檢(POST)和內建自測試(BIST)
說到“混淆”,有一種理論提倡“隱藏式防護”(security through obscurity)。但若隻依賴該想法,卻可能致命,因為每個秘密都會產生一個潛在的“軟肋”。無論是通過社會工程(social engineering)、不滿的員工,還是通過自卸和逆向工程等技術,秘密遲早都將不再是秘密。當然,隱藏式防護自有用處,例如讓密鑰保有秘密。
確保安全和防護
雖sui然ran有you許xu多duo技ji術shu和he技ji巧qiao可ke以yi幫bang助zhu開kai發fa者zhe和he設she計ji師shi實shi現xian高gao度du的de安an全quan性xing和he防fang護hu性xing,但dan是shi有you一yi些xie基ji本ben步bu驟zhou可ke以yi確que保bao係xi統tong在zai盡jin可ke能neng合he理li的de情qing況kuang下xia進jin行xing優you化hua。首shou先xian,基ji於yu“久經考驗”的編碼規則、功能安全、行業和特定應用標準進行設計。這些準則包括MISRA和MISRA-C、ISO 26262、汽車開放係統架構(Autosar)、IEC 60335和IEC 60730等。
采用像MISRA這樣的編碼標準不僅有助於規避錯誤,還可以使代碼更易閱讀、一致及可移植(圖3)。

圖3:采用像MISRA這樣的編碼標準不僅有助於規避錯誤,還可以使代碼更易閱讀、一致及可移植(圖3)。(來源:Barr Group)
其次,使用靜態分析(圖4)。這zhe涉she及ji分fen析xi軟ruan件jian,而er非fei執zhi行xing程cheng序xu。它ta是shi種zhong象xiang征zheng性xing執zhi行xing,所suo以yi本ben質zhi上shang是shi模mo擬ni。相xiang比bi之zhi下xia,在zai目mu標biao平ping台tai上shang運yun行xing實shi際ji的de代dai碼ma時shi,動dong態tai分fen析xi將jiang會hui發fa現xian缺que陷xian。

圖4:靜態分析工具運行源文件的“模擬”、語法和邏輯分析,並輸出警告而非目標文件。(來源:Barr Group)
雖然靜態分析並非靈丹妙藥,但它確實增加了另一層保證,因為它能很好地檢測潛在的錯誤;例如使用未初始化的變量、可能的整數溢出/下溢以及有符號和無符號數據類型的混用。此外,靜態分析工具正在不斷改善中。
通常,靜態分析意味著使用專用工具(如PC-Lint或Coverity),但開發者還應考慮重新分析自己的代碼。
第三,進行代碼審查。這將提高代碼的正確性,同時也有助於可維護性和可擴展性。代碼審查還有助於召回/保修維修和產品責任索賠。
第四,進行威脅建模。從使用攻擊樹開始。這要求開發者像攻擊者一樣思考並執行以下操作:
•確定攻擊目標:
o每次攻擊都有一棵單獨的樹
•對於每棵樹(目標):
o確定不同的攻擊
o確定每次攻擊的步驟和選項
值得注意的是,若從多個角度進行此類分析,則可大幅提高其效益。
誰有時間把它做對?
顯而易見,執行上述四個基本步驟就能輕鬆地減少錯誤,並增加安全性和防護性;但這需要時間,因此,開發者必須進行相應的時間預算。雖然項目規模不同,但重要的是必須盡可能實際。
例如,添加15%到50%的設計時間,以利於代碼審查。一些係統需要完整的代碼審查;有些不需要。靜態分析工具可能需要10到dao數shu百bai小xiao時shi進jin行xing初chu始shi設she置zhi,但dan一yi旦dan進jin入ru開kai發fa過guo程cheng的de某mou一yi部bu分fen或huo階jie段duan,產chan品pin開kai發fa就jiu無wu需xu額e外wai時shi間jian進jin行xing產chan品pin開kai發fa了le,他ta們men最zui終zhong都dou通tong過guo更geng好hao的de係xi統tong獲huo得de回hui報bao。
連網技術讓嵌入式係統設計增加了新的顧慮,它需要特別強調安全性和防護性。對這兩個概念的詳細了解、加上在設計周期之初就適當地應用最佳實踐,能大大提高產品的整體安全性和防護性。這些最佳實踐包括:采用編碼標準、使用靜態分析工具、代碼審查和威脅建模。
本文轉載自電子工程專輯。
推薦閱讀:
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 具身智能成最大亮點!CITE 2026開幕峰會釋放產業強信號
- 助力醫療器械產業高質量發展 派克漢尼汾閃耀2026 ICMD
- 比異步時鍾更隱蔽的“芯片殺手”——跨複位域(RDC)問題
- 數據之外:液冷技術背後的連接器創新
- “眼在手上”的嵌入式實踐:基於ROS2與RK3576的機械臂跟隨抓取方案
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
ESD
ESD保護
ESD保護器件
ESD器件
Eurotect
Exar
Fairhild
FFC連接器
Flash
FPC連接器
FPGA
Fujitsu
Future
GFIVE
GPS
GPU
Harting
HDMI
HDMI連接器
HD監控
HID燈
I/O處理器
IC
IC插座
IDT
IGBT
in-cell
Intersil
IP監控
iWatt




