一种基于AADL模型扩展的软件系统安全性验证与评估方法与流程

文档序号:15115706发布日期:2018-08-07 20:03阅读:175来源:国知局
本发明涉及软件系统安全性分析
技术领域
,具体涉及一种基于aadl模型扩展的软件系统安全性验证与评估方法。
背景技术
:在复杂软硬件混合系统中,软件的规模增大以及系统复杂度的迅速增加带来了软件安全性保障方面的重要挑战。aadl是对具有资源(大小,重量,功率)限制和严格实时响应要求的安全关键系统建模的建模语言。aadl能够描述运行时体系结构的动态行为,这些描述使得能完成对构件和系统的分析,使得在系统编码之前就完成对系统性能的分析和评测。aadl错误附件作为aadl模型的一种标准扩展,aadl错误附件声明一组错误状态(errorstate)、错误事件(errorevent)以及错误传播(errorpropagations)。它为aadl组件添加了描述可靠性和安全性等相关信息的能力。软件系统安全性分析技术已经在安全关键系统工程领域中得到了广泛的应用,但由于这些分析通常基于一个非形式化的系统模型,对系统进行安全性分析无法保证完整性与一致性等要求。同时,aadl虽然拥有丰富的建模语义,具有较为全面的建模能力,可以完善地对系统进行描述,但由于其过于丰富的细节信息,导致其系统模型难以被进行直接的处理,即便可以被处理,也将付出巨大的计算代价,更为重要的是,这些计算中蕴含着大量的冗余。因此,对aadl模型的验证评估,通常需要转换到其他模型进行处理。技术实现要素:本发明的目的是为了解决现有的基于aadl模型的验证评估很难对系统模型进行直接处理,需要付出巨大计算代价,且计算中蕴含大量冗余的缺点,而提出一种基于aadl模型扩展的软件系统安全性验证与评估方法。一种基于aadl模型扩展的软件系统安全性验证与评估方法,包括:步骤一、确定待评估系统的危险因素列表,根据预设的语法规则建立危险因素列表中每一个危险因素与aadl错误模型附件的映射关系;再将aadl错误模型附件与aadl架构模型建立映射关系,以使危险因素与aadl架构模型建立联系;并将所有建立的联系构成的集合称为机理生成模型。步骤二、在机理生成模型中,依次提取模型元素:执行时间、状态迁移信息以及危险事件,并根据模型元素生成时间状态故障树、硬件软件影响分析树以及共因失效分析树,并根据树形结构自底向上逆推危险产生路径;其中危险事件作为树形结构的节点,执行时间作为节点属性,状态迁移信息用于构建节点间的关联关系。步骤三、按照预设的软件安全性标准,设置aadl中的组件交互、时序、通信属性;其中组件交互属性和时序属性为aadl中已提供的属性;通信属性包括程序模块间发送信号的次数。步骤四、按照预设的硬件安全性标准,通过设置aadl组件的deployment属性来设置每个物理器件的物理资源的性能与容量;并根据标注好的物理器件的危险因素概率来计算所述物理器件的失效概率;将经过步骤一至四处理后的aadl模型称为aadl安全性模型。步骤五、将aadl安全性模型转换为tasm模型,再转换为时间自动机模型;其中tasm表示时间抽象状态机。步骤六、调用形式化验证工具uppaal对所述时间自动机模型进行分析和验证。本发明的有益效果为:提出一种通过错误模型获取危险因素产生机理的机制,扩展与安全性建模和验证相关的属性集,从软件逻辑与物理资源两大方面的不同视角对软件系统进行基于多视角模型的软件系统安全性建模。通过将aadl模型转换为时间自动机,利用模型检测方法中的自动性质验证技术,实现软件系统安全性的验证,并通过将aadl模型错误附件转换为马尔可夫链模型,进行组件危险概率的组合计算,以实现软件系统的安全性评估。本发明的一个实施例能够至少提高10%的评估准确性。附图说明图1为本发明具体实施方式一的流程图;图2为具体实施方式二步骤七的流程图;图3为步骤一和步骤二中进行危险因素生成机理分析的示意图。具体实施方式具体实施方式一:本实施方式的基于aadl模型扩展的软件系统安全性验证与评估方法,如图1所示,包括:步骤一、确定待评估系统的危险因素列表,根据预设的语法规则建立危险因素列表中每一个危险因素与aadl错误模型附件的映射关系;再将aadl错误模型附件与aadl架构模型建立映射关系,以使危险因素与aadl架构模型建立联系;并将所有建立的联系构成的集合称为机理生成模型。例如,针对某个飞行控制软件确定的危险因素列表可以包括母线电压不正常、单机供电不正常、单机自检不合格、导航计算不准确、时序格式不正确的等诸多因素。步骤二、在机理生成模型中,依次提取模型元素:执行时间、状态迁移信息以及危险事件,并根据模型元素生成时间状态故障树、硬件软件影响分析树以及共因失效分析树,并根据树形结构自底向上逆推危险产生路径;其中危险事件作为树形结构的节点,执行时间作为节点属性,状态迁移信息用于构建节点间的关联关系。步骤三、按照预设的软件安全性标准,设置aadl中的组件交互、时序、通信属性;其中组件交互属性和时序属性为aadl中已提供的属性;通信属性包括程序模块间发送信号的次数。步骤四、按照预设的硬件安全性标准,通过设置aadl组件的deployment属性来设置每个物理器件的物理资源的性能与容量;并根据标注好的物理器件的危险因素概率来计算所述物理器件的失效概率;将经过步骤一至四处理后的aadl模型称为aadl安全性模型。通过危险概率计算失效概率的方式有很多种,可以通过马尔可夫模型进行计算,例如文献《马尔可夫分析在系统安全性评估中的应用研究》中提供的方法。步骤五、将aadl安全性模型转换为tasm模型,再转换为时间自动机模型;其中tasm表示时间抽象状态机。步骤六、调用形式化验证工具uppaal对所述时间自动机模型进行分析,判断时间自动机模型是否出现死锁以及调度问题。uppaal工具是常用的分析工具,其能够分析的结论不限于死锁和调度问题,还可以根据其功能分析更多可能存在的问题。具体实施方式二:本实施方式与具体实施方式一不同的是:基于aadl模型扩展的软件系统安全性验证与评估方法还包括步骤七(如图3所示):将步骤一中的aadl错误模型附件经过映射转换得到马尔可夫链;对马尔可夫链进行概率计算得到组件危险概率;对组件危险概率进行组合计算得到系统危险概率;再将系统危险概率作为安全性评估结果。其它步骤及参数与具体实施方式一相同。具体实施方式三:本实施方式与具体实施方式一或二不同的是:步骤一中,根据预设的语法规则建立危险因素列表中每一个危险因素与aadl错误模型附件的映射关系具体为:将主任务流程中的关键任务映射为aadl模型附件中的初始状态;将关键人物中的错误处理流程映射为aadl模型附件中的错误状态;将危险因素列表内元素映射为错误事件;将任务的执行顺序映射为组件之间的逻辑关系及传播路径。其它步骤及参数与具体实施方式一或二相同。具体实施方式四:本实施方式与具体实施方式一至三之一不同的是:本实施方式与具体实施方式一至四之一不同的是:步骤五具体为:步骤五一、选取aadl子集,其中aadl具体包括体系结构、执行模型以及扩展附件;体系结构包括aadl中提供的系统构件、进程构件、线程构件、处理器构件、存储器构件以及总线构件;执行模型包括aadl中提供的进程执行属性、模式变换属性、线程分发属性、线程执行属性、端口通信属性、调度属性以及资源共享属性;扩展附件包括aadl提供的行为附件。步骤五二、确定tasm模型的抽象语法;其中抽象语法包括环境和抽象机;环境进一步包括环境变量以及环境变量的类型。步骤五三、建立由aadl子集到tasm的语义映射,具体为:将系统构件语义中的语法结构映射为tasm语法中的环境变量,将系统构件语义中的动态行为映射为tasm抽象机;其中所述语法结构包括aadl中提供的软/硬件构件的结构元素、执行模型属性以及行为附件的结构元素;动态行为包括aadl中提供的执行语义以及行为附件中的语义。将进程构件的输入/输出接口、时间属性以及进程状态转换为tasm环境变量;将进行构件定义的加载时间和启动时间定义为tasm规则的执行时间;将进程构件的执行语义映射为一个包含执行规则的tasm抽相机,所述执行规则用于表示tasm在各个时刻、时段的行为。具体而言,进程构件的执行语义可以转换为一个包含7条执行规则(loadingbegin,loadingcomplete,loadingabort,startingcomplete,startingabort,processstop,processnormal)的tasm抽象机。tasm可以很方便地在每个时刻或时段,用一条规则来表示相应的行为。将线程构件的执行语义转换为一个包含8条执行规则的第一tasm抽象机,将线程分发器的执行语义转换为一个包含8条执行规则的第二tasm抽象机;第一tasm抽象机与第二tasm抽象机并发执行,且通过共享变量和线程状态变量的方式进行同步。具体而言,线程构件的执行语义可以转换为一个包含8条执行规则(initialization,activation,dispatch,waitingexecution,execution,writedata,waitingnextevent,deactivation)的tasm抽象机。将状态变量映射为tasm环境变量;将状态映射为抽象机的内部状态;将每条变迁映射为一条tasm规则;规则的条件由当前线程构建的状态、当前行为附件的状态以及行为附件的变迁条件组成;规则的执行部分包括行为附件的执行动作以及对行为附件下一个状态的赋值;增加一条用于使线程构件进入下一个状态的规则;用所述所有的规则来替换线程构件执行语义中的“execution”规则。步骤五四、根据步骤五三得到的tasm模型,基于类ml元语言形式定义转换规则,将模型继续转为时间自动机模型。其它步骤及参数与具体实施方式一至三之一相同。具体实施方式五:步骤七具体为:步骤七一、根据aadl模型的错误附件,转换得到扩展的马尔可夫链模型,具体为:扩展马尔可夫链模型定义为:mk=(s,∑,p,q),其中s表示系统所有状态集合,是一个有限的随机状态集合;si表示s中的第i个元素;si是二元组,si={state,level};state是状态名;level是该状态危害级别;∑表示引发系统错误状态迁移的事件集合;∑i表示∑中的第i个元素(1≤i≤n)。其中,∑i={triggername,triggertype},triggertype是事件类型,包括故障事件和故障传播;triggername是事件名称;p是错误状态迁移的概率集合;pi表示p集合中的第i个元素;q表示状态之间的迁移关系:s×∑→s;并建立aadl模型至马尔可夫链模型的映射,映射关系为:将aadl模型的错误附件中的错误状态映射为马尔可夫链模型的系统所有状态集合s;将aadl模型的错误附件中的错误传播映射为马尔可夫链模型的事件类型triggertype;将aadl模型的错误附件中的发生属性occurrence映射为马尔可夫链模型的错误状态迁移的概率集合p;将将aadl模型的错误附件中的错误之间的转化映射为状态之间的迁移关系q;步骤七二、根据马尔可夫链模型,对组件和系统的危险概率进行计算,具体为:将步骤七一中得到的马尔可夫链模型表示为一个n×n的转移矩阵p,其中n为针对待评估系统设定的错误状态数量,转移矩阵p中第i行第j列的元素pij表示组件从当前状态si迁移到下一个状态sj的转移概率;根据公式(1)和公式(2)计算待评估系统在各个错误状态的稳态概率:π=π*p公式(1)其中π表示组件处于状态集s中各个状态的概率,πi表示组件处于状态i的概率,p表示转移矩阵;根据公式(3)计算待评估系统在危害级别状态l的概率pl:pl=∑i,level=lπj公式(3)步骤七三、计算待评估系统的各个状态概率,将相同危害级别状态概率相加,得出待评估系统处于不同危害级别状态的概率。下面对基于aadl模型扩展的软件系统安全性验证与评估方法的原理和设计思路做进一步的描述。一、先进行系统安全性模型的构建。本专利在识别软件系统危险因素的基础上,将危险因素关联到软件aadl架构模型的关键节点中,形成aadl错误附件,提取危险因素的传播路径及因果关系得到危险因素的生成机理。并根据危险因素生成机理提供安全性建模过程中应充分考虑、规避的危险形成路径,有针对性的扩展aadl属性集,构建多视角的软件安全性模型。系统安全性建模的示意图如图3所示。1、构建危险机理生成模型,包括:机理生成模型由aadl架构模型和aadl错误模型两部分构成,其中,根据表1的映射关系描述系统中的危险因素,并与aadl架构模型相关联,从而得到aadl错误模型:对于软件系统中可能发生危险事件的关键任务,在aadl错误模型中作为初始状态出现;对于常规处理流程中所有关键任务的危险事件,用错误模型内的错误事件描述;错误事件造成的结果用错误状态描述;危险事件、关键任务间的关联关系、任务的执行顺序用aadl错误模型中的guidein及传播路径表示。表1危险因素列表与aadl错误附件映射关系2、分析危险因素产生机理,包括:1)从机理生成模型中提取与分析危险产生路径方法相关的模型元素,自动生成时间状态故障树(tsfta)、硬件软件影响分析(hsia)及共因时效分析(sccfa)模型进行分析,通过生成的树形结构,自底向上逆推危险产生的路径。。其中,tsfta模型的分析过程中,通过提供机理生成模型中的时间、状态迁移与危险事件,并自动生成时间状态故障树,通过对fta的每一个危险因素附加执行时间、状态迁移信息,从一个危险产生的结果开始,如一个失效或灾祸/事故或故障,确定它能发生的一切途径。3构建系统安全性模型,包括:基于多视角构建软件系统安全性模型,扩展与aadl安全性建模和验证相关的属性集,从软件逻辑与物理资源两大方面的不同视角对软件系统进行安全性相关的aadl建模,描述软硬件的相互作用及影响方式。1)进行软件逻辑安全性建模在软件逻辑安全性方面,设置aadl中与组件交互、时序、通信相关的属性,从组件交互组合安全、时序安全及通信安全方面进行建模。其中交互组合建模、时序建模采用现有的属性集,通信建模利用aadl所提供的通信属性,描述软件系统中各组件连接逻辑、队列特性,以及信息交互,如跨数据端口连接的发送和接收、每次发送或者每秒子程序调用数等。2)进行物理资源安全性建模在物理资源安全性方面,从性能与容量、物理器件失效分析方面进行建模,从不同的角度描述物理资源的使用情况。性能与容量建模,使用aadl的执行平台组件描述物理器件,通过组件的deployment属性设置对资源的占用,实现对物理资源的性能与容量建模。物理器件失效分析建模,在aadl中采用错误附件的方法分析系统任务过程,并标注危险因素概率进而计算对应的物理器件的失效概率,实现对物理器件失效状态的定量描述,从不同层次对系统的安全性进行评估。二、再进行基于时间抽象状态机的aadl模型转换在软件系统的模型建立之后,为了对系统提供有效的质量保证,通常需要采用一定的技术方法对系统模型的性质进行验证。步骤一中建立的aadl模型是静态的任务模型,可描述系统的功能与非功能属性,但大部分语义仍然采用自然语言和例子进行解释,无法通过计算机进行自动化的分析验证,即无法直接进行模型的安全性验证与评估。因此需要通过转换语义(translationalsemantics)的方式,即用另一种形式语言(称为目标语言)来表达aadl语言的语义的方式,将aadl模型转换为其他模型再进行处理。本专利以时间抽象状态机(tasm)为中间转换语言,解决如何从半形式化的aadl安全模型到tasm模型,最终转到形式化建模语言时间自动机(tm)模型的自动转换问题。下图为具体的转换过程。1、aadl子集的选取:aadl子集包括:体系结构、执行模型以及扩展附件。体系结构包括系统构件、进程构件、线程构件、处理器构件、存储器构件以及总线构件等结构元素;执行模型方面,包括进程执行、模式变换、线程分发、线程执行、端口通信、调度、资源共享等执行模型属性;扩展附件方面,主要包括行为附件。aadl子集基本上能构成一个比较完整的aadl描述:按照系统、进程、线程以及行为附件这4个层次来建立系统的aadl模型,并将进程映射到处理器构件、连接映射到总线构件、数据映射到存储器构件,系统构件和进程构件可以定义模式及模式变换,而线程执行会受到进程加载、模式变换、分发、调度的影响,线程通信也可能受到模式变换的影响。基于类型的方式给出aadl子集的抽象语法。在抽象语法表示中,结构元素和执行模型属性表达在同一个语法结构当中。2、确定tasm的抽象语法。一个tasm描述由两部分组成:环境和抽象机。环境包括环境变量及其类型。基于变量的当前取值,抽象机会进行计算,然后更新变量的取值,以实现系统的状态变迁。tasm在变迁上增加了时间和资源的定义,分别表示变迁的持续时间和资源消耗情况。采用共享变量的通信方式,单个tasm抽象机的执行语义是一个循环:依据环境变量的当前取值,选择一条满足条件的规则,等待规则的持续时间,并消耗资源;持续时间完成后,更新环境变量的取值,如果存在同步,则需要等待;该规则执行完之后,选择下一条规则继续执行。3、aadl到tasm模型的语义映射系统构件的语义可以由其他建模元素的语义组合而成,该语义函数分为3个层次:系统构件的子构件层次、进程构件的子构件层次以及行为附件层次,每个层次都包括两部分:语法结构(软/硬件构件的结构元素、执行模型属性以及行为附件的结构元素)映射为tasm环境变量;动态行为(执行语义以及行为附件的语义)映射为tasm抽象机。进程构件的转换:进程构件代表系统的虚拟地址空间,当对应的处理器启动之后,进程将要执行的二进制镜像文件加载到虚拟地址空间,包括文件加载和进程启动(即初始化)两个步骤,而且整个过程可能会出错或被终止。首先,将进程构件的输入/输出端口、时间属性以及进程状态转换为tasm环境变量。其中,数据端口用integer变量表示,事件端口用boolean变量表示,事件数据端口用两个变量(integer,boolean)来表示。进程定义的加载时间和启动时间,可以作为tasm规则的执行时间。其次,进程构件的执行语义转换为一个包含7条执行规则(loadingbegin,loadingcomplete,loadingabort,startingcomplete,startingabort,processstop,processnormal)的tasm抽象机。tasm可以很方便地在每个时刻或时段,用一条规则来表示相应的行为。数据端口通信转换:考虑数据端口通信的线程构件的语义是由线程构件的基本行为以及线程分发和数据端口通信的执行语义构成。线程构件的基本行为:首先将线程构件的输入/输出端口、资源利用率(最大为100%)以及线程状态转换为tasm环境变量,并为每个输入端口定义一个变量iportbuffer,用于缓存数据;其次,将线程构件的执行语义转换为一个包含8条执行规则(initialization,activation,dispatch,waitingexecution,execution,writedata,waitingnextevent,deactivation)的tasm抽象机。线程分发器的执行语义用另一个抽象机来表示,并和线程基本行为的抽象机并发执行,它们之间通过共享变量和线程状态变量来同步。数据端口通信转换时,首先将连接类型等信息映射为tasm环境变量;其次,其转换语义是在线程构件以及周期性分发协议的转换语义之上,进一步扩充通信对端口读写时间的影响,将连接分为读写以及写延迟,分别对应即时通信的接收线程在开始执行之前重读最新数据、即时通信的发送线程在完成时刻输出数据以及延迟通信的发送线程在截止时刻输出数据。隐含的线程执行顺序将显式地表示为一个调度器。行为附件转换:aadl线程构件使用的是“input-compute-output”计算模型,输入、输出行为是由线程的基本执行语义和线程通信语义决定的,而行为附件则是对计算行为进行细化和求精。基本的转换思路:状态变量(statevariables)映射为tasm环境变量;状态(state)映射为抽象机的内部状态(internalvariables);每条变迁映射为一条tasm规则,而规则的条件由当前线程构件的状态(state(th))、当前行为附件的状态以及行为附件的变迁条件(guard)组成,规则的执行部分则包括行为附件的执行动作(action)以及对行为附件下一个状态的赋值;还增加一条规则(behaviorannexcompletion),让线程构件进入下一个状态;最终,用这些规则来替换线程构件执行语义中的“execution”规则。4当tasm模型得到后,基于类ml元语言形式定义转换规则,将模型继续转为时间自动机模型,然后调用形式化验证工具uppaal进行分析和验证。三、基于马尔可夫链的模型安全性评估通过将aadl模型错误附件转化为扩展马尔可夫链模型,计算组件处于不同危害级别状态概率,定量分析组件安全性,并通过组合计算,对系统模型整体的安全性进行评估。整体过程分为两个阶段,一是根据aadl模型的错误附件,转换得到扩展的马尔可夫链模型,二是根据马尔可夫链模型,对组件和系统的危险概率进行计算,从而实现对系统的安全性做出定量的评估。1、基于步骤一的错误附件向马尔可夫模型的映射一个扩展马尔可夫链模型定义为:mk=(s,∑,p,q),其中①s表示系统所有状态集合,是一个有限的随机状态集合。si表示s中的第i个元素(1≤i≤n)。si是二元组,si={state,level}。state是状态名;level是该状态危害级别,分为5级:正常(normal)、轻微(light)、较重(heavy)、严重(serious)、灾难(crash)。②∑表示引发系统错误状态迁移的事件集合。∑i表示∑中的第i个元素(1≤i≤n)。其中,∑i={triggername,triggertype},triggertype是事件类型,包括故障事件和故障传播;triggername是事件名称。③p是错误状态迁移的概率集合。pi表示p集合中的第i个元素(1≤i≤n)。④q表示状态之间的迁移关系:s×∑→s。这里,下表给出aadl错误附件与扩展markov链模型元素之间映射关系定义。表3aadl错误附件与markov链模型元素映射关系markov链模型aadl错误附件serror-statetriggertypeerror/propagationprobabilityoccurrenceqtransitions2、组件的安全性分析设软件组件由n个错误状态,则其markov链模型可表示为一个n×n的转移矩阵p。pij表示组件从当前状态si迁移到下一个状态sj的转移概率,满足0≤pij≤1。同一起始状态的转移概率之和等于1,即p中每一行的转移概率之和等于1。根据(1)式和(2)式计算软件组件在各个错误状态的稳态概率。这里,π表示组件处于状态集s中各个状态的概率,πi表示组件处于状态i的概率,p表示转移矩阵。π=π*p(1);将相同危害级别状态概率相加,即可分别计算组件处于灾难、严重等级别的可能概率,如(3)式,pl表示组件在危害级别状态l的概率。pl=σi,level=lπj(3);3、软件系统安全性分析aadl错误附件能够描述其故障行为组合,即将系统状态定义为其内部组件状态的组合。因此,系统安全性分析也可基于其内部组件安全性分析计算。根据各个组件状态概率,按照其逻辑组合关系,计算系统在各个状态概率。然后将相同危害级别状态概率相加,即可分别计算系统处于不同危害级别状态的概率。例如,假设系统状态s1定义为:s1when1ormore(sub1.f1,sub2.f2,sub3.f3),则其概率为:通过状态组合,能够直接计算系统状态概率。本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,本领域技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1