3.2交易额度因子ωf 在现实的社会网络中,交易额度越大,一般越能引发人们的信任.同时,对于总额相同的交易,一般有三种情况,大额交易峰值出现在早期,(b)是出现在中间时段,而(c)则出现在近期.单从额度来讲,3种情况下到目前时刻为止的交易总额一定,但额度的影响是不一样的,(c)的峰值被认为对当前状况最为有效,而离现在越久远的额度越不重要.因此,交易额度受时间因子的影响. 同时约定交易的额度的价值与到目前时刻为止的成功率相关,如交易额为100,但λmij只有0.1,则其价值额度为100×0.1=10.这种约定可以刺激节点努力提高自身的交易成功率. 定义11.交易价值额度vijm是i与j的第m次交易额度与m时刻的时间因子、交易成功率的乘积,是调整后的交易额度,vijm=ωijm·tfijm·λmij 定义12.交易额度因子ωfijm是第m次交易的价值额度在总价值额度中所占的比重,取值范围为[0,1],令now为当前交易序号(以下同),则ωfijm=vijmΣm∈[1,now]vijm(3) 3.3交易频率因子φf 在社会网络中,人们普遍认为,通信频率越高,对其信任的正面影响越大.所以,本文在局部信任上引入交易频率因子,本文在定义7中已经给出了频率的计算方法,但频率的值不是[0,1]的范围,因此对定义7的频率进行归1化处理,形成频率因子. 定义13.交易频率因子φfijm表示i与j第m次交易后的频率在总的交易频率中所占的比重.φfijm=φijmΣm∈[1,now]φijm(4) 3.4局部信任度及其存储 根据以上分析与因子的计算,我们定义局部信任度如下. 定义14.节点间局部信任度TLij,表示单独从节点i的角度看节点j的信任度,综合了评价、时间因子、额度因子、频率因子,取值范围[-1,1].规定在初始时刻(ti0)令max为当前i与j通信的总次数,则TLij=0,当ti0初始时刻时Σm∈[1,max](tfijm·ωfijm·φfijm·ijm)/max,其它情况(5) 不难发现,如果包含交易额度因子中的成功率因子,则上面关于TLij的计算公式中是5个小数的乘积,使得最终的计算结果很小;为了方便计算和结果显示,在不丢失数据本质(保留计算逻辑与顺序)且不影响数据结果的排序的情况下,采用开五次方的形式对TLij的最终结果进行数据放大,对公式进行修订.修订后的TLij计算公式如下:TLij=0,当在ti0初始时刻时5Σm∈[1,max](tfijm·ωfijm·φfijm·ijm)/max,其它情况(6) 定义15.列表TL-list用来存储节点之间的局部信任度,TL-list(i)={〈j,TLij,tijlast〉j∈Ii}.由定义15可知,TL-list(i)是一个三元组的集合,这个三元组包括与i交易的节点、i节点对这些节点进行的局部信任度评价以及进行该评价的时间戳tijlast.在MDHTrust模型中,使用TL-list列表存储所有节点间的局部信任度信息,并且按照当前的P2P网络规则分布式地存储在各个节点之上,每个节点负责与该节点相关的TL-list的信息的存储,而所有节点的TL-list信息在当前P2P中形成一个大的分布式的TL-list网.如图5是一个简单的TL-list示例. 节点间局部信任度的存储TL-list示例在该TL-list网中,TL-list(1)={〈2,0.6,t12last〉,〈3,-0.2,t13last〉},表示节点1给节点2的局部信任度评价为0.6,节点1给节点3的局部信任度为-0.2.每当节点i选择与j进行一次交易时,都会对信任度进行计算,这个时候则对TL-list(i)进行更新. 4、全局信任度 很显然,节点的局部信任度具有一定的局限性,因为局部信任度是根据两个节点之间的历史进行计算的,这样无法避免恶意修改或恶意评价.因此本文定义了节点的全局信任度(GlobalTrust),且根据局部信任度列表TL-list可以求得某个节点的全局信任度.节点i的全局信任度TGi是所有与i进行过交易的节点Ii对i的局部评价的综合值. 4.1全局信任度因子 为了计算全局信任度,本文对全局信任度的影响因子进行考虑.由于计算某节点i的全局信任度的时候,将获取集合Ii对节点i的局部信任度,因此,涉及到节点i的面向Ii的总的成功率、总的频率以及全局时间因子,其中前两项因子已经在定义5(2))、定义7(2)中分别进行了定义,这里我们对全局时间因子进行讨论. 对于节点i,集合Ii中的节点对i的局部评价都有最终的时间戳记录(tjilast),与3.1节讨论的依据类似,本文认为距离当前时刻越近的局部信任评价所占的权重应该越大.因此,仍然采用3.1节所讨论的直角三角形面积法对全局时间因子gf进行定义. 为方便计算,将Ii节点集对节点i的局部信任评价按时间戳从小到大顺序排序,形成排序后的局部信任度评价列表:ρ(i)={〈j,TLji,tij〉j∈Ii},其中tij是Ii中对应的某个j节点对节点i最后进行局部信任计算时间戳tjilast.令ρ(i)排序中最近一次(最大索引项)的局部评价的全局时间(记为timax)因子为1,即gfimax=1(num=max为最大编号),具体的计算方法与3.1节所述类同,得到如下定义. 定义16.全局时间因子gfij表示Ii中的节点j对节点i的局部信任度评价在i的全局评价中所占的时间比重,gfij=(tij-ti0/timax-ti0)2(7)显然,gfij中离现在越近的所占的时间比重越大,取值范围在[0,1]. 4.2全局信任度 为了能够表示节点i的信任度综合值,必须采用一些策略来进行全局信任度的计算,这些策略需要符合两个条件:(1)计算的节点顺序不影响计算结果,即计算具有对等公平性;(2)由于节点间局部信任度的范围在[-1,1],因此,节点的全局信任度值也应该在[-1,1].在这两个条件下,本文结合全局成功率因子λnowi、全局频率因子φinow、全局时间戳因子gfij采用了平均值法来对局部信任度进行均值以计算全局信任度.因为涉及到3个0~1的小数因子乘积运算,为了方便结果的读取与分析,与局部信任处理方法类似,本文也对全局信任值进行开三次方放大,最终公式如下:TGi=3Σc∈Ii(gfic·TLci)/Count(Ii)·λnowi·φinow(8)其中,Count(Ii)为Ii的节点数量.可以看出,全局信任度的取值范围在[-1,1].值得说明的是,还可以选取其它的方法来求节点的全局信任度,如迭代加权和法等,只要满足计算要求即可. 5、相关性信任度 从理论上来看,全局信任模型虽然具有全局性,能够避免单个节点的恶意行为;然而,全局信任模型无法防御团队恶意节点的协同作案.倘若恶意节点之间互相抬高评价,那么,对于一个可信节点来说,无法直接从全局信任度的值来区分恶意与否了.因此,本文构建了相关性信任模型. 5.1相关性因子 节点之间的评价的相关度用来描述节点之间相关联的程度,这种关联程度主要是通过公共的第三方节点群体对这两个节点之间评价的相关程度来体现.这和社会网络的情况是类似的,我们在判断某个节点是否和自己是同一类人的时候,往往是通过双方共同的朋友来进行判断的.比方说,A与B并不认识,但都拥有共同的朋友{C,D},则A可以通过朋友{C,D}来判断B与自己的相关程度,如果{C,D}与A、B的交往历史都很接近,则A、B之间具有较大的相关性. 邓爱林在文献中总结了度量相关性的多种方法,主要包括3种方法:余弦相似性、相关相似性以及修正的余弦相似性.这些方法都属于统计学的范畴,主要是通过用户对某些项目的评价来度量相关性.根据其他用户的观点产生对目标节点的推荐列表,是基于这样一个假设:如果用户对一些项目的评分比较相似,则他们对其它项目的评分也比较相似. 由于根据节点之间的通信历史可以得出节点之间的局部信任度TL-list网,则可以根据TL-list网来计算节点之间的相关程度.度量相关性一般用矩阵来表述基本评价参数,为了和节点之间的相关性联系起来,由TL-list网可以转换形成局部信任度矩阵R(n×n). 定义17.信任度矩阵R是由节点间局部信任度TL-list网转换而来的n×n的矩阵,n是节点总数.矩阵中的每一个元素rij的定义如下:rij=TLij,若i,j存在交易历史ε,若i,j不存在交易历史1,条件是i=j(9)如果节点i对j没有交易历史则对应的rij值则为ε(设定的非零小值),而节点对自己的评价则为1. 5.2相关性信任度 本文提出基于多维历史的节点相关性信任度来表示节点的可信程度.相关性信任度不仅仅考虑到目标节点的全局信任度,还考虑源节点与目标节点之间的相关性. 定义18.基于历史相关性的信任度MDHTij,表示节点i给j的相关性信任度评价,是从节点i看来,j的全局信任度TGj与(i,j)之间的相关性因子sim(i,j)的乘积sim(i,j)·TGj,且当sim(i,j)=0时,MDHTij取TGj与0之间的最小值.MDHTij=min(0,TGj),sim(i,j)=0sim(i,j)·TGj,sim(i,j)>0(12)根据定义,相关性信任度MDHTij具有如下性质. (1)全局性.因为相关性信任度使用了全局信任度,因此具有全局信任度全局性的特点.从本质上来讲,相关性信任度仍然是一种全局信任度.这样能有效避免单个恶意节点欺骗或攻击的行为. (2)客观性.由于相关性信任度考虑到了节点之间的相关性因素,因此,即使某个恶意节点团体集体伪造了高的信任值,也将因为原节点与目标节点之间的相关性很低,而使得乘积运算后变得很小.因此,相比全局信任度而言,相关性信任度具有更高的客观性. 6、仿真性能分析与实例说明 6.1仿真性能分析 本文通过仿真对MDHTrust模型的准确性 进行检验,仿真平台用C#语言进行设计与实现,通过多线程方式模拟分布式通信.定义了3类节点:(1)A类.这类节点是P2P系统中的正常节点,提供正常服务以及做出正常的服务评价;(2)B类.这类节点是P2P系统中的单个恶意节点,提供虚假服务并且做出虚假评价,但不存在协同行为;(3)C类.这类节点是P2P系统中的恶意团队节点成员,提供虚假服务,但对正常节点进行虚假评价,而对其团队成员节点信任进行夸大,具有协同欺骗行为. (1)实验1.局部信任度有效性验证. 首先对MDHTrust模型中的局部信任度模型的有效性进行测试,如图7所示.实验中的所有节点全为A类节点,进行等额交易(为了方便观察局部信任度因子的有效性),从中观察到高频率通信的A类节点和低频率通信的A类节点都具有良好的信任收敛性,其中在高频交易环境下,A类节点能更快的提升自身的局部信任,而低频交易环境下其信任度受到频率因子的影响;结果表明MDHTrust中的局部信任度模型是有效的. (2)实验2.全局信任度有效性验证. 随机生成若干个A类、B类、C类节点,将2000份具有可信标记的文件摘要信息按SHA-1散列编码方式存储在200个A类节点中,将1000份具有虚假标记的文件摘要信息散列在100个C类节点中,将500份虚假标记文件摘要存放在50个B类节点中.之后启动随机通信,根据公式,每个节点的初始全局信任度被设置为0,循环测试,观察指定的一个A类节点、B类节点和C类节点的全局信任度的走势. B类节点的全局信任值迅速下降,而A类和C类并未出现明显差异.该结果表示MDHTrust模型中的全局信任模型可以有效并迅速地判断出单个恶意节点(B类节点)的攻击和欺骗行为,但却无1732计算机学报2010年 (3)实验3.相关性信任度有效性验证. 首先,在实验2的环境下,观察一个A类节点a1和A类节点a2、C类节点c2的相关性因子. 结果表示,随着不断的实验,节点a1与a2的相关性因子越来越高,而a1与c2的相关性因子一直处于低等水平,表明相关性因子的设计合理.同时,实验观察a1对a2、a1对c2的相关性信任度评价. 结果表明,由于有团队的影响,a2和c2都具有高的全局信任度,但是,由于加入了相关性因子,使得最终的MDHT(a1,a2)与MDHT(a1,c2)能清楚地区分可信节点与团队恶意节点,相关性信任度具有更高的客观性. |