基于安全软件开发生命周期的软件工程

基于安全软件开发生命周期的软件工程

[摘要] 利用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新,即软件工程的诞生,是计算机软件生产的里程碑。随着Internet的普及和快速发展,网络安全矛盾日益突显。只有改进传统的软件工程过程,提供更为安全可靠的软件产品,才能减轻威胁,有效遏制网络犯罪。

[关键词] 安全开发; 生命周期; 软件工程

1968年NATO(北大西洋公约组织,North Atlantic Treaty Organization)在德国的加米施(Garmish)召开的计算机科学会议,是一次划时代的会议,正是这次会议诞生了“软件工程”。它不仅有效缓解了当时日益突出的“软件危机”,同时为其后软件生产的辉煌奠定了坚实的理论基础。然而,在网络高速发展的今天,传统的软件工程实践已无法实现安全的软件开发。只有引进新的开发机制,不断改进传统的软件工程过程,才能生产出更为安全可靠的软件产品。

1 软件工程基本概念

计算机软件:与计算机操作有关的程序、规程、规则及任何与之有关的文档及数据。它由两部分组成:一是机器可执行的程序及有关数据;二是机器不可执行的,与软件开发、运行、维护、使用和培训有关的文档。

软件危机:在计算机软件开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初的软件开发,主要依赖个人的“才艺”,而软件功能的需求越来越强,造成软件质量(通用性、可移植性)差、维护困难。在一定时间内,人的智力和体力已无法承受。简单增加开发人员已不能成比例地提高软件开发能力。为开发和维护软件而支付的费用已占到设备成本的40%~75%,开发大型软件一再延时,因此而产生了“软件危机”。

软件工程:用工程、数学的原则和科学的方法,研制与维护计算机软件的有关技术及管理方法。它由方法、工具和过程3部分组成。软件工程方法是完成软件工程项目的技术手段,它支持项目计划与估算、系统与软件需求分析、软件设计、编码、测试与维护。软件工程使用的软件工具自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。软件工程的过程贯穿于软件开发的各个环节,管理者要对软件开发的质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证、配置管理等。

软件生命周期:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程。它包括软件定义、软件开发、软件使用与维护3个主要部分。对应软件生命周期的软件开发模型是经典的瀑布模型(如图1所示)。它提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高大型软件项目开发的质量和效率。

2 网络系统面临的威胁

网络时代的互联互通给我们带来了前所未有的体验与便捷,无纸化办公、电子商务、网络通信等,正融入我们的日常生活与工作的各个领域。大量有价值的、敏感的数据存储与流动,使得利益驱使下的犯罪充斥于网络社会。早在1995年,安全专家Clark和Davis就定义了网络犯罪成本效益比率:

MbPb > OcpOcmPaPc

Mb——攻击者的货币收益;

Pb——攻击者的心理收益;

Ocp——实施犯罪的成本;

Ocm——攻击者的定罪成本;

Pa——攻击者被缉拿和逮捕的可能性;

Pc——攻击者被定罪的可能性。

当不等式的左边大于右边时,意味着实施攻击的收益大于成本,犯罪即可能发生。

一方面,如前所述,随着应用的普及,用户必然会存储、处理大量有价值的数据,使得不等式的左边对攻击者来说是“堆放金钱的地方”,其值(Mb)会愈来愈大;另一方面,攻击者被发现和追捕的可能性(Pa)微乎其微,同时,网络上黑客工具汗牛充栋、唾手可得,实施攻击无需掌握高难的技术,使得犯罪成本(Ocp)愈来愈小。这样,使得不等式左边远远大于其右边,导致网络系统始终受到严重威胁。

据国家互联网应急中心(CNCERT)发布的《2011年中国互联网网络安全报告》披露:

2011年境内木马或僵尸程序控制服务器IP数量为253 684个,木马或僵尸程序受控主机IP数量为8 895 123个。

2011年境内被篡改网站数量累计为36 612个。

2011年4-12月监测到境内12 513个网站被植入网站后门,其中政府网站1 167个。

2011年国家信息安全漏洞共享平台(CNVD)共收集整理并公开发布信息安全漏洞5 547个,其中,高危漏洞2 164个。

2011年,CNCERT共接收国内外报告网络安全事件15 366起。

2011年3-12月监测到仿冒境内银行网站的域名有3 841个;仿冒境内银行网站的服务器IP有667个。

《CNCERT互联网安全威胁报告》2012年11月的月报称,仅在1个月内:境内感染网络病毒的终端数为近466万个。境内被篡改网站数量为8 253个,其中被篡改政府网站数量为658个;境内被植入后门的网站数量为5 462个,其中政府网站有294个;针对境内网站的仿冒页面数量为6 399个。

国家信息安全漏洞共享平台(CNVD)收集整理信息系统安全漏洞729 个,其中,高危漏洞231个,可被利用来实施远程攻击的漏洞有686个。

据《瑞星2012年中国信息安全综合报告》称:

2012年1月至12月,瑞星“云安全”系统共截获新增病毒样本1 181万余个。2012年1月至12月,瑞星“云安全”系统截获挂马网站516万个(以网页个数统计)。

2012年1月至12月,瑞星共截获钓鱼网站597万个(以URL计算),瑞星拦截挂马网站攻击的总数总计5 097万次。

360安全中心发布的研究数据显示:

2012年1月至6月,国内日均约2 835.3万台电脑遭到木马病毒等恶意程序攻击。

2012年上半年,360安全卫士共截获新增钓鱼网站350 149家(以host计算),拦截钓鱼网站访问量更是高达21.7亿次。

2012年上半年,360安全卫士平均每月截获46.3万个挂马网页(以URL计算),拦截挂马网页访问量419万次。

从以上的数据分析可知,网络攻击真实存在,网络犯罪令人触目惊心,在攻击者的定罪成本(Ocm)和攻击者被定罪的可能性(Pc)不变的条件下,我们只有在采用技术的手段同时,增大Ocp以减少网络攻击犯罪。

3 基于安全的软件开发生命周期

为了应对日益严重的网络犯罪,我们必须更新与完善软件工程的方法、工具和过程。

设计高质量的软件和良好的安全系统,加大攻击者实施攻击的犯罪成本。引

进软件安全开发生命周期(Security Development Lifecycle,SDL)是目前最有效的手段之一。SDL由13个阶段构成(如图2所示),其目的一是减少软件中安全漏洞与隐私问题的数量,二是降低残留漏洞的严重性。

(1) 教育和意识。通过对设计师、开发人员、测试工程师、文档专员等每一个与软件开发有关的人员进行系统、持续的安全培训与考试,结合阅读安全书籍、发表安全文章等手段进行综合度量,让所有参与软件开发的工作人员牢固树立安全意识、夯实安全基础。

(2) 项目启动。该阶段的主要工作是组建安全团队、配置Bug跟踪管理数据库并建立Bug标准。

(3) 定义并遵从设计最佳实践。采用安全设计原则(经济机制、默认失效保护、完全中介、公开设计、权限分离、最小特权、最少公共机制、心理可接受度),枚举软件受攻击面的构成,有效降低受攻击面。

(4) 产品风险评估。该阶段完成两个方面的任务:一是进行软件安全风险评估,二是对软件涉及的隐私影响进行分级。安全风险评估一般以问卷调查的形式开展,涉及的问题主要包括:安装问题、受攻击面问题、移动代码问题、安全特性相关问题、常规问题等。隐私影响通常分成3级。1级为最高,当处理敏感数据,如收集用户个人信息、不间断监控用户行为等情况发生时定义为1级。产品风险评估的目的是确定在开发软件时需要投入多大的资源。

(5) 风险分析。通过威胁建模,系统地挖掘应用中的威胁,对每种威胁的风险进行分级并决定适当的消减措施。

(6) 创建安全文档、工具及客户最佳实践。该阶段完成更为安全的文档的创建和安全工具的开发。所谓更为安全的文档就是充分纳入了安全信息的文档,这些文档包括:①安装文档;②主线产品使用文档;③帮助文档;④开发人员文档。安全工具,一般是小巧的工具,如生成器、向导等,主要目的是帮助用户更为方便且安全地配置系统和使用软件。

(7) 安全编码策略。在代码开发和分析时必须遵从的策略:①使用最新版本编译器与支持工具;②使用编译器内置防御特性;③使用源代码分析工具;④切勿使用违禁函数;⑤减少潜在可被利用的编码结构或设计;⑥使用安全编码检查清单。

(8) 安全测试策略。测试阶段要求必须进行:①模糊测试;②渗透测试;③运行时验证;④重审威胁模型;⑤重估受攻击面。

(9) 安全推进活动。通过代码评审,捕获安全Bug、分类,并在工作完成时修复它。

(10) 最终安全评审。在产品交付给客户之前所进行的最终安全评审,一

般由安全团队组织进行,其主要任务是:①与产品开发团队协调;②对威胁模型进行评审;③对未修复的安全Bug进行评审;④对工具有效性验证;⑤签署对产品是否可发布给客户的意见。

(11) 安全响应规划。由于无法实现软件产品的绝对安全,必须制订相应的安全响应规划,即制订处置预案。该预案一般包括:①接收漏洞报告;②评估与分级;③创建修复;④多级测试;⑤发布安全更新等。该过程由安全团队与开发团队共同完成。

(12) 产品发布。以CD、DVD或网络下载等方式发布产品。

(13) 安全响应执行。该阶段的工作就是一旦有新的安全漏洞报告,即启动在第11阶段制订的安全响应预案。

与软件产品本身一样,其开发方法也是一个动态的变化过程。再安全的方法也要由人来执行,保障软件安全没有一劳永逸的办法,即使SDL也在不断地改进和更新。像传统的软件工程带来了软件产业的繁荣一样,不断完善的、基于软件安全开发生命周期的软件工程,必将给软件产业带来质的提升与飞跃。

主要参考文献

[1] 齐治昌,谭庆平,宁洪. 软件工程[M]. 北京:高等教育出版社,2001.

[2] [美]Michael Howard ,Steve Lipner. 软件安全开发生命周期[M]. 李兆星,译. 北京:电子工业出版社,2008.

[3] 史济民. 软件工程:原理、方法与应用[M]. 第3版. 北京:高等教育出版社,2010.

基于安全软件开发生命周期的软件工程

[摘要] 利用现代工程的概念、原理、技术和方法进行计算机软件的开发、管理、维护和更新,即软件工程的诞生,是计算机软件生产的里程碑。随着Internet的普及和快速发展,网络安全矛盾日益突显。只有改进传统的软件工程过程,提供更为安全可靠的软件产品,才能减轻威胁,有效遏制网络犯罪。

[关键词] 安全开发; 生命周期; 软件工程

1968年NATO(北大西洋公约组织,North Atlantic Treaty Organization)在德国的加米施(Garmish)召开的计算机科学会议,是一次划时代的会议,正是这次会议诞生了“软件工程”。它不仅有效缓解了当时日益突出的“软件危机”,同时为其后软件生产的辉煌奠定了坚实的理论基础。然而,在网络高速发展的今天,传统的软件工程实践已无法实现安全的软件开发。只有引进新的开发机制,不断改进传统的软件工程过程,才能生产出更为安全可靠的软件产品。

1 软件工程基本概念

计算机软件:与计算机操作有关的程序、规程、规则及任何与之有关的文档及数据。它由两部分组成:一是机器可执行的程序及有关数据;二是机器不可执行的,与软件开发、运行、维护、使用和培训有关的文档。

软件危机:在计算机软件开发和维护过程中所遇到的一系列严重问题。20世纪60年代末至20世纪70年代初的软件开发,主要依赖个人的“才艺”,而软件功能的需求越来越强,造成软件质量(通用性、可移植性)差、维护困难。在一定时间内,人的智力和体力已无法承受。简单增加开发人员已不能成比例地提高软件开发能力。为开发和维护软件而支付的费用已占到设备成本的40%~75%,开发大型软件一再延时,因此而产生了“软件危机”。

软件工程:用工程、数学的原则和科学的方法,研制与维护计算机软件的有关技术及管理方法。它由方法、工具和过程3部分组成。软件工程方法是完成软件工程项目的技术手段,它支持项目计划与估算、系统与软件需求分析、软件设计、编码、测试与维护。软件工程使用的软件工具自动或半自动地支持软件的开发和管理,支持各种软件文档的生成。软件工程的过程贯穿于软件开发的各个环节,管理者要对软件开发的质量、进度、成本进行评估、管理和控制,包括人员组织、计划跟踪与控制、成本估算、质量保证、配置管理等。

软件生命周期:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程。它包括软件定义、软件开发、软件使用与维护3个主要部分。对应软件生命周期的软件开发模型是经典的瀑布模型(如图1所示)。它提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高大型软件项目开发的质量和效率。

2 网络系统面临的威胁

网络时代的互联互通给我们带来了前所未有的体验与便捷,无纸化办公、电子商务、网络通信等,正融入我们的日常生活与工作的各个领域。大量有价值的、敏感的数据存储与流动,使得利益驱使下的犯罪充斥于网络社会。早在1995年,安全专家Clark和Davis就定义了网络犯罪成本效益比率:

MbPb > OcpOcmPaPc

Mb——攻击者的货币收益;

Pb——攻击者的心理收益;

Ocp——实施犯罪的成本;

Ocm——攻击者的定罪成本;

Pa——攻击者被缉拿和逮捕的可能性;

Pc——攻击者被定罪的可能性。

当不等式的左边大于右边时,意味着实施攻击的收益大于成本,犯罪即可能发生。

一方面,如前所述,随着应用的普及,用户必然会存储、处理大量有价值的数据,使得不等式的左边对攻击者来说是“堆放金钱的地方”,其值(Mb)会愈来愈大;另一方面,攻击者被发现和追捕的可能性(Pa)微乎其微,同时,网络上黑客工具汗牛充栋、唾手可得,实施攻击无需掌握高难的技术,使得犯罪成本(Ocp)愈来愈小。这样,使得不等式左边远远大于其右边,导致网络系统始终受到严重威胁。

据国家互联网应急中心(CNCERT)发布的《2011年中国互联网网络安全报告》披露:

2011年境内木马或僵尸程序控制服务器IP数量为253 684个,木马或僵尸程序受控主机IP数量为8 895 123个。

2011年境内被篡改网站数量累计为36 612个。

2011年4-12月监测到境内12 513个网站被植入网站后门,其中政府网站1 167个。

2011年国家信息安全漏洞共享平台(CNVD)共收集整理并公开发布信息安全漏洞5 547个,其中,高危漏洞2 164个。

2011年,CNCERT共接收国内外报告网络安全事件15 366起。

2011年3-12月监测到仿冒境内银行网站的域名有3 841个;仿冒境内银行网站的服务器IP有667个。

《CNCERT互联网安全威胁报告》2012年11月的月报称,仅在1个月内:境内感染网络病毒的终端数为近466万个。境内被篡改网站数量为8 253个,其中被篡改政府网站数量为658个;境内被植入后门的网站数量为5 462个,其中政府网站有294个;针对境内网站的仿冒页面数量为6 399个。

国家信息安全漏洞共享平台(CNVD)收集整理信息系统安全漏洞729 个,其中,高危漏洞231个,可被利用来实施远程攻击的漏洞有686个。

据《瑞星2012年中国信息安全综合报告》称:

2012年1月至12月,瑞星“云安全”系统共截获新增病毒样本1 181万余个。2012年1月至12月,瑞星“云安全”系统截获挂马网站516万个(以网页个数统计)。

2012年1月至12月,瑞星共截获钓鱼网站597万个(以URL计算),瑞星拦截挂马网站攻击的总数总计5 097万次。

360安全中心发布的研究数据显示:

2012年1月至6月,国内日均约2 835.3万台电脑遭到木马病毒等恶意程序攻击。

2012年上半年,360安全卫士共截获新增钓鱼网站350 149家(以host计算),拦截钓鱼网站访问量更是高达21.7亿次。

2012年上半年,360安全卫士平均每月截获46.3万个挂马网页(以URL计算),拦截挂马网页访问量419万次。

从以上的数据分析可知,网络攻击真实存在,网络犯罪令人触目惊心,在攻击者的定罪成本(Ocm)和攻击者被定罪的可能性(Pc)不变的条件下,我们只有在采用技术的手段同时,增大Ocp以减少网络攻击犯罪。

3 基于安全的软件开发生命周期

为了应对日益严重的网络犯罪,我们必须更新与完善软件工程的方法、工具和过程。

设计高质量的软件和良好的安全系统,加大攻击者实施攻击的犯罪成本。引

进软件安全开发生命周期(Security Development Lifecycle,SDL)是目前最有效的手段之一。SDL由13个阶段构成(如图2所示),其目的一是减少软件中安全漏洞与隐私问题的数量,二是降低残留漏洞的严重性。

(1) 教育和意识。通过对设计师、开发人员、测试工程师、文档专员等每一个与软件开发有关的人员进行系统、持续的安全培训与考试,结合阅读安全书籍、发表安全文章等手段进行综合度量,让所有参与软件开发的工作人员牢固树立安全意识、夯实安全基础。

(2) 项目启动。该阶段的主要工作是组建安全团队、配置Bug跟踪管理数据库并建立Bug标准。

(3) 定义并遵从设计最佳实践。采用安全设计原则(经济机制、默认失效保护、完全中介、公开设计、权限分离、最小特权、最少公共机制、心理可接受度),枚举软件受攻击面的构成,有效降低受攻击面。

(4) 产品风险评估。该阶段完成两个方面的任务:一是进行软件安全风险评估,二是对软件涉及的隐私影响进行分级。安全风险评估一般以问卷调查的形式开展,涉及的问题主要包括:安装问题、受攻击面问题、移动代码问题、安全特性相关问题、常规问题等。隐私影响通常分成3级。1级为最高,当处理敏感数据,如收集用户个人信息、不间断监控用户行为等情况发生时定义为1级。产品风险评估的目的是确定在开发软件时需要投入多大的资源。

(5) 风险分析。通过威胁建模,系统地挖掘应用中的威胁,对每种威胁的风险进行分级并决定适当的消减措施。

(6) 创建安全文档、工具及客户最佳实践。该阶段完成更为安全的文档的创建和安全工具的开发。所谓更为安全的文档就是充分纳入了安全信息的文档,这些文档包括:①安装文档;②主线产品使用文档;③帮助文档;④开发人员文档。安全工具,一般是小巧的工具,如生成器、向导等,主要目的是帮助用户更为方便且安全地配置系统和使用软件。

(7) 安全编码策略。在代码开发和分析时必须遵从的策略:①使用最新版本编译器与支持工具;②使用编译器内置防御特性;③使用源代码分析工具;④切勿使用违禁函数;⑤减少潜在可被利用的编码结构或设计;⑥使用安全编码检查清单。

(8) 安全测试策略。测试阶段要求必须进行:①模糊测试;②渗透测试;③运行时验证;④重审威胁模型;⑤重估受攻击面。

(9) 安全推进活动。通过代码评审,捕获安全Bug、分类,并在工作完成时修复它。

(10) 最终安全评审。在产品交付给客户之前所进行的最终安全评审,一

般由安全团队组织进行,其主要任务是:①与产品开发团队协调;②对威胁模型进行评审;③对未修复的安全Bug进行评审;④对工具有效性验证;⑤签署对产品是否可发布给客户的意见。

(11) 安全响应规划。由于无法实现软件产品的绝对安全,必须制订相应的安全响应规划,即制订处置预案。该预案一般包括:①接收漏洞报告;②评估与分级;③创建修复;④多级测试;⑤发布安全更新等。该过程由安全团队与开发团队共同完成。

(12) 产品发布。以CD、DVD或网络下载等方式发布产品。

(13) 安全响应执行。该阶段的工作就是一旦有新的安全漏洞报告,即启动在第11阶段制订的安全响应预案。

与软件产品本身一样,其开发方法也是一个动态的变化过程。再安全的方法也要由人来执行,保障软件安全没有一劳永逸的办法,即使SDL也在不断地改进和更新。像传统的软件工程带来了软件产业的繁荣一样,不断完善的、基于软件安全开发生命周期的软件工程,必将给软件产业带来质的提升与飞跃。

主要参考文献

[1] 齐治昌,谭庆平,宁洪. 软件工程[M]. 北京:高等教育出版社,2001.

[2] [美]Michael Howard ,Steve Lipner. 软件安全开发生命周期[M]. 李兆星,译. 北京:电子工业出版社,2008.

[3] 史济民. 软件工程:原理、方法与应用[M]. 第3版. 北京:高等教育出版社,2010.


相关内容

  • 基于全生命周期设计思想的工业设计方法_袁莉
  • 包装工程 PACKAGINGENGINEERINGVol.26No132005 基于全生命周期设计思想的工业设计方法 袁莉,杨随先,韩志甲 (四川大学, 成都 610065) [摘要] 分析了工业设计与全生命周期设计的关系以及将全生命周期设计思想引入工业设计 的意义.提出了基于全生命周期设计思想的产 ...

  • 基于生命周期分析信息安全管理体系
  • 基于生命周期分析信息安全管理体系 信息安全管理正成为当前全球的热门话题,建立健全信息安全管理体系对企业的安全管理工作和企业的发展意义重大.信息技术在加速企业发展的同时,也给企业带来了各种各样的威胁.确保信息的完整性.可用性和保密性,从而保持业务运作的持续性和组织的竞争优势. 引言 随着信息技术的迅猛 ...

  • 基于大数据的全生命周期智能管网解决方案_董绍华 (1)
  • 文章编号:1000-8241(2017)××-0×××-0× 基于大数据的全生命周期智能管网解决方案 董绍华 张河苇 中国石油大学(北京) 摘要:智能管网可以解决当前系统繁多以及数据采集与应用脱节的问题,实现油气管道安全.高效.可持续发展.全面阐述了国内外数字化管道.智能管网的实施进展,分析了智能管 ...

  • 浅谈医疗设备全生命周期质量控制的信息化管理
  • 浅谈医疗设备全生命周期质量控制的信息化管理 DiscussionaboutInformation Management of MedicalEquipment Quality Controlinthe Whole LifeCycle 成学麓 ' [摘要]目的建立医疗设备全生命周期质量控制数字化管理模 ...

  • 数字化工厂管理系统
  • 2013年1月第42卷第1期机械设计与制造工程 Machine Design and Manufacturing Engineering Jan.2013Vol.42No.1 DOI :10.3969/j.issn.2095-509X.2013.01.014 数字化工厂管理系统 1 赵子梁,贺 22 ...

  • 课外科技活动
  • OSGI (面向Java 的动态模型系统) OSGi(Open Service Gateway Initiative)技术是Java 动态化模块化系统的一系列规范.OSGi 一方面指维护OSGi 规范的OSGI 官方联盟,另一方面指的是该组织维护的基于Java 语言的服务(业务)规范.简单来说,OS ...

  • 房地产企业信息化解决方案
  • 房地产企业信息化解决方案 一. 前言 1.1行业现状及特点分析 房地产是典型的资金密集型行业,具有投资大.周期长.风险高.项目地域性.政策性强等特点.随着国家宏观经济的调控和住房商品化的改革.房地产企业和房地产市场向有序化.规模化.品牌化.规范运作方向转型. 房地产开发商是建设链的龙头,管理链条贯穿 ...

  • 计算机四级考试内容
  • 计算机四级 新版计算机四级考试大纲 四级数据库工程师 考核数据库应用系统分析及规划.数据库设计及实现.数据库存储技术.并发控制技术.数据库管理与维护.数据库技术的发展和新技术.获得该证书表明考生掌握数据库系统的基本理论和技术,能够使用SQL 语言实现数据库的建立.维护和管理,具备利用工具软件开发基本 ...

  • 软件工程生命周期模型的学习总结
  • 1 综述 软件过程定义了软件开发中采用的方法.软件工程是集成计算机软件开发的过程.方法和工具的学科. 软件工程的一般视图:定义阶段(做什么).开发阶段(如何做).支持阶段(变化). 2 线性顺序模型 有时被称为"传统生存周期或瀑布模型". 活动包括:系统/信息工程和建模.软件需求 ...