购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.4 软件安全的研究内容

软件安全涉及的主要方法和技术是本书的主要研究内容,本节先来做一概要介绍。

1.4.1 软件安全是信息安全保障的重要内容

1.信息保障的概念

1996年,美国国防部(DoD)在国防部令《DoD Directive S-3600.1:Information Operation》中提出了信息保障(Information Assurance,IA)的概念。其中对信息保障的定义为:通过确保信息和信息系统的可用性、完整性、保密性、可认证性和不可否认性等特性来保护信息系统的信息作战行动,包括综合利用保护、探测和响应能力以恢复系统的功能。

1998年1月30日,美国国防部批准发布了《国防部信息保障纲要》(Defense Information Assurance Program,DIAP),认为信息保障工作是持续不间断的,它贯穿于平时、危机、冲突及战争期间的全时域。信息保障不仅能支持战争时期的国防信息攻防,而且能够满足和平时期国家信息的安全需求。

由美国国家安全局NSA提出的,为保护美国政府和工业界的信息与信息技术设施提供的技术指南《信息保障技术框架》(Information Assurance Technical Framework,IATF),提出了信息基础设施的整套安全技术保障框架,定义了对一个系统进行信息保障的过程及软硬件部件的安全要求。该框架原名为网络安全框架(Network Security Framework,NSF),于1998年公布,1999年更名为IATF,2002年发布了IATF3.1版。

IATF从整体和过程的角度看待信息安全问题,其核心思想是“纵深防护战略(Defense-in-Depth)”,它采用层次化的、多样性的安全措施来保障用户信息及信息系统的安全,人、技术和操作是3个核心因素,包括主机、网络、系统边界和支撑性基础设施等多个网络环节中,如何实现保护(Protection)、检测(Detection)、响应(Reaction)和恢复(Restore)有机结合的动态技术体系,这就是所谓的PDRR(或称PDR 2 )模型,如图1-3所示。

图1-3 PDRR模型

IATF定义了对一个系统进行信息保障的过程,以及该系统中硬件和软件部件的安全需求。遵循这些原则,可以对信息基础设施进行纵深多层防护。纵深防护战略的4个技术焦点领域如下。

●保护网络和基础设施:主干网的可用性;无线网络安全框架;系统互连与虚拟专用网(Virtual Private Network,VPN)。

●保护边界:网络登录保护;远程访问;多级安全。

●保护计算环境:终端用户环境;系统应用程序的安全。

●支撑基础设施:密钥管理基础设施/公钥基础设施(KMI/PKI);检测与响应。

信息保障与之前的信息保密、网络信息安全等阶段的概念相比,它的层次更高、涉及面更广、解决问题更多、提供的安全保障更全面,它通常是一个战略级的信息防护概念。组织可以遵循信息保障的思想建立一种有效的、经济的信息安全防护体系和方法。

2.网络空间安全和信息保障

信息安全已经进入网络空间安全阶段,这已成为共识。网络空间的安全问题得到世界各国的普遍重视。

网络空间(Cyberspace)不再只包含传统互联网所依托的各类电子设备,还包含重要的基础设施,以及各类应用和数据信息,人也是构成网络空间的一个重要元素。

网络空间安全(CyberSecurity)不仅关注传统信息安全研究的信息的保密性、完整性和可用性,同时还关注构成网络空间的基础设施的安全和可信,以及网络对现实社会安全的影响。

本章【案例1】中,以西门子数据采集与监控系统为攻击目标的震网病毒神秘出现,伊朗境内包括布什尔核电站在内的5个工业基础设施遭到攻击,成为运用网络手段攻击国家电力能源等重要关键基础设施的先例。当前,不少国家金融、能源、交通和电力等关键业务网络已基本实现信息化、网络化,但防护手段还不尽完善,能够“震颤”伊朗核设施的病毒,同样也可以“震颤”这些国家工业系统中的相关控制与采集系统,国家重要的战略网络面临着平时被控、战时被瘫的巨大风险。

当前网络空间信息存在的透明性、传播的裂变性、真伪的混杂性、网控的滞后性,使得网络空间信息安全面临前所未有的挑战。网络战场全球化、网络攻防常态化等突出特点,使得科学高效地管控网络空间,成为急需解决的重大课题。

3.软件安全是信息安全保障的重要内容

软件在网络空间信息系统的运行、危险控制及关键安全功能实现等方面正发挥着越来越重要的作用,成为系统安全保障、避免重大人员伤亡和财产损失的一个重要环节。

信息安全保障是建立在传统的系统工程、质量管理和项目管理等基础之上的,广义的信息安全保障涉及信息系统和信息系统安全保障领域所特定的技术知识及工程管理,它是基于对信息系统安全保障需求的发掘和对安全风险的理解,以经济、科学的方法来设计、开发和建设信息系统,以便能满足用户在安全保障方面的需求。

在信息安全保障体系的建设中,首先进行科学规划,以用户身份认证和信息安全保密为基础,以网络边界防护和信息安全管理为辅助,为用户提供有效的、能为信息化建设提供安全保障的平台。通过在信息系统生命周期中对技术、过程、管理和人员进行保障,确保信息及信息系统的机密性、完整性、可用性、可核查性、真实性、抗抵赖性等,包括信息系统的保护、检测和恢复能力,以降低信息系统的脆弱性,减少风险。

降低系统脆弱性的最有效方法就是漏洞分析,因此,漏洞分析是信息安全保障的基础,在信息安全保障中占据核心地位。整个信息安全保障模型是一个以风险和策略为基础,包含保证对象、生命周期和信息特征三个方面的模型。主要特点是以安全概念和关系为基础,强调信息系统安全保障的持续发展的动态安全模型,强调信息系统安全保障的要求和保证概念,通过风险和策略基础、生命周期和保证层面,从而使信息系统安全保障实现信息技术安全的基本原则,达到保障组织结构执行使命的根本目标。总之,确保软件安全是信息安全保障的主要内容。

1.4.2 软件安全的主要方法和技术

1.软件安全防护的基本方法

早期开发软件的首要目标是在效率和成本优先的前提下构造出功能正确的系统,对于可信任性、可用性及安全性等问题的考虑相对较少,尤其在软件构造理论与方法、构造过程、体系结构和运行环境等方面,没有建立相应的安全支撑机制,使得软件在规模增大以后,安全性问题越来越突出。

漏洞是引发信息安全事件产生的根源,软件漏洞尤其如此。恶意代码通常也是针对漏洞而编写出来的,软件侵权的成功往往跟软件漏洞也有密切的关系。因此,软件安全防护围绕漏洞消除展开,目前有两种基本方法。

1)采用多种检测、分析及挖掘技术对安全错误或是安全漏洞进行发现、分析与评价,然后采取多种安全控制措施进行错误修复和风险控制,如传统的打补丁、防病毒、防火墙、入侵检测和应急响应等。

这种将安全保障措施置于软件发布运行之时是当前普遍采用的方法。历史经验证明,该方法在时间和经济上投入产出比低,信息系统的安全状况很难得到有效改善。本章前面对于当前软件安全问题的现状分析表明了这点。

2)分析软件安全错误发生的原因,将安全错误的修正嵌入到软件开发生命周期的整个阶段。通过对需求分析、设计、实现、测试、发布及运维等各阶段相关的软件安全错误的分析与控制,以期大大减少软件产品的漏洞数量,使软件产品的安全性得到有效提高。

该方法是将安全保障的实施开始于软件发布之前,尤其强调从软件生命周期的早期阶段开始安全考虑,从而减少软件生命周期的后期系统运行过程中安全运维的工作量,提高安全保障效果。实践经验表明,从系统开发需求阶段就引入安全要素要比在系统维护阶段才考虑安全问题所花费的错误修复成本要低很多。

2.软件安全防护的主要技术

现有关于软件安全的技术主要包含软件安全属性认知、信息系统安全工程及软件安全开发三个方面。

(1)软件安全属性的认知

安全是一个整体性的概念。根据国家标准《软件工程 产品质量 第1部分 质量模型》(GB/T 16260.1—2006),软件安全既离不开它所存储、传输、处理的数据的安全,也离不开相关文档的安全,因此软件安全应涵盖数据及其信息处理过程本身的三个基本安全要素:保密性、完整性和可用性;同时软件需要接收外界信息输入才能实现预期的功能产生输出结果,信息来源的安全性必然成为软件安全重要的组成部分。基于这些分析,本书将保密性、完整性、可用性、认证性、授权和可审计性作为软件安全的核心属性;而软件自身的实现质量,即软件产品包含的漏洞情况也应该是软件安全性的主要内容,因为这些漏洞会直接导致安全性问题,这也是传统的软件安全关注的问题;此外,站在不同的管理者视角,抗抵赖性、可信性、可控性、可靠性及软件弹性等也成为软件被关注的其他安全属性。

(2)系统安全工程

系统安全工程是一项复杂的系统工程,需要运用系统工程的思想和方法,系统地分析信息系统存在的安全漏洞、风险、事件、损失、控制方法及效果之间复杂的对应关系,对信息系统的安全性进行分析与评价,以期建立一个有效的安全防御体系,而不是简单的安全产品堆砌。

确切地说,系统安全工程是系统的安全性问题而不仅是软件产品的安全性问题,是一种普适性的信息系统安全工程理论与实践方法,可以用于构建各种系统安全防御体系。系统安全工程可以在系统生命周期的不同阶段对安全问题提供指导,例如,对于已经发布运行的软件,可以采用系统测试、风险评估与控制等方法构建安全防御体系;而对于尚待开发的系统,也可以应用系统安全工程的思想方法来提高目标系统的安全性。这是一项具有挑战性的工作,也是本书的出发点。

(3)软件安全开发

漏洞是引发信息安全事件的根源,而软件漏洞又是在软件开发的整个生命周期中引入的。软件生命周期包括需求分析、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级、废弃等多个阶段,每个阶段都要定义、审查并形成文档以供交流或备查,以此来提高软件的质量。虽然此类流程严格规范,但是由于开发过程中人员经验不足、开发平台客观条件等方面的原因,依然会引入各种类别的安全漏洞。因此,在软件开发的各个环节中进行漏洞的预防和分析,能够快速、高效地发现软件中的安全问题,减少其在后期带来更大的危害。

一些软件开发相关的机构和企业意识到了这一情况,纷纷在软件开发过程的各个阶段采取各种措施对开发的软件进行漏洞分析。微软、思科等公司推出的安全开发生命周期(Security Development Lifecycle,SDL)就是一套对软件开发过程进行安全保障的方案,旨在尽量减少设计、代码和文档中与安全相关的漏洞的数量。微软的实践证明,从需求分析阶段开始就考虑安全问题,可以大大减少软件产品漏洞的数量,而不会增加成本。

软件安全开发关注的是如何运用系统安全工程的思想,以软件的安全性为核心,将安全要素嵌入软件开发生命周期的全过程,有效减少软件产品潜在的漏洞数量或控制在一个风险可接受的水平内,提高软件系统的整体安全性。

软件安全开发方法抛弃了传统的先构建系统,再将安全手段应用于系统的构建模式,而是保留了采用风险管理、身份认证、访问控制、数据加密保护和入侵检测等传统安全方法,将安全作为功能需求的必要组成部分,在系统开发的需求阶段就引入安全要素,同时对软件开发全过程的每一个阶段实施风险管理,以期减少每一个开发步骤中可能出现的安全问题,最终提高软件产品的本质安全性。

根据软件开发生命周期的阶段划分,软件安全开发涉及以下几个方面的内容。

●软件安全需求分析。

●软件安全设计。

●软件安全编码。

●软件安全测试。

●软件安全部署。

本书将在后续章节中展开介绍以上技术。

小结

本节概述了保障软件安全的主要方法和技术,它们各有侧重和不同。对于软件安全性的测试和评估主要基于产品的视角,描述产品是什么,它的安全性怎么样;而系统安全工程与软件安全开发是基于过程的视角,回答软件的安全性是如何构建的,软件安全开发是系统安全工程应用的最高阶段,也是解决信息安全问题的最根本途径。 4vQrds8NJam/fP9EwiQmWNQKW7pu+12KVVWz/qpyNIwOBUyTZLiouahuabvyl2Au

点击中间区域
呼出菜单
上一章
目录
下一章
×