计算机应用与软件
主办单位:上海科学院
国际刊号:1000-386X
国内刊号:31-1260/TP
学术数据库优秀期刊 《中文科技期刊数据库》来源期刊
       首 页   |   期刊介绍   |   新闻公告   |   征稿要求   |   期刊订阅   |   留言板   |   联系我们   
  本站业务
  在线期刊
      最新录用
      期刊简明目录
      本刊论文精选
      过刊浏览
      论文下载排行
      论文点击排行
      
 

访问统计

访问总数:33224 人次
 
    本刊论文
计算机软件安全检测技术方法研究

  [摘 要] 软件系统的安全性是信息安全的一个重要组成部分。计算机软件安全检测是软件开发的重要环节,检测的目的是为了发现软件所存在的故障而对程序进行执行的过程,从而有效的对计算机软件潜在的风险进行更正。软件安全检测的目标是用较少的测试用例来达到最大的软件检测覆盖,从而极好的发现软件存在的问题。本文将重点关注安全性测试的主要方法、技术及工具。



  [关键词] 计算机 软件安全 检测方法


  1.前言


  安全性是软件质量的一个重要属性。对软件安全的测试就是采用各种方法来验证或发现系统安全方面的问题。从计算机软件的应用来说,计算机软件安全检测的目的是避免由于软件应用所带来的潜在风险。计算机软件安全检测方法的研究对软件安全检测工作来说有着不可低估的作用,是保障计算机软件安全必不可少的手段之一。


  2. 软件的安全性分类


  软件的安全性,可以划分为失效安全性和保密安全性。


  所谓失效安全性,即软件运行不引起系统事故的能力,强调的是一类安全关键软件的安全性失效可能造成重大人员伤亡、财产损失、环境污染等危险事故。对失效安全性的度量主要有建立在可靠性理论基础上的安全度、失效度、平均事故间隔时间、软件事故率等。对于失效安全性测试,常用的测试方法目前有基于故障树的测试和基于最小割集的测试。[1]


  所谓保密安全性,即与防止对程序和数据进行非法存取的预防能力有关的质量属性。软件安全性是软件在受到恶意攻击时仍提供所需功能的能力。对于保密安全性测试,目前主要有代码走读与审查、静态分析、形式化方法、故障注入、基于模型的测试、基于属性的测试、语法测试、模糊测试等测试方法。


  3. 计算机软件安全检测是应注意的问题


  从计算机软件安全检测来看,其是一个动态的检测过程。在进行软件安全检测是需要关注到的问题有:


  ① 针对所检测的计算机软件所特有特点与涉及要求,在综合分析的基础上通过选择适合软件的检测技术手段,并从实际出发的角度制定合理的安全检测方案。同时,在进行计算机软件安全检测时要关注检测人员的多元化,在计算机软件安全检测过程中不仅仅要配备软件安全分析员,还要需要配备对该软件系统熟悉同时是还是该系统的总体设计人员参加,只有多领域的配合才能更好的对软件安全进行检测。


  ② 在进行计算软件安全检测时,系统级、需求级与代码级的分析是必须的。如果该软件的规模比较大,还应对其进行软件结构设计方面的分析。在具体的分析过程中从实际工作需要选择合理的分析技术,必要时可以进行仿真环境与分析工具来协助检测工作。从计算机安全检测的角度来看,其过程是一个系统化的过程,无法通过简单的方法来解决一个系统的所有安全检测问题,因而在具体的家算计安全检测过程中,需要选择合理的安全检测方法。


  4 计算机软件安全检测的主要方法


  4.1静态分析安全测试


  静态分析安全测试主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。它可以在编码阶段找出所有可能存在安全风险的代码,开发人员可以在早期解决潜在的安全问题。[2]


  4.2形式化安全测试。


  该安全检测方法是确立软件的数学模型,通过形式规格说明语言的支持提供形式化的规格说明。比较常用的形式规格语言有基于模型的语言、基于有限状态的语言及基于行为的语言。有定理证明与模型检测两种形式化安全检测的方法。


  4.3基于模型的安全功能测试。该方法是对计算机软件的行为与结构通过建模的方式生成测试模型,以测试模型为基础生成检测用例,进而驱动软件安全检测。比较常用的模型安全功能测试方法有有限状态机与马尔可夫链等等。


  4.4语法测试。


  该测试方法是以被检测软件的功能接口的语法生成软件的测试输入,通过这种方式检测软件对不同种类输入的反映情况。用该方法进行测试的通常程序是对软件接口的语言进行识别,定义语言的语法,在以语法为基础生产测试用例同时执行安全检测。


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


  该安全检测方法是应用故障分析树与故障数的最小割集来生产检测用命。故障树分析法用系统最不该发生的时间作为顶事件,在寻找导致事故发生可能的中间事件与底事件,通过合理的逻辑门符号将顶事件、中间事件与底事件进行连接,形成故障树。该方法可以显著提高检测的自动化程度,是比较充分的安全检测方法。


  4.6模糊测试。


  目前所用的是基于白盒的模糊测试,是对传统模糊测试技术的进步。该检测方法有效的结合传统的模糊测试技术与动态测试用例。


  5. 计算机软件安全检测的主要技术


  5.1功能验证


  功能验证就是对软件需求中确定的有关安全模块的功能进行测试验证。作为网络信息系统自身安全建设的需要,设计者会在软件设计和开发过程中增加一些必要的安全防护措施:如权限管理模块,数据加密模块,传输加密模块, 数据备份和恢复模块等, 对安全的功能验证可以采用与一般的程序功能测试相似的方法,如黑盒测试方法, 白盒测试方法或灰盒测试方法等用例来进行测试。


  5.2 漏洞扫描


  漏洞是指硬件、软件或策略上的缺陷,这种缺陷导致非法用户未经授权而获得访问系统的权限或者扩大访问权限。在计算机软硬件系统中,没有绝对安全的组件,各种操作系统存在安全漏洞, 各种数据库管理系统也存在安全漏洞,漏洞扫描软件可以有针对性地对信息系统和应用软件的有关漏洞进行扫描,再对发现漏洞进行有效的防范或补救措施,也可以对采取保护措施防止非法者利用已知的漏洞进行攻击。常见的漏洞有拒绝服务漏洞,本地用户扩权漏洞和远程用户扩权漏洞等。


  5.3 模拟攻击


  模拟攻击,就是假设自己是一个非法入侵的攻击者(如黑客),利用目前存在的系统漏洞和常用的攻击手段,对提交评测的系统的开发环境或使用环境里进行攻击,以发现安全问题。主要的攻击技术分为以下三类:服务拒绝型攻击,漏洞木马型攻击,伪装欺骗型攻击。


  5.4 侦听技术


  侦听技术,也称网络监听,可以获取网络上传输的信息,而这些信息并不是发给自己的,网络侦听技术是一个常用的手段,可以有效地管理网络,诊断网络问题,检查网络的安全威胁。目前网络侦听工具有多种, 有硬件,也有软件的。测评人员为了评测信息系统的安全环境,熟悉网络侦听技术,使用侦听技术是一种有效地安全测试方法。[3]


  6.结束语


  近年来基于Web 服务的分布式软件快速发展,如何对Web 服务开展安全性测试是分布式软件安全性测试面临的崭新课题[4]。而软件安全检测方法的存在其主要作用就是检测、分析软件或软件设计中存在的这些安全问题,从而指导软件进行安全性能改善[5]。另外,我们还要将软件安全测试贯穿于整个软件开发过程中,并采用国内外先进的技术和方法,定能保证软件质量的提高。


  参考文献:


  [1] 陈璇。浅谈关于软件安全性测试方法研究[J].电脑知识与技术,2009(3)。


  [2]施寅生,邓世伟,古天阳。软件安全性测试方法研究[J].微计算机信息。2008, 24 (1-3):56-58.


  [3]王晓华。软件安全测试方法研究。农业网络信息。2010(3)。


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


  作者简介:


  王翠,女,(1982—),硕士,讲师,主要研究方向:网络信息安全,软件测试。


特别说明:本站仅协助已授权的杂志社进行在线杂志订阅,非《计算机应用与软件》杂志官网,直投的朋友请联系杂志社。
版权所有 © 2009-2024《计算机应用与软件》编辑部  (权威发表网)   苏ICP备20026650号-8