《计算机软件安全检测方法探讨.doc》由会员分享,可在线阅读,更多相关《计算机软件安全检测方法探讨.doc(7页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机软件安全检测方法探讨摘要:伴随着科学技术的发展,计算机软件的应用范围越来越广泛。软件的应用越来越广泛,规模和复杂度不断提高,软件中的安全缺陷与漏洞也在不断增多,软件安全性问题日益突出。软件安全性测试是保证软件安全性、降低软件安全风险的重要手段。论述了软件安全性测试的特点、内容,重点研究了国内外软件安全性测试的主要方法与工具,分析了各种方法的优缺点与适用范围,提出了一种安全性测试工具的分类方法,总结了当前研究工作并指出了未来软件安全性测试技术的研究重点与发展方向。本文从计算机软件安全检测的概述出发,在论述计算机软件安全检测需要注意问题的基础上阐述了计算机软件安全检测的方法。关键词:计算机;
2、软件安全;检测方法;:安全性测试; 安全功能测试; 安全漏洞测试; 语法测试从计算机软件的应用来说,计算机软件安全检测的目的是避免由于软件应用所带来的潜在风险。计算机软件安全检测方法的研究对软件安全检测工作来说有着不可低估的作用,是保障计算机软件安全必不可少的手段之一。1 计算机软件安全检测概述计算机软件安全检测是软件开发的重要环节,检测的目的是为了发现软件所存在的故障而对程序进行执行的过程,从而有效的对计算机软件潜在的风险进行更正。软件安全检测的目标是用较少的测试用例来达到最大的软件检测覆盖,从而极好的发现软件存在的问题。计算机软件安全检测其的存在并不能证明程序中没有错误,它仅仅是查找程序错
3、误的手段。从目前计算机软件安全检测情况来看,进行安全测试的方法主要分为静态与动态两大类。计算机软件安全检测是确定软件所具有的安全实现是否能够与软件预期的设计要求一致的过程,这个过程包括功能测试、渗透测试与验证过程3 个部门。计算机软件安全检测的安全性与一般的软件缺陷有一定的区别,软件安全检测所强调的是软件不应该做什么,而不是软件应该做什么。计算机软件安全检测通常分为安全功能与安全漏洞进行检测两个方面。安全功能测试是检测计算机软件安全功能是否与安全需要之间步调一致。软件安全功能需求做涉及的内容比较广,具体包括机密性、授权、访问控制及安全管理等等。而计算机软件安全漏洞的检测则与此不同,其针对的是软
4、件可能存在的缺陷,该缺陷有可能导致软件在应用中存在一定的风险。2 安全性测试的特点和分类软件安全性测试是确定软件的安全特性实现是否与预期设计一致的过程,包括安全功能测试、渗透测试与验证过程。软件安全性测试有其不同于其它测试类型的特殊性,安全性相关缺陷不同于一般的软件缺陷。一个很难发现的软件安全漏洞可能导致大量用户受到影响,而一个很难发现的软件缺陷可能只影响很少一部分用户。安全性测试不同于传统测试类型最大的区别是它强调软件不应当做什么,而不是软件要做什么。非安全性缺陷常常是违反规约,即软件应当做A,它却做了B。安全性缺陷常常由软件的副作用引起,即软件应当做A,它做了A 的同时,又做了B。传统测试
5、类型强调软件的肯定需求,例如用户账户3 次登陆失败则关闭此账户。安全性测试更强调软件的否定需求,如未授权用户不能访问数据。软件安全性测试可分为安全功能测试和安全漏洞测试两个方面。安全功能测试基于软件的安全功能需求说明,测试软件的安全功能实现是否与安全需求一致,需求实现是否正确完备。软件主要的安全功能需求包括数据机密性、完整性、可用性、不可否认性、身份认证、授权、访问控制、审计跟踪、委托、隐私保护、安全管理等。安全漏洞测试从攻击者的角度,以发现软件的安全漏洞为目的。安全漏洞是指系统在设计、实现、操作、管理上存在的可被利用的缺陷或弱点。漏洞被利用可能造成软件受到攻击,使软件进入不安全的状态,安全漏
6、洞测试就是识别软件的安全漏洞。 3 安全性测试主要方法随着软件安全性受到人们的重视,安全性测试方法相关研究取得了一定进展。一是形式化安全测试。该安全检测方法是确立软件的数学模型,通过形式规格说明语言的支持提供形式化的规格说明。比较常用的形式规格语言有基于模型的语言、基于有限状态的语言及基于行为的语言。有定理证明与模型检测两种形式化安全检测的方法。二是基于模型的安全功能测试。该方法是对计算机软件的行为与结构通过建模的方式生成测试模型,以测试模型为基础生成检测用例,进而驱动软件安全检测。比较常用的模型安全功能测试方法有有限状态机与马尔可夫链等等。三是语法测试。该测试方法是以被检测软件的功能接口的语
7、法生成软件的测试输入,通过这种方式检测软件对不同种类输入的反映情况。用该方法进行测试的通常程序是对软件接口的语言进行识别,定义语言的语法,在以语法为基础生产测试用例同时执行安全检测。四是基于故障注入的安全性测试。该安全检测方法是应用故障分析树与故障数的最小割集来生产检测用命。故障树分析法用系统最不该发生的时间作为顶事件,在寻找导致事故发生可能的中间事件与底事件,通过合理的逻辑门符号将顶事件、中间事件与底事件进行连接,形成故障树。该方法可以显著提高检测的自动化程度,是比较充分的安全检测方法。五是模糊测试。目前所用的是基于白盒的模糊测试,是对传统模糊测试技术的进步。该检测方法有效的结合传统的模糊测
8、试技术与动态测试用例。六是基于属性的测试。该软件安全检测方法是首先确定软件的安全编程规则,将确定的规则编码作为安全属性来验证系统程序的代码是否对这些规则进行了遵守。该检测方法的优势是能够有效分析安全漏洞的交互性及扩展性等的。4 计算机软件安全检测是应注意的问题从计算机软件安全检测来看,其是一个动态的检测过程。在进行软件安全检测是需要关注到的问题有:一是要针对所检测的计算机软件所特有特点与涉及要求,在综合分析的基础上通过选择适合软件的检测技术手段,并从实际出发的角度制定合理的安全检测方案。同时,在进行计算机软件安全检测时要关注检测人员的多元化,在计算机软件安全检测过程中不仅仅要配备软件安全分析员
9、,还要需要配备对该软件系统熟悉同时是还是该系统的总体设计人员参加,只有多领域的配合才能更好的对软件安全进行检测。二是在进行计算软件安全检测时,系统级、需求级与代码级的分析是必须的。如果该软件的规模比较大,还应对其进行软件结构设计方面的分析。在具体的分析过程中从实际工作需要选择合理的分析技术,必要时可以进行仿真环境与分析工具来协助检测工作。从计算机安全检测的角度来看,其过程是一个系统化的过程,无法通过简单的方法来解决一个系统的所有安全检测问题,因而在具体的家算计安全检测过程中,需要选择合理的安全检测方法。5 安全性测试工具分类与功能安全性测试工具以自动化或半自动化的方式验证系统安全功能运行是否正
10、确、安全机制是否有效和查找潜在的安全漏洞,可有效提高测试效率,降低软件安全风险,近年来涌现了大量功能强大的安全性测试工具。安全性测试工具可采取多种分类方法。一个好的分类方法应满足明确性、正交性、客观性、易使用性、广泛性等要求。根据测试对象的层次可分为主机安全测试工具、网络安全测试工具、应用安全测试工具,但以上分类方法粒度较粗且对每类工具的功能、特点、属性难以识别,不利于测试人员对测试工具的选择。本文根据安全测试工具的不同功能将安全测试工具分为11 类,分别是源代码分析器、字节码扫描器、二进制代码扫描器、数据库脆弱性扫描器、网络漏洞扫描器、Web 应用漏洞扫描器、Web 服务扫描器、动态分析工具
11、、配置分析工具、需求验证工具、设计模型验证工具。6 结束语软件安全是信息安全体系的重要组成部分,软件开发人员和测试人员已经认识到安全性测试的重要作用。本文系统分析了安全性测试的特点、内容、方法与工具,提出了一种安全性测试分类方法,即将安全性测试分为安全功能测试和安全漏洞测试,并提出了一种安全性测试工具的分类方法。未来软件安全性测试技术主要发展方向包括:软件授权、访问控制等安全功能建模与测试研究;形式化安全测试方法研究;基于风险的安全测试及其在软件工程实践中的应用;故障注入、模糊测试、语法测试、基于属性的安全测试方法研究;利用威胁模型与攻击树指导安全测试过程;漏洞发现过程的建模及利用模型定量预测安全漏洞。另外近年来基于Web 服务的分布式软件快速发展,如何对Web服务开展安全性测试是分布式软件安全性测试面临的崭新课题。