91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

安全編碼技術(shù):提高嵌入式應(yīng)用代碼安全性與可靠性

互聯(lián)網(wǎng)資訊 ? 來源:IAR ? 作者:IAR ? 2024-08-27 15:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:IAR

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

查找和修復(fù)這些缺陷可能會占用高達(dá)80%的開發(fā)時間,具體取決于開發(fā)機(jī)構(gòu)的成熟程度。這引出了一個明顯的結(jié)論:代碼質(zhì)量是一個大問題。那么,為什么不盡量避免缺陷,以減少調(diào)試所需的時間呢?

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

一次又一次重復(fù)同樣的錯誤

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

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

關(guān)注可靠性

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

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

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

MISRA C標(biāo)準(zhǔn)

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

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

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

CWE and CERT C/C++

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

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

實施安全編碼技術(shù)

作為通常性的建議,每個嵌入式應(yīng)用程序至少都應(yīng)遵循MISRA(對于安全關(guān)鍵系統(tǒng),MISRA 是強(qiáng)制性的)、CWE和CERT C/C++標(biāo)準(zhǔn)。

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

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

使用自動化工具

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

IAR作為全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商,所提供的集成開發(fā)環(huán)境IAR Embedded Workbench就包括了編譯器、匯編器、鏈接器和調(diào)試器,并無縫集成了靜態(tài)分析工具 C-STAT和運(yùn)行時分析工具C-RUN,形成了完整的工具鏈。憑借這些強(qiáng)大的功能,IAR Embedded Workbench可以確保代碼的穩(wěn)健性、安全性和高質(zhì)量。

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

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

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

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

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

wKgZombNeZ6AM0yGAACd3-S0bYI342.png

總結(jié)

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

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5200

    文章

    20505

    瀏覽量

    334881
  • IAR
    IAR
    +關(guān)注

    關(guān)注

    5

    文章

    413

    瀏覽量

    38588
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    1039

    瀏覽量

    57027
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    嵌入式AI開發(fā)必看:杜絕幻覺,才是工業(yè)級IDE的核心底氣

    中難以被發(fā)現(xiàn),一旦上線將直接導(dǎo)致設(shè)備停機(jī)、產(chǎn)線癱瘓,甚至引發(fā)安全事故。 ▌傳統(tǒng)IDE校驗?zāi)芰θ笔В寒?dāng)前主流嵌入式IDE缺乏針對工業(yè)場景的專業(yè)校驗邏輯,無法驗證AI代碼在實時、
    發(fā)表于 03-18 13:49

    知識分享-嵌入式系統(tǒng)可靠性模型

    嵌入式系統(tǒng)可靠性設(shè)計技術(shù)及案例解析1.3嵌入式系統(tǒng)可靠性模型嵌入式系統(tǒng)
    的頭像 發(fā)表于 03-11 16:43 ?168次閱讀
    知識分享-<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>可靠性</b>模型

    半導(dǎo)體嵌入式單元測試的核心技術(shù)、工具選型與落地全流程

    要求不斷提高的背景下,單元測試已經(jīng)成為確保軟件質(zhì)量和可靠性的不可或缺的環(huán)節(jié)。winAMS作為一款專業(yè)的半導(dǎo)體嵌入式軟件單元測試工具,通過目標(biāo)代碼級測試、硬件行為仿真、智能化測試用例生成
    發(fā)表于 03-06 14:55

    什么是高可靠性

    越來越高。 高可靠性PCB可以發(fā)揮穩(wěn)健的載體作用,實現(xiàn)PCBA的長期、穩(wěn)定運(yùn)作,從而保證終端產(chǎn)品的安全性、穩(wěn)定性和使用壽命,企業(yè)進(jìn)而得以增強(qiáng)競爭力、提升信譽(yù)、擴(kuò)大市場份額、提高經(jīng)濟(jì)效益。 三
    發(fā)表于 01-29 14:49

    什么是嵌入式應(yīng)用開發(fā)?

    系統(tǒng)中,用于控制、監(jiān)測或通信等特定用途。與一般計算機(jī)系統(tǒng)不同,嵌入式系統(tǒng)通常具有較小的存儲容量、處理能力和功耗,且需要滿足特定的實時、可靠性安全性要求?。 應(yīng)用領(lǐng)域
    發(fā)表于 01-12 16:13

    嵌入式軟件測試找bug的常見方法和秘訣

    可靠性的要求比較高。嵌入式系統(tǒng)安全性的失效可能會導(dǎo)致災(zāi)難的后果,即使是非安全性系統(tǒng),由于大批量生產(chǎn)也會導(dǎo)致嚴(yán)重的經(jīng)濟(jì)損失。這就要求對
    發(fā)表于 01-12 07:07

    車規(guī)級與消費(fèi)級芯片的可靠性安全性與成本差異

    引言在汽車電子和消費(fèi)電子領(lǐng)域,"車規(guī)級"與"消費(fèi)級"芯片代表了兩種截然不同的設(shè)計理念和技術(shù)標(biāo)準(zhǔn)。車規(guī)級芯片專為汽車應(yīng)用設(shè)計,強(qiáng)調(diào)在極端環(huán)境下的可靠性安全性
    的頭像 發(fā)表于 11-18 17:27 ?1329次閱讀
    車規(guī)級與消費(fèi)級芯片的<b class='flag-5'>可靠性</b>、<b class='flag-5'>安全性</b>與成本差異

    嵌入式開發(fā)的關(guān)鍵點(diǎn)介紹

    開發(fā)需要考慮嵌入式系統(tǒng)的資源限制,例如:內(nèi)存、CPU處理能力等等。因此,嵌入式開發(fā)需要開發(fā)人員具備優(yōu)化代碼的能力。嵌入式系統(tǒng)的安全性非常重要
    發(fā)表于 11-13 08:12

    嵌入式軟件測試與專業(yè)測試工具的必要深度解析

    ?:工具的易用和學(xué)習(xí)曲線是否符合團(tuán)隊技術(shù)水平。 ?合規(guī)要求?:工具是否支持生成符合行業(yè)標(biāo)準(zhǔn)(如ISO 26262)的測試報告和審計追蹤。 嵌入式軟件測試不再是可選項,而是確保系統(tǒng)可靠性
    發(fā)表于 09-28 17:42

    有哪些技術(shù)可以提高邊緣計算設(shè)備的安全性?

    邊緣計算設(shè)備的安全性面臨分布部署、資源受限(算力 / 存儲 / 帶寬)、網(wǎng)絡(luò)環(huán)境復(fù)雜(多無線連接)、物理接觸易被篡改等獨(dú)特挑戰(zhàn),因此其安全技術(shù)需在 “
    的頭像 發(fā)表于 09-05 15:44 ?1549次閱讀
    有哪些<b class='flag-5'>技術(shù)</b>可以<b class='flag-5'>提高</b>邊緣計算設(shè)備的<b class='flag-5'>安全性</b>?

    【干貨速遞】嵌入式數(shù)據(jù)可靠性,軟件設(shè)計的這些細(xì)節(jié)不能忽視!

    問題。軟件設(shè)計軟件設(shè)計在嵌入式數(shù)據(jù)存儲可靠性中扮演著至關(guān)重要的角色。它不僅包括系統(tǒng)驅(qū)動的開發(fā),還涉及應(yīng)用層面的優(yōu)化。一個精心設(shè)計的軟件系統(tǒng)可以顯著提高數(shù)據(jù)的完整和系統(tǒng)的穩(wěn)
    的頭像 發(fā)表于 07-31 11:34 ?591次閱讀
    【干貨速遞】<b class='flag-5'>嵌入式</b>數(shù)據(jù)<b class='flag-5'>可靠性</b>,軟件設(shè)計的這些細(xì)節(jié)不能忽視!

    【深度解析】硬件電路設(shè)計:如何確保嵌入式數(shù)據(jù)可靠性?

    嵌入式系統(tǒng)開發(fā)中,硬件電路設(shè)計是確保數(shù)據(jù)可靠性的關(guān)鍵環(huán)節(jié)。本期我們將重點(diǎn)探討硬件設(shè)計中的兩個重要方面:數(shù)據(jù)讀寫保護(hù)和掉電保護(hù)。硬件電路設(shè)計在嵌入式系統(tǒng)開發(fā)中,硬件電路設(shè)計對于確保數(shù)據(jù)的可靠性
    的頭像 發(fā)表于 07-30 11:35 ?752次閱讀
    【深度解析】硬件電路設(shè)計:如何確保<b class='flag-5'>嵌入式</b>數(shù)據(jù)<b class='flag-5'>可靠性</b>?

    技術(shù)指南】提升嵌入式數(shù)據(jù)可靠性,從元器件選型開始!

    數(shù)據(jù)可靠性嵌入式產(chǎn)品開發(fā)中的關(guān)鍵問題,涉及多個層面的設(shè)計和選型。從本期開始,我們將通過一系列內(nèi)容深入探討嵌入式數(shù)據(jù)存儲的可靠性問題。前言數(shù)據(jù)可靠性
    的頭像 發(fā)表于 07-29 11:35 ?470次閱讀
    【<b class='flag-5'>技術(shù)</b>指南】提升<b class='flag-5'>嵌入式</b>數(shù)據(jù)<b class='flag-5'>可靠性</b>,從元器件選型開始!

    保障汽車安全:PCBA可靠性提升的關(guān)鍵要素

    汽車電子PCBA的可靠性提升要點(diǎn) 隨著汽車智能化、網(wǎng)聯(lián)化的快速發(fā)展,汽車電子在整車中的占比不斷提升,其重要日益凸顯。作為汽車電子的核心部件,PCBA(印制電路板組裝)的可靠性直接關(guān)系到汽車的
    的頭像 發(fā)表于 04-14 17:45 ?722次閱讀

    可靠性嵌入式主板設(shè)計

    設(shè)計直接影響整個系統(tǒng)的穩(wěn)定性和壽命。因此,設(shè)計高可靠性嵌入式主板不僅是技術(shù)挑戰(zhàn),也是提高產(chǎn)品競爭力的關(guān)鍵因素。本文將深入探討高可靠性
    的頭像 發(fā)表于 03-25 15:11 ?1113次閱讀
    高<b class='flag-5'>可靠性</b><b class='flag-5'>嵌入式</b>主板設(shè)計