安全性一直是物聯(lián)網(wǎng)(IoT)中眾多嵌入式系統(tǒng)的首要問題。LDRA報(bào)告說,如果被滲透,埋在電網(wǎng),發(fā)電,制造,汽車系統(tǒng),醫(yī)療設(shè)備,建筑物管理,氣泵,烤面包機(jī)等中的系統(tǒng)可能會(huì)構(gòu)成重大風(fēng)險(xiǎn)。
幸運(yùn)的是,有了安全性,古老的格言“一盎司的預(yù)防值得一磅的治療”無疑是正確的,并且是更新的“向左移”流行語的基礎(chǔ)!工程遠(yuǎn)見有助于以比隨后的反應(yīng)測試更低的成本構(gòu)建安全的系統(tǒng)。實(shí)際上,由于構(gòu)建安全軟件與構(gòu)建功能安全的應(yīng)用程序有很多共同點(diǎn),因此安全軟件的開發(fā)從遵循功能安全過程開始。
請考慮以下最佳做法,以幫助產(chǎn)生高質(zhì)量的代碼并提高嵌入式系統(tǒng)的安全性:
1.將安全性納入軟件開發(fā)生命周期
傳統(tǒng)的安全代碼驗(yàn)證在很大程度上是被動(dòng)的。根據(jù)相對寬松的準(zhǔn)則來開發(fā)代碼,然后進(jìn)行測試以識(shí)別漏洞。無論是使用敏捷開發(fā)還是傳統(tǒng)的開發(fā)生命周期模型,都存在一種更加主動(dòng)的內(nèi)置安全性方法。
在傳統(tǒng)開發(fā)中,需求流向設(shè)計(jì),編碼(可能通過模型)和測試。通過敏捷開發(fā),需求可以由內(nèi)而外地逐步構(gòu)建,每個(gè)層次都有自己的需求,設(shè)計(jì),代碼和測試循環(huán)。無論采用哪種方法,確保安全要求都是開發(fā)過程不可分割的一部分,這將帶來比僅在最后尋找漏洞要令人滿意的結(jié)果。
2.確保雙向可追溯性
大多數(shù)功能安全標(biāo)準(zhǔn)都需要雙向可追溯性證明,以證明從需求到設(shè)計(jì),代碼和測試的所有開發(fā)階段之間的開發(fā)階段之間完整而徹底的覆蓋。通過這種透明性,可以通過影響分析來評估對需求的任何更改或失敗的測試用例的影響,然后加以解決。
可以自動(dòng)重新生成工件,以提供持續(xù)符合相應(yīng)標(biāo)準(zhǔn)的證據(jù)。在安全至上的情況下,雙向可追溯性還可以確保沒有冗余代碼或未指定的功能,并且包括后門方法。這些優(yōu)點(diǎn)強(qiáng)調(diào)了系統(tǒng)開發(fā)的價(jià)值,以提高構(gòu)建安全系統(tǒng)的能力。
3.選擇一個(gè)安全的語言子集
使用C或C++開發(fā)時(shí),大約80%的軟件缺陷可歸因于20%的語言構(gòu)造的不正確使用。語言子集通過防止或標(biāo)記使用不安全的構(gòu)造來提高安全性和安全性。MISRAC和卡耐基梅隆軟件工程學(xué)院(SEI)CERTC這兩種流行的編碼標(biāo)準(zhǔn)可幫助開發(fā)人員生成安全的代碼。
應(yīng)用MISRAC或CERTC會(huì)比未應(yīng)用這兩種方法產(chǎn)生的代碼更安全。但是,手動(dòng)執(zhí)行這些準(zhǔn)則要付出時(shí)間,精力,金錢和諷刺性的代價(jià),因?yàn)槭謩?dòng)過程很復(fù)雜且容易出錯(cuò)。為了降低成本和提高生產(chǎn)率,開發(fā)組織需要自動(dòng)化對合規(guī)性的支持。
4.使用以安全為重點(diǎn)的流程標(biāo)準(zhǔn)
安全標(biāo)準(zhǔn)提供了另一種安全開發(fā)解決方案,盡管安全標(biāo)準(zhǔn)還沒有像功能安全標(biāo)準(zhǔn)那樣得到很好的開發(fā)和時(shí)間測試,而功能安全標(biāo)準(zhǔn)已經(jīng)使用了數(shù)十年。但是,隨著特定于行業(yè)的安全標(biāo)準(zhǔn)的發(fā)展,這將改變。
例如,汽車工業(yè)目前正在開發(fā)ISO/SAE21434“道路車輛網(wǎng)絡(luò)安全工程”,以緩解作為網(wǎng)絡(luò)攻擊目標(biāo)的聯(lián)網(wǎng)車輛的問題。與SAEJ3061“網(wǎng)絡(luò)物理車輛系統(tǒng)網(wǎng)絡(luò)安全指南”的高級指導(dǎo)原則相比,更詳盡的文檔有望使ISO/SAE21434廣受期待。
5.盡可能自動(dòng)化
在軟件開發(fā)過程的每個(gè)階段,自動(dòng)化都會(huì)減少嵌入式系統(tǒng)中的漏洞,并節(jié)省大量時(shí)間和成本。開發(fā)人員可以插入需求工具(例如,IBMRationalDOORS),導(dǎo)入仿真和建模構(gòu)造,并針對代碼進(jìn)行測試,以一目了然地了解如何以及是否滿足需求,遺漏了什么以及在哪里死了的無效代碼。不能滿足要求。
靜態(tài)分析引擎可以檢查對編碼標(biāo)準(zhǔn)以及功能安全性和安全性標(biāo)準(zhǔn)的符合性。通過自動(dòng)化和安全的設(shè)計(jì),諸如滲透測試之類的反應(yīng)性測試就占有一席之地,但是它們的作用是確認(rèn)代碼是安全的,而不是找出不存在的地方。
6.選擇一個(gè)安全的軟件基礎(chǔ)
安全的嵌入式軟件必須在安全的平臺(tái)上運(yùn)行,因此,如果應(yīng)用程序受到攻擊,它將在與其他軟件組件(“域分離”)隔離的自己的筒倉中運(yùn)行。自動(dòng)化的軟件測試和驗(yàn)證工具從需求規(guī)格說明到設(shè)計(jì)和建模,再到編碼和文檔,都集成到常見的開發(fā)環(huán)境中。這樣可以確保開發(fā)人員可以在熟悉的環(huán)境中以及已經(jīng)為其系統(tǒng)指定的工具中構(gòu)建安全的系統(tǒng)。
遵循這六個(gè)過程為開發(fā)安全,可靠和可靠的IoT嵌入式軟件提供了一種緊密結(jié)合的方法。
責(zé)任編輯人:CC
-
嵌入式
+關(guān)注
關(guān)注
5060文章
18979瀏覽量
302230 -
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3553瀏覽量
129131 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2902文章
44117瀏覽量
370418
發(fā)布評論請先 登錄
相關(guān)推薦
評論