APP下载

计算机软件运行中安全检测技术的运用

2012-08-15张新昌

科技传播 2012年21期
关键词:计算机软件软件测试

张新昌

南京铁道职业技术学院,江苏南京 210029

在当今网络和计算机技术大量普及的形式之下,计算机软件安全与否已经开始得到应用者的重视,用安全监测技术来对软件进行检测,是保证计算机软件使用安全的主要手段。

1 软件安全检测的概述

安全检测是计算机软件开发和运用过程中的重要环节,作为软件开发的关键性环节,安全监测其目的是为了发现软件在运行中的故障和缺点,从而对计算机软件中潜在的风险进行有效的修改和更正,使软件得到优化和发展。然而计算机软件的安全检测技术并不能当做杜绝软件错误漏洞的手段,也无法证明软件是绝对安全和正确的,它的职责只是通过较少的测试实现最大范围的检测覆盖,来找出计算机软件中相对比较容易发现的漏洞和错误。

与其它类型的软件缺陷相比,软件在安全上的缺陷有如下的特点:首先,软件的安全缺陷通常都不是由专业的软件测试人员发现的,而是由试图获得非法利益的黑客或者商业机构的安全人员来发现的。其次,普通的软件缺陷被发现后,一般不会立刻进行修复,而是在该软件的下一个版本才得到修复,而软件安全缺陷一旦被发现就需马上采取相应的措施,否则就会给软件的使用者带来严重的损失。最后,在危害程度上,普通的软件缺陷一般不会造成严重的危害,而软件的安全缺陷一旦被发现利用,则可能给使用者带来巨大的风险。

计算机软件的安全检测包括功能测试、渗透测试、验证过程三个部分。和软件其他种类的检测不同的是,计算机软件安全检测所强调的,不是软件能够、应该做什么,而是软件不应该做什么。通常,计算机安全检测分为安全漏洞检测、安全功能检测两个方面的检测。软件在安全功能方面的需求涉及广泛的内容,如授权、机密性、安全管理、访问控制等等,安全功能检测就是来测试计算机软件的安全功能是否满足其对安全的需求。而安全漏洞的检测所针对的,是软件运行中存在的缺陷,识别出某些缺陷可能对计算机造成的风险。

2 应注意的问题

在对计算机软件进行安全检测的时候,应该注意的问题和事项有:

1)选择合理有效的方案

应该在对需要检测的软件了解充分、对其要求和特性完全掌握的基础上,来进行一个软件的安全检测,根据测试的情况,选用合理的安全检测方法来对安全检测方案进行编制,以保证此安全检测方案的有效实施。另外还要对实施软件检测方案的人员有一定的要求,在对计算机软件进行安全检测的时候,不仅要有熟悉软件安全检测领域知识且有此方面经验的人员的参与,更要有熟悉掌握该软件的使用特点的世纪人员的参与。唯有两方面的人员有效配合起来,才能确保计算机软件安全检测的效果。

2)应做到全面分析

由于计算机软件一般都有程序繁琐,规模比较大的特点,因此相关检测人员在进行计算机软件的安全检测过程中,就要做到在代码级、需求级和系统级三个方面进行细致的分析。如果软件的规模特别大,则还应该做结构设计方面的检查分析。应该从工作的实际需要入手,结合具体的分析过程来选择需要的、合理的分析技术。

计算机安全检测是一个系统化的过程,要想解决一个系统之内所有的安全检测方面的问题,简单的方法是做不到的,因此在具体的软件安全检测的过程中,如何选择科学合理的方案,是软件安全检测的工作者们必须深思熟虑的问题。

3 软件进行安全检测的方法

3.1 流程

规模较大的计算机软件系统,一般会包括了若干个相互联系的子系统,而每一个子系统又包含了多个功能模块。

计算机软件安全测试的流程,包括了模块测试、组装系统、系统结构的安全检测、性能测试、系统测试。模块测试又叫做单元测试,所针对的是软件设计中最小的功能单位。进行模块测试的目的,是发现系统各个功能设计上可能存在的安全缺陷,使测试更加细节化、全面化。在各个模块的测试都结束之后,应该根据此软件设计时的理念进行系统的组装,在此过程中对涉及到的体系结构进行安全测试。然后模块测试和系统结构测试合格的基础之上,对软件进行功能的有效性测试,其目的在于检测软件的功能是否与用户的需求相一致。在上述测试步骤都完成之后,再把整个软件与计算机硬件、数据、其他相关软件等因素联合起来进行系统的测试。

3.2 主要方法

软件安全检测的方法主要分为动态检测和静态分析两大类,动态检测技术是主要通过分析和修改环境变量、内存等软件运行环境来实现的,动态检测技术可以提高程序的保密性,以此来实现软件安全的目的。静态分析技术的原理是使用程序分析技术,来分析程序的源代码,以找出导致错误和安全漏洞的异常。在静态分析技术中,误报率和错误率是两个重要指标,其中的某一个指标降低,往往会使另一个增高。静态分析技术的缺陷在于其分析之后的结果往往是对真实情况的近似值,所以对软件的重要属性无法测试和确定。静态分析技术的优点是检测时计算机软件不需要运行起来,检测过程比较方便。

相对而言,由于其检测过程方便、自动化程度较高、分析速度比较快的特点,静态检测技术比动态检测技术更受软件安全检测工作者们的欢迎。而这两大类检测方法又可以细分为多种技术。

3.2.1 形式化方式

形式化的安全检测方式,是建立在待测软件的数学模型之上的。它通过确立软件的数学模型,在形式规格语言的支持下,提供形式化的规格说明。目前来说较为常用的形式规格语言有行为语言、有效状态语言和模型语言。检测方法有模型检测和定理证明这两种形式化的安全检测方式。

3.2.2 以模型为基础的方式

基于模型的安全检测方式,是指通过结构建模和软件行为的方法来建构测试模型,来进行软件安全检测的方式。基于模型的测试并不注重于软件说明在所有情况下的一致性,而是生成一组测试用例来检测软件系统,得到待测软件系统行为与模式期望相同的结果,以此来进行软件的安全检测。常用的基于模型的检测方式有马尔可夫链和有限状态机等。

3.2.3 语法测试技术

语法检测技术是静态检测技术中最早出现的一种,所检测的仅仅是软件的程序源代码中,可能发生危险的C语言库函数以及系统调用。这种检测方法通常是对反映进行研究,用被检测软件功能接口所使用的语法来生成软件的测试输入,以检测在不同种类的输入情况下,被检测软件的反映情况。其过程一般是对软件接口的语言进行识别,然后定义语法,在最后生成测试用例来执行软件的安全检测。

3.2.4 基于故障注入的技术

基于故障注入的安全测试,是一种检测比较充分的方法。该方法应用了故障分析树来生产出检测用例进行检测,故障分析树是指将系统中最不可能发生的事情作为顶事件,然后通过检测来寻找出事故发生的中间事件和底事。通过逻辑门符号,把底事件、中间事件和顶事件连接成一整颗故障树的方法。

经过实践应用证实,该方法是比较充分和有效的安全检测方法,其优点是可以将检测的自动化的程度显著提高。

3.2.5 模糊测试法

模糊式的测试法是建立于白盒检测的基础之上的检测方法,它把动态检测技术和传统检测家属有效的融合在了一起,是传统检测技术的发展和升华。它通过向目标软件系统提供大量无效的、非预期的随机输入,来检测软件的异常结果,发现软件安全漏洞。其优点在于成本较低,方法比较简单,自动化程度较高等。

3.2.6 基于属性的检测方法

这种检测方法首先要对软件的编程规则进行确定,将编程规则作为安全属性,来检测软件的程序代码是否遵守这些规则,以此来验证代码的安全性。相对于其他的安全检测方法来说,该方法能够实现对软件安全漏洞的交互性和扩展性的全面综合分析。

3.2.7 其他的测试技术

近年来,对Web安全服务所开展的一些测试技术,如分布式软件安全性测试技术等,也得到了快速发展。总体而言,软件安全检测的主要作用,就是通过分析、检测软件设计和软件中可能存在的安全问题,来改善计算机软件的安全性能,保证计算机软件系统的安全应用。

4 结论

如今,软件安全检测将逐渐成为软件应用体系的重要的一部分。我们应该在实践中积累经验,不断研究出更有效的计算机软件安全检测技术。只有提高自身的软件安全保障意识和防测技术,实现安全检测技术的不断创新,才能保障软件的安全应用,保护广大软件用户的利益,维护市场和社会的健康运转。

[1]李洁.软件测试用例设计[J].电脑编程技巧与维护,2010(4).

[2]杨洪路,宫云战,高文龄,白哥乐.软件安全静态检测技术与工具[J].信息化纵横,2009(9).

[3]构建联合战线 让病毒无从下手[J].电脑爱好者,2008(20).

[4]胡恬,王宏.原代码级的软件安全问题研究[J].软件导刊,2007(1).

[5]羊建林,周安民.Windows异常处理与软件安全[J].信息安全与通信保密,2011(4).

[6]赵妍.计算机软件安全检测方法探讨[J].科技传播,2010(16).

[7]蒋廷耀,王训宇,马凯,关国翔.基于EAI和AOP的软件安全测试及应用研究[J].计算机科学,2009(4).

[8]晁永胜,郑秋梅.软件安全建模与检测[J].计算机仿真,2007(10).

猜你喜欢

计算机软件软件测试
禅宗软件
幽默大测试
“摄问”测试
软件对对碰
“摄问”测试
“摄问”测试
基于C语言的计算机软件编程
浅谈不同编程语言对计算机软件开发的影响
浅谈基于C语言的计算机软件程序设计
谈软件的破解与保护