论文部分内容阅读
近年来,软件和软件的运行环境发生了质的变化。这种变化包括软件对外界的开放性、软件结构日益复杂、软件应用技术动态多变等。这些变化给软件可信性带来了很多新的问题,软件不可信也成为了给现代人类生活造成巨大影响的最大压力和最主要的威胁。其中,软件行为的可信性是实现软件可信的重要途径之一。因此,目前一项重要而紧迫的任务是增强软件行为可信性。为了提高软件行为的可信性度,本文提出了SSDB(software system behavior transition diagrambased on function layer)模型。SSDB模型是一种为软件建立行为转换图的结构,基于这种结构建立的转换图可以实现对软件异常行为的检测和溯源,达到增强软件行为可信性的目的。本文的主要研究工作如下:首先,本文分析了软件预期行为建模对增强软件行为可信性的重要性,对软件行为建模方法进行了分析综述,分析了基于这些建模方法检测异常行为的优点和缺点。对这些建模方法分析后发现,现有的对软件行为建模的方法大多数只考虑这个模型是否能有效检测出异常行为,至于这些被检测出的异常行为怎样处理则缺乏有效的方法。这些未处理的异常行为虽然被检测出但是仍然为软件的安全性埋下了隐患。所以,增强软件行为可信性并不仅仅是检测出软件异常行为,并且要求分析者从根源上解决这些异常行为,这样才能更加有效的增强软件可信性。基于这种思想,本文提出一种可以更加有效的增强软件可信性的新模型。新模型主要目的是定位异常行为在源代码中的位置以达到增强可信性的目的。为了实现这一目标,提出这种基于软件功能层把静态行为特征和动态行为特征相结合的新模型SSDB。以SSDB模型对软件建立的软件行为转换图可以有效地检测出软件异常行为并且可以对软件异常行为在软件源代码中溯源。定位异常行为的相关代码块为解决异常行为提供了可能性,同时也在增强了软件行为可信性。然后,本文提出了一种基于软件功能层的动静相结合的模型SSDB。SSDB模型的原理:通过软件动态行为特征监控软件并检测软件运行时的异常行为,然后在软件源码中定位这个异常行为相关的软件静态行为特征(相关代码块)。为了实现这种定位,使用应用程序界面中的软件功能连接软件动态行为特征和软件静态行为特征以达到对异常行为溯源的目的。因此,在本方法中同时使用软件的三种行为特征来表征一个软件行为。软件动态行为特征是软件运行时截取到的状态序列。软件运行时实际截取到的应该是系统调用序列,通过状态层推导方法将系统调用序列转化成状态序列。软件静态行为特征是源代码中的代码块,这种模型要求测试用软件是开源的。在软件静态源代码的基础上对软件行为可以做程序切片,找出源代码中软件异常行为相关的代码块。SSDB实际是使用一个行为的三种不同行为特征同时表达同一个软件行为并且记录软件的所有行为转换关系的模型。最后,本文提出了两层检测方法,这种方法基于SSDB模型,并对软件异常行为溯源。本文在软件行为转换图的基础上对软件异常行为进行检测,如果出现了和软件转换图中不同的节点或者路径以及路径权值不同的情况则判定为出现了异常行为。对异常行为溯源主要依赖于程序切片技术。程序切片技术是一种程序分析技术,通过发现一个问题并找出所有与问题有关的语句,找出错误产生的根源。分析原因后进一步修改和纠正错误。程序切片技术主要应用于发现软件异常行为之后。该检测方法和溯源方法不但可以更加精确的检测出异常行为,并且可以更加准确的对异常行为溯源,为彻底解决异常行为增强软件行为可信性提供了可能性。