一种基于分布式系统的节点性质识别方法
技术领域
本发明涉及一种计算机分布式系统技术领域,特别是一种基于分布式系统的节点性质识别方法。
背景技术
由于分布式系统中分布性、开放性和匿名性的特点,导致其容易受到攻击。Sybil攻击(可以译作女巫攻击),是指用户可以创建多个虚假身份,从而利用这些身份控制或影响系统的大量正常节点的攻击方式。资源共享(例如文件下载)是分布式系统中一个重要的应用。正常提供资源的节点称为善意节点;如果节点只是获取其他节点的资源,不提供资源给其他节点,这样的节点称为Sybil节点。
一个信任的中心认证机构通过为每个节点分配唯一的标识符,可以有效阻止Sybil攻击。但该机制需要中心认证机构,在很多情况下不适用,例如,很难选择或建立整个系统都信任的独立实体。中心认证机构会成为一个瓶颈,并可能引起QoS攻击。由此可见,现有技术仍然难以有效地抗击Sybil攻击。
发明内容
有鉴于此,本发明要解决的问题是,提出了一种的基于分布式系统的节点性质识别方法,以解决现有技术存在的难以有效地抗击Sybil攻击的技术问题,提升了分布式系统的安全性。
本发明的技术解决方案是,提供一种以下的基于分布式系统的节点性质识别方法,包括以下步骤:
将分布式系统中的申请资源或提供资源的参与方视为节点;所述节点包括善意节点、Sybil节点和待定节点;
节点间有提供资源或获得资源的记录,则视为形成一条连接边;
在待定节点作为申请者发出资源申请时,假设接收该资源申请的提供资源的参与方为善意节点,在随机路由中,提取申请者节点的特征;
通过建立算法模型,采用给定的训练集来训练该算法模型,并评估该算法模型准确率;使用测试集数据评估模型准确率,待所述算法模型的准确率达到预期准确率时,则利用该算法模型对所述发出资源申请的待定节点的性质进行识别和预测,以决定是否向其提供资源。
可选的,随机路由的选择是指,如果一个节点的度为m,那么选择相邻节点为下一跳的可能性均为1/m,从申请者节点或者提供者节点出发随机寻找一条路径,路径长度为w,任意两个相邻节点间距离作为一个单位长度,则路径长度w为单位长度的倍数,若申请者节点与提供者节点之间的最短路径中节点数为L。
可选的,若申请者节点与提供者节点之间的最短路径中节点数为L,则在w>=1/2L的情况下,从申请者节点与提供者节点出发的随机路径存在交集节点,则从申请者节点所提取的特征,包括从申请者节点与提供者节点出发的随机路径的交集节点的特征;在w<1/2L的情况下,从申请者节点与提供者节点出发的随机路径不存在交集节点,则从申请者节点所提取的特征,不包括从申请者节点与提供者节点出发的随机路径的交集节点的特征。
可选的,所述从申请者节点所提取的特征,还包括从申请者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征、从申请者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数。
可选的,对“从申请者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征、从申请者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数、从提供者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数”特征的数值范围作归一化处理,采用K-means聚类算法处理后,提取远、中、近三个位置的特征数据。
可选的,利用机器学习算法中的AdaBoost算法在给定训练集上进行训练,所述训练集由从申请者节点和提供者节点所提取的特征以及给定节点的性质得到,从训练集的训练数据中学习一系列弱分类器,并将这些弱分类器组合成一个强分类器,利用所述强分类器对未知待定节点的性质进行识别。
可选的,所述机器学习算法中的AdaBoost算法,具体如下:给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有特征;yi为相应的标记,yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;
定义f(x)为当前学习到的分类器,训练的目的是为了让损失函数
逐步减小;
在第m+1轮的训练中,fm+1(x)=fm(x)+h(x),目的要找到h(x)让fm+1(x)尽可能接近y;采用梯度提升算法,使用决策树cart来拟合残差,得到:
其中J是特征总数,j是第j个特征,m是指m棵树;训练完成后得到m棵树组成的分类器:
可选的,采用人工神经网络进行分类,建立模型:
给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有的15个特征;yi为相应的标记,yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;
所述人工神经网络的架构包括输入层、隐藏层和输出层,其中隐藏层为一层或多层,隐藏层的数量作为一个超参数,在训练中根据准确度进行调整;其损失函数采用交叉熵(cross entropy),采用反向传播的方式进行训练。
采用本发明,与现有技术相比,本发明具有以下优点:本发明采用随机路径采样技术,通过对路径中节点的不同特征以及资源数信息进行分析,根据提取到的周围节点的特征来判断节点的性质,基于机器学习算法或人工神经网络采用给定训练集进行训练,进而用以识别未知待定节点的性质。本发明能有效地识别Sybil节点,从而抗击Sybil攻击。
附图说明
图1为本发明中节点的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细描述,但本发明并不仅仅限于这些实施例。本发明涵盖任何在本发明的精神和范围上做的替代、修改、等效方法以及方案。
为了使公众对本发明有彻底的了解,在以下本发明优选实施例中详细说明了具体的细节,而对本领域技术人员来说没有这些细节的描述也可以完全理解本发明。
在下列段落中参照附图以举例方式更具体地描述本发明。需说明的是,附图均采用较为简化的形式且均使用非精准的比例,仅用以方便、明晰地辅助说明本发明实施例的目的。
参考图1所示,示意了本发明中节点以及随机路由。图中,其中w表示路径长度,A、B分别表示两个节点,B指向A表示节点B提供资源给节点A,作为指向A的正方向。将分布式系统中的申请资源或提供资源的参与方视为节点;所述节点包括善意节点、Sybil节点和待定节点;
节点间有提供资源或获得资源的记录,则视为形成一条连接边;
在待定节点作为申请者发出资源申请时,假设接收该资源申请的提供资源的参与方为善意节点,在随机路由中,分别提取申请者节点和提供者节点的特征,通过建立算法模型,采用给定的训练集来训练该算法模型,并评估该算法模型准确率;使用测试集数据评估模型准确率,待所述算法模型的准确率达到预期准确率时,则利用该算法模型对所述发出资源申请的待定节点的性质进行识别和预测,以决定是否向其提供资源,以决定是否向其提供资源。
随机路由的选择是指,如果一个节点的度为m,那么选择相邻节点为下一跳的可能性均为1/m,从申请者节点或者提供者节点出发随机寻找一条路径,路径长度为w,任意两个节点间的距离作为一个单位长度,则路径长度w为单位长度的倍数。根据路径长度w的长度,决定申请者与提供者的随机路由中是否存在交集节点,若申请者节点与提供者节点之间的最短路径中节点数为L,则在w>=1/2L的情况下,从申请者节点与提供者节点出发的随机路径存在交集节点,此时可获取交集节点的特征;反之则不存在交集节点,此时则不获取交集节点的特征。
本发明实施例中,可以提取申请者节点的特征或者同时提取申请者与提供者节点的特征。申请者节点的特征更具有直接的表征其属性的意义,提供者节点的特征是用于辅助判断申请者节点性质的。在实施例描述中,以同时提取二者的特征为例,若只提取申请者节点的特征也可参考以下例子。
从申请者节点和提供者节点所提取的特征,包括从申请者节点与提供者节点出发的随机路径的交集节点的特征、从申请者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征、从提供者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征。
所述从申请者节点所提取的特征,还包括从申请者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数、从提供者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数。
从申请者节点出发所提取的特征与从提供者节点出发所提取的特征越类似,则判断申请者为善意节点可能性越大。
对“从申请者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征、从提供者节点出发的随机路径之距离远、中、近三个位置中的不同性质或类型节点的特征、从申请者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数、从提供者节点出发的随机路径之距离远、中、近三个位置不同传递方向的资源数”特征的数值范围作归一化处理,采用K-means聚类算法处理后,提取远、中、近三个位置的特征数据。
利用机器学习算法中的AdaBoost算法在给定训练集上进行训练,所述训练集由从申请者节点和提供者节点所提取的特征以及给定节点的性质得到,从训练集的训练数据中学习一系列弱分类器,并将这些弱分类器组合成一个强分类器,利用所述强分类器对未知待定节点的性质进行识别。
本发明所提取的节点特征以及其与节点性质的关联度,具体如下:
(1)从申请者节点与提供者节点出发的随机路径,交集节点的个数。
关联度:交集节点的个数越多,申请者与提供者这两个节点性质相同的可能性越大。
(2)交集节点中善意节点个数。
关联度:交集节点中善意节点个数越多,申请者是善意节点的可能性就越大。
(3)交集节点中Sybil节点的个数。
关联度:交集节点中Sybil节点个数越多,申请者是Sybil节点的可能性就越大。
(4)申请者节点出发的随机路径中,距离远、中、近三个位置中善意节点个数。
关联度:离申请者越近,善意节点越多,申请者为善意节点的可能越多就越大。
(5)申请者节点出发的随机路径中,距离远、中、近三个位置中Sybil节点个数。
关联度:离申请者越近,Sybil节点越多,申请者为Sybil节点的可能性就越大。
(6)申请者节点出发的随机路径中,距离远、中、近三个位置中正向提供资源的节点个数(正向指的是指向申请者节点方向)。
关联度:离申请者越近,正向提供资源的节点个数越多,说明申请者一直在获得其他节点的资源,申请者为Sybil节点的可能性就越大。
(7)申请者节点出发的随机路径中,距离远、中、近三个位置中反向提供资源的节点个数(反向指的是背离申请者节点的方向)
关联度:离申请者越近,反向提供资源的节点个数越多,说明申请者一直在提供其他节点资源,申请者为善意节点的可能性就越大。
(8)申请者节点出发的随机路径中,距离远、中、近三个位置中正向提供的资源数。
关联度:离申请者越近,正向提供资源的数越多,说明申请者以及和它附近的节点获得其他节点的资源越多,申请者为Sybil节点的可能性就越大。
(9)申请者节点出发的随机路径中,距离远、中、近三个位置中反向提供的资源数。
关联度:离申请者越近,反向提供资源的数越多,说明申请者以及和它附近的节点提供给其他节点的资源越多,申请者为善意节点的可能性就越大。
(10)提供者节点出发的随机路径中,距离远、中、近三个位置中善意节点个数。
(11)提供者节点出发的随机路径中,距离远、中、近三个位置中Sybil节点个数。
(12)提供者节点出发的随机路径中,距离远、中、近三个位置中正向提供资源的节点个数。
(13)提供者节点出发的随机路径中,距离远、中、近三个位置中反向提供资源的节点个数。
(14)提供者节点出发的随机路径中,距离远、中、近三个位置中正向提供资源个数。
(15)提供者节点出发的随机路径中,距离远、中、近三个位置中反向提供资源个数。
特征10-15关联度:如果申请者的特征与提供者的特征越类似,那么申请者为善意节点可能性越大;反之,申请者为Sybil节点的可能性就越大。
所述机器学习算法中的AdaBoost算法,具体如下:给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有特征;yi为相应的标记,yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;也可以选择不同的数值来分别代表善意节点和恶意(Sybil)节点。
定义f(x)为当前学习到的分类器,训练的目的是为了让损失函数
逐步减小;
在第m+1轮的训练中,fm+1(x)=fm(x)+h(x),目的要找到h(x)让fm+1(x)尽可能接近y;采用梯度提升算法,使用决策树cart来拟合残差,得到:
其中J是特征总数,j是第j个特征,m是指m棵树;训练完成后得到m棵树组成的分类器:
其它的机器学习算法如:随机森林、支持向量机也能作为替代方案。
采用随机森林算法,建立模型:
给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有的所有特征;yi为相应的标记,例如:yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;也可以选择不同的数值来分别代表善意节点和恶意(Sybil)节点;采用随机森林算法,通过训练得到若干棵决策树。在实施中,采用训练好的若干棵决策树,对未知性质的节点进行分类预测。
采用支持向量机算法,建立模型:
给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有的所有特征;yi为相应的标记,例如:yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;也可以选择不同的数值来分别代表善意节点和恶意(Sybil)节点;采用支持向量机算法,通过训练得分类器。在实施中,采用训练好的分类器,对未知性质的节点进行分类预测。
采用人工神经网络进行分类,建立模型:
给定训练集D={(x1,y1),(x2,y2)...,(xn,yn)},其中xi指的是第i个节点的所有的15个特征;yi为相应的标记,yi=1说明该节点是善意节点,yi=0,说明该节点是Sybil节点;
所述人工神经网络的架构包括输入层、第一隐藏层、第二隐藏层、第三隐藏层和输出层;其损失函数采用交叉熵(cross entropy),采用反向传播的方式进行训练。
虽然以上将实施例分开说明和阐述,但涉及部分共通之技术,在本领域普通技术人员看来,可以在实施例之间进行替换和整合,涉及其中一个实施例未明确记载的内容,则可参考有记载的另一个实施例。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。