基于权限依赖图的网络运维脆弱性分析方法转让专利

申请号 : CN201911120450.3

文献号 : CN110838945A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 白玮郭世泽潘志松王陈雨陈哲张磊王彩玲

申请人 : 中国人民解放军陆军工程大学

摘要 :

本发明公开了一种基于权限依赖图的网络运维脆弱性分析方法,权限依赖图,四元组来表示,即:PDG=(N′,E′,π′,σ′),N′是节点的集合,E′是边的集合,函数σ′:N′×{0,1}是对节点的赋值函数。本发明基于权限依赖图,对运维配置脆弱性分析方法进行了改进,通过分析权限之间的依赖关系,计算网络运维脆弱性度量指标;通过基于权限权重矩阵的运维脆弱性度量指标,能够有效地降低算法复杂度,缩短算法执行时间。

权利要求 :

1.一种基于权限依赖图的网络运维脆弱性分析方法,其特征在于:四元组来表示,即:

PDG=(N′,E′,π′,σ′),其中:

N′是节点的集合,在权限依赖图中,共有3类节点,分别是用户节点NPS、权限节点NPRI和AND节点NAND;用户节点表示某个用户,权限节点表示某个权限,而AND节点表示权限之间的“与”关系,视为一种用于辅助分析的权限;

函数π′:N′×L′为节点到节点类型的映射函数,其中L′={NPS,NPRI,NAND}是节点类型的集合;

E′是边的集合,所有的边均为有向边,表示权限之间的依赖关系;对于一条从节点na到节点nb的边,如果节点na是用户节点,而节点nb是权限节点,则表示用户na能够获得权限nb;

如果节点na为权限节点或AND节点,nb为权限节点,则表示任何已获得权限na的用户将能够获得权限nb;对于指向同一节点nb的多条边,如果节点nb的类型是权限节点,则多条边之间的关系是“或”的关系,即满足任意一条边的条件,则用户就能获得权限nb;如果节点nb的类型是AND节点,则多条边之间的关系是“与”的关系,即同时满足所有边的条件,用户才能够获得权限nb;

函数σ′:N′×{0,1}是对节点的赋值函数;对于所有的节点,均赋予一个整数值,这个值只能是0或者1,代表其是否是当前分析的用户,或当前分析的用户是否拥有该权限;当某个节点的值为0时,代表该用户不是当前分析的用户用户节点,或者当前分析的用户不拥有该权限,即权限节点和AND节点,反之,当某个节点的值为1时,代表该用户是当前分析的用户节点,或者当前分析的用户拥有该权限节点和AND节点。

2.根据权利要求1所述的基于权限依赖图的网络运维脆弱性分析方法,其特征在于基于权限依赖图的用户实际权限计算方法的输入为当前网络空间多域配置对应的权限依赖图pdg,当前用户u和他的初始权限向量uiv,其输出为他的实际权限向量uav,具体为:步骤1、权限依赖图pdg根据被分析的用户u和他的初始权限向量uiv;在这个过程中,所有的AND节点的值被设置为0;所有的用户节点,除了代表当前分析的用户,其值均被设置为

0,只有代表当前分析的用户的节点,它的值被设置为1;所有的权限节点的值根据uiv来设置,如果在uiv中,被分析的用户拥有某个权限,那么代表这个权限节点的值被设置为1,否则,这个权限节点的值被设置为0;当初始化完成后,将权限依赖图中的所有节点被分为两类,值为1的节点和值为0的节点,分别被命名为nodeSet_0和nodeSet_1;

步骤2、逐一分析所有从集合nodeSet_1里的节点指向集合nodeSet_0里的节点的边,如果该边的终点的类型不是AND节点,则将该终点从集合nodeSet_0中删除,添加到集合nodeSet_1中,并将其值改为1;如果该边的终点的类型是AND节点,则对所有到达该终点的边进行逐一分析,如果所有的边的起点的值均为1,那么将该终点的值改为1,并将其从集合nodeSet_1中删除,添加至集合nodeSet_0中;当所有的边均被分析过后,对于重新形成的集合nodeSet_0和nodeSet_1,重新查找所有从集合nodeSet_1中的节点指向集合nodeSet_0中的节点的边,如此往复,直至两个集合和跨集合的边均不再变化;

步骤3、根据权限依赖图pdg得到当前用户对应的实际权限向量uav,在这个过程中,如果权限依赖图中某个权限节点的值为1,则在uav中将该节点对应的权限设置为1,反之,如果权限依赖图中某个权限节点的值为0,则在uav中将该节点对应的权限设置为0;当对所有的权限节点分析完毕后,最终得到当前用户对应的实际权限向量uav。

3.根据权利要求2所述的基于权限依赖图的网络运维脆弱性分析方法,其特征在于如果认为当用户实际获得的权限和用户应该分配的权限相同时,网络是安全的,用户实际获得的权限与用户应得权限之间的差值作为网络脆弱性的度量指标。

4.根据权利要求3所述的基于权限依赖图的网络运维脆弱性分析方法,其特征在于度量网络运维配置脆弱性时,引入一个权重向量w∈RP×1,P为网络中所有权限的总数量,它表示不同权限的重要程度,对于该矩阵中的每一个元素,均有0≤wi≤1(1≤i≤P);那么在网络当前多域配置s,其脆弱性可以由式来度量:sec(s)=Fas(UDPM,UAPM,w)

其中,sec(s)是多域配置s的运维配置的脆弱性,函数Fas(UDPM,UAPM,W)是网络运维配置脆弱性度量函数。

5.根据权利要求4所述的基于权限依赖图的网络运维脆弱性分析方法,其特征在于实现度量函数的方式是基于用户权限矩阵差值的加权L1范数,所以将其命名为WLN:其中函数abs(Θ)是将矩阵Θ中的每一个元素取绝对值; 是计算矩阵Θ的L1范数,即求矩阵中的每一个元素的绝对值之和。

WLN指标度量的是用户应得权限UDPM和用户实际权限UAPM中不同的元素所占矩阵整体元素的比重,其值为介于0和1之间的有理数。由于矩阵UDPM和矩阵UAPM中的元素的值均为0或1,则二者的差矩阵中的元素的值可能为-1、0和1三种,所以对差矩阵每个元素求绝对值后,元素可能的值只有0和1两种,其中0代表该位置元素在UDPM和UAPM中相同,1代表该位置元素在UDPM和UAPM中不同;将该矩阵右乘以权重向量w,计算L1范数并归一化,则得到UDPM和UAPM中不同元素的权重占所有元素权重的比例,该比例越小,也就是WLN的值越大,则证明UDPM和UAPM越接近,即网络运维配置脆弱性越小,网络的整体安全性越好。

6.根据权利要求4所述的基于权限依赖图的网络运维脆弱性分析方法,其特征在于实现度量函数的方式是基于Jaccard相似系数来度量用户应得权限和实际权限的不同,所以将其命名为JAC:其中MPQ是一个与UDPM和UAPM结构相同的矩阵,其元素取值由以下规则确定:如果UDPMij=P且UAPMij=Q,则MPQij=1,否则MPQij=0。JAC表示了用户实际权限与用户应得权限之间的相似性。与WLN相同,JAC指标也是一个介于0到1之间的数字,其比值越高,代表用户实际权限与用户应得权限之间越相似,反之,则代表用户实际权限与用户应得权限之间差距越大。

说明书 :

基于权限依赖图的网络运维脆弱性分析方法

技术领域

[0001] 本发明涉及用户实际权限之间的依赖关系分析技术,具体涉及一种基于权限依赖图的网络运维脆弱性分析方法。

背景技术

[0002] 在进行网络运维脆弱性分析时,需要根据初始权限矩阵,然后利用权限变化规则得到最终的实际权限矩阵,专利201810991421.3提出一种网络运维脆弱性分析方法,该方法以网络规划设计和多域配置作为基本分析对象,以用户实际权限与应得权限之间的差值作为度量指标,建立相应的分析算法,有效发现因网络运行维护管理不当对网络安全性的影响,该方法思路相对简单,但是由于在计算过程中,对于每一条权限变化规则,均通过迭代的方法计算最终可能获得的权限,在利用整个规则集迭代计算用户实际权限的过程中,如果由某个规则变更了用户权限,即将进行一轮新的权限迭代计算,导致相应的权限计算复杂度较高,难以用于大规模的实际网络,为了降低算法复杂性,本发明提出了一种基于权限依赖图的用户实际权限计算方法,该方法更加关注于网络运维配置脆弱性的本质,即当前配置下的用户权限依赖关系。

发明内容

[0003] 1、本发明的目的
[0004] 本发明为了解决现有技术中多域信息表示图的运维配置脆弱性分析方法算法复杂度高,难以适应大规模实际网络,网络运维脆弱性度量难以反映权限重要程度的弱点,提出了权限依赖图的概念,对其进行了形式化的定义,并基于权限依赖图,对运维配置脆弱性分析方法进行了改进,实现用户实际权限的快速计算,并提出了两种基于权限权重向量的网络运维脆弱性度量指标,能够有效地反映目标网络的网络运维脆弱性。
[0005] 2、本发明所采用的技术方案
[0006] 权限依赖图表示更为核心的安全状态,即网络空间内用户权限的依赖关系。这种用户权限依赖关系,是网络空间内所有配置综合作用的结果,也是网络空间配置能够影响网络安全状态的核心原因。由此本发明公开了一种基于权限依赖图的网络运维脆弱性分析方法,四元组来表示,即:PDG=(N′,E′,π′,σ′),其中:
[0007] N′是节点的集合,在权限依赖图中,共有3类节点,分别是用户节点NPS、权限节点NPRI和AND节点NAND;用户节点表示某个用户,权限节点表示某个权限,而AND节点表示权限之间的“与”关系,视为一种用于辅助分析的权限;
[0008] 函数π′:N′×L′为节点到节点类型的映射函数,其中L′={NPS,NPRI,NAND}是节点类型的集合;
[0009] E′是边的集合,所有的边均为有向边,表示权限之间的依赖关系;对于一条从节点na到节点nb的边,如果节点na是用户节点,而节点nb是权限节点,则表示用户na能够获得权限nb;如果节点na为权限节点或AND节点,nb为权限节点,则表示任何已获得权限na的用户将能够获得权限nb;对于指向同一节点nb的多条边,如果节点nb的类型是权限节点,则多条边之间的关系是“或”的关系,即满足任意一条边的条件,则用户就能获得权限nb;如果节点nb的类型是AND节点,则多条边之间的关系是“与”的关系,即同时满足所有边的条件,用户才能够获得权限nb;
[0010] 函数σ′:N′×{0,1}是对节点的赋值函数;对于所有的节点,均赋予一个整数值,这个值只能是0或者1,代表其是否是当前分析的用户,或当前分析的用户是否拥有该权限;当某个节点的值为0时,代表该用户不是当前分析的用户(用户节点),或者当前分析的用户不拥有该权限(权限节点和AND节点),反之,当某个节点的值为1时,代表该用户是当前分析的用户(用户节点),或者当前分析的用户拥有该权限(权限节点和AND节点)。
[0011] 更进一步,基于权限依赖图的用户实际权限计算方法的输入为当前网络空间多域配置对应的权限依赖图pdg,当前用户u和他的初始权限向量uiv,其输出为他的实际权限向量uav,具体为:
[0012] 步骤1、权限依赖图pdg根据被分析的用户u和他的初始权限向量uiv;在这个过程中,所有的AND节点的值被设置为0;所有的用户节点,除了代表当前分析的用户,其值均被设置为0,只有代表当前分析的用户的节点,它的值被设置为1;所有的权限节点的值根据uiv来设置,如果在uiv中,被分析的用户拥有某个权限,那么代表这个权限节点的值被设置为1,否则,这个权限节点的值被设置为0;当初始化完成后,将权限依赖图中的所有节点被分为两类,值为1的节点和值为0的节点,分别被命名为nodeSet_0和nodeSet_1;
[0013] 步骤2、逐一分析所有从集合nodeSet_1里的节点指向集合nodeSet_0里的节点的边,如果该边的终点的类型不是AND节点,则将该终点从集合nodeSet_0中删除,添加到集合nodeSet_1中,并将其值改为1;如果该边的终点的类型是AND节点,则对所有到达该终点的边进行逐一分析,如果所有的边的起点的值均为1,那么将该终点的值改为1,并将其从集合nodeSet_1中删除,添加至集合nodeSet_0中;当所有的边均被分析过后,对于重新形成的集合nodeSet_0和nodeSet_1,重新查找所有从集合nodeSet_1中的节点指向集合nodeSet_0中的节点的边,如此往复,直至两个集合和跨集合的边均不再变化;
[0014] 步骤3、根据权限依赖图pdg得到当前用户对应的实际权限向量uav,在这个过程中,如果权限依赖图中某个权限节点的值为1,则在uav中将该节点对应的权限设置为1,反之,如果权限依赖图中某个权限节点的值为0,则在uav中将该节点对应的权限设置为0;当对所有的权限节点分析完毕后,最终得到当前用户对应的实际权限向量uav。
[0015] 更进一步,如果认为当用户实际获得的权限和用户应该分配的权限相同时,网络是安全的,用户实际获得的权限与用户应得权限之间的差值作为网络脆弱性的度量指标。
[0016] 因为用户的不同权限,对网络安全的重要程度是不一样的,度量网络运维配置脆P×1弱性时,引入一个权重向量w∈R ,P为网络中所有权限的总数量,它表示不同权限的重要程度,对于该矩阵中的每一个元素,均有0≤wi≤1(1≤i≤P);那么在网络当前多域配置s,其脆弱性可以由式来度量:
[0017] sec(s)=Fas(UDPM,UAPM,w)
[0018] 其中,sec(s)是多域配置s的运维配置的脆弱性,函数Fas(UDPM,UAPM,W)是网络运维配置脆弱性度量函数。
[0019] 对于度量函数的不同实现,可以从不同的侧面来度量网络运维配置的脆弱性。
[0020] 可采用的实现度量函数的方式是基于用户权限矩阵差值的加权L1范数,所以将其命名为WLN:
[0021]
[0022] 其中函数abs(Θ)是将矩阵Θ中的每一个元素取绝对值; 是计算矩阵Θ的L1范数,即求矩阵中的每一个元素的绝对值之和。
[0023] WLN指标度量的是用户应得权限UDPM和用户实际权限UAPM中不同的元素所占矩阵整体元素的比重,其值为介于0和1之间的有理数。由于矩阵UDPM和矩阵UAPM中的元素的值均为0或1,则二者的差矩阵中的元素的值可能为-1、0和1三种,所以对差矩阵每个元素求绝对值后,元素可能的值只有0和1两种,其中0代表该位置元素在UDPM和UAPM中相同,1代表该位置元素在UDPM和UAPM中不同;将该矩阵右乘以权重向量w,计算L1范数并归一化,则得到UDPM和UAPM中不同元素的权重占所有元素权重的比例,该比例越小,也就是WLN的值越大,则证明UDPM和UAPM越接近,即网络运维配置脆弱性越小,网络的整体安全性越好。
[0024] 可采用的实现度量函数的方式是基于Jaccard相似系数来度量用户应得权限和实际权限的不同,所以将其命名为JAC:
[0025]
[0026] 其中MPQ是一个与UDPM和UAPM结构相同的矩阵,其元素取值由以下规则确定:如果UDPMij=P且UAPMij=Q,则MPQij=1,否则MPQij=0。JAC表示了用户实际权限与用户应得权限之间的相似性。与WLN相同,JAC指标也是一个介于0到1之间的数字,其比值越高,代表用户实际权限与用户应得权限之间越相似,反之,则代表用户实际权限与用户应得权限之间差距越大。
[0027] 3、本发明所采用的有益效果
[0028] (1)本发明针对目标网络进行运维脆弱性的快速分析,提出一种网络多域渗透路径发现算法,其优点是准确且快速,提出了两种基于权限权重向量的运维脆弱性分析指标,其优点是可以在计算运维脆弱性时,有效考虑权限之间的重要性差异。通过实验证明,该算法能够有效地降低算法复杂度,缩短算法执行时间。
[0029] (2)本发明基于权限依赖图,对运维配置脆弱性分析方法进行了改进,并提出了多域渗透路径发现算法。通过实验证明,该算法不仅仅能够有效地降低算法复杂度,缩短算法执行时间,而且能够有效发现潜在的攻击用户通过综合物理域、网络域、信息域动作,实现网络渗透的路径。

附图说明

[0030] 图1为权限依赖图示例;
[0031] 图2为基于EPP边的权限依赖图生成效果图;
[0032] 图3为实验网络结构示意图;
[0033] 图4为利用多域信息示意图;
[0034] 图5为权限依赖图分析网络运维脆弱性示意图;
[0035] 图6为网络运维配置脆弱性分析算法性能示意图(1);
[0036] 图7为网络运维配置脆弱性分析算法性能示意图(2);
[0037] 图8为网络运维配置脆弱性分析算法性能(3)。

具体实施方式

[0038] 下面结合本发明实例中的附图,对本发明实例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
[0039] (一)权限依赖图的定义
[0040] 为了实现用户实际权限的快速计算,本发明提出了权限依赖图的概念,定义权限依赖图PRG为有向图,可以用四元组来表示,即:权限依赖图,由四元组来表示,即:PDG=(N′,E′,π′,σ′)。其中:
[0041] N′是节点的集合。在权限依赖图中,共有3类节点,分别是用户节点、权限节点和AND节点。用户节点表示某个用户,权限节点表示某个权限,而AND节点表示权限之间的“与”关系,可以看成一种用于辅助分析的权限。函数π′:N′×L′为节点到节点类型的映射函数,其中L′={NPS,NPRI,NAND}是节点类型的集合,NPS、NPRI和NAND分别表示节点类型为用户节点、权限节点和AND节点。
[0042] E′是边的集合。所有的边均为有向边,表示权限之间的依赖关系。对于一条从节点na到节点nb的边,如果节点na是用户节点,而节点nb是权限节点,则表示用户na能够获得权限nb;如果节点na为权限节点或AND节点,nb为权限节点,则表示任何已获得权限na的用户将能够获得权限nb。对于指向同一节点nb的多条边,如果节点nb的类型是权限节点,则多条边之间的关系是“或”的关系,即满足任意一条边的条件,则用户就能获得权限nb;如果节点nb的类型是AND节点,则多条边之间的关系是“与”的关系,即同时满足所有边的条件,用户才能够获得权限nb。
[0043] 函数σ′:N′×{0,1}是对节点的赋值函数。对于所有的节点,均赋予一个整数值,这个值只能是0或者1,代表其是否是当前分析的用户,或当前分析的用户是否拥有该权限。当某个节点的值为0时,代表该用户不是当前分析的用户(用户节点),或者当前分析的用户不拥有该权限(权限节点和AND节点),反之,当某个节点的值为1时,代表该用户是当前分析的用户(用户节点),或者当前分析的用户拥有该权限(权限节点和AND节点)。,其中图1为一张典型的权限依赖图:
[0044] 在图1中,存在10个节点,其中6个权限节点,2个用户节点和2个AND节点,共同表示网络中可能存在的权限关系,如拥有权限P1可以获得权限P2,同时获得权限P2和P3才能够获得权限P4,用户Alice可以获得权限P5,而用户Bob如果获得了权限P5,则可以获得权限P6,同样,获得权限P3后也可以直接获得权限P6。可以看到,在权限依赖图中,多条指向同一权限节点的边之间是一个“或”的关系,如获得权限P3,或者用户Bob如果获得了权限P5,都可以获得到权限P6,而多个指向AND节点的边,之间是“与”的关系,如只能同时获得权限P2和P3才能够获得权限P4。
[0045] 由于权限依赖图中的节点除了权限节点外,还有用户节点和AND节点,使得权限依赖图具有网络安全策略的表示能力,使得权限依赖图不仅仅能够表达网络域安全防护策略所带来的权限变化规则,而且能够表达物理域和信息域中的安全防护策略,特别是基于人员生物特征的安全防护策略。所以,对于不同的用户权限变化规则集,均可以将其表示成不同的权限依赖图。
[0046] (二)与多域信息表示图的异同
[0047] 多域信息表示图和权限依赖图二者之间,具有十分紧密的关系,其相同点主要表现在二者均是对网络空间多域配置的某种表示,能够表示当前网络空间内配置的语义信息。利用多域信息表示图或权限依赖图,均能够通过用户初始权限计算用户实际权限,进而分析网络运维配置脆弱性。
[0048] 但是二者在结构和表示的信息上,还是具有很多的不同。多域信息表示图表示的,包括网络空间的实体、实体关系、安全防护规则和权限依赖规则等信息,由于实体和实体关系的多样性,使得多域信息表示图能够表示的信息十分丰富,但比较繁杂;相较于多域信息表示图,权限依赖图表示更为核心的安全状态,即网络空间内用户权限的依赖关系。这种用户权限依赖关系,是网络空间内所有配置综合作用的结果,也是网络空间配置能够影响网络安全状态的核心原因。
[0049] (三)权限依赖图生成方法
[0050] 在定义了权限依赖图后,在分析网络运维脆弱性时,可以首先将多域信息表示图转化为权限依赖图,然后根据权限依赖图计算用户实际权限矩阵,并进行网络运维脆弱性度量。这个转化过程的目标是根据给定的多域信息表示图mdsg,利用其所表达的信息,构建出与其相对应的权限依赖图pdg。这个过程主要可以分为3步:
[0051] 首先需要构建一个空的权限依赖图pdg,该权限依赖图中不含有任何的节点和边。
[0052] 其次,向权限依赖图pdg中增加节点。对于多域信息表示图中mdsg的每一个节点n∈N,如果它代表一个用户,即π(n)=NR,那么在权限依赖图pdg中增加一个相应的节点n′,节点n′的类型同样为用户节点,即π′(n′)=NPS。类似的,对于多域信息表示图mdsg中的每一个权限v∈V,那么在权限依赖图pdg中增加一个相应的节点v′,节点v′的类型同样为权限节点,即π′(v′)=NPRI。
[0053] 再次,向权限依赖图pdg中增加边。向权限依赖图pdg中增加边的过程,实质上是对多域信息表示图mdsg中的每一条权限依赖关系,逐一检查其对权限关系的影响,其主要可以分为3种情况:
[0054] a.如果该条规则是针对所有用户的,且用户只需要获取到一个权限,不需要其他额外的条件,就可以获取到其他权限时,那么就添加一条从用户需要预先拥有的权限到最终拥有的权限的边。对于标准权限依赖规则中的规则2、规则3、规则4、规则6、规则7、规则8、规则11、规则12、规则13和规则14,均可以按照这个方法如此处理。比如说对于规则2,如果在多域信息表示图mdsg中,有一条从设备节点T1到空间节点S1的边(代表设备T1放置在空间S1中),则在对应的权限依赖图pdg中添加一条边,其起始点为代表S1空间进入权的节点,终点为代表T1的设备使用权的节点。
[0055] b.如果该条规则是针对特定用户的,或者用户需要满足额外的条件,才能够从一个权限获取到其他权限时,那么将首先添加一个类型为AND节点的节点nand,然后分别添加从初始权限和能够满足限制条件的节点(分析限制条件得出,可能为代表特定用户的节点,也可能为代表特定权限的节点)到nand的边,最后添加一条从节点nand到实际权限的边。对于标准权限依赖规则中的规则5,可以采取这个方式进行处理。例如,当在多域信息表示图mdsg中,有一条从服务S1到信息I1的边(表示服务S1的密码为I1),在构建权限依赖图时,首先在权限依赖图中添加节点nand,然后分别从代表服务S1的服务可达权,以及信息I1的信息知晓权的节点到nand的边,最后添加nand到服务S1的服务支配权的边。
[0056] c.如果在权限推理时,只需要满足多个限制条件中的一个,或者对于一个限制条件,可以有多个权限能够满足,那么可以将多个限制条件独立处理。例如,对于规则1,如果有2个空间防护策略,即允许用户u1持有ID卡d1,或者用户u2持有ID卡d2,从空间S1进入空间S2,可以对两条空间安全防护策略分别进行处理,即在权限依赖图中,分别添加两个AND节点n′and1和n′and2,然后分别添加从表示用户u1、d1设备使用权、S1空间进入权的节点到节点n′and1,从表示用户u2、d2设备使用权、S1空间进入权的节点到节点n′and2,从节点n′and1和n′and2到表示S2空间进入权的节点的边。对于标准权限依赖规则中的规则1、规则9、规则10,按照这种方式处理。
[0057] (四)用户实际权限计算
[0058] 基于权限依赖图的用户实际权限计算过程如算法2所示,其整体过程与基于多域信息表示图的算法类似,遵循基于多域信息表示图的用户实际权限计算算法的整体框架,只是在计算单个人员实际权限前,需要根据多域信息表示图构建权限依赖图,并在计算单个人员实际权限时,不再使用多域信息表示图,而是使用权限依赖图。
[0059]
[0060]
[0061] 相比于基于多域信息表示图的用户实际权限算法,算法2仅仅有两个改变:一是增加了一个函数createPDG(),表示将多域信息表示图转换为权限依赖图;二是在计算当前用户的实际权限时,函数getActualPrivilegeByPDG()传入的参数是权限依赖图pdg,而不是多域信息表示图mdsg,该函数的算法如算法3所示。
[0062]
[0063]
[0064] 基于权限依赖图的用户实际权限计算方法的输入为当前网络空间多域配置对应的权限依赖图pdg,当前用户u和他的初始权限向量uiv,其输出为他的实际权限向量uav。其主要的流程如下:
[0065] 首先,权限依赖图pdg根据被分析的用户u和他的初始权限向量uiv。在这个过程中,所有的AND节点的值被设置为0;所有的用户节点,除了代表当前分析的用户的用户,其值均被设置为0,只有代表当前分析的用户的节点,它的值被设置为1;所有的权限节点的值根据uiv来设置,如果在uiv中,被分析的用户拥有某个权限,那么代表这个权限节点的值被设置为1,否则,这个权限节点的值被设置为0。当初始化完成后,将权限依赖图中的所有节点被分为两类,值为1的节点和值为0的节点,分别被命名为nodeSet_0和nodeSet_1。
[0066] 然后,逐一分析所有从集合nodeSet_1里的节点指向集合nodeSet_0里的节点的边,如果该边的终点的类型不是AND节点,则将该终点从集合nodeSet_0中删除,添加到集合nodeSet_1中,并将其值改为1;如果该边的终点的类型是AND节点,则对所有到达该终点的边进行逐一分析,如果所有的边的起点的值均为1,那么将该终点的值改为1,并将其从集合nodeSet_1中删除,添加至集合nodeSet_0中。当所有的边均被分析过后,对于重新形成的集合nodeSet_0和nodeSet_1,重新查找所有从集合nodeSet_1中的节点指向集合nodeSet_0中的节点的边,如此往复,直至两个集合和跨集合的边均不再变化。
[0067] 最后,根据权限依赖图pdg得到当前用户对应的实际权限向量uav,在这个过程中,如果权限依赖图中某个权限节点的值为1,则在uav中将该节点对应的权限设置为1,反之,如果权限依赖图中某个权限节点的值为0,则在uav中将该节点对应的权限设置为0。当对所有的权限节点分析完毕后,最终得到当前用户对应的实际权限向量uav。
[0068] (五)复杂性分析
[0069] 本发明将分析基于权限依赖图的用户实际权限矩阵计算的复杂度,在这个过程中,使用在多域信息表示图中定义的相关符号。U是在用户实际权限矩阵计算中涉及的所有用户的数量;N是除了用户实体外,其他所有实体的数量;P是所有权限的数量;G是多域信息表示图中的所有边的数量;G′是对应的权限依赖图中的边的数量;L是所有权限依赖链长度的最大值(也就是能够从初始权限推理出实际权限的长度)。
[0070] 根据权限类型的定义,有:P=|Np|+2×|No|+2×|Nn|+2×|Nv|+Nf|+Ni|≈N;同样,根据多域信息表示图和权限依赖图的定义,有:U=|Nr|,G′≈O((P+U)2)。可以发现,算法3的外层循环最多循环L次,而其内层循环最多循环G′次,所以算法3的时间复杂度为O(L(N+U)2),因此,算法2的时间复杂度为O(UL(N+U)2)。根据复杂网络的小世界特性,L一般是一个较小的值,所以用户实际权限矩阵计算的复杂度为O(UL(N+U)2)≈O(U3+2U2N+UN2)。这意味着,对于一个小规模的网络,或者在一个用户数量随着网络规模呈线性增长的网络内,用户实际权限矩阵计算的复杂度大约为O(U3),而对于一个用户数量较少的大型网络,用户实际权限矩阵计算的复杂度大约为O(N2)。
[0071] 实施例
[0072] 建立了一个典型的网络空间模拟环境,该网络空间环境是M公司网络的一个简化。在该环境中,不仅仅模拟了物理设备、物理连接和网络服务,还包含了其所处的物理空间、存储的数字文件和信息,以及网络管理员和网络用户。在该环境中,共包含20个设备,其中包括1台路由器、1台防火墙、1台入侵防御系统,3台交换机(交换机1、交换机2和交换机3),6台服务器(Web服务器、数据库服务器、FTP服务器、门禁服务器、办公系统服务器和内部Web服务器),3台门禁系统前端机(门禁机1,门禁机2和门禁机3),以及5台终端(终端T1、终端T2、终端T3、终端T4和终端T5)。各个设备之间的物理连接如图3所示。
[0073] 利用配套开发的网络运维脆弱型分析工具,可以对本发明提出的算法进行实验和评估,验证本发明所提出的算法的有效性和性能。所有的实验在一台Lenovo X1 Carbon笔记本上进行,配置i7-5500U CPU和8GB内存。共进行三个实验:实验1通过构建不同规模的网络,对基于多域信息表示图的运维配置脆弱性分析算法和基于权限依赖图的运维配置脆弱性分析算法的性能进行了测试和对比,证明了基于权限依赖图的运维配置脆弱性分析算法的有效性;实验2进一步地扩展实验环境,对基于权限依赖图的运维配置脆弱性分析算法的性能进行了进一步的评估。
[0074] (1)实验1
[0075] 在实验1中,以图3所示的网络空间环境为基础,通过不断增加计算机终端设备和人员数量,构建了11个不同规模的网络空间环境,然后分别使用多域信息表示图和权限依赖图,对网络运维配置脆弱性进行了分析,记录和比较两种方法所耗费的时间。图4-5给出了在节点为192个,边为555条时,分别利用多域信息表示图和权限依赖图计算用户实际权限计算,进而分析网络运维配置脆弱性的截图。11个不同规模的网络空间的分析结果,如表2所示:
[0076] 表2网络运维配置脆弱性分析算法时间消耗对比
[0077]
[0078] (2)实验2
[0079] 实验2在实验1的基础上,进一步对基于权限依赖图的网络运维配置脆弱性分析算法的性能进行详细评估。首先在实验1的基础上,测试了在相应网络环境下,基于权限依赖图的网络运维配置脆弱性分析所消耗的内存,接着比较了用户数量固定的情况下,网络规模的变化对于算法时间消耗和内存消耗的影响,最后比较了在网络规模固定的情况下,用户数量的变化对于算法时间消耗和内存消耗的影响。实验结果分别如表3(图6)、表4(图7)和表5(图8)所示。
[0080] 表3网络运维配置脆弱性分析算法性能(1)
[0081]
[0082]
[0083] 表4网络运维配置脆弱性分析算法性能(2)
[0084]
[0085] 表5网络运维配置脆弱性分析算法性能(3)
[0086]
[0087] (3)实验结果讨论
[0088] 通过分析实验1的结果可以发现,在引入权限依赖图后,网络运维配置脆弱性分析算法的性能有了较大的提升。随着网络规模的不断扩大,这种性能提升愈加明显,在节点数量为2208,关系数量为7357的网络上,其使用的时间不足原时间的1%。比较基于多域信息表示图的单用户实际权限算法和算法3可知,基于多域信息表示图的网络运维配置脆弱性分析,如果用户的实际权限比初始权限多m个,则在最坏的情况下,需要使用所有权限依赖规则进行m遍推理,而每次使用某条规则进行权限推理时,均需要逐一查找在当前权限下,能够满足推理条件的权限或权限集合,这个过程十分耗时,而基于权限依赖图的网络运维配置脆弱性分析,相当于预先将可能满足各推理条件的权限或权限集合一一列出,仅当某个权限或权限集合能够推理出其他权限时,才使用其进行推理,节省了大量的推理条件枚举的过程,从而大大提升了算法效率。
[0089] 通过分析实验2的结果可以发现,基于权限依赖图的网络运维配置脆弱性分析算法,具有较好的可扩展性,能够满足不同规模的网络运维配置脆弱性分析的需求,从表3(图6)、表4(图7)和表5(图8)所列的结果可知,随着网络规模的不断扩大,在时间耗费上呈一个多项式级的增长,在内存消耗上是一个接近线性的增长。如果使用一个笔记本电脑,对于一个具有450个设备,450个用户的网络进行网络运维配置脆弱性分析,时间耗费不超过1.5个小时,内存消耗不超过180MB。更重要的是,根据算法2可知,每个用户的实际权限均是被独立计算的,这个算法可以被简单地并行化,这也意味着通过使用计算集群,这个计算时间能够被进一步的减少。
[0090] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。