軟件安全是一個熱門話題。考慮到日益增長的網絡化程度和越來越快的開發周期,這是一個真正需要注意的問題。當談到嵌入式系統時,C仍然是主要的編程語言,C++正變得越來越流行。但無論嵌入式開發人員依賴哪種語言,安全性都應該從一開始就在代碼中實現。改進安全性不僅需要大量的工作,而且安全缺陷已經造成的損害以后也無法再預防。
開發人員如何從一開始就將安全性快速輕松地集成到代碼中呢?任何使用編碼標準的人都可以依靠經過驗證的方法來獲得高度的安全性。自動化代碼分析工具也可以幫助他降低時間和成本。
然而,首先,有一點必須再次強調:安全軟件不存在于按下按鈕時!如果你想優化軟件的安全性,你必須在多個級別上共同努力。它應該遵守行業最佳實踐指南。
應用程序最佳保護的編碼標準
事實證明,在絕大多數情況下,在保護數據和設備之間的連接方面,仍然存在嚴重的安全漏洞。在嵌入式開發中,安全和隱私漏洞不僅給用戶帶來風險,它們還可能對公司的聲譽造成重大損害。這就是為什么安全在商業生活中至關重要。
因此,近年來,安全軟件的重要性越來越重要。因此,面向外部安全的新編碼標準與已經成熟的安全關鍵標準一起發展。雖然基本目標不同,但它們的建議往往重疊。
這里提到的大多數編碼標準使用規則來防止編程語言中被相關標準化機構認為不適當的方面。此外,他們還展示了改進開發過程和語言效率的方法。有時,他們還定義了一種新的語言,幫助軟件更安全、更可預測、更穩定和更可維護。
當今最重要的安全相關編碼標準是CERT C安全編碼標準、MISRA C:2012和C安全編碼規則(ISO/IEC TS 17961:2013)。
為正確的應用程序選擇正確的編碼標準
編碼受保護的軟件沒有一個最佳標準。嵌入式開發人員做出正確的選擇必須考慮到不同的方面——項目需要多長時間(這里引用的穩定性非常重要),使用哪種語言版本?還有:是否存在任何現有代碼?
先通知,然后選擇。以下的流程圖可以優化選擇。
場景1:如果要求符合公認的編碼標準(安全關鍵應用的常見場景),MISRA C是首選。本標準的最新版本為MISRA C:2012及其增補件1。如果需要MISRA的先前版本(例如MISRA C:2004),如果你還包括ISO/IEC 17961:2013的安全規則(需要一些努力來調整C版本并刪除重疊。MISRA C:2012的附錄2“MISRA C:針對ISO/IEC 17961:2002 C安全的覆蓋范圍”是一個很好的方法。)
場景2:如果應用程序沒有法規遵從性要求,并且不需要以犧牲代碼可移植性為代價的高性能,那么仍然建議關注最高的完整性。在這種情況下,MISRA C:2012也是最佳選擇。
場景3:與場景2一樣,在場景1中,CERT C可以提供寶貴的安全支持。建議嵌入式開發人員將CERT C與擬議標準(在流程圖中用虛線表示)相結合。然而,如果MISRA C:2012被認為限制性太強——例如,采用高完整性方法——建議只使用CERT C。這將在良好的級別上創建代碼安全性。
結論
你選擇創建安全代碼的編碼標準取決于許多因素,包括了解每個標準的特性和優點。最重要的是,他們知道如何滿足當前開發項目的要求。
此處顯示的過程旨在使用PRQA的QA-C和QA-C++自動化分析工具等工具執行自動化測試。嵌入式開發人員利用這些工具對軟件代碼進行深入分析,以檢測并消除錯誤。或者最好的是:不要讓它一開始就發生。它們自動強制遵守符合標準的軟件的編碼規則。