1.软件安全工程概述
软件安全工程是信息系统生命周期中的重要环节,也是信息系统安全工程过程中的核心要素。
2.软件安全性的内涵和外延
2.1 软件的定义及特点
软件通常是指一系列按照特定顺序组织的计算机数据和指令的集合,包括与计算机系统操作有关的计算机程序、规程、规则,以及可能的文件、文档及数据等。如果采用开发语言来进行描述,可以通俗地认为“软件=程序+数据+文档”。
2.2软件的安全性
美国航空航天局(NASA)在《美国航空航天局安全关键软件的分析和开发指南》(NASA- GB-1740.13-96)给出了软件安全性的定义:在整个软件生命周期内,应用系统安全性工程技术来确保软件采用能提高系统安全性的有效措施,并确保那些可能降低系统安全性的错误均已被排除或控制在可接受的风险水平。
2.3软件安全性与软件可靠性
软件可靠性与软件安全性是紧密联系又有显著区别的两个概念。
软件可靠性(Software Reliability)的研究起源于第一次软件危机,并于 20 世纪 90 年代左右发展成为比较成熟的软件可靠性工程。从现在的角度来看,软件可靠性工程的实施不仅为软件可靠性提升,也为软件可信性和安全性的提升做出了很大的贡献。
目前,软件可靠性的理论已经相对比较成熟,但软件安全性的定义尚不如软件可靠性那样明确。与软件可靠性不同,软件安全性并不强调系统的功能,而是关心系统受到危害的影响。
二者的区别和联系为:
① 所有的软件失效都会破坏软件的可靠性,但只有能够引起危险后果的软件失效才会直接破坏软件的安全性;
② 如果软件缺陷导致的失效影响了软件的安全性,那么修复这些软件缺陷将会同时提高软件的安全性和可靠性;
③ 修复能够引起危险后果的软件缺陷会提高安全性,却可能无助于软件可靠性的提高;
④ 如果软件存在安全性方面的本质缺陷,即便消除了所有的软件失效,也只能提高软件可靠性,但不一定会提高软件安全性;
⑤ 可靠的软件不一定安全,安全的软件不一定可靠。但是,在具体的软件安全工程实践中,大多不将二者严格区分。

