高品质安全软件开发制程研究

2014-11-19 09:58褚岷昇
电子技术与软件工程 2014年20期

摘 要 文章以现有的软件开发制程为基础,加强制度、管理、技术等三个层面的安全措施,进而规划出一套安全软件开发制程,于软件开发初期就能标示出阶段性的安全缺失与漏洞,有效提升软件系统的安全性,且提出一套安全开发制程品质量测模式,有效监控与不断改善安全开发制程的问题与缺失,确保安全软件开发制程能够持续强化软件系统的安全性。

【关键词】软件安全性 品质量测模式 安全软件开发制程

1 前言

软件系统安全性一般都被列为事后考虑的情况,当功能规格都能够满足需求,且软件专案的时程与预算都在规划的范围内,软件系统安全性才会被列入考量,使得软件安全品质的问题愈加严重。造成软件安全漏洞的原因很多,却几乎都与开发作业的疏忽及运作环境的缺失等问题密切相关,其中又以开发作业疏忽衍生递延与扩大的影响最大且最久;可以归纳成两大类:软件开发过程的疏失所形成软件安全漏洞;运作环境的规划缺失导致维运环境的安全漏洞。为了降低安全漏洞的风险,必须强化软件制程的安全机制,于开发初期就有效标示出安全缺失漏洞,且及时提出修补与改善作业。本文以现行的软件制程为基础,加强制度、管理、技术等层面的安全管制作业,进而提出一套安全软体开发制程(Secure Software Development Process SSDP),于软体开发初期即能找出阶段性的安全漏洞与缺失,且提出具体的修订与改善措施,有效提升软件系统的安全性。此外为了确认SSDP的有效性,本研究以制度、管理与技术等三个层面为基础,提出一套SSDP品质量测(SSDP Quality Measurement SSDPQM)模式,用以监控与持续改善SSDP执行上的问题与缺失。

2 安全软件开发制程

文章以调整制度层面、搭配管理层面与提升技术层面的安全管制作业为依据,提出一套改善软件安全性的安全软件开发制程。

2.1 结合安全管制作业的软件制程

为了解决软件危机的问题,软件工程的理念于1967年被提出,将近三十年的软件工程演进过程中,许多软件开发的方法与技术陆续被发表且提出,有效的改善软件的品质且提升其生产力,对于解决软件危机的问题带来不少的助益。不过,对于软件安全危害却极少被提及,使得软件安全问题成为软件开发作业即将面临的另一项重大危机。为了提升软件系统的安全品质,本文从制度、管理与技术等三个层面来强化软件开的安全管制作业,以下针对制度层面的调整、管理层面的配合与技术层面的提升说明之:

2.1.1 制度层面的调整

配合安全软件的开发,制度层面必须具备下面四项的调整:(1)透过制度的规范,需求分析必须将使用单位的安全需求列为必要的需求项目。使用单位提出的安全需求项目将注重全盘性的考量如终止骇客入侵、杜绝病毒攻击、确保储存资料的安全等。(2)透过制度的规范,需求分析必须将安全运作环境需求列为必要的需求项目。安全运作环境是指系统运作的安全性如资料库、储存媒体或网络传输等安全。(3)透过制度的规范,需求分析必须将安全介面设计需求列为必要的需求项目,安全介面设计是指整合作业的安全性如系统、功能模组及元件等介面之间的安全。(4)透过制度的规范,需求分析必须将安全程式撰写需求列为必要的需求项目,安全程式撰写是指程式码的安全性如排除超出阵列定义范围、除以零的运算式、档案处理异常状态等安全漏洞与缺失。

2.1.2 管理层面的配合

每一个软件开发阶段所完成的文件产品,都必通过严格的安全品质检视作业,才能依程序要求交付建构管理(Configuration Management)进行管制,检视作业若发现安全漏洞或缺失,必须立即找出原因且进行修订与改善作业,最后还要配合后续的跟摧活动(Follow Up)来确认文件产品已完成缺失矫正与漏洞修订,否则应持续进行修订与改善作业,直到确认完成缺失矫正与漏洞修订改善后,才能依程序将文件交付建构管理进行管制,成为后续开发阶段引用的文件。下面以三项管理层面的执行品质来确认与判定管理层面的配合成效:

(1)安全文件完成后的核准与缴交等作业程序品质,安全文件漏洞或缺失修订前后的确认、提领与缴交等作业程序品质。

(2)安全文件漏洞或缺失修订前后的版本架构规划程序品质、修订前后内容差异存放程序品质。

(3)安全文件漏洞或缺失修订的日期、修订的内容、修订的人员及归属的安全项目等作业程序品质。

2.1.3 技术层面的提升

软件安全品质所强调的特性与ISO早期规划的软体品质特性有许多落差,为此本研究提出安全程式码撰写、例外处理(Exception Handling)机制、程式码分析器、安全查核表及安全审核技巧等五个成熟度进行安全软体开发的技术层面提升:

(1)以安全程式码撰写规则、程式模组之间的介面整合确认、程式模组之前置、后置条件确认等技术,提升安全程式码撰写成熟度。

(2)在程式码中适当融入例外处理(Exception Handling)机制,可以避免发生超出阵列定义范围、除以零的运算式、档案处理异常状态等安全漏洞与缺失,有效提升程式码的安全品质。

(3)有效结合程式码分析器协助找出的程式码中隐含的安全漏洞与缺失,可以有效标示出运算式、输出/输入介面与模组元件整合介面的安全缺失。

(4)安全文件与产品查核表是内部或非正式审查采用的方式,将来至各方面的安全软件相关信息汇整、剖析、分类且设定权重后,可以产生具高度修改弹性安全文件与产品查核表,可以协助于开发早期找出潜在的安全漏洞与缺失。

(5)萃取安全软件专家与学者的知识与经验、收集安全漏洞修补的记录以及记取安全漏洞造成的惨痛经验等是提升安全文件与产品审核技巧的关键。

2.2 安全软件开发制程的关键优势endprint

为了凸显对软件安全品质的重视,安全管制作业应该采取独立运作,不过,受到人力不足与时程的压力,也可以将安全管制作业融入软件开发制程中,整合运作。无论是独立运作或整合运作,每阶段的任务除了依程序的要求完成阶段性产品外,还必须依制度要求达成下面的工作内容:需求分析阶段;初步设计阶段;细部设计阶段;程式制作阶段;测试阶段;建置移转阶段;标示软件安全缺失的时段;改善软件安全缺失的作业时段;各阶段软件开发安全管控的调整弹性;软件安全改善作业的人力投入;软件安全改善作业的时间花费;软件安全缺失的影响范围。当软件系统开发计划依SSDP完成安全软件系统开发作业后,接着便是找出SSDP存在的问题与缺失,且针对这些问题与缺失进行剖析,再提出调整与修订作业,持续不断的改善SSDP,才能确认SSDP的有效性且维持SSDP的实用状态。

3 安全软件开发制程的品质量测模式与改善方式

一套完善的开发制程必须配合环境与需求不断扩充与调整,以品质量测模式监控与持续改善SSDP执行上的问题与缺失,才能确认SSDP的有效性。

3.1 安全软件开发制程的品质量测模式

个别的量度或量测值只能评量作业品质的某些特质,为了监控及评量软体制程品质,必须将个别的量度或量测值做适当的结合。量度结合的方式可以分为线性结合与非线性结合,考量实用性、修改弹性、扩充性与简单性,本文以线性结合方式建立品质量测模式。影响SSDP作业品质的三个关键项目分别为制度层面的调整、管理层面的配合及技术层面的提升,每个关键项目的影响指标则是由一些低阶的品质因子所组成,透过线性结合公式,可以将高度相关性的基层因子结合成特定量测值,这些特定项目量测值可以进一步结合成高阶项目量测值,最后再将高阶项目量测值加以结合,而成为SSDP作业品质量测指标。

3.2 安全软件开发制程改善方式

品质量测模式所估算出的SSDP品质量测指标,是找出SSDP潜在问题与缺失的依据,整合各个层面的品质因子、基层品质量度及高阶品质量测值等三个层次,结合而成的品质量测指标是找出SSDP潜在问题与缺失的关键。因此,当品质量测指标落在「过低」的范围时,便可以从品质量测模式的结合公式进行推导,判断出相关的品质因子,再从品质因子对映剖析出SSDP的子工作项,进而找出SSDP实行过程中潜在的问题与缺失,依据问题与缺失可以提出具体的调整措施与监控作业。以下即针对SSDP「潜在问题与缺失」所提出的改善法则:

3.2.1

如果「SSDP品质量测指标」未能通过品质门槛,进一步分析「制度层面品质」、「管理层面品质」及「技术层面品质」等量测值是否落在过低状态,且透过结合公式,对照找出属于过低状态的品质特性量测值。

3.2.2

如果「制度层面品质」量测值属于「过低」状态,可以进一步分析出那几项基层品质不良造成「制度层面品质」量测值属于「过低」状态中,且透过结合公式,对照找出使用单位安全需求、安全运作环境需求、安全设计介绍需求及安全程式撰写等品质量度值所对应的正确性、完整性及一致性等品质因子,再由品质因子配合找出制度层面相关子工作项潜在的问题与缺失,进行修正、改善与监控等措施。

3.2.3

如果「管理层面品质」量测值属于「过低」状态,可以进一步分析出那几项基层品质不良造成「管理层面品质」量测值属于「过低」状态中,且透过结合公式,对照找出品质量度值所对应的安全文件存取监控、版本管制及修订记录等品质因子,再由品质因子配合找出安全文件存取监控、版本管制及修订记录等子工作项潜在的问题与缺失,进行修正、改善与监控等措施。

3.2.4

如果「技术层面品质」量测值属于「过低」状态,可以进一步分析出那几项品质不良造成「技术层面品质」量测值属于「过低」状态中,且透过结合公式,对照找出安全程式撰写、例外处理机制、弱点扫瞄工具、漏洞查核表及漏洞检视技巧等品质量度值所对映的成熟度之品质因子,再由品质因子配合找出安全程式撰写、例外处理机制、弱点扫瞄工具、漏洞查核表及漏洞检视技巧等子工作项成熟度潜在的问题与缺失,进行修正、改善与监控等措施。

4 结论

本文从制度、管理与技术三个层面为基础,结合安全检视查核表与法则式安全知识库,规划出一套安全软件开发制程(SSDP),从管理与技术层面对软件开发制度进行调整,在软件开发初期就能有效的标示出软件安全缺失与漏洞,随即以较低的人力、时间与成本进行安全缺失的改善作业,将安全品质融入产品中。此外为了确认SSDP的有效性,本文更提出一套SSDP品质量测(SSDPQM)模式,用以监控与持续改善SSDP执行上的问题与缺失,确保SSDP能够持续强化软件系统的安全性。SSDP品质量测模式以制度、管理与技术三个层面为基础,采取线性的量度结合模式简化了复杂的公式,具有高度的修改弹性与扩充能力,可以随着SSDP的变动进行快速调整,持续确认SSDP的有效性与最佳状态。

参考文献

[1]施寅生,邓世伟,谷天阳.软件安全性测试方法与工具[J].计算机工程与设计,2008(01).

[2]仉俊峰,洪炳镕,乔永强.基于软件方法故障注入系统[J].哈尔滨工业大学学报,2006(06).

[3]颜炯,王戟,陈火旺.基于模型的软件测试综述[J].计算机科学,2004(02).

[4]徐中伟,吴芳美.形式化故障树分析建模和软件安全性测试[J].同济大学学报(自然科学版),2001(11).

作者简介

褚岷昇(1973-),男,台湾省台南市人。 大学本科学历,福州大学工商管理系(MBA)在读。现为冠捷电子有限公司RD部门经理。

作者单位

冠捷电子有限公司 福建省福清市 350301