软件安全性论文_第1页
软件安全性论文_第2页
软件安全性论文_第3页
软件安全性论文_第4页
软件安全性论文_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件安全性浅析前言现今,软件安全性已成为一个越来越不容忽视的问题,提起它,人们往往 会想起一连串专业性名词:“系统安全性参数”、“软件事故率”、“软件安全可靠 度”、“软件安全性指标”等等,它们可能出现在强制的规范性文档中的频率比较 多,但却不一定能在开发过程中吸引开发者的眼球。几乎每一个程序员都或多或 少的在项目维护时遭遇过自己软件的安全性bug,这种经历使我们有幸在一个设 计严谨而又性能良好的系统平台上工作时,我们都会对其大为感叹:那真是一 段很棒的代码!”这是因为,专业的软件设计开发人员会重视软件的安全性,不 仅仅把它当做是书面字眼。在这里本文将通过对软件安全性概念的引入,以及对 软件安

2、全性各阶段的任务的介绍和如何通过软件测试来验证是否完成了软件安 全性目标,较全面的阐述软件安全性对软件质量起的重要作用。首先,我们从加 固对软件安全性的认识开始。一、 软件安全性分析的重要性安全性分析(safety analysis)是一种系统性的分析,应在研发过程的早 期开始进行,用于确定产品在每一个使用模式中执行其功能的方式,识别潜在的 危险,预计这些危险对人员及(或)设备可能造成的损害,并确定消除危险的方 法。其中一项重要内容是“软件安全性分析”,这是对软件程序进行的一种分析, 以保证程序在其设计的运行环境中,不会引起(或可以容忍的小概率引起)或诱 发对人员或设备的危害。例如多级火箭一级

3、点火、二级点火指令如果错了,火箭 就会失败。但只要对火箭指令及传递机构采取足够的防错设计,错发指令的概率 就可以小到能容忍的程度。在软件和信息系统的开发过程中,由于技术难度高,项目复杂,开发周期 短而带来的一系列困难,潜伏安全性隐患的几率其实是很大的。现代化的软件本 身变得越来越复杂,开发一个软件产品或一个大型系统所需要依靠的技术也越来 越多样化,需要考虑的问题也越来越多,例如,我们需要在研发开始前就确定好 软件系统能够承受的出事概率。很多软件开发的组织由于没有掌握和利用必要的 控制软件安全性的技术,无法妥善解决相应的问题,把时间耗费在事后补救上, 使得开发的效率大为降低产品的质量大打折扣,甚

4、至因为某个关键错误的发生, 导致产品的信誉度降低,更严重的结果则会导致生命财产安全的损失。如果你发 现有关安全性的要求已经出现在安全相关软件的合同书或任务书中,并提出软件 安全性分析的范围和要求,那么说明你们已经开始了进行软件安全性分析的准 备。二软件安全性分析的指导原则我们将软件安全性分析作为一项目标明确的项目去做,从管理的角度分为 五个阶段,每个阶段有不同的任务需要完成。如下图:启动和范围确定:在安全相关软件的合同或任务书中应提出软件安全性分 析的范围和要求。实施方明确责任,管理者检查必备的资源(包括人员、技术、 基础设施和时间安排),确保软件安全性分析的开展;策划:软件安全性分析管理者应

5、制定安全性分析计划,该计划可作为所属 软件过程或活动的计划的一部分。执行和控制:管理者应监控由软件安全性分析计划规定的任务的执行。管 理者应控制安全性分析进展并对发现的问题进行调查、分析和解决(解决方案有 可能导致计划变更)。评审和评价:管理者应对安全性分析及其输出的软件产品进行评价,以便 使软件安全性分析达到目标,完成计划。结束(收尾阶段):管理者应根据合同或任务书中的准则,确定软件安全性 分析的是否完成,并应核查软件安全性分析中产生的软件产品和记录是否完整。启动和范围确定策划执行和控制评审和评价结束(收尾阶段)终上所述,我们将软件安全分析在一个典型的项目中各个阶段所要做的工 作做了一个总结

6、,你可以看到软件安全分析在各阶段的重点是什么。我们在实际 工作中,则要调动所有有关人员,努力完成各阶段的任务。三、软件安全性分析的任务根据上面所总结的各阶段需要做的安全分析重点,我们可以总结出以下七 种需要做的工作。在这里为抛砖引玉,再对相应的一些分析技术作一些介绍:软件需求安全性分析对分配给软件的系统级安全性需求进行分析做软件需求安全性分析的目的是要保证规定必要的软件安全功能和软件安 全完整性。我们需要根据软件安全性分析准备的结果和系统的初步结构设计文档,包 括系统分配的软件需求、接口需求,产生后续软件安全分析的输入信息,和对后 续的软件设计和测试的建议。软件结构设计安全性分析一一价结构设计

7、的安全性,以保证软件安全功能的完整性结构设计安全性分析的目的是将全部软件安全性需求综合到软件的体系结 构设计中,确定结构中与安全性相关的部分。软件结构设计安全性分析可产生后续软件安全性分析的输入信息,可提出 对后续的软件设计和测试的建议。应当在软件结构设计评审中评审软件结构设计 安全性分析的结果,并将之提供给进行中的系统安全性分析活动。编程软件安全性分析一一的编程语言所有编程语言无论在其定义还是在其实现中都有其不安全性。计算机语言 的发展趋势证明,新的编译语言总是会修正老一代语言的不足之处。程序员可能 会误解语言构造的作用,而对这些误解,一些相对开放的语言又缺乏相应的解释。 现举例如下:a)未

8、初始化的变量。除非进行特别的检查,否则单元测试不会发现他们。 而这将导致,一个程序在不同的环境下虽然运行成功,但运行结果却不是期望值。b)当要求重新分配存储器的调用时应予以检查,以确保不仅释放指针而且 释放该结构所用的存储器。c)运算符优先级的规则。如果某种语言有精确的定义(也有完备的功能性),从逻辑上是清晰的,有 易管理的规模和复杂度,那么就认为这个语言适用于安全相关性软件。当选择编 程语言时,应阐明选择该语言的理由。如果一种编程经验或编程风格因为能够提高软件安全性而被公认为专用性 编码标准,我们可以选择这样一种编码标准来约束我们对不安全语言的使用。编 程标准应经过评审,确定其可以用于所有安

9、全相关软件的开发。MISRA协会在 1994年发布了它的软件开发指南,在其中特别指出了为考虑安全集成度而做出 的语言、编译器和语言特性的选择。MISRA要求使用标准化结构化语言的受 限子集,其对语言检查的严格性已经使该规范应用在一些安全要求很高的系统 代码上。软件详细设计安全性分析一一设计实现是否符合安全性要求软件详细设计将进一步细化高层的体系结构设计,将软件结构中的主要部 件划分为能独立编码、编译和测试的软件单元,并进行软件单元的设计。在这一阶段中,我们需要依据软件需求、结构设计描述、软件集成测试计 划和之前所获得的软件安全性分析的结果,对软件的设计和实现阶段是否符合软 件安全性需求进行验证。相关软件单元应进一步细化设计以便于编码。所以,我们应该分析:a)软件详细设计是否能追溯到软件需求;b)软件详细设计是否已覆盖了软件安全性需求;c)软件详细设计是否与软件结构设计保持了外部一致性;d)软件详细设计是否满足模块化、可验性、易安全修改的要求。软件详细设计是直接关系到编码的关键一环,软件详细设计安全性分析更 相关整个软件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论