精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

安全編碼技術:提高嵌入式應用代碼安全性與可靠性

馬華1 ? 來源:IAR ? 作者:IAR ? 2024-08-27 15:01 ? 次閱讀

作者:IAR

編程語言的現代化和更好的編碼技術與從機械計算機到現代軟件開發流程的演變直接相關。我們已經從高度專業化、主要是數學符號的表示法過渡到了更接近人類語法的高級編程語言,這一進步歸功于編譯器技術。然而,這也打開了代碼缺陷之門。 C和C++ 等高級編程語言,包含大量未定義的行為,而不同的編譯器對這些行為的解釋可能略有不同,這可能會導致未知或不希望出現的副作用,最終轉化為缺陷。

查找和修復這些缺陷可能會占用高達80%的開發時間,具體取決于開發機構的成熟程度。這引出了一個明顯的結論:代碼質量是一個大問題。那么,為什么不盡量避免缺陷,以減少調試所需的時間呢?

順便說一句,我們現在仍然在軟件中使用“錯誤”和“調試”這些概念,但這些詞的起源可以追溯到哈佛大學的機械計算機。當時,一只飛蛾卡在繼電器中,這一事件被記錄為計算機歷史上第一個“錯誤”或缺陷。

一次又一次重復同樣的錯誤

眾所周知,在Web、應用程序、桌面,甚至嵌入式開發中,開發人員往往會無意間一次又一次地在他們的源代碼中引入相同類型的錯誤。這個結論來自于多個重要機構,如NASA、貝爾實驗室和MITRE,他們進行了多項調查和研究。常見缺陷的例子包括在C++代碼(甚至C代碼)中沒有進行分配后的釋放,以及使用沒有原型的函數,因此無法在編譯時進行嚴格的類型檢查。這項研究的結果列出了最佳編程實踐或推薦的編程實踐,它們可以識別有風險的和不良的編碼行為。

有許多關于如何提高代碼質量的指南和編碼實踐,它們都基于常見的錯誤,并指出了如何在將來避免這些常見錯誤。其中一些技巧和實踐已經成為被廣泛接受的標準(比如MISRA-C和CERT-C),特別是在汽車、醫療和鐵路等關鍵行業中,以確保應用程序的代碼安全性(code safety)和代碼防護能力(code security)。諸如IEC 61508、EN 50128和ISO 26262等功能安全標準建議[或強烈建議,具體取決于安全完整性等級(SIL)或汽車安全完整性等級(ASIL)]使用靜態和運行時分析工具,以滿足標準。因為安全關鍵系統中的缺陷可能會導致嚴重后果,如人員傷亡或環境破壞。

關注可靠性

安全編碼技術要綜合考慮代碼質量、代碼安全性和代碼防護能力。代碼安全性關注的是軟件的可靠性,而代碼防護能力則旨在防止不必要的活動,并且在遭受攻擊時確保系統安全。這兩者都高度依賴于代碼質量,因為代碼質量是每個可靠應用程序的基礎。

安全編碼技術和標準的目標是推動軟件的安全性,以確保所需的可靠性。然而,同樣重要的是提高源代碼的可讀性和可維護性。更高效、更易讀的代碼意味著源代碼更加健壯、缺陷更少且在未來可用,有助于提高代碼的可重用性。

MISRA C是最成熟的軟件開發標準之一,可以避免常見的缺陷和漏洞。當然,還有一些其他指南,如CWE和CERT-C編碼標準,這些標準對于任何嵌入式應用程序都是強烈推薦的。下面讓我們更深入地了解這些編碼標準。

MISRA C標準

MISRA C由汽車行業軟件可靠性協會(Motor Industry Software Reliability Association)開發,它的目標是提高嵌入式系統中代碼的安全性、可移植性和可靠性,尤其是那些使用ISO C編程的系統。

MISRA C標準的第一版名為《車載軟件C語言開發指南》,于1998年發布,正式名稱為MISRA-C:1998。之后于2004年和2012年進行了更新,添加了更多的規則。另外,還有基于C++ 2003的MISRA C++ 2008標準。此后,MISRA C: 2012的修正案1又添加了14條附加規則,重點關注ISO C安全指南(Secure Guidelines)中強調的安全問題(security concerns)。其中一些規則解決了在許多嵌入式應用程序中已知的安全漏洞之一:與使用不可信數據相關的特定問題。

MISRA規則可以幫助您在提交代碼進行正式構建之前發現問題,因此通過這種方式發現的缺陷就好像缺陷從未存在過一樣。MISRA規則的設計是以安全性和可靠性為前提的,同時也讓代碼更容易移植到其他工具和架構上。

CWE and CERT C/C++

CWE,即通用缺陷列表(Common Weakness Enumeration),是一個由社區開發的有關軟件缺陷的詞典。CWE提供了一套統一的、可衡量的軟件缺陷,以便更好地理解和管理它們,并且可以支持能夠發現它們的高效軟件安全工具和服務。

CERT C/C++安全編碼標準(Secure Coding Standards)是由計算機緊急響應小組(Computer Emergency Response Team,CERT)發布的標準,提供了有關C/C++編程語言中安全編碼(secure coding)的規則和建議。

實施安全編碼技術

作為通常性的建議,每個嵌入式應用程序至少都應遵循MISRA(對于安全關鍵系統,MISRA 是強制性的)、CWE和CERT C/C++標準。

遵循這些編碼標準之后,在運行時,您的應用程序仍然可能會受到算術問題、緩沖區溢出、邊界問題、堆完整性和內存泄漏等問題的影響。要檢測到這些錯誤,可以在可能發生潛在錯誤的所有位置插入特定的檢測代碼或斷言。然而,手動添加指令來檢查并在運行時報告問題是一項非常耗時的任務。

要遵守所有這些指南和標準,您需要遵循近700條規則和要求,同時還需要在源代碼中添加檢測代碼。那么,如何實施安全編碼技術并遵循所有這些規則呢?

使用自動化工具

提高軟件質量、安全性和可靠性的最佳方法是使用自動化工具。這可以通過使用高質量的編譯器和鏈接器(最好是經過功能安全認證的編譯器和鏈接器),以及自動化的靜態分析和運行時分析工具來實現。

IAR作為全球領先的嵌入式系統開發軟件解決方案供應商,所提供的集成開發環境IAR Embedded Workbench就包括了編譯器、匯編器、鏈接器和調試器,并無縫集成了靜態分析工具 C-STAT和運行時分析工具C-RUN,形成了完整的工具鏈。憑借這些強大的功能,IAR Embedded Workbench可以確保代碼的穩健性、安全性和高質量。

我們先來看看編譯器和鏈接器,它們應該支持現代編程語言,比如最新的C(ISO/IEC 9899:2018)和C++(ISO/IEC 14882:2020,也稱為C++20修訂版),這樣它們就會在出現可疑情況或語法問題時生成警告,例如,易失性內存訪問,其求值順序可能會影響應用程序的邏輯。

編譯器和鏈接器警告(warnings)是您的第一步靜態分析檢查,絕不能忽視,特別是在功能安全環境中。最佳建議是通過更改編譯器設置將所有警告視為錯誤,這樣就可以將這些警告轉換為錯誤。這將讓開發人員修復代碼中的所有不明確之處,因為所有問題都將被視為真正的問題。

靜態分析工具可以幫助您發現代碼中最常見的缺陷,同時還可以幫助您找出開發人員在嘗試編寫代碼時通常不會考慮或擔心的問題,尤其是當他們只是編寫腳手架代碼以使某些功能正常運行時。這種類型的工具確實可以幫助您開發更高質量的代碼,因為它們可以幫助您實施編碼標準。IAR的C-STAT靜態分析工具無需任何安裝和靜態代碼分析工程創建,只需要進行簡單的規則設置,就可以在構建(Build)成功之后進行靜態代碼分析,非常適合開發人員在日常開發過程中使用。

此外,還有動態或運行時分析工具,可以捕獲僅在運行時出現的代碼缺陷。動態或運行時分析工具可以在于軟件調試器中執行程序時發現代碼中的實際和潛在錯誤。IAR的C-RUN動態分析工具通過簡單的配置、重新編譯、運行,即可實現算術檢查、邊界檢查和堆檢查。使用C-RUN無需對現有流程做任何修改,可作為日常開發工作流程的自然組成部分,這極大地降低了動態分析工具的使用門檻。

當您查看系統中可能存在的所有缺陷時,靜態分析工具擅長找到某些類型的缺陷,而運行時分析工具則擅長找到其他類型的缺陷。有時它們可能會有重疊,但有時只有一種工具才能檢測到某個缺陷。要獲得最全面的代碼分析,最好將這兩種工具結合使用,并將它們與頂尖的構建工具集成在一起。下圖的矩陣很好地展示了在結合不同工具進行檢測時完整的缺陷覆蓋范圍。

wKgZombNeZ6AM0yGAACd3-S0bYI342.png

總結

隨著嵌入式系統的復雜性提高,對于嵌入式軟件的要求也越來越高,其中最核心最根本的是代碼質量,而遵循編碼標準的安全編碼技術是提高代碼質量的最佳實踐。實施安全編碼技術最有效的方式是應用自動化工具,包括編譯器、鏈接器、靜態分析工具、運行時分析工具。這樣可以高效地在開發過程中提高代碼質量及其安全性和可靠性,既減少了項目的開發時間和成本,又提高了產品的質量和競爭力。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5046

    文章

    18823

    瀏覽量

    298691
  • IAR
    IAR
    +關注

    關注

    5

    文章

    339

    瀏覽量

    36498
  • 編碼
    +關注

    關注

    6

    文章

    915

    瀏覽量

    54651
收藏 人收藏

    評論

    相關推薦

    嵌入式系統中工業4.0網絡安全

    斷改進編碼標準就是為了幫助提高軟件的安全性、可移植可靠性和可維護的水平。靜態分析除了在源
    的頭像 發表于 08-12 21:45 ?379次閱讀
    <b class='flag-5'>嵌入式</b>系統中工業4.0網絡<b class='flag-5'>安全</b>

    如何確保設備在高溫環境下的可靠性安全性

    隨著夏季的到來,高溫天氣對工業設施和設備的正常運行構成了挑戰。這個夏季,高溫不斷,降水不停,更是為維保增加了難度。為了確保設備在高溫環境下的可靠性安全性,我們需要更好的巡檢、監測產品。
    的頭像 發表于 08-09 15:39 ?399次閱讀

    請問DM平臺訪問安全性如何控制?

    DM平臺訪問安全性如何控制?
    發表于 07-25 06:10

    汽車功能安全可靠性的關系

    當前,隨著汽車領域的飛速發展,汽車也被重新定義。在汽車電子電氣系統設計時,離不開對功能安全可靠性設計的考慮。正確理解兩者之間的關系,有助于更好地分析問題和解決問題。什么是汽車可靠性汽車可靠性
    的頭像 發表于 07-13 08:28 ?3058次閱讀
    汽車功能<b class='flag-5'>安全</b>與<b class='flag-5'>可靠性</b>的關系

    FMEA與機器人:如何確保機器人技術可靠性安全性

    隨著科技的飛速發展,機器人技術已經廣泛應用于各個領域,從工業生產到醫療服務,再到家庭生活,機器人的身影無處不在。然而,隨著機器人的普及,其潛在的風險和故障也逐漸顯現。為了確保機器人技術可靠性
    的頭像 發表于 04-12 10:07 ?379次閱讀

    嵌入式會越來越卷嗎?

    以及大數據處理等技術之間的整合與互動可能會越來越密切。這種融合或許會帶來更強大的系統和更廣泛的應用,但也會帶來新的挑戰,如數據安全性和系統穩定性等問題。 嵌入式系統的“卷”涵蓋了技術
    發表于 03-18 16:41

    多業務光端機安全性解析:保障數據傳輸的可靠性與保密

    隨著信息技術的飛速發展,數據的安全性和保密已成為各行各業關注的焦點。多業務光端機作為一種高速、高效的光通信設備,在保障數據傳輸的可靠性與保密
    的頭像 發表于 02-23 13:58 ?296次閱讀

    集中電源控制器:安全性可靠性

    集中電源控制器在安全性可靠性方面具有顯著的優勢。 首先,集中電源控制器具有較高的抗干擾能力,能夠適應各種復雜的環境和應用場景,確保電源的穩定運行。 其次,集中電源控制器通過多種方式監測電源的工作
    的頭像 發表于 01-30 15:23 ?364次閱讀
    集中電源控制器:<b class='flag-5'>安全性</b>和<b class='flag-5'>可靠性</b>

    如何提高分布式大屏控制系統的穩定性和可靠性

    模塊,降低單點故障對整體的影響。同時,合理規劃系統資源的部署和冗余配置,以提高系統的可靠性和穩定性。 數據冗余備份:為確保數據的安全性,應采用數據冗余備份策略。通過將數據存儲到多個存儲設備上,即使某個節點發
    的頭像 發表于 01-29 14:39 ?297次閱讀

    基于功能安全的汽車嵌入式軟件單元驗證技術研究

    隨著汽車嵌入式軟件功能的不斷疊加,軟件復雜不斷提升,對汽車嵌入式軟件的安全性提出了更高要求,基于功能安全
    的頭像 發表于 01-07 11:27 ?861次閱讀
    基于功能<b class='flag-5'>安全</b>的汽車<b class='flag-5'>嵌入式</b>軟件單元驗證<b class='flag-5'>技術</b>研究

    指定和使用 VFD 電纜以提高可靠性安全性并減少碳排放

    作者:Jeff Shepard 投稿人:DigiKey 北美編輯 變頻驅動器 (VFD) 和電機可以減少碳排放,提高各種系統的效率、可靠性安全性,包括輸送機、泵、攪拌機、電梯、暖通/空調
    的頭像 發表于 01-01 15:03 ?591次閱讀
    指定和使用 VFD 電纜以<b class='flag-5'>提高可靠性</b>和<b class='flag-5'>安全性</b>并減少碳排放

    提高PCB設備可靠性技術措施

    提高PCB設備可靠性技術措施:方案選擇、電路設計、電路板設計、結構設計、元器件選用、制作工藝等多方面著手,具體措施如下: (1)簡化方案設計。 方案設計時,在確保設備滿足技術、性
    發表于 11-22 06:29

    求助,為什么說電氣隔離安全性比較高?

    為什么說電氣隔離安全性比較高?
    發表于 11-02 08:22

    MCU是怎么為物聯網端點設備提高安全性的?

    MCU 是怎么為物聯網端點設備提高安全性的?
    發表于 10-17 08:53

    智能汽車車載核心控制芯片可靠性與功能安全性設計

    車載核心控制芯片是最基礎硬件,承載整車控制功能,芯片架構已從單核向多核方向發展,可靠性設計與功能安全保障技術也變得十分復雜。
    發表于 10-10 15:25 ?1161次閱讀
    智能汽車車載核心控制芯片<b class='flag-5'>可靠性</b>與功能<b class='flag-5'>安全性</b>設計