论文网
首页 理科毕业化工毕业正文

软件安全测试方法探

  • 投稿好德
  • 更新时间2015-09-23
  • 阅读量1006次
  • 评分4
  • 50
  • 0

张升陈恒如韩利凯

(西安文理学院软件学院,陕西 西安 710065)

【摘要】软件安全检测是信息安全体系中必不可缺少的组成部分,测试方法越来越丰富多彩,其针对性也更强,根据软件安全测试的需要,选择合适的软件测试方法可以做到事半功倍。

教育期刊网 http://www.jyqkw.com
关键词 软件安全;安全测试;测试方法

0引言

软件安全是软件开发中非常重要的一个问题,在单机时代,安全问题主要是操作系统容易感染病毒等,应用程序软件的安全问题并不十分突出,随着互联网的发展与普及,软件安全问题日益突出,使得软件安全性测试的重要性上升到一个前所未有的高度。如何避免因为软件应用所带来的潜在风险是软件安全测试的主要目的,因此,研究软件安全的测试方法对于软件安全测试工作来说有着相当重要的影响,对于保证软件本身的安全也是最重要的工作环节之一。

1软件安全测试

软件安全测试是指验证软件的安全等级和识别潜在安全性缺陷及确定软件安全目前是否能够与软件的预期安全构想一致的过程。软件安全测试是软件开发中的一个重要环节,其目的就是为了能检测出软件所存在的问题对症下药,从而对软件具有的潜在故障进行修正。软件安全测试的思路是用相对较少的测试用例来进行较大规模的软件检测覆盖,是高效率的发现软件存在问题的方法。软件的安全测试是一种有效查找程序错误的手段,软件安全测试的方法通常分为静态和动态两大类。静态安全测试,就是通过对源代码进行安全扫描,根据程序中语义、数据流、控制流等信息与其特有的软件安全规则库进行匹配,从而在代码中找出潜在的安全漏洞。静态的源代码安全测试是非常有效的方法,它可以在编码阶段就找出所有可能存在安全风险的代码,从而使软件开发人员可以在早期就解决软件潜在的安全问题。动态安全测试是使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出软件运行时可能存在的安全漏洞。这种测试的特点是真实有效,缺点是模拟的测试数据只能到达有限的测试点,覆盖率较低[1]。

2软件安全测试中应注意的问题

软件安全测试所包括的环节有:渗透测试、功能测试、验证等,软件安全测试的软件安全问题与普遍的软件缺陷有一些不同,软件安全测试注重的是软件功能不预期的,不是软件功能所预期的。做好软件安全性测试的必要条件是:一要充分了解软件安全漏洞,二要评估安全风险,三要拥有高效的软件安全测试技术和工具。针对目标检测软件所具有的特点和需求,根据具体情况进行综合分析,然后选择适合此情况的软件检测技术与方法并根据实际情况来寻求和确定高效的安全测试计划。与此同时,在执行软件安全测试计划时,要根据测试人员的实际情况,不但要配备软件安全分析的专门人员,而且需要配备对目标软件系统情况熟悉并且还是目标软件系统的设计人员加入到软件安全测试的计划中,多方面的合作才能更好的完成软件安全测试计划。

执行软件安全测试计划时,需求级、系统级、代码级的分析工作是必不可少的。如果测试目标软件的规模较大,软件结构设计方面的分析工作也是必不可少的,在实际的目标软件分析过程中,根据实际需求筛选高效的分析技术,在有需要的情况下进行仿真环境与分析工具来协助测试工作也是可行的。根据软件安全检测的情况来看,测试过程是系统化的过程,无法使用简单的测试方法解决一个系统的安全测试问题,所以在实际的软件安全测试过程中,选择高效合理的安全测试方法是非常必要的[2]。

当对软件做完安全性测试后,是否达到了预期的安全程度呢?需要建立对测试后的软件安全性评估机制,可以从以下两个方面进行评估。

(1)软件安全性缺陷数据评估

如果发现软件的安全性缺陷和漏洞越多,可能遗留的缺陷也越多。进行这类评估时,必须建立基线数据作为参照,否则评估起来没有依据就无法得到正确的结论。

(2)采用漏洞植入法来对软件进行评估

漏洞植入法和可靠性测试里的故障插入测试原理相同,只不过是在被测试的软件里插入一些有安全隐患的问题。采用漏洞植入法时,首先让不参加安全测试的特定人员在软件中预先植入一定数量的漏洞,最后测试完后看有多少植入的漏洞被发现,以此来评估软件的安全性测试做得到位。

3软件安全测试的步骤

软件安全检测通常采用的步骤如图1所示:先进行模块测试,也叫做单元测试,该测试针对的是软件设计中的最小单位所进行的安全检测,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能,模块测试的主要目的是发现系统所属的各个模块可能存在的一些缺陷。集成测试则是把已测试过的模块组装起来,主要针对和设计有关的软件体系结构的构造进行测试。系统测试是把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试,目的是确认软件的质量及确认软件能否实现预其的功能。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完整、正确。

单元测试/模块测试集成测试系统测试确认测试:

4软件安全测试的主要方法

软件安全测试的主要方法如图2所示:

(1)语法测试。该测试方法是根据被测试软件的功能接口的语法确定软件的测试输入,根据这种方法来测试软件对于不同类型输入的反映情况。使用此种方式进行测试的程序是:对软件接口的语言进行识别,定义语言的语法,在以语法为基础产生测试用例的同时进行安全检测。

(2)基于属性的测试。这种软件安全检测方法是:确认软件安全编程规则,将确认的编程规则编码作为安全属性来进行验证,验证系统程序的代码有没有遵守这些规则。该检测方法的优点是能够有效分析安全漏洞的交互性和扩展性。

(3)形式化安全测试。该方法是先确定软件的数学模型,然后通过形式规格说明语言支持提供形式化规格说明。一般使用的形式规格语言有基于模型的语言、基于行为的语言、基于有限状态的语言,有定理证明与模型检测两种形式化安全测试方式。

(4)基于故障注入的安全性测试。这种检测方法是通过故障分析树来进行,故障树分析法使用系统最不该发生的时间作为顶端事件,通过寻找导致事故发生可能的中间事件与底端事件,使用合理的逻辑门符号将顶端事件、中间事件、底端事件构成连接,构成故障树。这种方法可以明显提升检测自动化程度,是效率较高的安全检测方法。

(5)模糊测试。目前大多数使用的是基于白盒的模糊测试,这种方法是对传统模糊测试技术的改进。

(6)基于模型的安全功能测试。这种方法是对软件的行为与结构通过建模的方式来构造测试模型,然后以测试模型为基础生成检测用例,对软件进行安全测试。用得较多的模型安全功能测试方法有:有限状态机、马尔可夫链等。

5结束语

软件安全检测是信息安全体系中必不可缺少的组成部分,软件安全检测对软件应用来说是其发展与应用的必然环节,测试方法越来越丰富多彩,其针对性也更强,根据软件安全测试的需要,选择合适的软件测试方法可以做到事半功倍。

教育期刊网 http://www.jyqkw.com
参考文献

[1]蒋廷耀,王训宇,马凯,关国翔.软件安全测试及应用研究[J].计算机科学,20011:43-46.

[2]陈璇.浅谈关于软件安全性测试方法研究[J].电脑知识与技术,2010:56-57.

[3]晁永胜,郑秋梅.软件安全建模与检测[J].计算机仿真,2009:59-611.

[责任编辑:张涛]