当前位置: 首页 » 资讯 » 热点文章 » 正文

安全编码技术:提高嵌入式应用代码安全性与可靠性

放大字体  缩小字体 发布日期:2024-08-28  浏览次数:3
核心提示:编程语言的现代化和更好的编码技术与从机械计算机到现代软件开发流程的演变直接相关。我们已经从高度专业化、主要是数学符号的表
 编程语言的现代化和更好的编码技术与从机械计算机到现代软件开发流程的演变直接相关。我们已经从高度专业化、主要是数学符号的表示法过渡到了更接近人类语法的高级编程语言,这一进步归功于编译器技术。然而,这也打开了代码缺陷之门。 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编码标准,这些标准对于任何嵌入式应用程序都是强烈推荐的。下面让我们更深入地了解这些编码标准。

本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议

本文转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容

 
 
[ 资讯搜索 ]  [ 加入收藏 ]  [ 告诉好友 ]  [ 打印本文 ]  [ 关闭窗口 ]

 
0条 [查看全部]  相关评论

 
推荐图文
推荐资讯
点击排行
 
QQ在线咨询
全国服务热线
0755-83690011