首页 软件安全性测试与评估方法研究

软件安全性测试与评估方法研究

举报
开通vip

软件安全性测试与评估方法研究软件安全性测试与评估方法研究 密级 公孟 分类号 婴三』 编号窆窆墨墨墨 丝 江薄.大擎 硕士学位论文 软件安全性测试与评估方法研究 赵跃华教授 教师 指导 朱媛媛 姓名 作者 申请学位级别 硕士 学科专业计算机应旦垫查 年月 论文答辩日期 论文提交日期 铆 年月 江苏大学 学位授予单位和日期 评阅人独创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已注明引用的内容以外,本论文不包含任何其他个人 或集体己经发表或撰...

软件安全性测试与评估方法研究
软件安全性测试与评估方法研究 密级 公孟 分类号 婴三』 编号窆窆墨墨墨 丝 江薄.大擎 硕士学位论文 软件安全性测试与评估方法研究 赵跃华教授 教师 指导 朱媛媛 姓名 作者 申请学位级别 硕士 学科专业计算机应旦垫查 年月 论文答辩日期 论文提交日期 铆 年月 江苏大学 学位授予单位和日期 评阅人独创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已注明引用的内容以外,本论文不包含任何其他个人 或集体己经发表或撰写过的作品成果,也不包含为获得江苏大学或其他教育机构 的学位或证 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 而使用过的材料。对本文的研究做出重要贡献的个人和集体,均已 在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 学位论文作者签名: 举暖暧 日 弘丐年‘月 学位论文版权使用授权书 江苏大学、中国科学技术信息研究所、国家图书馆、中国学术期刊光盘版 电子杂志社有权保留本人所送交学位论文的复印件和电子文档,可以采用影印、 缩印或其他复制手段保存论文。本人电子文档的内容和纸质论文的内容相一致, 允许论文被查阅和借阅,同时授权中国科学技术信息研究所将本论文编入 《中国 学位论文全文数据库》并向社会提供查询,授权中国学术期刊光盘版电子杂 志社将本论文编入《中国优秀博硕士学位论文全文数据库》并向社会提供查询。 论文的公布包括刊登授权江苏大学研究生处办理。 本学位论文属于不保密口。 红 指导蝴 学位论文作者签名:粜拔姣 .芋 趣凡 汐易年‖月 莎 雌训 谧彬 签.彬江苏大学硕士学位论文 摘要 随着计算机系统和计算机软件发展的日新月异,计算机软件已经应用到很多 安全关键系统中。一旦这些系统失效将会导致生命财产的重大损失以及环境可能 遭受严重的破坏。与硬件安全性快速提升相比,软件的安全性已经成为制约系统 安全性的关键因素,因此,对安全关键系统中软件的安全性进行测评就势在必行。 本文从安全性的概念入手,在分析安全性测评的特点及难点基础上,提出了 一套安全性测评流程。该流程首先要求测试人员通过安全性分析获得安全性需 求;之后构建安全性测试剖面,并利用测试剖面生成测试用例进行测试;在测试 过程中收集数据,利用安全性评估方法进行评估。论文具体工作有: 一、根据统计理论可知安全性测试所需的测试用例量非常大,为 了提高测试的效率,本文在统计测试的基础上进行改进,提出基于安全性测试剖 面的软件测试用例生成方法。该方法运用故障树分析技术,对各模块发生故障对 系统安全性的影响进行分析,从而找出影响较大的关键性模块,然后利用关键模 块及其安全度对软件统计测试的功能剖面进行调整,从而构建安全性测试剖面, 最后根据安全性测试剖面生成测试用例进行安全性测试。 二、可靠性关注软件所有的失效,而安全性只关注那些可能引起灾难性事故 的失效,因此,本文将失效划分为安全性失效和一般性失效。在此基础上给出了 安全性评估的指标稳态安全度和平均无危险失效运行时间,提出一 个基于可靠性评估的安全性评估方法,并用一组测试数据对该方法进行验证。 三、提出了一个安全性测评流程,涵盖从测试准备,测试实施,直至安全性 评估的整个过程。并用一个实例对该测试流程进行实验验证。 本文提出的安全性测试方法能在不降低软件安全性的前提下使用较少的测 试用例,理论上来说提高了安全性测试的效率。而安全性评估方法为安全性 定量 评估提出了一个理论依据。在此基础上提出的安全性测评流程实验证明是有 效 的。因此本文的研究具有一定的理论意义和应用价值。 关键词:软件安全性:故障树分析技术;安全性测试剖面;安全性评估方法软 件安全性测试与评估方法研究 江苏大学硕士学位论文 , . ,. ., 目. 伍 & .. . , . 。 ,. . : ,, ,.。 . ,, . , . , . . .. . : . , . .. .伍 . . & , 历。吐 .: ; ; ; /软件安全性测试与评估方法研究 江苏大学硕士学位论文 目录 工贸企业有限空间作业目录特种设备作业人员作业种类与目录特种设备作业人员目录1类医疗器械目录高值医用耗材参考目录 第一章绪论.. .研究背景及意义??.... .国内外的研究现状??.. .本文的研究内容及结构安排 第二章软件安全性技术研究.安全性概念?.. .安全性与可靠性、保密安全性之间的异同..安全性与可靠性之间的异同?. ..安全性与保密安全性的异同 .安全性研究现状.??..。 ..安全性分析技术?.. ..安全性评估方法?. 。 ..基于统计测试的安全性测评模型??.. ..安全性测评存在的困难??. .小结. 第三章软件安全性测试方法的研究??.. .软件统计测试技术??. ..基于链使用模型的用例生成..基于操作剖面的测试用例生成. .基于统计理论的软件测试.. .基于安全性测试剖面的软件测试用例生成?.. ..安全性测试的故障树模型分析. ..安全性测试功能剖面的生成? ..安全性测试剖面的生成?.? ..安全性测试用例生成??... ..安全性测试所需测试用例数计算??.. .小结..?......?.?..??.. 第四章软件安全性评估方法的研究?二?. 软件安全性测试与评估方法研究 .软件安全性评估指标?.。 . 态模型 .软件安全性评估方法?.. ..安全性评估框架?. ..软件可靠性评估模型研究?.. ..失效率入的计算.? ..失效覆盖率的计算..??.. ..安全性评估指标的计算??. .评估模型验证分析??. .小结??.??...? 第五章安全性测评流程 .安全性测评流程描述?.. ..安全性需求获取..??.?. ..安全性测试剖面生成 ..测试用例生成..测试执行和数据收集 ..安全性评估??.. .实例分析..案例背景. ..安全性需求获取?. ..安全性测试剖面生成 ..测试用例生成.?.. ..测试执行和数据收集 ..安全性评估??.. .小结?..?.....?....?..... 第六章总结与展望.? 参考文献?. 致谢??...??...??.. 攻读硕士期间发表的论文??.. 江苏大学硕士学位论文 第一章绪论 .研究背景及意义 随着计算机系统和计算机软件发展的日新月异,计算机软件已经应用到很多 重要的领域,比如航空航天、国防、交通运输、核电能源和医疗卫生等的系 统中。 一旦这些系统失效将会导致生命财产的重大损失以及环境可能遭受严重的 破坏, 此类系统称为安全关键系统 ,?。近年来,软件在 中的应用越来越广泛。从航空航天领域到核工业领域,从电力系统到医疗系 统, 软件承担着安全性关键的指挥控制功能【。同时软件在中的应用规模也与日 俱增。比如,在.战机的综合航电系统中,软件实现的航电功能高达%, 软件代码达到万余行;而在.战机的先进综合航电系统中,软件代码达 到?万行。这表明,越来越多的日益软件密集化,逐渐形成安全性 关键的软件密集型系统。 由于软件失效而导致的重大事故不计其数】。 世纪年代中期,美国的首次金星探测 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 就因为在用语言 编写的语句中漏掉了一个逗号酿成发射失败,造成损失达上千万美元的事 故。 年,美国航天局的火星极地登陆飞船在试图登陆火星表面时失踪,分 析发现造成飞船登陆失败的原因在于某一个数据位被意外更改,造成数亿美元的 损失。 大规模的一放射治疗仪曾以其安全性著称于世,直到有一天由于软 件出错而使其控制系统失灵,导致多名病人失去生命。 由于这些安全事件的发生,人们越来越渴望高可靠和安全的软件,对软件可 靠性和安全性进行研究具有重大意义。还有,与硬件安全性快速提升相比,软件 的安全性已经成为制约系统安全性的关键因素,因此,对软件的安全性进行研究 就势在必行。 如何发现和评估软件是否达到了所期望的安全性如何对软件安全性进行 确认这是安全性研究亟待解决的问题。为了解决这些问题,必须将安全性进行软件安全性测试与评估方法研究 量化评估,利用科学的测试和评估方法来证明软件的安全性。 目前,对软件可靠性的测试评估取得了很好的发展,有一套较为完善的定量 测评方法和测评模型。相对来说,软件安全性的测评到目前为止还没有一套较为 完善的模型。而且,在工程实践中,人们往往把软件安全性测试作为可靠性测试 来实施,或者着重于测试一些例外情况【,而忽略软件安全性本身的性质。 软件安全性与软件可靠性一样,是与软件失效密切相关的。.. 《系统安全性大纲》中对安全性的定义是,安全性是指避免危险条件发生,保证 己方人员、设施、财产、环境等免于遭受灾难性事故或重大损失的能力。通过以 上定义可以发现,软件安全性相对可靠性更加关注那些引起灾难性事故发生的失 效,是为了避免灾难性事故的发生。因此,软件安全性测试的目标就是通过测试 发现软件中存在的缺陷,并进行修正,以快速降低由于软件失效而导致系统事故 的风险。由于灾难性事件发生的概率极低,因此,为了暴露可能导致危险的缺陷 而进行的测试代价将会非常高,这给安全性测试带来了困难。因此,需要研究如 何在较少的代价下尽可能地暴露软件可能导致危险的缺陷。 软件可靠性测试和安全性测试的目标都是找出软件中存在的缺陷,并加以修 正,以提高使用者对软件的信心。但是,可靠性关注的是软件所有的失效,而安 全性关更多地关注软件危险性相关的失效,这就使得安全性测评不能直接照搬可 靠性测评的方法。 本文在研究现有软件安全性分析技术和测评方法的基础上,分析现有测评方 法存在的不足,对其进行改进,提出一种全新的测试和评估方法,贴合软件安全 性的特点,实现更加高效和准确的安全性测评。 .国内外的研究现状 在 一 美国学者 :,, 文中首次提出了软件安全性的概念【,并认为软件安全性是系统安全性的一部 分。她指出软件本身不会造成任何风险或者事故的发生,只有软件被用来控制那 些潜在危险的系统时,它才会变得有安全问题。在文章中阐述了可信 性四个方面:可靠性,可用性,可维护性以及安全性的概念,以及它们之间的关 系,认为软件安全性是软件可靠性的一个方面。、和江苏大学硕士学位论文 等人则是对安全关键软件的可靠性和安全性进行深入了研究【】。已有的用于软 件安全性研究的理论有软件故障树分析、事件树分析、软件潜藏分析法、风险分 析、失效模式影响及危害分析、危险分析、危险性及其可操作研究 等。其中软件故障树分析和失效模式影响及危害分析是 应用最广泛的两种,它们是由系统安全性理论中的】和】发展而来 的,在下一章节中将会详细介绍。 美国军方很早就开始对系统安全性进行研究,并在年推出 ?一系统安全性大纲”,其中对系统安全性分析方法进行了详细描述。 年做了修订,推出了..,其最大的特点就是提出了软件安全 性的问题,增添了软件安全性分析的有关工作。之后又在年推出了 ..,年又进行了修订,完成了..】。 我国的.“系统安全性通用大纲”把软件的安全性分析作为系统的安 全性分析的重要内容。/.《软件可靠性和安全性设计准则》中定义软 件安全性是“软件运行不引起系统事故的能力。 国内学者在软件安全性领域的研究虽然起步比较晚,但是到目前也有大量研 究成果。年,航天所的宋晓秋通过建立时间状态的网,借助 网的状态可达空间分析来研究软件的安全问题 。肖英柏等人提出可以将故障树 分析方法运用在软件安全性测试中,通过故障树分析找出软件中的关键功能模 块,对关键功能模块进行测试以提高测试效率【 。同济大学的徐中伟和吴芳美在 文献阐述了安全性需求的形式化故障树表示,给出了一种基于形式化故障 树最集的动态扩展安全性测试用例结构,并对满足安全性需求覆盖准则的 测试用例自动生成算法进行了讨论。在文献【】中提出了分级安全性的概念,将 软件失效划分成不同的安全性等级,在每一等级上运用模型进行安全 性定量评估,从而避免了既要考虑失效概率又要考虑危害程度的困难。电子 科技 大学的杨仕平使用贝叶斯函数动态地表示软件的失效率的密度函数,提出了一种 增量记忆型的安全性验证测试方法【 。郦萌等人也对软件安全性的评估方法做了 一些卓有成效的研究工作。如何将软件安全性的理论研究应用到实际的工程 中也是一个重要的研究课题,文献,对此作了一定的研究。近年来,国内许 多学者在如何减少安全关键软件安全性测试用例方面进行研究,主要是在软软件安全性测试与评估方法研究 件统计测试用例生成方法上进行改进,从而达到获得同样的安全性目标而减少测 试用例量。另外,现在还有部分软件安全性研究的热点转向了组件和构件安全性 研究【。 目前,对于安全性的评价 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 提出较多,但有关软件安全性测试和定量评估 的理论还不够完善,特别是缺少一个规范的流程对测评过程进行指导。因此,有 必要对现有的软件安全性分析及测评技术进行深入研究,结合软件安全性的特 点,对现有的测评技术进行改进,提出一套具有指导意义的测评流程。 .本文的研究内容及结构安排 本文在对现有的软件安全性分析技术和测评方法研究的基础上,针对安全性 测评的各种特性,以不断提高软件安全性为目标,设计一套适用于对安全性 进行 测试和评估的流程。 本文的主要研究内容包括以下几个方面: 对软件安全性的概念进行分析,对现有的安全性分析技术和测评方法 进行研究,为后面进一步对安全性测评方法的研究提供背景知识。 对现有的测试技术进行深入研究,分析统计测试技术在安全性测试上 表现出来的不足,进一步探索测试剖面的刻画和测试用例用例生成的 更有效方法。 由于安全性相关的失效数据过少,利用可靠性评估模型对安全性评估 存在困难。考虑利用三态模型分析,将安全性指标与可靠性指标进行 关联,通过可靠性的评估从而获得安全性评估结果。 考虑如何将新的测试和评估方法进行应用,提出一个行之有效的测评 流程,并利用实例对流程进行验证。 论文整体分六章,其详细的组织结构如下: 第一章绪论 本章简要介绍了论文研究的背景及意义,即安全性测评的必要性;另外,在 课题相关研究背景的基础上,对于论文的主要工作和研究的方向进行了阐 述。 第二章软件安全性技术分析 本章主要对课题研究所涉及的基础理论和相关研究成果进行了介绍。其中对 江苏大学硕士学位论文 软件安全性的基础知识做了详细的阐述,分析了安全性与可靠性以及安全性与保 密安全性之间的异同。重点介绍了安全性分析的几种方法、安全性测评的技术以 及这些测评技术存在的一些不足。并对安全性测评存在的困难进行总结。 第三章软件安全性测试研究 本章首先介绍了现有的软件可靠性统计测试技术以及基于统计理 论的软件测试方法。分析了统计测试方法在安全性测试中存在的不足,在此基础 上,提出了基于安全性测试剖面产生测试用例的测试方法,力求能克服现有方法 的缺点。并通过一个实例详细叙述了安全性测试剖面的构建和测试用例生成的整 个过程。 第四章软件安全性评估方法的研究 本章首先通过分析失效对安全性的影响,将失效分成安全和非安全失效,并 给出安全性评估指标,接着提出一个安全性评估方法,由于该方法中需要使用可 靠性评估的结果,因此对可靠性评估结果的获得进行了详细阐述。最后,通过一 组数据验证了该安全性评估方法的有效性。 第五章软件安全性测评流程 本章根据上述改进的安全性测试和评估方法提出了一套安全性测评流程,对 流程的实施进行详细阐述,并以实例说明了该测评流程的应用全过程,同时也验 证了该流程的可行性。 第六章研究结论及展望 总结了课题研究的结论,并对相关研究的前景进行了展望。软件安全性测试与评估方法研究 第二章软件安全性技术研究 安全性一词多用于刻画具有能量、毒性或能够进行质量运动的物理设备或系 统,而软件作为一种寄生性逻辑实体,不会由于能量辐射、毒性挥发、质量运动 对人造成伤害或对环境造成破坏。因此,“软件安全性”至今备受争谢。软件 本身可能不会对生命、财产和环境等造成安全威胁,但是,一旦软件嵌入到一些 安全关键系统中,软件失效可能导致控制系统出现问题,从而造成灾难性后果。 因此,软件作为系统的重要组成要素,对其安全性进行分析是很有必要的。 本章第一节给出了安全性的定义。接着讨论了安全性和可靠性以及安全性和 保密安全性之间的异同。最后,对软件安全性的现有分析技术和测评方法进行研 究,并对安全性测评存在的困难进行分析。 .安全性概念 目前很多的标准和学术文章都给出了软件安全性的定义,比较具有代表性的 是: ?..“系统安全性大纲中安全性的定义为:没有引起死亡、伤 害、职业病或财产、设备的损坏或环境危害的条件‘”】。 中,术语的定义为:把伤害对人或损坏的风险限制在可接 受的一种状态。 .:软件安全性是指在软件生命周期内,应用安全性工程技术, 确保软件采取积极的措施提高系统安全性,确保降低系统安全性的错误已经 减少 到或控制在一个风险可接受的水平内。 :“软件安全性是指确保软件在系统上下文执行不会导致系统发生不 可接受的风险。” 参照可靠性的定义给出的安全性定义: 可靠性:在给定的条件下,给定的一段时间内,软件不发生任何失效的概率; 安全性:在给定的条件下,给定的一段时间内,软件不发生引起危险的失效 的概率。这个定义是根据失效发生的概率给出的,是一个度量值。江苏大学 硕士学位论文 与安全性密切相关的术语还包括保密安全性、可靠性 、完整性、可生存性和可信性 。这些术语之间既有联系,又有区别,为了更好地对它们进行区 分理解,我们给出它们的关系图图.。其中安全性与可靠性和保密安全性在 概念上最容易混淆,在下面小节中专门对软件安全性与可靠性以及安全性与保密 安全性之间的异同进行介绍。 .安全性与可靠性、保密安全性之间的异同 ..安全性与可靠性之间的异同 软件安全性和软件可靠性一样,是与软件失效密切相关的。在过去,安全性 性和可靠性性往往是划等号的,特别是在软件领域,但是,现在把这两者概念分 开的趋势越来越明显。可靠性的定义是指在一定的时间和环境条件下,系统执行 其预定功能的可能性。可靠性考虑的是防止系统失效,又可以定义为在一定的条 件和时间下,软件运行不发生失效的概率。而安全性是指系统不发生灾难性事故 的可能性,考虑的是防止系统出现重大事故的能力。 软件安全性和可靠性之间的区别: 含义不同。软件可靠性是指软件在 规定 关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定 条件下,规定的时间内完成规定 任务的能力。软件安全性是指避免危险条件发生,保证己方人员、设施、财产、 环境等免于遭受灾难性事故或重大损失的能力。可靠性强连续调提供用户期望功 能服务的能力,安全性强调防止危险的发生,是对服务结果危害程度的一种 量化。 关注目标不同。可靠性关注系统的所有失效,特别是发生频率高的失效。软件安全性测试与评估方法研究 而安全性只关注那些风险高的小概率事件,所以在安全性测试中需要利用安全性 分析技术找出高风险的小概率事件进行测试。 两者并不存在等价关系。一个可靠的系统并不是安全的,比如,一个系 统,当它进入不安全状态时,它可能还能继续提供服务,尽管可能会带来不良的 后果;一个安全的系统也并不一定是可靠性,比如,当系统一旦进入不安全状态, 那么系统就终止服务,从而转入安全状态,此时,虽然系统是安全的,但它已经 停止提供服务,不满足可靠性要求。 如果软件任务不能完成将影响系统的安全性,那么消除这些软件失效将同时 提高软件的可靠性和安全性。 因此可靠性要求通常包含了安全性要求,但是,可靠性又不能完全代替安全 性,安全性还包括在非正常条件下不致发生事故的能力,这种类型的问题超出了 可靠性范围。由此可知软件可靠性和安全性不是简单包含和被包含的关系,但它 们之间存在着一个交集。如图.所示。 ..安全性与保密安全性的异同 尽管国内许多学者将“”和“”都翻译为“安全性”,然而它们 是针对不同的应用领域。“主要针对任务关键领域,与该领域相关的保障措施主要是为 了防止系统发生危险性事故。而“”,本文将它翻译为保密安全 性,主要是针对信息安全领域,与该领域相关的保障措施主要是为了防 止关键或敏感的信息被未授权用户非法访问和篡改。江苏大学硕士学位论文 ?软件保密安全性融合了可用性,指某项服务在某个时刻可 以获得的概率、隐私,指软件已存储信息、代码、数据 不被访问的能力和完整性,指软件不被意外或未授权修改 的能力,着重关注如何保护软件使其不被恶意攻击。软件的失效安全 性是从软件自身出发,是指不会因为软件的缺陷而引发软件失效,更加 关注于软件的运行。“”主要是为了防止系统给生命财产和环境造成灾难性破坏,其 主要威胁来自系统的设计缺陷以及人员的误操作,是系统或者软件本身 的安全性问题;而“”主要是为了防止非授权用户非法访问或篡 改敏感数据和信息,其主要威胁来源于外界对系统的恶意攻击。 两者之间也有相同之处,那就是,它们都关注于系统或者软件可能带来的负 面后果,需要对后果的严重程度进行度量。而且一般认为软件安全性中需要包含 软件保密安全性的内容,因为,软件系统由于保密安全性不足可能会受到攻击故 意性误操作从而降低系统的安全性。 .安全性研究现状 安全性分析技术的研究已经比较成熟,在系统安全性分析方法的基础上提出 了一系列软件安全性分析方法。但是,目前为止对安全性测试和定量评估方面却 没有一个统一的标准。下文将对现有的安全性分析技术以及现有安全性测评方法 进行研究,并分析安全性测评存在的困难。 ..安全性分析技术 一般来说,造成事故的前提是有危险条件的存在。传统的安全性分析技术都 是从定义与系统有关的危险条件出发,决定它们的严重程度,并试图从根源上找 到危险产生的原因。主要有以下几种方法: , 初步危险分析 初步危险分析最早于世纪年代因应美国国防部要求在所有的产品开发 阶段必须进行防危性研究而提出的,并于年起,颁布了专门的实施标准如 ..和?.。软件安全性测试与评估方法研究 初步危险分析在需求分析阶段晚期和系统设计阶段早期进行,其目的是识别 出相关安全关键领域、提供初始危险评估,并定义必须的危险控制和相应的行为。 初步危险分析技术不是很正规,主要是由领域专家和富有设计经验的设计专 家以 头脑风暴的形式进行。 功能性危险分析 , 功能危险分析是基于功能的角度达到对系统项级设计的分析,该技术的目的 是识别出哪个功能可能导致危险,并对其赋予相应的关键度等级。功能危险分析 方法是由航空工业为桥接硬件和软件而专门发展起来的。为了从功能危险分析获 得有意义的结果,需要面向领域的专门知识。功能危险分析评估的结果是一个列 表,这些列表对软件的每个功能、每个失效条件、每个阶段给出的关于失效的影 响、缓解程序等的表述。 软件失效模式和影响分析 , 是一种归纳分析技术,被用来分析构件失效模式对系统的影响。 方法首先获得关于构件失效模式的知识,然后再考虑每个失效对子系统 和系统的影响。它包含研究系统中的每一个构件,并经常被应用到高级的部件和 系统。它检查是否构件和已知的失效模式满足系统级的防危需求。研究 的结果是接受该构件,或者是提出维护检查的意见、乃至提出更换该构件。 的好处是能够确保所有能够想象得到的失效模式和它们对系统操作性的 影响都能被考虑得到。虽然这对于复杂系统来说代价是非常高的,甚至是不现实 的,但是,使用去判断设计是否满足总体设计需求是非常普遍的。软件故障树分析 . 一旦危险被我们发现,我们就需要根据事故发生模型回溯到最开始导致事故 的那些错误。软件故障树分析方法是一种从上到下的分析技术,它可以发现那些 可能导致系统进入不安全状态的因素,比如错误,缺陷和失效等等。是一 种反馈式技术,即从系统最高层的可能的危险开始向下推,直至发现所有导致危 险的原因。虽然故障树从字面上理解是用来分析故障的,但是实际上,是 一种通用的、可视化的技术,也可以用来分析危险及其各类产生条件,比如失效、 失误或者故障。表现出来一种可视化的树状结构,同层的很多共同导致某 个顶层事件发生的低层事件被连接在一起。典型的符号如图.所示,图 江苏大学硕士学位论文 中从最顶层的事件危险向下推,找出所有可能导致危险出现的事件,直至推 到最底层的事件?找出出错的最基本的地方。 图.故障树示意图 在图中,是危险事件,和是中间之间,,,,,是 导致危险事件发生的基本原因事件。、和之间用或门连接,、 之间用与门连接。 故障树分析技术是目前对系统可靠性和安全性进行定性和定量分析的主要 手段,而且结合故障树分析技术进行软件测试方法也多次被提出枷】,虽然它们 在实现上各有不同。 ..安全性评估方法 软件安全性评估方法主要可以分为软件安全性风险矩阵评估、软件安全性模 糊评估和基于可靠性模型的评估。风险矩阵评估方法最早出现在系统安全性的评 估上,后来将其引入到软件安全性评估。它以风险作为刻画软件安全性的指标, 主要是通过定性分析来达到对软件安全性的一种相对的定量评估。软件安全性的 风险评估涉及主观因素,这会导致评估结果的模糊性,这就是软件安全性模糊评 估方法出现的原因。而后又考虑软件安全性与软件可靠性有一定的相似之处,使 得运用可靠性模型来评估软件安全性成为可能,这样就出现了基于可靠性模型的 安全性评估方法。下面对这三种评估方法进行逐一介绍。 软件安全性风险矩阵评估 风险由事故发生的可能性和事故导致的后果两方面来衡量。 ?程序或者单元可能发生意外的概率定性或定量的。软件安全性测试与评估 方法研究 ?一旦意外发生,可能会产生的后果、影响、严重性。 风险的形式化描述: , 其中,表示风险, 表示对事故所造成后果的度量, 表示事故发生的可能性,函数表示风险与事故发生的可能性和事故导致的后 果之问存在着一定的映射关系。 风险矩阵表示: 根据对严重等级和发生可能性的综合,确定每种危险的系统风险指标,如表 .所示。 表.系统风险指标 非常可能 有可能 可能 不太可能 不可能 淡 灾难的 严重的 二 一般的 可忽略的利用风险矩阵评估方法对软件安全性进行评估的具体做法如下: 在软件需求设计阶段,要描述软件要实现的功能及定义软件能够承受的风 险。在软件测试阶段,运用风险评估方法得到该软件的风险水平。如果求得 的 风险水平小于软件要求的风险水平,那么软件是可以接受的,否则需要对软 件进 行修改,直到达到可接受的风险水平为止。 软件安全性模糊评估 图. 模糊模型 安全性模糊评估是利用模糊模型对安全性风险矩阵评估的结果进行模糊处江苏大学硕士学位论文 理,从而得出一个新的安全性等级。 基于模糊模型如图.所示的风险评估利用模糊模 型的模糊推理机制,通过处理安全性风险评估中的主观评价达到求出软件风险水 平的目的,然后据此确定安全软件的安全等级。 基于可靠性模型的评估 基于模型的评估是建立在软件测试的基础上的,它根据对测试的失效数据建 模,从而计算出软件的可靠性和安全性。 这类安全性评估大都是根据可靠性和安全性的异同,将失效进行分类处理, 然后利用可靠性增长模型进行安全性的评估。等人提出了一个基于非齐 次泊松过程模型和马尔科夫模型结合使用的评估模型’。该模型中对软件测 试中发现的失效按安全性影响进行分类,再对分类之后的失效数据进行评估。但 是,目前利用可靠性模型进行安全性评估的方法主要集中在对失效的分类上,将 分类后的失效数据分别进行评估,计算一个综合的安全值,。由于与安全性 相关的失效数据比较少,直接利用这些失效数据输入可靠性评估模型进行评估的 方法不太可行。本文在第四章中提出一种基于可靠性评估的安全性评估模型。 ..基于统计测试的安全性测评模型软件安全性测试与评估方法研究 软件安全性测试是指为了验证或达到软件的安全性要求而对软件进行的测 试。安全性测试主要有两种方法,一种是安全性增长测试,另一个是安全性验证 测试。二者的区别在于测试过程中是否进行缺陷的改正。安全性增长测试通过软 件测试暴露出软件中隐藏的缺陷并进行纠错、排错后,软件的安全性会得到增长。 安全性验证测试是在测试之前根据安全性指标确定无失效情况下的测试用例数, 然后进行测试。图.、图.给出这两种方法的流程图。 目前安全性测试的测试用例都是根据统计测试操作剖面生成的,但统计测试 操作剖面是依据操作被执行的概率来生成的,这样就无法满足对那些安全性要求 高,但执行次数很少的操作的测试。同时,这些测试发生失效将会导致严重的后 果。因此,本文在安全性增长测试流程的基础上进行改进,提出一个新的安全性 测评流程,该流程可以更加有效的进行安全性测评,而且评估的结果更符合安全 性的要求。 ..安全性测评存在的困难 目前,对安全性进行测试主要有两种方法,一种是基于故障树最小割集】 的方法,该方法首先根据需求分析找出软件的安全性需求;然后进行故障树建模 分析,找出导致不安全事件发生的所有可能原因;最后,通过最小割集划分将基 本原因事件进行组合,通过形式化分析找出这些组合发生的可能性,从而测试出 软件是否存在安全问题。第二种方法是通过统计测试找出不安全失效发生的概 率,用不安全失效的概率进行安全性描述,也就是上小节中所讲到的测评方法。 该方法与可靠性测试方法类似,都是通过统计测试找出软件缺陷,通过修正而达 到安全性增长的目的;或者是通过一系列无失效测试来验证软件是否达到要求的 安全性目标。 但是,这两种方法在进行安全性测试时都存在一定的不足。基于故障树最小 割集的方法要对安全性进行形式化描述,这就是一个很复杂的过程,而且,这 种 测试缺乏对测试覆盖率的衡量标准,我们不知道测试是否进行的彻底。 目前,软件统计测试技术广泛应用于可靠性测试。在软件可靠性测试过程中, 由于软件可靠性关注的是软件提供连续服务的能力,所以,需要开发仿真软件使 用方式的运行剖面使用模式,依据软件运行剖面产生测试用例并执行以暴露对 软件可靠性影响较大的软件缺陷,从而达到可靠性增长的目的。而软件安全性测 江苏大学硕士学位论文 试关注的是导致灾难性事故的软件缺陷。采用依据软件运行剖面产生测试用例, 不能有针对性地暴露导致系统危险的软件缺陷,从而不能实现软件安全性的快速 增长。基于统计取样理论的无失效可靠性验证方法在软件安全性的评估方面也面 晦困难,该方法为了获得较高的安全性,需要大量的测试用例、很长的测试持续 时间。 另外,在一个大的软件系统中,与安全关键功能相关的只是一小部分,安全 关键操作的频率是非常低的,如核电紧急停堆系统软件可能一年甚至几年才运行 一次,其原因是触发该软件投入运行的紧急事件是非常稀少的。因而,该安全 关键软件所规定的失效率是非常低的一般在。至。失效/小时之间。如采用 ‘ 传统的统计测试方法,即使花费很长的测试时间也不能得到理想的测试效果。 还有,由于安全性失效的发生概率很小,因此,测试数据相对不足,此时, 直接将失效数据输入到可靠性评估模型中进行安全性评估,其结果的准确度必然 不高。因此,目前的安全性测评方法在进行安全性测评时存在一些不足,也面临 一些困难。 本文在研究现有安全性分析、测评方法的基础上,提出了一些改进,希望可 以克服安全性测评的困难,为安全性测评研究提供一些参考。 .小结 本章对安全性的概念进行了阐述,并对安全性与可靠性以及安全性与保密安 全性之间的异同进行了分析。通过可靠性和安全性异同的分析可以知道安全性更 加关注于危险相关的失效。对现有的安全性分析、测评技术进行研究,给出了目 前安全性测评存在的问题和困难。为后续章节中关于安全性测评的研究提供了知 识背景。软件安全性测试与评估方法研究 第三章软件安全性测试方法的研究 不管是何种测试,黑盒测试、白盒测试、静态测试、动态测试,其关键的步 骤都是测试用例的生成。工程实践证明,为了尽快地暴露软件中的缺陷,通过软 件操作剖面或者软件使用模型产生测试用例的方法应该是最有效率的。 由于某些安全性相关的操作被执行概率可能非常小,如果依据传统的根据操 作剖面生成测试用例的方法进行测试,这些安全关键操作可能就得不到充分的测 试。如果能够分析出系统的危险所在,并加强对这些部分的测试,既可以最大程 度的保持系统的安全性又可以整体提高测试的效率。 本章正是基于这样的思想,提出利用故障树分析技术对各模块发生故障对系 统安全性的影响进行分析,找出安全关键模块,然后对其依据其安全度设计测试 用例进行安全性测试。 本章首先讨论了现有统计测试的测试用例生成方法;通过基于统 计理论的软件验证测试测试用例数分析,得出目前的统计测试在安全性测试中存 在不足;接着论述了基于故障树分析的软件安全性测试剖面的构建以及依据安全 性测试剖面生成测试用例的方法。 .软件统计测试技术 软件所有可能使用方式的集合构成了软件测试采样的总体,由于测试成本的 原因,我们不可能穷举全部总体进行测试,只能选取能代表总体特性的样本子集 进行测试,并根据统计学原理利用测试结果对软件系统的总体性能进行推断口。 这就是统计测试。在进行统计测试时,首先需要构造一个软件使用模型运行剖 面,它能够代表软件所有可能的使用以及其发生的概率,然后在使用模型中进 行统计抽样选取测试用例进行测试。 具有代表性的使用模型有: 链使用模型 提出的链使用模型玎由一个状态集组成,状态之间由迁 移弧连接,迁移弧指向系统执行过程中的相关操作,并有一个概率值与之对应,江苏大学硕士学位论文 它确定了从给定状态执行特定操作的可能性大小。从初始状态到终止状态遍历模 型便得到了一个测试序列。链使用模型强调了软件在使用过程中的状态 迁移,用迁移概率描述软件使用概率,支持测试用例自动化生成。 操作剖面模型 最早对软件操作剖面构建方法进行系统研究的是美国学者等人。操 作剖面模型是一个树状模型,通过区分软件的客户、用户、软件使用模式以 及不 同模式下软件可以完成的功能,最终确定每个被测试的操作及其发生概率。操作 剖面模型要求根据操作的发生概率对不同的操作产生相应数量的测试用例进行 测试。 下面对基于这两种使用模型的测试用例生成方法进行说明。由于本文在测试 用例生成时借鉴了基于操作剖面的测试用例生成方法,因此,对基于操作剖面的 测试用例生成进行了详细的介绍。 ..基于、链使用模型的用例生成 在基于使用模型的软件统计测试过程中,首先要根据软件需求规 范建立软件的使用链;然后根据使用链进行序列抽样,产生测试用例;最后,执 行测试用例,建立相应的测试链,通过测试链与使用链的比较,可以判断测试的 充分性。当然,在软件可靠性增长测试过程中,利用基于使用模型的 统计测试所产生的失效数据作为软件可靠性增长模型的输入,可以获得相应的可 靠性估计或预计。在软件可靠性验证测试过程中,直接利用使用模型 产生一定量的测试用例,通过对失效数据的观察,便可以获得对软件的可靠性验 证。 链使用模型可以刻画软件的使用过程,它将软件的使用特征以数学模 型的方法表示出来。软件的每一次使用都从链的初态开始经过若干个中 间态,最后到达终态。 用链来描述软件的使用方式,任何下一个发生的事件只与当前的状 态有关,不涉及历史信息。只有满足这个条件才可以使用数学的方法对链 进行分析和验证,观察软件预期的使用,指导测试计划。软件安全性测试与评 估方法研究 ..基于操作剖面的测试用例生成 就是操作的集合及其出现的概率。它主要用来 操作剖面 描述用户对软件的使用方式和习惯。操作剖面的可以表示为: 印 ,,,?,,其中对任意的, ,有 /?,?/,蚤一,。吩表示操作,拍表示对应操作 的发生概率。 在构造操作剖面的过程中,需要了解用户是如何使用该软件的。要充分了解 用户使用软件的各种模式和各种功能,完成这些功能相应的输入变量。同时, 还 要了解用户在使用软件时各系统模式和功能发生的概率。这些信息大都来自 软件 开发的文档,规格说明书和接口文件等资料。需要测试分析人员向用户了解软件 的使用信息。构造软件的操作剖面的方法是按照一种层次结构,自顶向下地把用 户使用软件的输入空间划分为系统模式剖面,把系统模式剖面划分为功能剖面, 最后把功能剖面划分为操作剖面【】。 统计测试操作剖面的构造过程: ?构造系统模式剖面:通过分析软件使用的方式,可将其划分成相对独立 的一组系统模式,确定系统模式发生的概率,即构成系统模式剖面 贮只,,,..。,强,其中:。职是第个系统模式剖面元素; 墨是第个系统模式;只是第个系统模式发生的概率;力是系统模式 的个数。构造功能剖面:对于某一特定的系统模式,需要分析完成该系统模式所 有的功能及其概率,构成功能剖面印印曩,只,,,...,。其 中:肥是第个功能剖面元素;冠是第个功能;只是第个功能发 生的概率;胛厂是当前系统模式下功能的个数。在构造完成每一个系统 模式对应的功能剖面还要将不同模式下的功能剖面进行合并。 ?构造操作剖面:对于某一独立功能的完成,是通过输入一系列输入变量 值来实现的。规定这些输入变量其具体取值区间,在取值区间内把它们 看作是独立的。操作剖面需要分别描述各功能输入变量的取值区间,即江苏大学硕士学位论文 区间的上下限,和各输入变量在其取值区间内的概率分布。该概率分布 是条件概率分布,是指在功能被选中的条件下,该功能各输入变量取值 的概率分布。根据输入变量和它的概率分布来构造操作剖面。对于每一 个功能需要构造操作剖面,之后对不同功能下的相同的操作剖面需要进 行合并,构成最终的软件的操作剖面。 操作剖面构造的层次分析过程如图.所示。 用户使用软件的方 系统模 系统模 系统模式剖面 . . 系统模式下 功.触功.舵 功.鼢功.触 功.舷特 的功能剖面 软件的功能 功.舵功.鼢 功.触苌慧 鬻钎运.徜 运.徜运.衍运.锏 功能下的运行 软件的运行 剖面 团图图图团囱固图 软件的统计测试数据是根据操作剖面随机生成的。在操作剖面中规定了每个 输入变量的取值区间,并且在很难确定输入变量具体概率分布的情况下,可 以假 设认为输入变量在取值区间内均匀分布或分段均匀分布。 根据操作剖面生成测试数据的过程如下: 将操作剖面卯叩 ;,,,,?,刀中所有运行 , 发生的概率只求前项和,,墨?号,形成一个数列邑,妻,,? ,为软件运行剖面中运行总数,规定,并有,., ,.,观察落在哪个区间,若 ..,。任给一个随机数软件安全性测试与评估方法研究 满足『?,,则该随机数与弓这个概率值对应,那么这次随机 抽到的运行为。 ?其次,要进行第次抽样来确定运行中每个输入变量将取到的具体取 值。由于输入变量的取值类型可以是离散的,也可以是连续的,在随机 抽样时要分别考虑这种类型输入变量的抽样方法。连续性的输入变量 要在其取值区间内,依概率密度函数抽样;离散型的要在其可取值集合 内依概率分布抽样。 通过对运行和各输入变量取值个步骤的抽样,就生成了一个测试数据。每 个输入变量的测试数据构成一个输入向量,用于测试选定功能。不断重复上 述步 骤,直到生成所需数量的测试数据为止。 .基于统计理论的软件测试 基于统计理论的软件测试方法是一种软件验证测试的方法,它 也是统计测试的一种。在测试之前根据给定软件的可靠性和安全性指标,计 算出 所需的测试用例数,然后基于软件运行剖面进行抽样,获得所需的测试用例 进行 测试,并且在测试过程中无失效发生。 在软件的验收测试中,规定测试不应该发现失效否则拒绝该软件。所以, 在执行测试之前就要确定无失效测试用例数。统计取样测试方法,都是假定 软件 的操作失效概率为,且每次操作都满足贝努利实验的统计独立性, 认为在次测试中,出现次软件失效的概率为二项分布 坞.、 :卜矿 由于软件失效数遵从式所示的贝努利分布,则其失效概率的概率密度函 数的先验分布应为分布 . ,例厕‖以一矿。 若测试用了个测试用例,其中发生个失效。那么失效概率密度函数的后 验分布为 江苏大学硕士学位论文 、 ...瓦 ?一严一口~ 对于无先验知识的情况,有,则有 、.小 ,,. :;雨?? 对于给定的安全性指标,,当一次测试中不存在测试失效时的测试用 例数为满足下式中的最小整数: 厂?风瓦若丽一”咖? . 由公式.得: 力可筠一 , 为了达到给定的安全性指标助,,需要无失效地测试个测试用例;如 果在测试过程中出现失效,则需要排除错误,并重新选取测试用例进行测试。 下面对基于统计理论的软件测试方法的不足进行分析。 如对于给定的一组安全性测试指标,,我们利用.式计算所需的 无失效测试用例数,如表.所示。 表.无失效测试用例数 安全关键软件的安全性要求都是很高的,一般失效率在。至‘之间。 要达到这个失效率所需的测试用例数将非常大,这给工程实践带来了很大的 负 担。为了解决这个问题,针对软件安全性测试的本质特征在于降低由于软件 失效 而导致系统事故的风险,本文将采用故障树分析技术找出系统中安全性影响 较大 的模块,针对这些模块进行测试,以提高测试针对性和测试效率。软件安全性测试与评估方法研究 .基于安全性测试剖面的软件测试用例生成 软件安全性测试的目的是将引起软件危险事故的失效降低到足够水平。因 此,我们不仅要考虑软件失效的频率,还要考虑它们对安全性的影响。在安全性 测试时,应该把测试资源应用于那些对安全性影响较大的功能模块的运行、操作 上,只有这样,所发现的缺陷对降低风险事故的贡献才大,才能提高测试的效率。 在统计测试中,功能运行剖面是根据系统模式,也即用户使用模式来进行构 造的,并没有对安全性的关注,这对于安全性测试是存在不足的。为了进行安全 性测试,我们应该选出跟安全性相关性大的那些功能模块,进行运行剖面构造, 再根据运行剖面获得测试用例进行统计测试。这样做不仅可以将目标转移到需要 重点关注的安全性测试上,而且可以减少测试用例数,加速软件测试。根据故障 树分析可以选出安全性相关性大的功能模块。 首先利用故障树分析方法找出系统中的安全重要模块,并且给出各模块的安 全度。接着,利用这些模块来构建软件安全性测试剖面进行测试。 ..安全性测试的故障树模型分析 故障树分析法主要用于分析大型复杂系统的可靠性及安全性,它被公认为是 目前对复杂系统可靠性、安全性进行定性分析的一种有效的方法。 在建立故障树模型之前,要对规格需求说明书进行详细的分析,通过功能危 险性分析技术找出系统中所有可能出现的各种不安全状态或者关键失效 状态,列出软件关键安全故障事件表。然后对表中每一个故障事件建立一棵故 障树。 在故障树建立的过程中,我们以找出的故障事件作为“顶事件”,通过 分析寻找出导致顶事件故障发生的所有可能的直接原因,这些原因又被称之为 “中间事件”。顶事件与中间事件之间用“与门或者“或”门等进行连接。接 着分析寻找每一个中间事件发生的所有可能原因,以此类推,直至追踪到最后一 级基本事件,也即“底事件”。软件故障树分析的最底层取决于分析的要求,原 则上可以深入到程序的编码或语句。为了与软件统计测试进行结合,我们采用各 功能模块失效作为底事件进行故障树建模。 假设软件系统由若干相互独立的功能模块组成,各软件功能模块的事件状态 江苏大学硕士学位论文 为两态:工作或失效。如:存在软件系统,,。 假设我们以某一个系统危险失效作为顶事件,通过层层分析可以得到软件系 统故障树模型如图.所示,其中,表示中间事件。 为了对故障树进行安全性分析,找出各功能模块失效对顶事件的影响,我们 需要求出故障树的最小割集。目前对故障树最小割集进行求解的方法主要有 上行 法、下行法和计算机算法。利用下行法求解最小割集的过程如图.所示。 根据原则,我们可以得出最小割集有,,, ,,,,,,,共个,每个最小割集都是整 个软件发生故障的一种可能。其中,为一阶割集,、、为二阶割集, 为三阶割集。 //?一五,:?,: ??\ \ 、。,??,, \、,‖ \,软件安全性测试与评估方法研究 首先定性分析最小割集中各功能模块失效对顶事件的影响,也即模块的安全 度。 由于模块独立构成一个最小割集,其模块失效将会直接导致系统故障, 因此,属于安全关键模块,其安全度最高;从故障树中可以看出,越低阶的故 障 事件与顶事件的联系越直接,影响越大
本文档为【软件安全性测试与评估方法研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_281650
暂无简介~
格式:doc
大小:67KB
软件:Word
页数:36
分类:初中语文
上传时间:2017-09-20
浏览量:75