安全性测试范文

时间:2023-09-29 21:13:52

安全性测试

安全性测试篇1

【关键词】安全性测试;安全功能测试;语法测试;模糊测试

安全性是软件质量的一个重要属性。传统上国内学者较多关注软件的失效安全性,即软件运行不引起系统事故的能力,强调的是一类安全关键软件的安全性失效可能造成重大人员伤亡、财产损失、环境污染等危险事故。

1.软件测试方法

1.1静态测试

静态测试在对软件代码进行分析、检查和测试时不实际运行被测试的程序,同时这种测试方法还可以用于对各种软件文档进行测试。例如对需求文档的验证和确认,系统设计文档的检查以及程序代码的检查。

1.2动态测试

动态测试就是通过运行软件来检验软件的动态行为和运行结果的正确性。动态测试的主要特征是计算机必须真正运行被测试的程序,通过输入测试数据,对其运行情况进行分析。

1.3黑盒测试(功能测试)

在黑盒测试或功能测试中,测试条件主要是基于程序或者系统的功能,测试人员不需要了解程序是如何运作,只是关注程序的功能是否与规格说明书所描述的一致。

1.4白盒测试(结构测试)

在此项测试中,测试条件是基于程序逻辑,测试人员查看程序或者系统的内部机构。测试人员需要了解内部程序结构和逻辑,关注生产出来的代码,而不需理会其功能是否与说明书上的功能相同。

2.安全性测试主要方法

随着软件安全性受到人们的重视,安全性测试方法相关研究取得了一定进展。

2.1形式化安全测试

形式化方法的基本思想是建立软件的数学模型,并在形式规格说明语言的支持下,提供软件的形式规格说明。形式化安全测试方法可分为两类,即定理证明和模型检测。定理证明方法将程序转换为逻辑公式,然后使用公理和规则证明程序是一个合法的定理。模型检测用状态迁移系统S 描述软件的行为,用时序逻辑、计算树逻辑或演算公式F 表示软件执行必须满足的性质,通过自动搜索S 中不满足公式F 的状态来发现软件中的漏洞。

NASA(national aeronautics and space administration)的一个实验室JPL(jet propulsion laboratory)开展过形式化安全测试方面的项目。主要思路是建立安全需求的形式化模型,例如状态机模型。输入输出序列决定安全状态转换。安全测试即搜索状态空间,看是否能从起始状态找到一条路径到达违反规约的不安全的状态。随着模型大小与复杂性增长,状态空间呈指数增长,JPL 开发了一种使用SPIN 的形式化建模框架(flexible modeling framework,FMF)解决状态爆炸问题,并开发了基于属性的测试工具(property based tester,PBT)。

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

基于模型的测试方法是对软件的行为和结构进行建模,生成测试模型,由测试模型生成测试用例,驱动软件测试[3]。常用的软件测试模型有有限状态机、UML 模型、马尔可夫链等。

Mark Blackburn、Robert Busser 研究了基于模型的安全功能测试[4]。主要项目支撑是NIST CSD(computer security division)部门的项目Automated Security Functional Testing。主要思路是利用SCRModeling 工具对软件的安全功能需求进行建模,使用表单方式设计软件的安全功能行为模型,将表单模型转换为测试规格说明模型,利用T-VEC工具生成测试向量(由一组输入变量,期望输出变量组成),开发测试驱动模式和目标测试环境的对象映射,将测试向量输入测试驱动模式执行测试。这种方法是一种一般的安全功能测试方法,它的适用范围取决于安全功能的建模能力,特别适用于建模用与或子句表达逻辑关系的安全需求,对授权、访问控制等安全功能测试比较适用。

2.3语法测试

语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入的响应。接口可以有多种类型,命令行、文件、环境变量、套接字等。语法测试基于这样一种思想,软件的接口或明确或隐含规定了输入的语法。语法定义了软件接受的输入数据的类型、格式。语法定义可采用BNF或正则表达式。语法测试的步骤是识别被测软件接口的语言,定义语言的语法,根据语法生成测试用例并执行测试。

生成的测试输入应当包含各类语法错误,符合语法的正确输入,不符合语法的畸形输入等。通过察看被测软件对各类输入的处理情况,确定被测软件是否存在安全缺陷。语法测试适用于被测软件有较明确的接口语法,易于表达语法并生成测试输入的情况。语法测试结合故障注入技术可得到更好的测试效果。

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

Wenliang Du将故障注入技术用于软件安全性测试,建立软件与环境交互(environment-application interaction,EAI) 的故障模型。故障注入针对应用与环境的交互点,主要包括用户输入、文件系统、网络接口、环境变量等引起的故障。相关项目有OUSPG(university of oulu,secure programming group)的项目PROTOS SecurityTesting of Protocol Implementations,该项目的目标是测试协议实现的安全性。主要思路是通过构造各类协议数据包测试目标软件是否能正确处理。实质是在各类协议数据包中植入故障,如修改某些协议字段的值等,支持的协议有HTTP、SIP、WAP、SNMP等。故障注入可以有效地模拟各种各样的异常程序行为,通过故障注人函数能够强制性地使程序进入到某些特定的状态,而这些状态在采用常规的标准测试技术的情况下一般是无法到达的。

2.5 模糊测试

模糊测试是一种发现安全漏洞的有效的测试方法,在安全性测试中越来越受到重视。模糊测试将随机的坏数据插入程序,观察程序是否能容忍杂乱输入。模糊测试是不合逻辑的,只是产生杂乱数据攻击程序。采用模糊测试攻击应用程序可发现其它采用逻辑思维来测试很难发现的安全缺陷。

2.6 基于属性的测试

描述了基于属性的测试方法,采用TASPEC 语言对软件的安全属性进行描述,生成安全属性规格说明,利用程序切片技术抽取与这个安全属性相关的代码,并测试这部分代码是否违反安全属性规格说明。基于属性的测试有针对性的测试目标软件的特定安全属性,可满足安全属性的分类和优先级排序要求,且部分与具体软件无关的属性规格说明是可重用的。

3.结束语

软件测试是所有工程学科的基本组成单元,是软件开发的重要部分。软件测试是为了发现故障而执行程序的过程,其目的是以尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷。如何利用较少的测试用例,实现最大的测试覆盖,最大限度地发现软件瑕疵,是软件测试的目标之一;制定完善的测试计划、测试方案、结果分析、文档资料管理,亦是保证软件测试功效的前提。软件测试只能查找程序中的错误,不能证明程序中没有错误。

未来软件安全性测试技术主要发展方向包括:软件授权、访问控制等安全功能建模与测试研究;形式化安全测试方法研究;基于风险的安全测试及其在软件工程实践中的应用;故障注入、模糊测试、语法测试、基于属性的安全测试方法研究;利用威胁模型与攻击树指导安全测试过程;漏洞发现过程的建模及利用模型定量预测安全漏洞。

另外近年来基于Web 服务的分布式软件快速发展,如何对Web 服务开展安全性测试是分布式软件安全性测试面临的崭新课题。 [科]

【参考文献】

[1]陆璐,王柏勇.软件自动化测试技术[M].北京:清华大学出版社,2006.

[2]郭群.软件测试设计技术[J].电脑知识与技术,2007,(17).

安全性测试篇2

1国内外对供试品检测的要求。

美国食品药品监督管理局(US Food and Drug Administration,FDA)、欧洲药品管理局(European Medicine Agency,EMA)在GLP规范中,对供试品的检测提出了要求。各大制药公司内部的标准操作程序(standard operation procedure,SOP)也对供试品检测有具体要求。

我国的GLP对供试品检测也有原则性要求。但由于在新药申报和相关技术评价指导原则中未对此有明确要求,故当前不是每个GLP试验室、或每个安全性试验都进行供试品检测。

2供试品检测的适用范围

安全性试验中供试品检测的要求,应该适用于所有新药研究。中药成分复杂,结构不清楚的成分多,但如中药一类(单一成分)可参考化药执行。欧美对生物制品也要求进行供试品检测,内容在化药的稳定性、均一性等的基础上增加蛋白含量分析和生物活性分析。对于生物制品供试品检测的要求,建议参照化药的方法,遵从Case by case的原则。

3供试品检测的内容

供试品的基本理化性质检验报告包含来源、批号、纯度、浓度、处方组成(包括辅料)、稳定性、溶解性、有效期、保存条件等信息。

若供试品需经溶解后(混合、混悬、溶解)给药,则应提供供试品在溶剂中的稳定性、均一性(非溶液体系)等检测报告(浓度范围需能覆盖全部毒理试验的浓度范围),以及配制后的供试品浓度分析报告。

针对检测供试品浓度和含量分析的方法学验证报告。

4供试品检测的时间

在首次配制前应完成稳定性分析,在前期稳定研究的基础上,对配制过程和配制后可能影响稳定性的因素都应进行研究,如溶媒、浓度、搅拌方法、温度、配制后储存时间等。

无需在每次配药时均进行浓度分析。短期给药试验(如14 d的试验)一般仅需在首次配制时检测供试品的浓度,但试验中如果伴随有毒代动力学(toxicokinetics,TK)试验,则TK给药当日的供试品也需进行浓度分析。对于长期试验(如1个月),一般在首次及末次配制给药时进行供试品浓度分析(如果是每天配制,那么首末次配制日也就是进行TK试验的日期)。如果试验周期更长(如3个月或大于3个月时),除首末次配制外,还需增加供试品浓度的检测次数,以确保供试品在该条件下的稳定性满足使用要求。

5供试品检测的影响因素

供试品的配制温度、搅拌时间和转速、混悬液溶剂的选择、不同批号的样品、稳定性(光稳定性、热稳定性)等,都会影响所配制的供试品最终浓度,以致影响非临床安全性试验结果。

6供试品检测报告的提供

供试品检测方法的建立和验证,可以由申请人(含生产者),GLP试验机构或第三方完成,或由其中的一方完成后转移至另外一方进行检测;由验证方提供供试品检测方法学验证的资料。

配制后的供试品浓度分析方法的方法学验证资料,应由完成配制后的供试品浓度分析检测的GLP实验室提供。必要时对对照品进行分析,对照品的分析要求与供试品相同。如果对照品为上市产品,其基本理化性质等资料可以参照对照品的说明书和/或标签。

安全性测试篇3

论文摘要:文章论述了软件开发生命周期中每个阶段添加的一系列关泣安全性的活动,提出将安奋浏试整合到软件开发生命周期中,分析了软件安全性浏试片祠试人员的要求,并以一个sql注入实例来具体说明安全性浏试在软。

信息网络安全事件发生比例的不断攀升、病毒利用软件漏洞猖狂地传播使得人们越发认识到信息安全的重要性。一般认为,传统的信息安全技术可以借助防火墙(包括软件和硬件防火墙)审核通过网络的报文、限定用户的访问权限等来防止非授权用户对重要数据的访问,但是这一观点是建立在软件安全基础上的。网络应用软件需要暴露在网络环境下,并且授权外部用户可以透过网络来访问此软件。通过网络,攻击者有机会接触到软件,如果软件本身存在漏洞,那么所有的防火墙就形同虚设。暴露于网络的应用软件往往成为被攻击的目标,是网络应用软件安全的重灾区。美国国家标准与技术研究院(nist)2002年的一项研究表明,美国花费在软件缺陷方面的费用达到595亿美元。公安部2008年全国信息网络安全状况与计算机病毒疫情调查分析报b说明,在发生的安全事件中,未修补或防范软件漏洞仍然是导致安全事件发生的最主要原因。

1安全测试的定义

安全测试是鉴别信息系统数据保护和功能维护的过程。安全测试需要涵盖的6个基本安全概念是:保密性、完整性、权限(身份验证)、授权(权限分配)、可提供性、不可抵赖性阴。软件开发商都存在解决安全威胁方古的问题。对软件开发商来说,安全性是其核心要求,这是由市场力量所驱动,也是由保护关键基础结构及建立和保持计算的广泛信任的需要所决定的。所有软件开发商面对的一个主要挑战就是创建更加安全的软件,使其不需要频繁地通过修补程序进行更新。软件安全已经成为评判软件质量的一个重要标准,软件安全测试则成为保证软件产品能够符合这一标准的重要手段。软件的安全性测试主要是测试在正常和非正常情况下,软件能否对数据进行安全有效的操作。

2软件开发生命周期流程(参见图1)

对于软件行业来说,要满足当今提升安全性的需要,软件供应商必须转为采用一种更严格的、更加关注安全性的软件开发流程。这种流程旨在尽量减少设计、编码和文档编写过程中存在的漏洞,并在软件开发生命周期中尽可能早地检测到并消除这些漏洞。用于处理来自internet的输人、控制可能被攻击的关键系统或处理个人身份信息的企业和消费者软件最需要实施这种流程。在很多实际的软件开发项目中,安全测试已经成为sdl一个不可或缺的组成部分,并成为整个项目过程中的长期任务。黑盒一白盒测试方法往往执行在产品递交客户之前,但有的甚至在投人使用之后都未进行安全检测和风险评估;在一些安全性要求较高的项目中,虽然将安全风险评估纳人预算,但在实际操作中却对其并未作过多考虑。这样,所导致的直接后果是在开发工作几近完成的情况下进行问题分析处理所造成的成本将远远大于在软件开发阶段进行缺陷修改的成本。即便是从充分利用现有的有限资金和资源的角度来考虑,也有必要将安全测试囊括到sdl中。这样做虽然不能取代软件开发后期的渗透测试和脆弱性测试,却可以有效减少后者在施过程中的投人。

开发人员应该根据客户的功能需求来制定相应的安全规约,利用内建的明确的控制机制来降低安全风险。开发人员可以根据风险评估的结果来确定测试项目:软件能否可靠运行(safety)以及软件运行结果是否可靠(security)。

软件开发生命周期((sdl)中常用的测试方法有:单元测试、集成测试和验收测试。

2.1需求、设计阶段—安全性分析

在软件项目的设计过程中,人们往往只是关注系统的特性和功能,而没有充分考虑其他重要的非功能问题(例如性能、可用性、平台支持、安全,及要在稍后的软件开发生命周期中需要解决的安全性),导致了项目中许多不必要的波动和延迟。由于安全性分析影响了整个的设计和架构,因此应该在项目设计阶段充分地审查和了解它们。

安全性考虑包括一系列问题,例如访问控制和授权、敏感数据的适当处理、数据和存储器访问的适当使用,以及加密方法。一些安全性需求不是非功能的需求,如所实施的加密类型。另外,许多安全性需求是更直接地面向用例的,并且需要定义主要场景,以及定义备选路径和异常路径。在没有将功能的和非功能的需求适当地定义及并人软件中的情况下,编码错误和设计缺陷会表现出关键的信息和操作处于危险。我们应该像对待其他的需求那样处理安全性需求,并将安全性需求划分出优先级,设定范围,同时作为整体用例和功能需求的一部分进行管理。

2.2实施阶段—单元测试

受测试方式的影响,开发者对软件安全风险的评估不可能面面俱到。最典型的就是在代码设计阶段,开发者可以通过单元测试来检验代码行为,这些结果都是可以预知的,但是受到范围的局限,不能测试这些类或者模块集成后的行为。

实施单元测试可以从软件基本单位(单个类)的检测上保证输人的有效性;在可能出现恶意攻击的地方,也可以利用这一思想来组织针对单个类或者方法的单元测试,从而组织起软件内部的纵深防御策略,防止恶意行为对软件安全造成的损害。但是,这一方法将软件各组件进行强制孤立,因此对于因大量组件交互而引起的软件缺陷,利用此种方法无法检测。

单元层的安全测试比较适合于防止缓冲区溢出,格式化字符串以及数据缺失的审核。

2.3验证阶段—集成测试

在集成层,软件的整体安全属性变得可见和可测试,使得这一层的可测试属性数量相对单元层而言要多得多,但是对于跨站脚本和网络服务器提供的一些服务(例如安全套接层ssl和url过滤)的测试,存在一定的困难。我们可以将实际案例和风险分析的结果作为组织集成测试的指南。

集成测试要求测试人员通过安全测试培训,并且是有熟练技术的软件开发人员。

在这一层,我们可以开展诸如注人缺陷验证、旁路验证以及访问控制等方面的安全测试,来源于外部代码的安全审查结果也应该以集成测试的方式加以确认。

2.4阶段—验收测试

验收测试是软件产品交付客户之前的最后一个测试阶段,是在真实的测试环境中,利用基于恶意事件的安全检测模板,测试在典型的渗透活动中可被识别的安全缺陷。验收测试的这一特性(基于安全检测模板),使得我们可以借助于强大的自动化测试软件进行检测,并且可以用验收测试的结果来完善渗透测试报告内容,从而有助于开发人员理解软件的脆弱性以及针对软件脆弱性所采取的补救措施是否有效。

验收测试针对软件的外部api,因此不如单元测试和集成测试松散,并且只能测试当前已知且暴露的漏洞或者缺陷。非定制的商业软件重新设计的关键功能或者其他改变都会影响到软件的整体安全性,因此,如果改变会使得软件产生不可预知的缺陷,针对这些缺陷的测试就应该在单元层或者集成层开展,而不是在验收层。

在验收层,我们可以测试针对解释性程序(sql, xpath,ldap等)的注人式攻击、跨站脚本攻击、跨站请求伪造等。缓冲区溢出及格式化字符串等软件缺陷也可以在验收测试层得到检测。

3安全测试队伍

软件测试一度被认为是编程能力偏低的员工的工作,直到今天,仍然有许多公司把优秀的人才安排在编码工作上,也有更多公司让优秀的人才进行设计,仅有很少公司让优秀的人才进行测试工作。实际的软件工程实践证明,让对软件思想有深刻理解的工程师进行软件测试,可以大幅度地提高软件质量软件供应商还必须认识到组织测试人员进行“安全进修”对安全测试的成功实施至关重要。在这些情况下,软件供应商必须负责对其工程人员进行适当教育。根据组织的规模和可用的资源,拥有大批工程人员的组织可建立一个内部计划对其工程师进行在职安全培训,而小型组织则可能需要依赖外部培训。

测试人员要像攻击者那样带有“恶意的”想法去思考,而且在测试软件时还要扮演攻击者,攻击自己的系统,以此来帮助发现软件的安全漏洞。安全测试并不会总是直接导致安全溢出或者暴露可利用的漏洞,从而引出安全缺陷。要安全测试尽可能地发挥作用,测试人员需具备较强的分析能力,而这更多的是依靠熟练的开发技术和开发经验。

4漏洞举例:一个sql的注入式漏洞

有几种情形使得sql注人攻击成为可能。最常见的原因是,使用拼接形成的sql语句去操作数据库。譬如,传入用户输人的管理员用户名和密码,把这2个参数拼接形成sql语句,通过执行该sql语句,以便验证用户输人的管理员用户名和密码的正确性。具体过程如下:

一般情况下,用户传人正常的用户名和密码进行验证,如传人“myname”和“mypassword”进行验证,得到的sql语句将是:

这个sql语句很正常。但是,这只是开发人员预期的做法:通过管理员用户名和密码来验证账户信息。但因为参数值没有被正确地加码,黑客可以很容易地修改查询字符串的值,以改变sql语句的逻辑。譬如,分别传人“myname’ ori=1--” , "mypassword",得到的sql语句将是:

在用户名“myname’ or i=i--”中,第一个“”’结束了原有字符串中第一个单撇号的配对,"or”后面的“i=i”会导致不管前面的验证结果如何,都会返回真true值,而随后的“一”将把其后的sql语句注释掉。现在问题出现了,不管使用什么用户名和密码,都能验证通过。在存在漏洞的数据显示页面,如果注人join语句,就能获取数据库里的所有数据,显示在页面上,如获取用户名、密码等;而注入up-date/insert/delete语句将改变数据,如添加新的管理员账号等。这样,数据库将不再安全。

sql注人安全漏洞的形成,根本在于sql语句的拼接,只要放弃sql语句拼接,适用规范的加码访问方式,问题自然迎刃而解。以下便是修改后的安全验证方法:

5结论

安全性测试篇4

关键词:计算机检测方法;软件安全;计算机安全

中图分类号:TP309.2文献标识码:A文章编号:1007-9599 (2012) 04-0000-02

计算机软件安全检测主要是为了避免由于软件应用问题所产生的潜在的安全风险。近年来针对计算机的软件安全检测,越来越受到社会各界的重视,关于计算机软件安全的检测方法,也在不断的讨论与研究中被大家认识。本文主要针对计算机软件的安全检测方法进行了相关论述,以期更好的预防计算机软件安全问题。

一、计算机软件安全测试的重要性分析

计算机软件的安全检测是在计算机软件开发过程中的十分重要的环节,计算机软件检测的主要目标是为了发现软件中可能存在的一些故障问题,从而可以有效的预防计算机存在的潜在风险。计算机的安全测试是保障计算机程序安全的有效手段。从目前计算机安全测试的方法来看,一般是分为静态测试和动态测试。

就计算机软件安全测试来讲,计算机软件安全检测是为了检测计算机是否能够安全运行计算机软件预定所预设的程序。软件测试的过程一般包括功能测试和渗透测试以及验证过程这三个主要程序。计算机软件安全测试的安全性和一般意义上所说的软件缺陷存在着很大区别,软件安全检测所侧重的是软件应该做什么,而不是可以做什么。在进行计算机软件安全检测时,一般分为计算机安全检测和计算机安全漏洞检测。计算机安全功能的测试是检测计算机的软件安全功能和安全功能之间的步调是否一致。软件的安全功能测试所涉及的内容非常的广泛,具体包括了机密性和授权,同时还包括访问控制及安全管理等等。相比之下计算机软件的安全漏洞就非常不同,主要是针对软件中可能存在的一些缺陷进行测试,如果不进行相关测试。则该缺陷很有可能会导致软件日常的应用中出现故障,所以,进行计算机安全测试是十分有必要的。

二、计算机软件安全检测的注意事项

计算机的软件安全测试是一个动态的测试过程,在实际操作过程中需要注意以下事项。

首先要针对所检测的计算机软件进行深入的了解,了解计算性软件的相关特性。经过综合分析后,进行选择想对应的检测技术手段,本着从实际出发的角度制定出安全合理的检测方案,方案必须经济合理且保证检测的效果。在人员配置方面,要注意检测人员专业的多源化。在进行计算机的软件安全检测的时候,不仅仅是要配备相应的软件安全分析人员,同时还需要与软件设计相关的总体设计人员,只有多方面全力配合,才能分析解决软件测试中的多种疑难问题。

其次在进行计算软件安全的相关检测时,对系统级以及需求级和代码级的分析是必须进行的。当软件规模较大的时候,还要对软件的结构设计方面进行必要的分析。在进行分析的过程中要选择实际工作中较为合理的分析方法,一般采用仿真环境和相应的分析工具来进行相关的检测工作。计算机检测是一个系统的过程,单一的方法有时候往往难以独立完成,需要多方面技术人才的通力配合才能准确无误的完成检测。

三、计算机软件安全检测方法论述

(一)计算机软件测试的步骤

对于计算机软件的程序来讲,规模较大的软件系统一般是由是由一些子系统共同组成的,而不同的一些子系统又由若干个小的模块构成。计算机软件测试一般的步骤是,先进行一定的单元测试,就是通常所说的模块测试,模块测试一般是依据软件设计中的最小单位所进行的测试。模块测试的目标是为了发现系统模块可能存在的一些缺陷。在模块测试之后,将所有的模块按照一定的程序进行设计并组装成系统。并且需要对相关的体系进行一定的安全测试。在此基础之上,进一步进行有效性的测试,有效性测试是十分必要的步骤。有效性测试的主要目的是对软件的性能和功能进行检查,检测是否与用户的需求相吻合。最后的步骤是进行系统测试,就是通过有效性的软件将计算机支持软件、数据已经硬件等结合起来进行测试。

(二)计算机软件安全检测的方法论述

1.形式化与模型的安全测试。对于安全检测方法来讲,首先是要确立软件的数学模型,运用形式规格说明语言的支持来进行形式化的规格说明。一般经常用到的形式规格和语言包括了基于模型语言、以及基于有限状态的语言和基于行为的语言。基于模型的安全的功能测试方法该方法,是对计算机的软件行为和结构,通过建模的方式生成测试的模型。然后以测试模型作为基础进而生成检测,从而驱动软件的计算机安全检测。一般较为常用的模型安全功能测试的方法主要有马尔可夫链。

2.语法测试与故障注入的安全测试。语法测试是对被检测的软件的功能接口的语法生成的软件测试输入的方法。这种方法可以测试软件对于不同类型输入的反应情况。语法测试进行测试的程序是对软件接口的语言的识别以及定义语言的语法。故障注入的安全性测试是利用故障分析树和故障树的最小割集来进行检测。故障分析树分析法使用系统最不应该出现的时间作为顶事件,以此来寻找故障可能发生的中间事件和底事件,故障注入法可以提高检测的自动化程度,是比较充分的计算机安全检测方法。

3.模糊测试与基于属性的测试。模糊测试,目前使用较多的是基于白盒的模糊测试方法,这种方法是对传统意义上的模糊测试方法的一种进步。这种检测方法比较有效的结合了传统的模糊测试与动态的测试方法。而基于属性的测试的测试方法是先确定软件的安全编程规则,然后将确定的规则编码做为安全属性来验证系统是不是遵守这些程序。这种检测方法的主要优势在于能够比较有效的分析安全漏洞的扩展性和交互性等。

四、结束语

计算机软件的安全测试对于计算机的正常使用有着非常重要的意义,本文主要介绍了计算机软件测试的几种比较常见的方法,通过分析计算机软件测试的重要意义,引起对计算机软件安全的重视,探究出更科学合理的计算机软件测试方法,以保证计算机软件的安全。

参考文献:

[1]王维静,王树明,陈震,申春,彭秀增. 软件安全的多指标综合评测[J].计算机工程与应用,2006,(11)

[2]William B Bierce,Michael Harold. New Us patent gwildelines offer hope to software developers in era of diminishing copyright protection .Tolley‘s computer law And Practise,1995,Vol.11,Vol.11 (No.4)

[3]Shahid Alikhan,Raghunath Mashelkar.Intellectual Property and Competitive Strategies in the 21st Century .Kluwer Law International,2004

安全性测试篇5

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

从计算机软件的应用来说,计算机软件安全检测的目的是避免由于软件应用所带来的潜在风险。计算机软件安全检测方法的研究对软件安全检测工作来说有着不可低估的作用,是保障计算机软件安全必不可少的手段之一。

一、计算机软件安全检测概述

计算机软件安全检测是软件开发的重要环节,检测的目的是为了发现软件所存在的故障而对程序进行执行的过程,从而有效地对计算机软件潜在的风险进行更正。软件安全检测的目标是用较少的测试用例来达到最大的软件检测覆盖,从而极好地发现软件存在的问题。计算机软件安全检测其的存在并不能证明程序中没有错误,它仅仅是查找程序错误的手段。从目前计算机软件安全检测情况来看,进行安全测试的方法主要分为静态与动态两大类。

计算机软件安全检测是确定软件所具有的安全实现是否能够与软件预期的设计要求一致的过程,这个过程包括功能测试、渗透测试与验证过程3 个部门。计算机软件安全检测的安全性与一般的软件缺陷有一定的区别,软件安全检测所强调的是软件不应该做什么,而不是软件应该做什么。计算机软件安全检测通常分为安全功能与安全漏洞进行检测两个方面。安全功能测试是检测计算机软件安全功能是否与安全需要之间步调一致。软件安全功能需求做涉及的内容比较广,具体包括机密性、授权、访问控制及安全管理等等。而计算机软件安全漏洞的检测则与此不同,其针对的是软件可能存在的缺陷,该缺陷有可能导致软件在应用中存在一定的风险。

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

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

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

三、计算机软件安全检测方法

1.计算机软件安全检测的程序通常情况下,规模较大的软件系统是由一定数量的子系统组成,不同的子系统又由若干个模块组成。

在计算机软件安全检测中通常采用的步骤是,先进行单元测试,也就是模块测试,该检测针对的是软件设计中的最小单位进行的安全检测。进行模块测试的目的是能够发现系统所属的各个模块可能存在的各种缺陷。在模块测试的基础上,对所有模块按照程序设计的要求组装成系统,并对与涉及相关的体系结构进行安全检测。在前两个软件安全测试程序的基础上进行有效性测试,有效性测试的任务是对软件的功能与性能进行检测,检测是否与用户的需求相符合。最后进行系统测试,简而言之,就是将通过有效性检测的软件,与计算机硬件、某些支持软件、数据等其他系统元素结合起来进行测试。

2.计算机软件安全检测的主要方法;

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

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

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

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

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

六是基于属性的测试。该软件安全检测方法是首先确定软件的安全编程规则,将确定的规则编码作为安全属性来验证系统程序的代码是否对这些规则进行了遵守。该检测方法的优势是能够有效分析安全漏洞的交互性及扩展性等。

参考文献:

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

安全性测试篇6

[关键词]软件可靠性 软件安全性 基本条件 测试方法

现在的信息系统应用越来越广泛、越来越深入和重要,成为社会生活不可或缺的东西。而在信息系统中,软件的比例愈来愈大、愈来愈复杂、地位愈来愈关键。软件的可靠性是整个信息系统可靠性的重要因素,甚至是决定因素。软件的可靠性是由软件系统中潜在的漏洞情况决定的。软件漏洞在复杂的信息系统运行过程中,在一定的输入信息和运行环境下,潜在的错误有时会显露出来,对系统的运行造成严重影响。例如1998年前苏联一次载入飞行不能顺利返回地面,1996年欧洲阿丽亚娜火箭的发射失败等,都是由于系统的软件故障造成的。特别要注意的是软件往往是系统可靠性的薄弱环节,因此软件系统的可靠性需要引起有关人员的格外重视。

软件可靠性是指在规定条件下,在规定时间内,软件不引起系统失效的概率。该概率是系统输入和系统使用的函数,也是软件中存在故障的函数,系统输入将确定是否会遇到存在的故障。

软件可靠性测试指在有使用代表性的环境中,为进行软件可靠性估计对该软件进行的功能测试。需要说明的是,“使用代表性”指的是在统计意义下该环境能反映出软件的使用环境特性。软件可靠性测试一般在软件验收阶段进行,即可以在实验室也可以在现场测试运行。一般仅适用于有可靠性定量要求、且可能会影响安全和任务完成的关键软件。

软件系统的可靠性测试是软件系统可靠性质量保证过程中非常关键的一步,根据国外有关资料统计和工作实践证明,可靠性测试对提高软件的可靠性有重大作用,其他测试不能代替,但是软件可靠性测试又不能代替其他软件测试的作用。软件可靠性测试的主要目的有: (1)通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。(2)为进行软件可靠性估计采集准确的数据。估计软件可靠性一般可分为四个步骤,即数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。 (3)通过软件可靠性测试找出所有对软件可靠性影响较大的错误。

软件可靠性测试分为四个阶段:

1.制订测试方案

本阶段的目标是识别软件功能需求,触发该功能的输入和对应的数据域,确定相关的概率分布及需强化测试的功能。

(1)分析功能需求。分析各种功能需求,识别触发该功能的输入及相关的数据域(包括合法与不合法的两部分)。

(2)定义失效等级。判断是否存在出现危害度较大的1级和2级失效的可能性。如果这种可能性存在,则应进行故障树分析,标识出所有可能造成严重失效的功能需求和其相关的输入域。

(3)确定概率分布。确定各种不同运行方式的发生概率,判断是否需要对不同的运行方式进行分别测试。如果需要,则应给出各种运行方式下各数据域的概率分布;否则,给出各数据域的概率分布。判断是否需要强化测试某些功能。

(4)整理概率分布的信息将这些信息编码送入数据库。

2.制订测试计划

本阶段的目标是:

(1)根据前一阶段整理的概率分布信息生成相对应的测试实例集,并计算出每一测试实例预期的软件输出结果。本阶段需要注意:在按概率分布随机选择生成测试实例的同时,要保证测试的覆盖面。

(2)编写测试计划,确定测试顺序,分配测试资源。由于本阶段前一部分的工作需要考虑大量的信息和数据,因此需要一个软件支持工具,建立数据库,并产生测试实例。另外,有时预测软件输出结果也需要大量的计算,有些复杂的软件甚至要用到仿真器模拟输出结果。总之,具体实施与被测应用软件的实际功能类型有关。

3.测试

本阶段进行软件测试。需注意的是被测软件的测试环境(包括硬件配置和软件支撑环境)应和预期的实际使用环境尽可能一致,对某些环境要求比较严格的软件(如嵌入式软件)则应完全一致。测试时按测试计划和顺序对每一个测试实例进行测试,判断软件输出是否符合预期结果。测试时应记录测试结果、运行时间和判断结果。如果软件失效,那么还应记录失效现象和时间,以备以后核对。

4.编写测试报告

按软件可靠性估计的要求整理测试记录,并将结果写成报告。笔者认为,软件可靠性测试的关键在于:对需求、输入、数据域的识别及相关概率分布的确定。按照概率分布随机生成测试实例,并确定测试顺序。

软件可靠性是软件质量指标体系中最重要的质量指标之一,软件可靠性指标的高低,决定了软件是否能稳定、可靠性地工作。软件中的错误是在软件的开发过程中,因为人的错误而引入到软件中的,而且这种错误的出现是不可避免的。经过可靠性测试的软件系统可以大大降低因软件系统的实效而造成的损失。但是软件可靠性测试也不是万能的,它可以有效降低软件系统实效的可能,但是不能将软件系统中存在的错误都排除(实际上在可预见的未来也不可能把软件中的所有错误都排除)。

对软件进行安全测试是软件测试的重要研究内容。软件安全测试是保证软件能够安全使用的最主要的手段,如何进行高效的安全测试成为业界关注的话题。多年的安全测试经验告诉我们,做好软件安全测试的必要条件是:一是充分了解软件安全漏洞,二是拥有高效的软件安全测试技术和测试工具。

软件安全性测试的方法:(1)形式化安全测试。模型检测用状态迁移系统S描述软件的行为,用时序逻辑、计算树逻辑或演算公式F表示软件执行必须满足的性质,通过自动搜索S中不满足公式F的状态来发现软件中的漏洞。(2)基于模型的安全功能测试。基于模型的测试方法是对软件的行为和结构进行建模,生成测试模型,由测试模型生成测试用例.常用的软件测试模型有有限状态机、UML模型、马尔可夫链等。(3)语法测试。语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入的响应。接口可以有多种类型,命令行、文件、环境变量、套接字等。语法测试基于这样一种思想,软件的接口或明确或隐含规定了输入的语法。语法定义了软件接受的输入数据的类型、格式。语法定义可采用BNF或正则表达式。语法测试的步骤是识别被测软件接口的语言,定义语言的语法,根据语法生成测试用例并执行测试。生成的测试输入应当包含各类语法错误,符合语法的正确输入。不符合语法的畸形输入等。通过察看被测软件对各类输入的处理情况,确定被测软件是否存在安全缺陷。语法测试适用于被测软件有较明确的接口语法,易于表达语法并生成测试输入的情况。语法测试结合故障注入技术可得到更好的测试效果。(4)模糊测试。模糊测试(Fuzz Testing)是一种发现安全漏洞的有效的测试方法,在安全性测试中越来越受到重视。模糊测试将随机的坏数据插入程序,观察程序是否能容忍杂乱输入。模糊测试是不合逻辑的,只是产生杂乱数据攻击程序。采用模糊测试攻击应用程序可发现其他采用逻辑思维来测试很难发现的安全缺陷。(5)基于属性的测试。相关报道描述了基于属性的测试方法,采用TASPEC语言对软件的安全属性进行描述生成安全属性规格说明,利用程序切片技术抽取与这个安全属性相关的代码,测试这部分代码是否违反安全属性规格说明。基于属性的测试有针对性的测试目标软件的特定安全属性,可满足安全属性的分类和优先级排序要求,且部分与具体软件无关的属性规格说明是可重用的。

软件测试一方面是业务需求检查、验证的一种手段,也是检查软件功能是否按照系统需求进行设计,是否符合客户的需要;另一方面也是通过有限的测试数据案例检查发现程序中存在的Bug是保证软件质量至关重要的一步。对于像银行这样的公司,对系统的要求是每天24小时不间断工作,特别是国内各商业银行大集中以后,如果软件存在Bug引起系统不稳定,一旦出现系统宕机或客户资金损失,就会造成全国范围内业务无法办理,将产生巨大的影响。所以说,对于一个大型应用处理软件系统,测试贯彻于其中,是一项非常重要的工作,是项目研发中一个相当重要的步骤。而测试质量的好坏直接关系到整个系统能否按期正常投产,关系到系统投产后业务处理是否正确,关系到整个系统运行的可靠性、稳定性。

管理大师彼得德鲁克说:“组织管理的目的就是为了使人们能为实现目标而有效地工作,为此必须设计和维持一种职务结构”。因此,要做好软件测试工作,在软件公司内部必须建立一个专门负责软件产品测试的组织,并配备负责软件公司全面测试工作的测试管理人员和配备一定数量的具有测试理论、掌握软件测试技术的专业测试人员。可以根据软件公司规模的大小设置软件测试组织的组织架构、隶属关系和确定软件测试人员的数量。

近年来,以软件测试为中心的软件质量保障技术在软件生产实践中得到了迅速发展,软件测试已经成为软件生产中必不可少的质量保障手段。

参考文献

[1]郑人杰,殷人昆,陶永雷.实用软件工程[M].北京:清华大学出版社.

[2]何国伟.软件可靠性[M].北京:国防工业出版社,1998.

[3]朱鸿,金凌紫.软件质量保证与测试[M].北京:科学出版社,1997.

安全性测试篇7

【关键词】服务器虚拟化;VMware;测试

1.引言

随着计算机与网络技术的快速发展,基于计算机技术的考试系统得到普遍应用。学校每年都要组织计算机基础期末考试、全国计算机等级考试、湖南省计算机等级考试等网络化计算机考试。这些考试都基于Windows操作系统开发,相对于Linux系统,Windows倾向于易用性而损失部分稳定性,存在更多漏洞,使得计算机考试系统服务器稳定性、安全性问题一直存在。

测试作为保证系统可靠性,提高工程质量的手段,广泛运用于计算机系统的设计、运行、修正全过程。虚拟技术提供的各种应用在多种场合保证了服务器的稳定性和安全性[1]。以测试虚拟考试服务器性能为目标,设计测试方法,选择测试工具,能够得到服务器性能的具体数据,进而得到优化的考试服务器虚拟化方案。

2.考试服务器虚拟化测试设计

2.1 测试系统架构

虚拟机就是在物理机上由虚拟化技术模拟出来的计算机[2],目前主要的虚拟化技术提供商包括VMwave、微软、Xen,由于考试系统不需要对底层主操作系统进行修改,且考虑到虚拟化系统的易用性和稳定性,本文采用全虚拟化技术的VMwave[3]。VMwave提供两种软件架构:寄居架构和裸金属架构。

2.2 测试评价指标

考试服务器性能测试包括硬件性能测试和软件性能测试,硬件性能测试要满足硬件传统性能测试指标。软件测试包括负载、压力、容量、稳定性、安全性等。

评价考试系统服务器性能指标包括吞吐量、延迟、资源利用率。吞吐量可以由磁盘i/o数值,数据库服务个数来表示。延迟可以由数据库完成查询或数据处理所需要时间来表示。对考试客户端登录后服务器处理器占用率,内存占用大小、网络带宽占用大小是评价资源利用率的具体指标。

3.考试服务器测试实例

3.1 实验过程

本次测试构架了三想万全t260服务器,采用三种方式配置服务器进行比较研究:一台使用传统服务器安装方式,即裸机上安装院计算机考试系统要求的的软件环境:基于Windows server2008,SQL server2008数据库。一台采用裸金属架构,即利用VMware esx4在底层虚拟化后再安装考试系统软件环境。一台采用寄居架构,即服务器底层操作系统采用Ubuntu 11.2,在其上安装VMware station 10,虚拟机内安装考试系统软件环境,为利用底层操作系统提供的安全性,通过虚拟机软件NAT提供虚拟机内操作系统访问,通过映射虚拟机内操作系统考试系统服务端口到底层操作系统提供考试服务。硬件评测采用sysbench,软件测试采用LoadRunner[4]。

考试系统基准条件负载测:按每个考场一台服务器,50台客户机考试规划,三种测试方案都测试过程系统稳定,实体服务器吞吐量略大于裸金属架构虚拟服务器,两倍于寄居架构虚拟服务器。由于虚拟化指令延时问题,虚拟服务器数据库完成数据处理时间是实体服务器的80-90%。三种测试方案系统资源使用率低。

压力测试:服务器在1个负载到200个负载中性能变化,寄居架构压力拐点为100个客户端,裸金属架构压力拐点为150个客户端。超过拐点后虚拟化性能严重下降。

网络安全测试:由于基于Linux的底层Netfilter安全以及虚拟机NAT后地址、端口控制,寄居架构呈现更好的安全性。

虚拟化应用测试:虚拟服务器进行了基于虚拟机的恢复技术、动态迁徙等虚拟化应用测试。

3.2 实验结果

硬件测试结果表明虚拟化后考试系统服务器性能下降,但是基准条件测试都能通过,裸金属架构硬件性能接近非虚拟化服务器。软件测试表明当负载分别增加到一定程度时,由于i/o密集,虚拟化效果差。虚拟化后服务器的功能得到虚拟化技术支持。在本次期末考试中,本文设计的两种虚拟化考试服务器都正常运行。在封闭式考试环境下,虚拟化考试服务器应采用裸金属架构。

4.结语

本文对学院期末考试系统服务器进行了虚拟化设计,比较测试了几种考试系统架构。实验结果表明在正常考试条件相对于传统服务器构架,虚拟服务器性能有所下降。两种虚拟化方案比较,裸金属架构在物理机性能上有优势,寄居架构在安全性上更容易配置。

参考文献

[1]英特尔开源软件技术中心.系统虚拟化原理与实现[M].北京:清华大学出版社,2009.

[2]王春海.虚拟机配置与应用完全手册[M].北京:人民邮电出版社,2003.

[3]http:///.

安全性测试篇8

>> 软件测试用例设计方法研究 性能测试用例设计 基于OWL-S的Web服务测试用例自动生成方法研究 软件测试用例设计及复用研究 关于黑盒测试用例设计方法的研究 浅谈软件测试用例设计 可复用测试用例研究 自动化测试的测试用例设计 软件单元测试及测试用例设计 基于SFTA和等价类的软件测试用例设计方法研究与应用 Web应用功能交互的建模与测试用例生成 软件测试用例的设计方法分析 浅析黑盒测试用例设计与实践 基本路径测试用例设计算法 基于组合模型的高效黑盒测试用例设计 远程心电监护系统的测试用例设计 软件功能测试用例的设计过程及实践 基于正交法的软件测试用例设计 基于正交试验法的测试用例设计 测试用例的复用技术的研究 常见问题解答 当前所在位置:,或者访问Web服务器的目录时对权限进行严格的设定,从而使发生安全问题的可能性尽可能地降低到最小程度。

3)登录设计原则。一般的Web应用站点都会采用登录或注册后使用的方式,所以必须对用户名和密码进行匹配校验,以防止用户非法登录。进行登录测试时,需要考虑的方面包括输入的密码是否区分大小写、是否有长度条件限制,最多可以尝试登录多少次,哪些文件或者页面需要登录后才能访问或下载等。

4)服务器脚本语言设计原则。脚本语言存在一定的安全隐患,每种脚本语言的细节略有不同,有些脚本语言允许访问根目录,其他脚本语言只允许访问邮件服务器,但是有经验的黑客可以通过脚本漏洞获取服务器的用户名和口令。设计测试用例时需确认站点使用了哪种脚本语言,并研究该语言的漏洞,还需要考虑是否存在没有经过授权就在服务器端编辑或放置脚本的情况。

5)SSL设计原则。现在越来越多的Web站点使用SSL安全协议进行数据传送。SSL是Secure Sockets Layer(安全套接字协议层)的缩写,是Netscape首先的网络数据安全传输协议。SSL的原理是通过私有密钥/公开密钥的加密技术(RSA),在TCP层和HTTP层之间对用户与服务器之间的通信进行加密,确保信息传递的安全性。SSL是在私人密钥和公共密钥的基础上进行工作,任何用户都可以获取公共密钥来加密数据,但解密数据需要使用相应的私人密钥。打开一个SSL站点后,有时候能看到浏览器弹出警告信息,地址栏的http变成https,对SSL进行测试的时候需要确认上述特征,以及站点是否具备时间链接限制等相关的安全保护措施。

5结束语

Web应用是一种典型的应用程序,Web应用本身越来越复杂,同时它所使用的开发语言和开发模型在不断发展,所有这些因素给测试带来了很大的难度。目前的安全测试主要依赖测试工程师的直觉和经验,Web安全测试被认为是一个耗时、代价昂贵的过程,因此,迫切需要设计一套系统的Web安全测试用例对Web应用进行全面的测试。本文正是基于以上目的,对Web安全漏洞进行分类,研究了Web安全测试内容,阐述了安全测试用例设计原则。

参考文献:

[1] 方建超,徐全军.网络安全漏洞检测技术分析[J].计算机安全,2005(10):32-33.

[2] 施寅生,邓世伟,谷天阳.服务安全性测试技术研究[J].计算机工程与科学,2007,29(10):11-13.

[3] 刘焕洲,缪淮扣. Web应用程序建模和测试用例生成方法[J].计算机工程,2008,34(6): 60-62.

[4] The Open Web Application Security Project[EB/OL]. http:///index.php/Main_Page.

上一篇:新技术新工艺范文 下一篇:地基处理范文