在安全建模中,首先把安全模型分成三个不同的组成部分:抽象模型m、面向应用的模型m’和数据模型m’’。这三种模型对应不同抽象层次的安全特征, 其中抽象模型m为通用模型; m’为面向应用的模型,m’与m 存在关系:m’→ m, m 与m’为1:n关系,m’是针对不同的环境而设计的; 除了上述两种模型还有一种数据安全模型m’’,它直接反映数据或变量的约束和条件。通过三种不同模型的结合可以表示各类安全特征, 这样克服了常规安全模型表达力不足的缺点。此外为了提高模型的复用性与适用性, 该建模技术把模型分割成三个层次进行构建, 即应用层、抽象层、表示层。其中assml(Abstract Sub Security Model) 表示抽象安全模型m,主要针对软件需求等前期开发阶段而设计的, 此模型不含应用相关的信息, 用于较高层次安全特征的表示与检测, 属于抽象层。由于抽象层独立于应用,它具有较强的复用性, 这是该模型与其它技术的主要区别之一。为了增加模型的应用范围和可扩性在建模中又引入了应用层,在应用层中包括cssml(Concrete Sub Security Model)和dssml(Data Sub Security Model)。其中cssm l用来表示面向应用的安全模型m’,它与抽象安全模型相反, 是针对不同的应用而设计, 用于表示或检测较低层次安全特征,它是抽象安全模型assm l的实例,它主要用在详细设计和编码阶段。dssm l表示数据安全模型m’’,它主要针对编码阶段中的数据或逻辑安全特征而设计,它所反映的问题一般是低级的数据或逻辑问题。底层的sm l(Security Model)表示安全模型的模式说明,它是一种全局安全模型,用于说明各个模型之间的关系和关键状态,sm l属于表示层。

图1 安全模型的层次

  2.1.2 基于模型的安检及关键技术

  在安全模型建立后, 接着要进行软件安全性检测与分析。安全检测所面临的一个重要问题是如何对程序进行精简减小安全检测的范围与路径。

  2.2 基于模型的软件安全性技术

  2.2.1 基于模型的软件安全分析的关键技术

  基于模型的软件安全分析是通过搜索软件或系统状态空间来确定该软件或系统是否具有与安全模型存在相关性的过程,我们这里所指的相关性主要是针对软件的安全特性来讲的。在安全分析的过程采用的关键技术主要包括:

  2.2.2 模型表示技术

  为了描述软件中出现的缺陷和脆弱点要抽象出安全模型,这里需要把现实软件设计中的安全特性或缺陷表示成公式化的形式,安全模型一般来源于公认的安全软件设计经验和结构体系,在实施过程中对代码或设计安全模型的行为抽象要借助于建模技术和形式化语言来完成。

  2.2.3 软件抽象技术

  除了模型表示技术之外,软件抽象技术也是本课题所用的关键技术。通常软件和软件结构比较复杂,可能涉及许多不同状态,直接进行安全分析的难度和复杂性较大,为减少软件的复杂性、降低安全分析的难度,需要采取抽象(Abstraction)或切片(SlicingOsl)技术对软件进行相应变换,即对软件结构按指定要求(软件安全模型或规范)进行简化,提高软件安全检测的效率。本课题采用的抽象技术是一种基于应用的切片技术。

  2.2.4 安全检测

  在软件安全检测的过程中,首先通过模型表示技术即安全建模技术把安全特征表示成安全模型,然后该模型与切片技术相结合对软件进行简化,后对简化后的软件实施安全分析,产生安全报告。

  2.2. 5模型无关组件及组件问安全性分析

  2.2.6 模型无关组件安全分析

  在完成上述依赖vDcp、fDep和安全距离vD、fD及安全依赖图的计算后,模型无关组件的安全分析变得较为简单。首先按缺陷点遍历安全依赖图,给出存在潜在安全隐患的预测路径;然后分别给出函数安全距离与变量安全距离等参数,为后期的软件排错和测试提供依据。