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