跳转到主要内容

【工程师博客】如何设计安全的软件架构

selina 提交于

<strong>作者:Tom.meany,ADI功能安全工程师 </strong>

简单直接地开始编程的诱惑总是很大。如果采取这种做法,日后在安全和防护方面可能要付出代价。设计适当的软件架构可以......

简化接口
减少须视为安全相关的代码量
促进模块化
有助于测试和验证
简化非安全相关软件的更改管理
支持更严格的硬件设计
简化代码
关于简化这一目标,我喜欢下面这句发人深省的名言

<center><img src="http://adi.eetrend.com/files/2019-04/博客/100018825-65060-ping_mu_kuai_zh…; alt=""></center>

<center>图1 - 关于软件设计的名言</center>

IEC 61508-3中的V模型将软件架构步骤显示为收集需求与软件设计之间的步骤。它是决定软件安全基本策略的步骤,包括冗余和多样性的使用。它还涉及将功能分配给主要元件和子系统,并决定其间如何互连。

<center><img src="http://adi.eetrend.com/files/2019-04/博客/100018825-65061-ping_mu_kuai_zh…; alt=""></center>

<center>图2 - IEC 61508-3:2010中的V模型</center>

机械标准IEC 62061给出了关于软件架构的一些最佳说明,包括下图。此图不是专门针对软件的,但我认为它已经把主要思想表达出来。

<center><img src="http://adi.eetrend.com/files/2019-04/博客/100018825-65062-ping_mu_kuai_zh…; alt=""></center>

<center>图3 - 摘自机械安全标准IEC 62061</center>

如果架构不支持安全与非安全软件之间充分隔离,那么所有软件都需要根据安全标准进行开发。如果软件属于混合安全完整性,那么不支持充分独立性要求的架构将导致所有软件都必须按照任何模块的最高安全完整性进行开发。

显然,软件架构需要与硬件架构协调一致。如果系统含有三个微控制器/微处理器,其中一个用于运行控制软件,另外两个各运行一个安全通道,那么每个微控制器/微处理器可以有自己的软件架构,充分隔离和独立性在很大程度上是默认具备的。而要在单个处理器中实现相同的目标,将需要在架构规划上下更大工夫。

除了划分子系统和元件之外,架构还应描述控制流程,但这是未来博客的主题。

本文转自:<a href="https://ez.analog.com/cn/other/f/forum/108997/thread"&gt;【工程师博客】如何设计安全的软件架构</a>

<strong><a href="http://www.analog.com/cn/applications/markets/industrial-automation-tec…,获取更多工业自动化技术信息</a></strong>