计算机软件安全的缺陷
计算机软件安全的缺陷 摘要:黑客、病毒、间谍软件、木马程序、流氓软件、千年虫、熊猫 烧香等等,每个计算机用户或多或少的都有着这样恼火的经历,怎样提高计算机 软件安全对于现代的计算机用户来说显得尤为重要。本文就计算机软件缺陷及其 安全检测技术进行了深入的探讨和研究。关键词:计算机软件;安全检测技术;软件缺陷 一、软件安全缺陷软件缺陷,指的是软件中隐藏或者出现的问题造成 软件不能正常运行。也就是程序员俗称的Bug,是程序员最不希望出现的,同时 它也是程序员最希望出现的,程序出现了Bug才能针对Bug去不断完善软件。
软件缺陷按照其造成问题的严重性程度,又分为四个级别,从轻到重 分别是微小级、一般级、严重级、致命级。软件安全缺陷一旦出现往往都会是严 重级或者致命级,它与普通的软件缺陷有着显着的区别:
1.软件安全缺陷往往都是黑客或者不法人员想通过寻找软件漏洞来 获取利益时发现的,而普通的软件缺陷通常都是由一般用户反映或者测试人员直 接测试出来的。
2.软件安全缺陷的出现都是高危险性的级别,一旦出现就可能对机构 或者个人造成巨额的亏损且不易弥补,而普通的软件缺陷一般都是某个小模块不 能运行、显示不正常等危险性较低的,即便是危险性高的功能缺陷一般也都会在 软件测试中发现并及时修补,并不会对运营造成危害。
3.软件安全缺陷一旦出现则必须马上组织人员修复,务必在最短时间 内解决问题,避免损失的出现,而普通的软件缺陷则可以累积进行一次性的处理, 如问题较多且集中的可直接对软件进行升级一并解决缺陷。
软件安全缺陷按照正交分类法,又分为需求缺陷、设计缺陷、代码缺 陷和文档缺陷。其中,需求缺陷包括功能、性能、接口、控制流、数据流、一致 性、文档版本这些小类;设计缺陷包括功能、性能、接口、逻辑、数据使用、错 误处理、一致性、文档版本这些小类;代码缺陷包括功能、性能、接口、逻辑、 数据使用、错误处理、编程语言、编程规范、代码版本这些小类;文档缺陷包括 完备性、一致性、正确性、文档版本这四个小类。二、计算机软件安全检测技术概述计算机软件检测是软件开发过程中 必不可少的一环,即利用测试工具按照产品的设计方案对产品进行功能和性能的 测试,必要时还需测试人员编写相应的测试工具,对测试中可能出现的问题进行 分析,制成测试文档反馈给开发人员进行修复,后续过程中继续对产品故障进行 跟踪,最终确保产品达标。
计算机软件检测的目的是为了发现程序中的错误并提出解决方案,以 便及时改进。而计算机安全检测仅仅是对计算机安全问题进行检测,利用最少的 检测资源达到最大的安全检测目标,挖掘软件中隐藏的安全问题,以确保软件的 安全性能够达到设计中预期的效果。计算机软件安全检测与计算机软件一般检测 的最大的区别在于他们的出发点的不同,计算机软件一般检测的出发点是为了测 试需求的功能是否完成并帮助其完成,而计算机软件安全检测的出发点则是测试 软件中是否做了不该做的威胁软件安全的事情并对其进行遏制。
计算机软件安全检测包括两个方面,分别是安全功能检测和安全漏洞 检测。其中安全功能检测是基于软件的需求设计,检测软件的安全性能是否能达 到需求中所述的目标,是否按照需求中所述的方式方法实现等等。安全漏洞检测 则是基于攻击者的想法,结合软件安全缺陷的分析,对每个环节可能出现的缺陷 予以扼杀,不给黑客们有一丝可乘之机。结合安全检测的两个方面,通过计算机 软件安全检测要确保计算机软件在功能上不出现任何缺陷,即使出现缺陷也需保 证软件缺陷的级别是一般级以下,不会对软件安全造成严重打击。实现这一目标 才能算是安全合格的软件。
三、计算机软件安全检测技术结合计算机软件安全检测技术的分类, 下面将对数种使用较为频繁的安全检测技术进行阐述。
1.形式化安全检测技术。该技术是通过建立数学模型,并在形式规格 语言的支持下建立形式规格说明,常用的形式规格语言有基于模型的VDM、Z 等、有基于有限状态的SDL等、有代数语言OBJ等、有混合语言离散数学等。运 用形式化安全检测技术只能通过数学模型对系统进行证明,但不能说明系统中就 一定没有错误,因此该技术可以为保密设备提供安全性的保障。
2.模型检测技术。该技术是了解软件行为和软件具体结构,建立软件 模型对系统进行检测。具体流程:首先要对被检测软件进行理解分析,了解软件 的输入输出过程,理解软件内部的数据交换和计算过程;然后针对软件选择合适 的检测模型;最后建立模型,并生成测试用例,完成后人工检查是否正确。常见的检测模型有运行于SUN平台的toolSET_Certify、IBM的GOTCHA、支持统计测 试的Cleanroom Certification Assistant、UML模型测试工具TestMetor等。
3.猜错法检测技术。该技术是依据经验和直觉,建立一些不按常理的 测试用例,往往能够得到意想不到的效果。但对于一个新的软件,无任何可借鉴 经验和背景,则很难运用该检测技术,也尽量避免使用该技术,以免降低检测的 可信度。
4.模糊检测技术。该技术是一种有效的检测安全漏洞的方法,它是不 合逻辑的,采用杂乱无章的数据攻击程序,可能会发现其他技术发现不了的安全 漏洞。该数据检测过程非常简单,只需要用随机数据替换被测文件中的某段代码, 再运行程序,观测会产生怎样的影响。
5.语法检测技术。该技术是根据被测软件的功能接口的语法生成测试 用例,检测各类用例输入的反应。具体步骤:首先先识别软件接口语言;然后定 义语言的语法;再者输入测试用例,查看软件是否存在缺陷,其中除了正确的用 例外,还包括各类语法错误的用其 它例,甚至不符合语法的畸形用例。该类技 术对有明确的接口语法说明的软件,是非常有效的,并可结合下面所述的故障注 入技术进行同时检测。
6.故障注入检测技术。该技术是依据故障的模型,人为的将故障注入 到被测软件中的方式,用以加速该目标系统故障的发生。其中故障主要是系统在 运行中会出现的不正常状态或者使系统瘫痪的事故,通过系统带着这些事故运行, 检测系统的状态。
四、计算机软件安全检测中需注意的问题计算机软件安全检测一般分 为五个步骤,按顺序是软件分析、选择技术、制定检测方案、实际检测和信息反 馈。每个步骤需要注意的问题如下:
1.软件分析。该步骤需要对软件的需求设计、软件的系统构架、软件 的代码、软件的运行情况等这些方面进行全面合理的分析。只有对软件本身有着 透彻的了解才能选择有效的检测方法,避免走弯路。
2.选择技术。由于软件的漏洞是无规律的、分散的,不可能通过一种 检测技术就能完全解决系统安全问题,往往需要多种检测技术的配合,所以必须 先选定好要用的技术才能制定更加完美的实施方案。3.制定方案。在全面分析的基础上,结合选定的检测技术,并从实际 出发,考虑方案所需的人力物力资源情况,合理调配这些信息,设计出一套切实 可行的检测方案。
4.实际检测。在实际检测过程中,每个环节都是需要人员去操作机器 并实时记录反馈检测情况的,所以在实际检测前要对每个测试人员的能力有一定 的了解,才能安排到合适的岗位,在实际检测中根据检测情况以及报出的问题, 要及时合理的调度测试人员,发挥人员的最大作用,只有这样各部门有效的配合 才能达到一个满意的检测结果。
5.信息反馈。最后将检测结果制成文档,反馈给开发人员,帮助开发 人员理解并解决错误问题,使软件安全真正得到保障。综上所述,在当前的互联 网环境下,愈多网民的计算机受到攻击,黑客及其他不法分子肆虐互联网,只有 从根源上解决软件的安全问题,做好对软件出厂前的安全检测工作,才能使用户 的权益得到保障,营造一个高质量的网络环境。