软件安全性测试技术探析

时间:2022-04-16 01:56:55

软件安全性测试技术探析

摘 要 随着网络技术的发达以及计算机技术的使用,软件的普及率越来越高,其复杂程度以及具备的规模也不断提高,软件中的漏洞以及安全性的缺乏给人们造成的损失也不断增加,软件安全性问题突出已经引起了全社会的关注。而软件的安全性测试技术正是为了弥补软件运用中所存在的这一缺陷而诞生的。软件安全性测试是降低软件运用风险,保证软件使用安全性的重要手段,通晓软件安全性测试技术,将使我们更好、更全面地了解日常使用的软件,以及学会如果更好地规避软件使用中的风险。本文将重点关注软件安全性的测试技术,并从软件安全性测试的特点、分类,主要的测试方法和安全性测试工具分类与功能这三个方面进行相关的论述与探析。

关键词 软件;安全性;测试技术

中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2013)11-0000-00

软件的安全性主要包括软件的失效安全性以及保密安全性。失效安全性是指软件在不间断运行中,不发生系统事故的能力。其包括:因安全性失效可能造成单位的财产与人员损失、环境污染等重大安全事故。而保密安全性是指软件所具有的可以防止对数据和程序进行非法存取的预防能力。在我国,相关的软件技术人员更多的是侧重于软件的失效安全性。建立在可靠性理论基础上的失效安全性主要度量标准有软件事故率、失效度、安全度以及平均事故间隔时间。目前常有的测试方法有基于最小割集的测试、故障树的测试、ISO9126质量模型、基于模型的测试、基于属性的测试等。

1 软件安全性测试的特点和分类

软件安全性测试是通过测试手段,来确定软件的安全性是否与预期结果保持一致的过程。软件安全性的测试,是区别与其它软件的测试类型,它具有自身的特殊性、安全性,相关缺陷也与一般软件缺陷相区别的特点。软件的安全性测试主要包括验证,渗透测试,安全功能测试的过程。与其他传统测试软件相比,软件的安全性测试最大不同之处:软件安全性测试强调软件“不应该做什么”,而不是“应该做什么”,比如软件缺陷所产生的影响甚微,但难以发现的软件漏洞可能是致命错误,能让客户蒙受重大损失。软件安全性测试的这种不同,正是由其特殊性、安全性所决定的。相比软件中的非安全性测试,安全性测试更强调的是软件的否定需求,比如用户在使用该软件的时候,如果登陆三次失败就锁定账号。相比非安全性测试中的违反常规,安全性测试的缺点是由软件的副作用引起的。比如,在非安全性测试缺陷下,本来软件应该做G的,但它却做了F;而在安全性测试缺陷下,本来软件应该做G的,但是它在做完G的同时也顺带完成了F。

软件的安全测试主要包括:安全漏洞的测试与安全功能的测试。所谓软件的安全漏洞指软件系统在设计、使用等方面,存在可被利用的漏洞。当不法分子发现或者利用这些软件漏洞时,软件便处于不安全的状态。所以,利用软件的安全漏洞测试才能发现并识别软件中的这些漏洞,并及时加以修补。而所谓的安全功能需求包括数据的机密性,完整性以及可靠性,不可否认性,还包括身份认证,访问设置,跟踪追查,安全管理,隐私保护等。而基于软件的安全功能需求的安全功能测试,就是用来测试该软件是否具备与预期相一致的功能的。

2 软件安全性测试主要方法

2.1 基于故障注入的安全性测试

故障注入的软件安全性测试,就是指通过构造各类协议数据包来植入故障,以测试目标软件是否能正确处理这些预置故障。该测试方法是Wenling Du建立的一种软件与环境交互,将故障注入技术用于软件安全性测试的一种故障模型。该项目通过修改某些协议中的数据,支持的协议有HTTP、HIP、WAP、SNMP等。故障注入就是通过故障注入函数,进行故障模拟,并使程序强制进入某些特定状态,而使用常规的测试技术是很难查看到的。

2.2 基于自盒的安全性测试

基于自盒的安全测试主要是静态分析,主要考察缓冲区溢出、数据竞争等安全性缺陷代码模式,主要的技术分析有数据流分析、技术型推断和约束分析。为了在程序运行的时候插入攻击代码,测试安全机制是否真正可用,Lori Pollock和Ben Breech提出一种基于动态编译技术的安全测试框架,主要用来测试基于程序的攻击。

2.3 攻击树理论与威胁模型

安全性研究方法大致可分为:基于漏洞的方法、基于威胁的方法。前者是为了识别软件的安全漏洞,主要是从软件的内部考虑软件的安全性。而后者是通过分解应用程序(识别入口点,出口点,数据流描述),识别要保护的资产等步骤,来识别软件所面临的安全威胁并测试是否能够正常发生。最常用的威胁分类方法有篡改、欺骗、信息泄露、否认、拒绝服务等等,简称STRIDE。

2.4 基于模型的安全功能测试

Mark blackbum与Robert Busser研究出基于模型的安全功能测试,该模型安全功能测试常用的模型有:UML模型有限状态机两种。这种方法的适用范围取决于安全功能的建模能力,是一种较为一般的安全功能测试。

3 软件安全性测试工具分类与功能

为了更好地验证系统安全机制是否有效,及时地查找软件中的漏洞,检测系统的运行是否正常,最近几年产生了很多功能强大的安全性测试工具,这不仅大大地提高了软件安全性的测试效率,而且在很大的程度上也降低了软件的安全风险,为软件的顺利运行提供了一个良好的环境。

在当前的市面上,主流的软件安全测试工具有源代码分析器、字节码扫描器、网络漏洞扫描器、配置分析工具、网络应用漏洞扫描器、网络服务扫描器、动态分析工具、数据库脆弱性扫描器、设计验证工具等,这些安全性测试工具的出现与应用,让软件安全性测试技术得到了进一步的飞跃,加快了软件的发展进程。

4 结束语

本文通过具体的案例,分析了软件安全性测试的分类、特点、主要测试方法、安全性测试工具分类与功能,深入探析软件安全性测试。软件的安全性测试是通过相关的工程技术,为了尽可能地避免人为很难发现的技术缺陷和安全风险,最大限度地保障人民的生命财产安全而开发的一个工程技术,是软件开发中的一个重要的组成部分。如何通过完善的文档资料,技术分析,测试方案,最大限度的实现测试覆盖,并发现软件瑕疵,是所有的软件技术人员面临及应思考的问题。

参考文献

[1]毕媛媛,陈锦平.基于模型的安全静态检测技术[J].硅谷,2012(08).

[2]李明,高勇.基于语法的软件安全检测[J].信息安全与通信保密,2011(06).

[3]刘东飞.故障树分析技术在软件测试中的运用[J].软件导刊,2011(07).

[4]王之.参透测试技术与模型研究[J].计算机与信息技术,2011(05).

上一篇:大数据时代的Oracle数据压缩技术应用 下一篇:云计算数据安全策略研究