专利名称:一种计算机系统安全模型验证方法
技术领域:
本发明属于操作系统安全技术领域,具体涉及一种计算机系统安全模型验证方法。
背景技术:
随着计算机技术和通信技术的迅速发展以及用户需求的不断增加,计算机操作系统作为各类应用的底层软件,人们对其依赖程度越来越高。然而,人们在享受计算技术以及随之伴生的网络通信技术带来的强大功能以及便利的同时,也面临着日益严峻的信息安全形势。在系统设计阶段引入安全模型,可以从根源上杜绝因设计缺陷而留给黑客们的可乘之机,因此如何验证计算机系统所采用的安全模型是否正确就成为目前计算机安全领域的研究热点。而形式化技术更因为其能对模型的正确性加以证明而得到了重点的关注 (参考发明名称基于模型转换的协议正确性验证和测试方法,专利号ZL 200510002613. X的专利技术文献,以及发明名称一种规范驱动的网格工作流描述和验证方法,专利号 ZL200510027785. 2)。一般来说,对安全模型进行属性验证主要分为两个步骤第一步先将安全模型和待验证属性用一种形式化语言抽象成特定输入模型;第二步则对输入模型进行分析,验证属性与模型之间的一致性。目前出现的安全模型验证方法(参考发明名称用于验证电路的模型检测中的模型抽象方法及其系统,申请号200910083790. 3的专利技术文献)可以分为以下几类第一类采用可视化约束或图形变换等技术来描述安全模型和待验证属性,再利用专门开发的验证工具进行验证。这种方法利用人对直观图像的敏锐性,以可视化视图的方式将安全模型的行为呈现出来,然而,该方法对安全模型的描述能力有限,验证不同的属性就需要重新建模,工作量很大,此外验证算法的效率低下也阻碍了该方法的普及。第二类方法利用模型检测器的输入语言对安全模型建模,再通过模型检测器进行验证。这种方法试图利用成熟的模型检测自动化分析工具对安全模型进行分析,然而它的建模方式全凭验证人员手工完成,这要求对模型检测技术非常熟悉,否则稍微的疏忽都会导致构造的模型发生状态爆炸的问题。第三类方法利用开发人员熟悉的UML语言对安全模型进行描述, 这种方法目前只能构造安全模型的静态结构,无法反映安全模型的动态属性,而其当前所采用的验证工具也缺乏对安全模型的时序行为进行判定。考虑到安全模型设计、验证在计算机软件工程中的的实际应用背景,安全模型的验证方法应该选取软件开发人员所熟悉的模型描述方法,并采用具有一定自动化程度的形式化工具,建立相应的安全模型验证方法,我们在第三类的方法上更进一步,提出了一种计算机系统安全模型验证方法。
发明内容
本发明的目的在于提供一种基于UML描述语言与模型检测技术的计算机系统安全模型验证方法。针对计算机系统安全模型的静态结构与动态行为,分别引入UML语言的类图和状态机图对计算机系统安全模型进行描述,之后利用模型转换工具将UML图转换为模型检测器的输入模型,由模型检测器判断该模型对安全需求、属性的满足性。从而实现安全策略模型与基本安全属性、需求之间的一致性形式化验证。本发明的技术方案为—种计算机系统安全模型验证方法,其步骤为DUML建模模块采用UML描述语言描述计算机系统安全模型的动、静态属性,得到计算机系统安全模型的UML模型;2)将待验证安全属性用预定的形式化验证工具所采用的数理逻辑公式进行描述;3) UML模型转换模块将该UML模型转换为该预定形式化验证工具所能处理的输入模型;4)该预定形式化验证工具对该输入模型进行状态遍历,并计算2)中得到的公式在每个状态上的满足性,输出验证结果。所述UML模型包括访问发起机构和仲裁机构;所述访问发起机构采用UML描述语言的一状态机图描述所述计算机系统安全模型中主体对客体提出访问要求;所述仲裁机构采用UML描述语言的一状态机图依据所述计算机系统安全模型的安全策略来对所述计算机系统安全模型中主体提出的访问要求进行仲裁。所述访问发起机构采用UML描述语言的一状态机图描述所述计算机系统安全模型中主体对客体提出访问要求的方法为所述访问发起机构首先经初始化确定主体s客体 O的安全级别以及主体对客体的访问方式a ;然后向将访问申请(S,O, a)交由所述访问仲裁机构进行仲裁,若批准,则实施状态迁移,进入下一个系统状态,而无论申请成功与否,都会进入第二次申请,如此循环。所述仲裁机构采用UML描述语言的一状态机图依据所述计算机系统安全模型的安全策略来对所述计算机系统安全模型中主体提出的访问要求进行仲裁的方法为所述仲裁机构接到所述访问发起机构的访问申请后,依据计算机系统安全模型的访问控制规则对申请进行仲裁,并将结果返回给该访问申请机构;所述访问控制规则由该仲裁机构状态机图中的状态转换的守卫条件实现。所述状态机图中所涉及到的计算机系统安全模型的元素、属性由各自所对应的类图描述;所述类图用于保存对应状态机图中各个状态的属性并定义可能的行为。所述访问发起机构的类图保存了安全模型中所有与主、客体相关的属性,以及安全模型的各种敏感级,主体读过的客体的最高读敏感级reacLlevel、主体写过的客体的最高写敏感级write_level,以及读申请动作和写申请动作。所述安全模型为DBLP模型;所述DBLP模型中各种敏感级包括最小可写敏感级 a_mins、最大可读敏感级、客体最大敏感级标签L_min。、客体最小敏感级标签L_max。 和当前访问客体的敏感级标签level。。所述访问仲裁机构的类图保存了请求批准动作、请求非法动作和仲裁结束动作。所述预定的形式化验证工具为模型检测器;所述模型检测器为基于线性时态逻辑的模型检测器。所述UML模型转换模块利用形式化的语义转换算法将该UML模型转换为所述模型检测器所能处理的输入模型。本发明结合计算机系统安全模型一般采用自动机模型的特点,将安全模型分为三个部分安全状态集合、安全状态迁移集合以及状态迁移条件。安全状态集合主要包含了一个安全模型中所有能够到达的状态。状态迁移集合表示模型所允许的系统从一个安全状态迁移到另一个安全状态的过程。状态迁移条件则用来表明发生状态迁移所必须满足的约束条件。本发明将这三部分都用UML语言进行描述,既考虑到了计算机系统安全模型的静态结构、层次等问题,也可以处理计算机系统安全模型的动态特性,如在读写操作过程中导致的安全属性的违反。本发明方法的框架图如图1所示。本发明方法包含了三个层次计算机系统安全模型的UML描述、UML模型转换和基于模型检测技术的模型验证。计算机系统安全模型的UML描述需要将计算机系统安全模型中所有的状态、对状态迁移的约束用UML语言重新构造;UML模型转换则负责将UML图形转化为模型检测器所能接受的输入模型;最后使用模型检测器探索所有可能的安全状态迁移序列,以发现是否存在违反安全属性的状态存在。本发明的具体步骤如下步骤A 计算机系统安全模型的UML建模描述,通过对计算机系统安全模型中安全状态等抽象数据的实例化,利用UML的类图、等静态视图对安全模型加以描述;此外,为了描述安全模型的动态特性,引入UML状态机图,并构建安全模型进行访问仲裁的场景以描述计算机系统安全模型动态属性。步骤B:待验证安全属性的形式化描述,根据模型检测器所采用的描述方式,将待验证安全属性描述为时序逻辑公式。步骤C =UML模型转换,对UML模型的语义和模型检测器输入语言的语义进行关联分析,得到模型转换的执行算法;步骤D 安全模型属性分析,利用已得到的待验证安全属性的时态逻辑公式和由转换算法得到的安全模型作为模型检测器的输入,对模型的属性满足性进行分析。模型检测器会遍历计算机系统安全模型所有的状态以检查是否存在有违反待验证属性的情况。步骤E 结果输出,利用以上步骤可以对计算机系统安全模型是否满足待验证的安全属性进行验证。如果输出结果显示不满足,该方法会给出违反属性的具体执行路径;如果输出结果显示满足,则该安全模型满足该安全属性。本发明的积极效果本发明采用了软件开发人员所熟知的UML语言进行安全模型的建模,可以使开发人员在系统设计阶段及时地对所采用的安全模型进行形式化的验证,而无需附加的学习成本。此外,由于采用了模型检测作为验证手段,和现有方法相比,不仅自动化程度有所提高, 安全模型的验证能力有了明显改善,而且可以验证安全模型在自身结构上的缺陷,同时还可以验证对于时序属性的违反情况。
图1示出了基于UML与模型检测的安全模型验证方法的主要框架;图2示出了主体访问客体的安全状态迁移模式图3示出了访问发起机构的状态机图的建模;图4示出了仲裁机构的状态机图的建模;图5示出了两个状态机图的类图建模。
具体实施例方式本发明的输入是计算机系统安全模型与待验证的安全属性。输入信息分为两部分,一部分来源于将在开发中实施或已经实施的计算机系统安全模型,它可以来自任何一个需要安全增强的计算机软件系统及设备,如主机、服务器、入侵检测系统、路由器、防火墙等等。对这些设备上的安全机制经过形式化抽象、提取后得到的输入模型都可作为本发明的输入信息。另一部分来源于对这些系统、设备的安全需求或应满足的安全属性,如机密性、数据完整性等。以上信息要求完整全面,信息越完整,验证结果越准确。通过对输入信息的层层处理和分析,最后得到满足性判定结果,如不满足则给出违反属性的执行路径。下面给出详细过程。步骤A 计算机系统安全模型的UML建模描述。UML建模模块对计算机系统安全模型的UML建模,是通过UML视图的形式全面地描述安全模型的动、静态属性。在安全策略模型中,系统的安全状态通常由主体、客体和访问方式来表述。典型的计算机系统安全模型,如BLP模型是将系统状态描述为ν e V,V为系统状态集合,V = (b,K,f),其中^(Sxow)表示在某个特定的状态下,哪些主体以何种访问方式访问哪些客体,S是主体集,0为客体集,A = {read, write, append, execute}是访问操作集合;K表示访问控制矩阵,通常由访问控制规则得到;f = (level (s), Ievelc(S), Ievel(O)),表示主客体敏感标记函数,level (χ)表示对象χ的敏感级(安全级别), levelc(x)表示对象χ的当前敏感级,χ既可能是主体也可能是客体。由于通常情况下安全模型都是高度抽象的,没有对系统状态等数据的基数作出限定,而模型检测中有限状态机的规模却是固定的,因此本发明方法中,客户端采用一个UML状态机图来表示模型中主体对客体提出访问要求,称为访问发起机构,而服务器端用另一个UML状态机图依据安全模型的安全策略来对主体提出的访问要求来进行仲裁,称为仲裁机构,状态机图中所涉及到的安全模型的元素、属性由各自所对应的类图描述。这种建模方法使得对安全模型动态特性进行描述成为可能。访问发起机构和仲裁机构的状态机图、以及二者对应的类图的建模具体步骤如下1)访问发起机构的状态机图建模。访问发起机构用于再现主体对访问权限的申请过程先经初始化以获得自身的安全级别,然后随即获取要访问的客体以及访问操作,即确定主体s客体ο的安全级别以及主体对客体的访问方式a ;接着向仲裁机构发出信号,将访问申请(s,0,a)交由访问仲裁机构仲裁,若批准,则实施状态迁移,进入下一个系统状态,而无论申请成功与否,都会进入第二次申请,两次申请的客体及申请权限都可能不一样,如此循环。为了便于描述,我们以BLP 模型的一种改进模型一DBLP模型为待验证安全模型,待验证的安全属性为验证DBLP模型是否满足机密性。图3给出了访问发起机构状态机图的实例,它是对DBLP安全模型中访问发起过程的模拟。由于DBLP在于保护系统的机密性,所以我们在建模实例中发起了两次申请先进行读申请再进行写申请,视待验证模型的安全要求不同,对权限的申请顺序可以灵活调整和增减。2)仲裁机构的状态机图建模仲裁机构用于依据模型的安全策略描述以及访问控制矩阵K对访问发起机构提出的申请进行仲裁。仲裁机构在接到访问发起机构的访问申请后,依据安全模型访问控制规则对申请进行仲裁,并将结果返回给访问申请机构。访问控制规则由仲裁机构状态机图中的状态转换的守卫条件实现。图4给出了 DBLP安全模型的仲裁机构状态机图示例,图中方括号内的逻辑公式是UML状态机图的状态转换守卫条件,也就是DBLP模型的访问控制规则。不同的安全模型所对应的守卫条件可能不一样。3)类图建模类图用于保存对应状态机图中各个状态的属性并定义可能的行为。我们将系统当前的安全状态ν保存在访问发起机构的类图中的属性栏中。图5给出了 DBLP安全模型的类图实例,左侧为DBLP模型访问发起机构的类图,保存了包括主体最小可写敏感级a_mins 和最大可读敏感级;客体最大最小敏感级标签L_min。和Ljnax。;当前访问客体的敏感级标签level。;主体读/写过的客体的最高读/写敏感级read_level、Write_level。定义的动作有读申请ReqRead和写申请ReqWrite。右侧为访问仲裁机构的类图,仅定义了三个动作请求批准verified、请求非法hvalid和仲裁结束done。步骤B 待验证安全属性的形式化描述。待验证安全属性的形式化描述,是将待验证安全属性用形式化验证工具所采用的数理逻辑公式描述。本发明方法采用了模型检测器作为形式化验证安全模型的工具,模型检测技术是基于时态逻辑的,时态逻辑分为两种线性时态逻辑(LTL)和计算树时态逻辑。 由于我们使用的模型检测器SPIN基于线性时态逻辑,所以我们采用了 LTL公式从信息流的角度来描述待验证安全属性。我们以机密性为例。机密性的目标是为了防止非可信主体将高机密级别的信息泄露给低机密级别的主体。虽然机密性要求任何由高等级向低等级的信息流都不能出现,这其中也包括了隐通道在内,但是,一般来说,安全策略模型旨在控制各类显式非法信息在非可信主体与客体间传递,隐通道并不在其考虑范围内。因此,我们可以用线性时态逻辑描述机密性要求如下定义readlike =OXS- {True,False},判断主体s是否以只读操作访问客体o,如果是则返回True,否则为False ;writelike =OXS- {True, False},判断主体s是否以只写操作访问客体o,如果是则返回True,否则为False ;记s为非可信主体,O(S)表示主体s所访问过的客体集合,levelc(o)表示客体ο 当前安全敏感标记。那么,机密性要求表示如下
^do1,O2 e O(j) · {readlike(ox) -> Qwritelikeip2 ))八 Ievelc (o2 ) ^ Ievelc (O1)步骤C:UML模型转换。为了使用现有模型检测工具对安全模型进行属性验证,UML模型转换模块需要将UML视图(包括状态机图和相应的类图)翻译为模型检测器所能接受的输入模型。由于我们采用了模型检测器SPIN对我们构建的安全策略模型的UML模型进行安全属性的验证。我们需要将UML图翻译为SPIN的输入语言PROMELA。UML的模型转换原理,是利用形式化的语义转换算法,采用PROMELA的进程原语表示UML状态机图,类图则通过PROMELA 语言中的自定义数据结构实现。(参见文献Alexander Knapp and Stephan Merz. Model Checkingand Code Generation for UML State Machines and Collaborations[R]. In Dominik Haneberg, Gerhard Schellhorn, and Wolfgang Reif, editors, Proc.5th ffsh. Tools for System Design andVerifixation, pages 59-64. Technical Report 2002-11, Institut fiir Informatik, Universitat Augsburg, 2002.)步骤D :安全模型属性分析。安全模型属性分析,即利用模型检测工具对已经由UML模型转化而来的安全模型进行状态遍历,并计算在每个状态上步骤B中得到的LTL公式的满足性。如果在遍历过程中LTL公式恒为真,则模型满足属性;若存在使得公式为假的状态,则模型不满足属性。步骤E 结果输出。利用以上步骤可以得到安全模型对待验证安全属性的满足情况,结果输出或者给出“满足”信息,或者给出安全模型中存在的违反该属性的状态迁移路径。该迁移路径即是模型漏洞的理论再现,可以利用对采用该安全模型的实际系统进行漏洞测试及渗透性测
试ο尽管为说明目的公开了本发明的具体实施例和附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。因此,本发明不应局限于最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
权利要求
1.一种计算机系统安全模型验证方法,其步骤为DUML建模模块采用UML描述语言描述计算机系统安全模型的动、静态属性,得到计算机系统安全模型的UML模型;2)将待验证安全属性用预定的形式化验证工具所采用的数理逻辑公式进行描述;3)UML模型转换模块将该UML模型转换为该预定形式化验证工具所能处理的输入模型;4)该预定形式化验证工具对该输入模型进行状态遍历,并计算幻中得到的公式在每个状态上的满足性,输出验证结果。
2.如权利要求1所述的方法,其特征在于所述UML模型包括访问发起机构和仲裁机构; 所述访问发起机构采用UML描述语言的一状态机图描述所述计算机系统安全模型中主体对客体提出访问要求;所述仲裁机构采用UML描述语言的一状态机图依据所述计算机系统安全模型的安全策略来对所述计算机系统安全模型中主体提出的访问要求进行仲裁。
3.如权利要求2所述的方法,其特征在于所述访问发起机构采用UML描述语言的一状态机图描述所述计算机系统安全模型中主体对客体提出访问要求的方法为所述访问发起机构首先经初始化确定主体s客体ο的安全级别以及主体对客体的访问方式a ;然后向将访问申请(s,0,a)交由所述访问仲裁机构进行仲裁,若批准,则实施状态迁移,进入下一个系统状态,而无论申请成功与否,都会进入第二次申请,如此循环。
4.如权利要求2所述的方法,其特征在于所述仲裁机构采用UML描述语言的一状态机图依据所述计算机系统安全模型的安全策略来对所述计算机系统安全模型中主体提出的访问要求进行仲裁的方法为所述仲裁机构接到所述访问发起机构的访问申请后,依据计算机系统安全模型的访问控制规则对申请进行仲裁,并将结果返回给该访问申请机构;所述访问控制规则由该仲裁机构状态机图中的状态转换的守卫条件实现。
5.如权利要求2所述的方法,其特征在于所述状态机图中所涉及到的计算机系统安全模型的元素、属性由各自所对应的类图描述;所述类图用于保存对应状态机图中各个状态的属性并定义可能的行为。
6.如权利要求5所述的方法,其特征在于所述访问发起机构的类图保存了安全模型中所有与主、客体相关的属性,以及安全模型的各种敏感级,主体读过的客体的最高读敏感级 reacLlevel、主体写过的客体的最高写敏感级write_level,以及读申请动作和写申请动作。
7.如权利要求6所述的方法,其特征在于所述安全模型为DBLP模型;所述DBLP模型中各种敏感级包括最小可写敏感级a_mins、最大可读敏感级、客体最大敏感级标签 L_min。、客体最小敏感级标签L_maX。和当前访问客体的敏感级标签level。。
8.如权利要求5所述的方法,其特征在于所述访问仲裁机构的类图保存了请求批准动作、请求非法动作和仲裁结束动作。
9.如权利要求1所述的方法,其特征在于所述预定的形式化验证工具为模型检测器; 所述模型检测器为基于线性时态逻辑的模型检测器。
10.如权利要求9所述的方法,其特征在于所述UML模型转换模块利用形式化的语义转换算法将该UML模型转换为所述模型检测器所能处理的输入模型。
全文摘要
本发明公开了一种计算机系统安全模型验证方法,属于操作系统安全技术领域,本发明的方法为1)ML建模模块采用UML描述语言描述计算机系统安全模型的动、静态属性,得到计算机系统安全模型的UML模型;2)将待验证安全属性用预定的形式化验证工具所采用的数理逻辑公式进行描述;3)UML模型转换模块将该UML模型转换为该预定形式化验证工具所能处理的输入模型;4)该预定形式化验证工具对该输入模型进行状态遍历,并计算2)中得到的公式在每个状态上的满足性,输出验证结果。本发明提高了验证的自动化程度和验证能力,同时可以验证安全模型在自身结构上的缺陷以及对于时序属性的违反情况。
文档编号G06F21/00GK102194061SQ201010116868
公开日2011年9月21日 申请日期2010年3月2日 优先权日2010年3月2日
发明者冯登国, 张阳, 程亮 申请人:中国科学院软件研究所