安全性一直是物联网(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
-
嵌入式
+关注
关注
5082文章
19126浏览量
305212 -
嵌入式系统
+关注
关注
41文章
3593浏览量
129475 -
物联网
+关注
关注
2909文章
44635浏览量
373376
发布评论请先 登录
相关推荐
评论