基于UMLsec的软件安全需求建模方法研究

2013-09-10 01:17波,刘伟,王
计算机工程与设计 2013年9期
关键词:定义建模软件

李 波,刘 伟,王 飞

(1.信息工程大学,河南 郑州450004;2.数学工程与先进计算国家重点实验室,河南 郑州450004)

0 引 言

软件安全性是现代软件系统的重要组成部分,其含义可简单概括为:软件在任何情形下都不能使其控制的系统对人们的生命、财产及其所处的自然环境造成危害[1]。软件安全性对软件至关重要,如何确保软件安全性是软件开发中的重要课题,目前,构建安全需求模型用以指导软件安全开发是一种较好的确保软件安全性的解决方法,已有一些研究人员对此进行了研究,如文献 [2]提出一种基于扩展i*框架的早期安全需求建模方法,定义了用于表达安全环境的建模元素以及安全目标的识别规则,较好地支持早期安全需求的分析工作,但此方法只专注于系统安全环境和安全目标的建模,安全需求不够精化,安全需求的精化还需建立安全策略模型。文献 [3]采用了Object-Z方法分析验证软件需求规格说明,提高软件安全性,文献4在给出单个对象自动机的基础上,用积自动机模型描述软件安全属性,为软件安全开发奠定了基础。文献 [3-4]采用的都是形式化的方法,形式化方法的优点是准确,无二义性,但形式化方法复杂度高,对使用者知识要求高,普及度低。

针对安全需求建模方法中存在的需求不够精化和形式化方法复杂度高的问题,本文提出的基于UMLsec[5](统一建模语言安全扩展)软件安全需求建模方法是一种半形式化方法,采用工业界广泛使用的统一建模语言 (UML)的安全扩展UMLsec技术构建安全需求模型,既能准确,详细描述软件安全需求,开发者又能很好地理解和掌握,避免产生二义性。

1 软件安全需求

1.1 软件安全需求概念

安全需求是软件需求的子集,是保证软件安全可靠的关键因子,很多研究人员致力于安全需求的研究。安全需求定义至今没有一个标准,统一的定义。ISO 《信息技术-安全技术-信息技术安全评估准则》,ISO版本的通用标准提供了安全需求的通用形式 “安全功能基于某某规则应该明确禁止访问目标”[6],通用形式中的规则就是机制。美国国家标准技术研究院 (NIST)提出:这些安全性需求可以被表述为技术特征 (如访问控制),确保能有效地根据功能和实践来定义安全需求[7]。文献 [6-7]把安全需求看作是一种安全功能或机制,描述系统应该怎么作保证安全,这样限制了开发人员对安全需求的处理。文献 [8]中Rusbby认为安全需求主要关注什么不应该发生,认为安全需求是一种非功能性需求,是对系统功能的约束和限制。

综上所述,安全需求是一种非功能性需求,是对功能性需求的约束,关注的是系统需要 “做什么”确保系统满足用户的安全目标,而不关注 “怎么做”。

1.2 软件安全需求建模与UMLsec

构建安全需求模型是指导软件安全开发的需要,UML提供了3个轻量级扩展机制:构造型 (stereotype),标记值(tag)和约束 (constraint),方便开发者对特定领域或平台开发自己需要的UML模型,UMLsec是UML扩展机制在安全方面的扩展,通过构造型,约束,标记能很好地构建安全需求模型。构造型就是对UML中的模型元素进行安全扩展,定义,然后按照新的含义对模型元素进行解释。标记值是给基类附加一个标记,给构造型增加新的语义。约束是给构造型附加限制,即构造型必须满足约束的要求。

2 基于UMLsec软件安全需求建模方法

软件安全需求建模就是在软件系统需求分析阶段就考虑系统的安全需求,将系统需要 “做什么”集成到需求模型中。基于UMLsec软件安全需求建模的基本思想如图1所示。

图1 基于UMLsec软件安全需求建模过程框架

基于UMLsec软件安全需求建模方法,主要包括以下三步:①获取安全需求;②安全需求描述;③安全需求集成建模,下文将对3个步骤进行详细介绍。

2.1 安全需求获取

软件安全需求获取是在软件开发的需求阶段捕获安全需求,它是安全需求分析和研究的基础。软件开发者通过和客户的反复交流可以确定系统的功能需求,明白客户想实现什么功能,但不能确定安全需求,因为客户不懂安全需求或者表述的安全需求模糊性大,因此需要软件开发者在需求阶段根据功能需求获取安全需求。

明确安全需求获取方法之前,先给出3个定义:

定义1 系统目标:系统在满足终端用户期望方面的高等级目标。

定义2 安全目标:系统在为系统目标实现提供安全环境方面的高等级目标。

定义3 安全需求集SR= {sr1,sr2,sr3…srn},sr1,sr2,sr3…srn代表具体的安全需求,不同的系统具有不同的安全需求集,其中的元素也不同。

安全需求获取方法如图2所示。

图2 安全需求获取方法框架

图2表示了安全需求获取基本方法,其步骤如下:

步骤1 根据系统功能需求概括系统目标,即终端用户使用此系统达到的目的。

步骤2 根据系统目标,确定安全目标,即终端用户顺利使用系统达到目的需要的安全环境。

步骤3 根据安全目标,推导出安全需求,即系统要满足安全环境,必须 “做什么”,这 “做什么”就是安全需求。安全威胁是安全环境的一种重要形式,通过安全威胁分析,确定 “做什么”可以防止安全威胁发生,这 “做什么”就是安全需求。威胁攻击的框架图如图3所示。

图3 威胁攻击框架

安全威胁是对系统造成危害的潜在行为,通过威胁主体 (具有某种不良动机的实体),利用系统的漏洞或缺陷,采用一定的攻击方法,对系统进行侵害,最终损害系统安全性。安全威胁分析就是通过分析威胁主体,攻击方式,攻击目标,攻击后果4个方面,明确系统必须 “做什么”阻止威胁事件的发生,这个 “做什么”就是系统安全需求。

图2所示方法使用需要开发者具有一定的安全知识背景,通过此方法开发者可以得到系统的安全需求集SR。

定义4 常用安全需求集SRC= {公平交易,不可抵赖,机密性,完整性,真实性,访问控制,安全通信链接},开发者在推导系统安全需求集时,可以借鉴常用安全需求集SRC中元素,针对具体软件系统的特殊安全需求,则需开发者自行定义安全需求,组建系统安全需求集SR。

2.2 安全需求描述

获取安全需求之后,就要对安全需求进行描述,和功能系统模型集成,建立安全需求模型。

用UMLsec构造型表述安全需求,既能准确表述安全需求,又能很好与UML功能模型集成,利于建立安全需求模型,构造型表述安全需求的基本思想如图4所示。

图4 安全需求描述方法框架

构造型形式化定义如下:

定义5 构造型 U= {name,TAG,constraint,description},其中:name表示构造型的名字;TAG={tag1,tag2…tagi},i∈n,tagi表示构造型的标记;constraint表示构造型的约束要求;description表示定义的构造型的含义描述。

构造型构造规则:

(1)为每一安全需求定义一构造型Ui。

(2)给出构造型的安全含义特征点元素集合P,每个特征点对应一个构造型标记,即pi→tagi。如data security(数据安全)特征点元素集合P= {机密性,完整性,真实性},则data security构造型的标记集 TAG= {secrecy,integrity,authenticity}。

(3)约束是系统服务和行为必须满足构造型的要求。

常用安全需求集SRC中部分元素定义构造型实例见表1。

表1 构造型实例

2.3 软件安全需求模型集成

安全需求模型是安全软件开发的根基,精确,一致的安全需求模型对系统开发至关重要,因此设计好软件安全需求模型,对于安全关键系统开发至关重要。安全需求获取和描述之后,将其与系统功能模型集成得到安全需求模型。

基于UMLsec软件安全需求模型集成基本思想如图5所示。

图5 基于UMLsec软件安全需求模型集成基本思想

安全需求和系统功能模型集成就是在系统功能模型中附加描述此安全需求的构造型,用构造型的关联标记和标记值标记模型元素,约束通过标记对系统行为和服务进行约束,集成后就完成安全需求建模。构建的基于UMLsec的安全需求模型,既包含了软件系统的功能需求,也包含了软件系统的安全需求,建模后,用户可以用模型分析工具进行模型分析与验证,确定系统模型是否满足了相关的安全需求,若模型分析与验证通过,则可用此安全需求模型指导软件系统安全开发。

为正确理解安全需求模型集成过程,先引入几个定义:

定义6 需求模型RM= {E},其中E是模型元素集。

定义7 模型元素集E= {e1,e2…ei},i∈n,其中ei指模型中元素,如模型中的类,状态,行为,动作等。

定义8 构造型集S= {s1,s2,…si},i∈n,其中si是构造型,si定义与定义5一致。

定义9 构造型标记集T= {t1,t2,…ti},i∈n,其中ti是构造型标记。T(s)表示构造型s的标记。

定义10 标记值集TV= {tv1,tv2,…tvi},i∈n,其中tvi=ti|vi,vi=f(t,e),t∈T,e∈E,函数f由标记含义确定,TV(s)表示构造型s的标记值集。

安全需求模型集成就是将构造型集S中相关元素si附加到需求模型RM中,si标记集T(si)中标记对模型元素集E中相关元素ei进行标记,约束元素的行为。集成后得到如下扩展定义:

定义11 安全需求模型SRM= {Ek,Sk},其中Ek是安全需求模型元素集,Sk是安全需求模型附加的构造型集,一般一个模型附加一个构造型。

定义12 安全需求模型元素集Ek= {(e1,at1),(e2,at2)… (ei,ati)},i∈n,其中ei指模型中元素,如模型中的类,状态,行为,动作等,ati是ei的关联标记,由标记和标记值根据si安全语义组合而来,ati可为空值。

Sk中元素定义和定义5一致。

2.4 安全需求模型验证

安全需求模型验证就是选用模型分析验证工具对建立的安全需求模型进行分析验证,验证安全需求模型是否满足用户期望,证实安全需求是否是完备,一致有效的。

验证方法:

(1)建立安全需求模型。选择支持XMI输出的UMLsec建模工具argouml创建UMLsec安全模型,模型创建后保存通用的XMI文件格式。

(2)模型分析与验证,返回文本报告。UMLsec安全需求模型创建后,选用UMLsec分析验证工具UMLsec System Virification Plugin加载安全需求模型XMI文件,分析其中包括的安全需求,给出分析结果,若创建安全模型有缺陷,则返回模型验证的文本报告,标明其中的漏洞,指导用户创建安全可靠的需求模型。

3 实例分析

3.1 实例分析与建模

本节以校园科研信息系统为例,说明安全需求建模方法的应用过程。校园科研信息系统提供校管理人员管理校园科研信息功能,其安全需求获取过程如下:

系统目标:实现校园科研信息电子化管理。

安全目标:校园科研信息系统安全运行,不造成损害。

安全需求:系统包括4种角色:教师,院科研秘书,校科研管理人员,科研管理负责人,系统用户通过赋予相应角色获取相应的操作权限,则非法用户的越权访问是系统的安全威胁之一,要避免此威胁的发生,则系统要有访问控制,则可得访问控制是系统的安全需求之一。分析不同的威胁可得到系统其它的安全需求。本节选用访问控制作为安全需求实例进行讲解。

访问控制是系统的安全需求之一,基于角色访问控制(RBAC)[9]是目前常用的访问控制策略,假定模型选择RBAC作为访问控制策略,则为访问控制安全需求定义《RBAC》构造型,用以描述访问控制安全需求。 《RBAC》构造型定义见表2。

表2 《RBAC》构造型

选用UML活动图构建科研信息管理系统RBAC安全需求活动图模型,如图6所示。UML活动图作用是对系统行为建模[10],选用活动图便于从整体上了解校园科研信息管理系统。

图6 科研信息管理系统安全需求活动图模型

《RBAC》构造型有标记 {user}, {protected}、 {role}和 {right},其中 {user}取值为活动图的参与者,{protected}取值为活动图中状态,表示访问这些状态的行为需要被授权。{role}取值为二元组 (actor、role),其中actor是活动图的参与者,而role是一个角色。{right}取值为二元组 (role、right)的列表,其中role表示角色,right代表受保护的权限。

假定liming,liqiang,wangming,wangqiang分别被赋予教师,院科研秘书,校科研管理人员,科研管理负责人角色,则由2.3中形式化定义得:

TV (RBAC)= {{user}| (liming,liqiang,wangming,wangqiang), {protected}| (编辑科研信息,初审,上交,复审,归档考核,提交,决策), {role}|{(liming,教师),(liqiang,院科研秘书),(wangming,校科研管理人员), (wangqiang,科研管理负责人)},{right}| {(教师,编辑科研信息),(院科研秘书,初审),(院科研秘书,上交),(校科研管理人员,复审),(校科研管理人员,归档考核),(校科研管理人员,提交),(科研管理负责人,决策)}}

图6的活动图模型附加了 《RBAC》构造型,表明系统必须施加安全机制保护系统活动。如系统动作 “编辑科研信息”,它的执行必须满足如下3个条件:

(1)“编辑科研信息”是受保护的活动,不允许随意执行;

(2)liming具有 “教师”角色;

(3)教师具有 “编辑科研信息”权限;

则在活动图中 “编辑科研信息”关联标记

同理,可得其它系统动作的关联标记。

图6所示的安全需求模型,反映了系统交互过程,通过附加 《RBAC》构造型,对系统每一活动定义关联标记,准确,完整地表述了系统访问控制安全需求,通过此模型驱动的系统开发能满足安全访问控制目标。

3.2 实例模型验证

用argouml按图6建立UMLsec安全需求模型,并附加 《RBAC》构造型,关联标记,然后用验证工具进行需求验证,验证结果如下:

Activity-Diagram RBAC Analyzer是验证工具中专门分析验证 RBAC的插件,分析结果是:The test has been successful,表明图6所示的安全需求模型完备,一致地表述了访问控制安全需求,并给出了模型的所有元素及构造型,标记,方便用户分析模型,也为下一步的系统开发设计提供了很好的需求指导。

4 结束语

本文阐述了一种新的软件安全需求建模方法,将安全需求添加到UML所表示的模型中,用UMLsec的方式描述安全需求。常用的软件安全需求建模方法是形式化方法,形式化方法的优点是准确,无二义性,但形式化方法复杂度高,对使用者形式化知识要求很高,不易掌握,采用UMLsec方法分析安全需求,既能准确地表述软件的安全需求,又对使用者要求低,使用者只需掌握软件开发人员广泛使用UML及其安全扩展,提高了需求分析的效率和质量。访问控制是软件常见的安全需求,深入研究各种软件的不同的安全需求,扩展该方法的应用范围是下一步研究的方向。

[1]JIN Ying,LIU Xin,ZHANG Jing.Research on eliciting security requirement methods [J].Computer Science,2011,38(5):14-19 (in Chinese).[金英,刘鑫,张晶.软件安全需求获取方法的研究 [J].计算机科学,2011,38 (5):14-19.]

[2]WANG Runxiao,XIANG Dong, WANG Haipeng,et al.Early-phase security requirements modeling method based on extended i*framework [J].Computer Engineering,2007,33(16):120-122 (in Chinese). [王润孝,向冬,王海鹏,等.基于扩展i*框架的早期安全需求建模方法 [J].计算机工程,2007,33 (16):120-122.]

[3]WEN Zhicheng,MIAO Huaikou,ZHANG Xinlin.Formal verification based on object-Z specification [J].Computer Science,2007,34 (5):247-251 (in Chinese). [文志诚,缪淮扣,张新林.基于Object-Z的形式化验证方法 [J].计算机科学,2007,34 (5):247-251.]

[4]CHEN Feng,LI Weihua.Finite automata models of software safety analysis [J].Journal of Northwest University (Natural Science Edition),2011,41 (1):22-26 (in Chinese).[陈峰,李伟华.软件安全分析的有穷自动机模型 [J].西北大学学报(自然科学版),2011,41 (1):22-26.]

[5]Jan Jurjens.Secure systems develpoment with UML [M].Berlin:Springer,2008.

[6]ISO/IEC 15408-2:2005information technology-security techniques-evaluation criteria for IT security-part2:Security function requirements[DB/OL]. [2012-10-08].http://www.commoncriteriaportal.org/files/ccfiles/CCPART2-V3.1R2.pdf.

[7]Guttman B.An introduction to computer security:The nist handbook [DB/OL].[2012-10-11].http://csrc.nist.gov/publications/nistpubs/800-12/handbook.pdf.

[8]Rushby J.Security requirements specifications:How and what?[DB/OL].[2012-10-15].http://www.csl.sri.com/users/rushby/papers/sreis01.pdf.

[9]JI Wenli.Research and application of role-based access control[J].Microelectronics &Computer,2007,24 (8):86-88 (in Chinese).[冀汶莉.基于RBAC模型的权限管理系统的研究与应用 [J].微电子学与计算机,2007,24 (8):86-88.]

[10]SHAO Weizhong,YANG Fuqing.Object-oriented system analysis[M].Beijing:Tsinghua University Press,2007.[邵维忠,杨芙清.面向对象的系统分析 [M].北京:清华大学出版社,2007.]

猜你喜欢
定义建模软件
禅宗软件
联想等效,拓展建模——以“带电小球在等效场中做圆周运动”为例
软件对对碰
基于PSS/E的风电场建模与动态分析
不对称半桥变换器的建模与仿真
成功的定义
即时通讯软件WhatsApp
三元组辐射场的建模与仿真
修辞学的重大定义
山的定义