background image

关于软件安全性测试方法研究

    摘 要:软件安全性测试是保证软件安全性的重要手段。本文论述了软件安全性测试的特
点和主要内容,重点研究了国内外软件安全性测试的主要方法,最后总结了当前研究工作
并指出了未来软件安全性测试技术的研究重点与发展方向。

 

  关键词:安全性测试;安全功能测试;语法测试;模糊测试

 

  安全性是软件质量的一个重要属性。本文将重点关注安全性测试的主要方法、技术及工
具。有

 

  

1 软件测试步骤 

  一个大型软件系统通常由若干个子系统构成,每个子系统又由若干个模块构成。软件测
试分以下几个步骤:

 

  

1.1 单元测试。又称模块测试。它是针对软件设计的最小单位——程序模块进行正确性检

验的测试工作,其目的在于发现各模块内部可能存在的各种差错。

 

  

1.2 集成测试。通常在单元测试的基础上,需要将所有模块按照设计要求组装成为系统,

对与设计相关的软件体系结构的构造进行测试。

 

  

1.3 确认测试。又称有效性测试。它的任务是验证软件的功能和性能及其它特性是否与用

户的要求一致。

 

  

1.4 系统测试。是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计

算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起。

 

  

2 安全性测试主要方法 

  随着软件安全性受到人们的重视,安全性测试方法相关研究取得了一定进展。

 

  

2.1 形式化安全测试。形式化方法的基本思想是建立软件的数学模型,并在形式规格说

明语言的支持下,提供软件的形式规格说明。形式化安全测试方法可分为两类,即定理证明
和模型检测。定理证明方法将程序转换为逻辑公式,然后使用公理和规则证明程序是一个合
法的定理。模型检测用状态迁移系统

S 描述软件的行为,用时序逻辑、计算树逻辑或演算公

F 表示软件执行必须满足的性质,通过自动搜索 S 中不满足公式 F 的状态来发现软件中

的漏洞。

 

  

NASA(national aeronautics and space administration)的一个实验室 JPL(jet propulsion 

laboratory)开展过形式化安全测试方面的项目。主要思路是建立安全需求的形式化模型,
例如状态机模型。输入输出序列决定安全状态转换。安全测试即搜索状态空间,看是否能从
起始状态找到一条路径到达违反规约的不安全的状态。随着模型大小与复杂性增长,状态空
间 呈 指 数 增 长 ,

JPL  开 发 了 一 种 使 用 SPIN  的 形 式 化 建 模 框 架 ( flexible  modeling 

framework,FMF)解决状态爆炸问题,并开发了基于属性的测试工具( property based 
tester,PBT)。 
  

2.2 基于模型的安全功能测试。基于模型的测试方法是对软件的行为和结构进行建模,

生成测试模型,由测试模型生成测试用例,驱动软件测试。常用的软件测试模型有有限状态
机、

UML 模型、马尔可夫链等。 

  

Mark Blackburn、Robert Busser 研究了基于模型的安全功能测试。主要项目支撑是 NIST 

CSD(computer security division)部门的项目 Automated Security Functional Testing。主要思
路是利用

SCRModeling 工具对软件的安全功能需求进行建模,使用表单方式设计软件的安