基于POAD的软件安全设计过程

时间:2022-06-30 03:07:28

基于POAD的软件安全设计过程

摘要:提出了一种基于设计模式理论的软件安全设计方法,该方法使用POAD技术(面向模式的分析与设计)来实现软件的安全设计过程,能在设计阶段保证软件功能上的安全性。通过加入安全设计模式重构系统的整体架构,并通过模式的实例化提升软件设计环节的安全性。

关键词:POAD;风险评估;安全设计;安全模式

中图分类号:TP309 文献标识码:A 文章编号文章编号:16727800(2014)001013903

作者简介作者简介:张江(1981-),男,硕士,中国人民77302部队工程师,研究方向为数据库与信息系统、GIS。

1 概述

本文研究的出发点基于软件开发过程中的两个基本原理。

(1)控制软件安全的关键在于设计环节。从应用上来讲,软件的安全性在于软件是否有漏洞以及漏洞的危害程度。软件的大部分漏洞出现在编码测试环节,由于现代软件复杂度日益增加,这一环节的漏洞很难避免,此类漏洞基本上可以用补丁文件加以修补;另一种类型的漏洞出现在设计环节,这一类漏洞的危害性很大,更为严重的是设计层面上的漏洞很难用补丁文件修补,所以控制软件安全的关键在于软件设计过程。

(2)软件复用技术可以也应当用于软件设计环节。成功应用的软件产品对于后续开发者是一笔宝贵的财富,不仅在软件功能上可以作为参考和范本,软件开发过程中形成的各种文档、代码和理论都可以作为开发者重复利用的软件资产,这样的开发方式称之为软件复用。代码复用是软件复用最典型的体现,然而软件复用的应用并不局限于此,软件开发各阶段的设计思想、开发文档、算法结构、实现代码,以及最后的测试用例等都可作为复用的元素。从层次上来讲,最低层次的软件复用为代码复用,高级层次的软件复用为组件复用、结构复用和设计模式(Design Patterns)复用。设计模式是指软件在开发初期形成的设计方案,成功的软件设计模式都是经过检验和验证的,在设计过程中使用这些设计模式,能够提高系统的稳定性和开发效率。

基于以上原理,本文提出了基于安全设计模式的软件设计方法。该方法通过复用成功软件设计方案中的安全模式,将其应用于软件设计环节,极大地提高了软件的安全可靠性。

2 基本概念

(1) POAD。随着软件复杂度的不断提高,“零起步”的设计方式已经不再适应现代软件的开发速度,面向模式的分析设计方法(PattenOriented Analysis and Design),POAD解决了软件设计过程的复用问题。POAD的基本理念是创建并维护专用的模式库,通过组合以往的设计模式实现设计过程的软件复用。

(2) 安全模式。安全模式是专注于软件安全的设计模式,经过验证的安全模式关注了软件应用中重复遇到的安全需要,并提供了经过实践证明的正确解决方案。安全模式封装了成功者的经验,能够为设计人员提供直接的参考和借鉴。

3 实现流程

本文提出的软件设计流程沿用了安全工程风险的管理过程,采用POAD设计方法提取了风险管理中的安全性风险,选用安全模式作为相关风险解决方案。该流程可分为3个基本阶段:风险评估阶段、安全模式选取阶段和安全模式细化阶段。

3.1 风险评估阶段

风险评估阶段包括两个关键步骤:风险识别和风险评估,如图1所示。

本文的软件设计过程基于面向对象的设计思想,所以风险识别过程主要采用分析业务需求和确定安全关键类来实现:首先根据业务需求和专家知识库列举系统运行过程所包含的风险类型,之后根据面向对象的动名词分析法找出系统的对应类,再分析系统安全需求以确定业务类中的安全关键类并标定其风险等级,最后标定出安全关键类中的关键功能。确定安全关键类和关键功能的环节就是系统的风险识别过程,同时也标定了风险的作用范围。

图1 风险评估阶段基本流程

风险识别完成后,需要对标定风险的危险等级进行评估。因为软件项目有可能面临大量风险,每种风险造成的危害不同,而项目开发的资金和时间是有限的,所以必须分清轻重缓急,把人力和时间集中在对系统影响较大的风险上,对于不太重要的风险或是修改代价过大的风险只能予以接受(此时可考虑从使用制度上限制用户的操作方式以对风险予以规避)。

风险识别和评估完成后,即可将软件项目风险和项目资源(人力、物力、财力、时间)关联起来,这有助于设计人员在软件安全实现方面作出正确决策。

3.2 安全模式选取阶段

风险评估完成后,开始安全模式选取工作,该工作由3个步骤组成:安全模式选取、安全模式评估和系统框架重构。

(1)安全模式选取。选取安全模式是本文设计流程中最为关键的步骤,系统通过比对风险描述文档和安全模式库,根据对应规则选取安全模式用于解决风险识别过程中找出的风险。

(2)安全模式评价。安全模式选取完成后,需要对选取的模式进行评价,以确定安全模式的功效并对某些功能作出取舍。安全模式根据其作用效果分为两类:一类是完全解决风险,这是最好的情况;二是部分解决,此时需要进一步寻找模式,期待更多的模式结合起来解决风险。如果此时仍然不能解决风险,则有两种选择:一是接受该风险,采取其它外部措施来规避;二是当风险不可接受时,只能考虑从系统中移除相关的软件功能。

(3)系统框架重构。系统框架重构就是将风险评估和安全模式选取阶段考虑到的各种新功能加入到系统原有的高层设计中,最终实现加入安全模式的软件设计框架。

3.3 安全模式细化阶段

安全模式细化过程的任务就是根据系统的初始业务类图,加入新提出的安全功能,实例化选取安全模式,并将其重新整合成更为详细的系统设计类图。

(1)细化业务功能。细化业务阶段的任务是根据加入安全模式后的高层架构图结合系统的现有实体形成更为详细的业务类图。

图2 安全模式细化阶段基本流程

(2)实例化安全模式。在系统整体框架重构完成后,在实例化框架中添加安全模式。

(3)系统整合及重构。完成上述步骤后,得到了一系列类图的集合,根据最初的业务类图将这些类图结合起来,即完成了系统在加入安全模式后的整合与重构。

4 应用实例分析

下面以一个CMS(内容管理系统)的安全设计过程来说明本文方法的应用。系统的基本功能如图3所示。

图3 系统用例

4.1 风险评估阶段

根据本文风险评估方法对该系统相关功能进行风险识别,评估结果如表1所示。

4.2 安全模式选取阶段

对比风险描述文档和安全模式库,根据对应规则选取安全模式用于解决风险识别过程中找出的风险,得到如表2所示的安全模式。

安全模式选定后,就要对其应对风险的能力作出评估,评估的依据主要在于风险文档与安全模式文档的描述匹配度和设计人员的主观判断,最终评估结果如表3所示。

根据系统最初的业务需求和加入的安全模式,重构了系统的高层架构,如图4所示。

4.3 安全模式细化阶段

(1)细化业务功能。系统业务功能主要由4个类完成,如图5所示,User代表登陆用户及其相关的功能逻辑,Infor类实现信息和信息管理功能,SystemManager类用来完成系统管理功能,Login类用来处理用户登陆。

图5 系统业务类图 图6 登陆过程实例化

(2)实例化安全模式。采用安全认证模式、安全验证模式、安全日志模式以及将此3种安全模式与系统业务协调起来的SafeLogin模式,对系统登陆过程进行安全模式实例化,如图6所示。

采用审计拦截器模式、安全会话对象模式以及协调以上两种安全模式与系统业务功能调用的信息管理模式,对信息功能进行安全模式实例化,如图7所示。系统管理业务类SystemManager的实例化方式与此完全一致,不再重复。

(3)整合系统并重构。根据系统的高层架构图,结合上一步骤实例化的几个业务类和基本业务类图,得到系统在采用安全模式细化设计后的整体框架,如图8所示。

图7 信息管理功能的实例化

图8 系统最终结构

将最终的系统整体框架图与图5系统业务类图对比,可以看出,加入的安全模式机制在抵御风险的同时,也增加了系统的复杂程度,有可能造成系统效率下降,在实际开发过程中需要对部分安全功能进行取舍。

5 结语

解决软件安全问题是一个系统性工程,必须在软件开发的每一个阶段都予以重视。本文从设计阶段入手,将安全关注标识到设计图中,使设计人员对安全问题产生足够重视,有利于安全需求的实现。同时,本文将安全责任委托给安全模式来解决,既有助于克服设计人员安全设计知识缺乏带来的影响,也能满足快速开发的需要。

参考文献:

[1] 张现環.基于Windows平台的软件安全漏洞发掘技术研究[D].成都:电子科技大学,2010.

[2] 李刚.安全编码预编译器的设计与实现[J].计算机工程,2011,37(3):230235.

[3] 王涛.基于安全模式的软件安全设计方法[J].计算机工程,2011,37(12):5961.

[4] 颜兆林.集成系统的软件安全分析[J].计算机工程,2005,31(12):141142.

[5] 余勇.软件安全开发模型的研究[J].计算机安全,2005(4):1114.

上一篇:信息安全技术仿真实验项目研究与设计 下一篇:一种基于Rapha l图形库的网络拓扑生成系统