分布式系统节点身份认证方法及装置的制造方法_3

文档序号:9352681阅读:来源:国知局
库的认证原语的哈希值。在获取到认证原语的哈希值后,构建布隆散列的方式可以为:将长度为m比特的布隆向量(bl, b2,…,bm)中的所有比特位初始化为O,然后将返回值在I到m间的k个相互独立的快捷HASH函数(hl,h2,…,hk),作用于每个输入的认证原语的哈希值上,得到k个返回值(rl, r2,…,rk),并将布隆向量中位置在rl, r2,..., rk的比特位设置为1,最后得到的整个布隆向量即布隆散列,所述布隆散列存储于原语语义库。相应地,执行认证的节点接收到目标认证原语后,获取所述目标认证原语的哈希值,获取所述哈希值的方法,与生成原语语义库时获取原语库中认证原语的哈希值的方法相同。执行认证的节点将目标认证原语的哈希值作为目标语义,然后以构建布隆散列时对输入的认证原语的哈希值进行处理的方式一样,处理所述目标语义,得到返回值,然后判断所述布隆散列中对应于所述返回值的比特位是否为1,如果为1,则确定所述目标语义存在于所述布隆散列,如果为O,则确定所述目标语义不存在于所述布隆散列。如果所述目标语义存在于所述布隆散列,则原语语义库中存在所述目标语义,被认证节点的身份认证通过,否则,被认证节点的身份认证失败。
[0144]在另一种实施方式中,根据原语库生成所述原语语义库,包括:使用学习算法提取原语库的认证原语的特征,以认证原语的特征的集合作为原语语义库。学习算法有多种,例如支持向量算法等,都可以应用于本发明中。学习算法提取的认证原语的特征,可以为向量,也可以为矩阵,随学习算法的不同而不同。以支持向量算法为例,以原语库中的认证原语为输入,可以得到表征认证原语的特征的支持向量,以认证原语的支持向量的集合为原语语义库。利用学习算法根据原语库生成原语语义库也是不可逆的,有利于保证认证原语的安全,原语语义库也可以公开。相应地,执行认证的节点接收到目标认证原语后,使用相同的学习算法提取所述目标认证原语的特征,以目标认证原语的特征为目标语义,然后计算目标语义与原语语义库中特征的匹配度,判断所述匹配度是否大于或等于预设阈值,如果所述匹配度大于或等于所述预设阈值,则所述原语语义库中存在所述目标语义,否则,所述原语语义库中不存在所述目标语义。以支持向量算法为例,以目标认证原语为输入,使用支持向量算法得到表征目标认证原语的特征的支持向量,以所述支持向量为目标语义,然后将该目标语义与原语语义库中的支持向量进行匹配,计算该目标语义与原语语义库中支持向量的匹配度,如果所述匹配度大于或者等于85%,则确定该目标语义存在于原语语义库中,被认证节点的身份认证通过,否则,如果所述匹配度小于85%,则确定该目标语义不存在于原语语义库中,被认证节点的身份认证失败,其中,“85% ”为预设阈值。
[0145]在执行认证的节点接收被认证节点发送的目标认证原语之后,提取所述目标认证原语的语义之前,还可以加上检验所述目标认证原语是否符合预设语义规则的步骤,所述预设语义规则即被认证节点的预设语义规则。原语库中的认证原语必须符合被认证节点的预设语义规则,如果执行认证的节点接收到的目标认证原语不符合所述预设语义规则,则能够确定该目标认证原语是非法的,被认证节点的身份认证不能通过;如果执行认证的节点接收到的目标认证原语符合所述预设语义规则,则执行提取所述目标认证原语的语义的步骤,对被认证节点的身份进行进一步验证。由于检验目标认证原语是否符合预设语义规则简单易行,资源耗费很小,因此只在目标认证原语符合预设语义规则的时候执行提取所述目标认证原语的语义的步骤,可以避免对所有目标认证原语都提取语义所带来的资源耗费。
[0146]如果被认证节点发送的是经过加密的目标认证原语,则执行认证的节点在接收所述目标认证原语之后,提取所述目标认证原语的语义之前,需要对接收到的目标认证原语解密,具体可以包括以下步骤:
[0147](al)检验所述目标认证原语是否被加密;
[0148](a2)当所述目标认证原语被加密时,分析所述目标认证原语的加密方法;
[0149](a3)获取与所述加密方法对应的解密方法,并使用所述解密方法解密所述目标认证原语。
[0150]被认证节点为保证目标认证原语的安全,防止目标认证原语被改写或破坏,可以对目标认证原语加密。对于目标认证原语的加密和解密,在被认证节点和执行认证的节点之间可以建立协议,根据协议被认证节点对目标认证原语都使用规定的加密方法进行加密,执行认证的节点则默认接收到的目标认证原语是经过加密的,并使用预先设置的默认的解密方法进行解密,这种情况下,可以不执行步骤(al)和步骤(a2)。被认证节点加密目标认证原语的方法可以有多种,例如对认证原语进行字符错位处理。
[0151]在一种实施方式下,被认证节点在加密后的目标认证原语中加入算法标识,所述算法标识用于表征被认证节点在加密该目标认证原语时所用的加密算法。执行认证的节点接收到目标认证原语后,步骤(al)判断接收到的目标认证原语中是否包含所述算法标识,如果包含所述算法标识,则所述目标认证原语为加密数据,然后步骤(a2)分析得到对应于所述算法标识的加密算法,步骤(a3)则在预先存储的解密算法中找到与所述加密算法对应的解密算法,并使用该解密算法解密所述目标认证原语。如果步骤(al)判断得到的结果是目标认证原语中不包含所述算法标识,则确定所述目标认证原语未被加密。
[0152]对一些加密算法而言,其加密后的数据具有独特的数据结构,因此,在另一种实施方式中,被认证节点使用加密后数据有独特的数据结构的加密算法,来加密目标认证原语,执行认证的节点接收到目标认证原语后,步骤(al)识别目标认证原语的数据结构,并且将识别出的目标认证原语的数据结构,与预先存储的各种数据结构进行比对,如果目标认证原语的数据结构与预先存储的某个数据结构匹配,则确定接收到的目标认证原语是加密的。步骤(a2)则根据与目标认证原语的数据结构相匹配的预先存储的数据结构,得到与该预先存储的数据结构对应的加密算法,然后步骤(a3)在预先存储的解密算法中,查找与该加密算法对应的解密算法,并使用该解密算法解密接收到的目标认证原语。
[0153]本实施例提供的技术方案,以生成原语语义库时提取原语库认证原语的语义的方法,提取目标认证原语的语义,作为目标语义,然后验证所述目标语义是否存在与原语语义库中,如果存在,则被认证节点的身份认证通过,否则,被认证节点身份认证失败。由于认证原语及目标认证原语为简单的字符语句,使用已有的语义提取方法提取语义,以及验证目标语义与原语语义库中的语义是否匹配,过程皆简单易行,资源耗费少,且整个认证过程执行认证的节点并不需保存认证状态,只针对当次接收的目标认证原语进行认证,从而使得被认证节点和执行认证的节点之间能够实现按需认证。
[0154]参见图3,为本发明实施例提供的一种分布式系统节点身份认证方法的流程示意图,如图3所示,该方法包括如下步骤:
[0155]步骤S301,建立原语库,所述原语库为认证原语的集合,所述认证原语为表征被认证节点唯一性的语句,且满足被认证节点的预设语义规则;
[0156]步骤S302,根据所述原语库生成原语语义库;
[0157]步骤S303,当被认证节点和执行认证的节点之间需要进行身份认证时,被认证节点从所述原语库中选取一个目标认证原语;
[0158]步骤S304,被认证节点将所述目标认证原语发送给执行认证的节点;
[0159]步骤S305,执行认证的节点接收所述被认证节点发送的目标认证原语;
[0160]步骤S306,执行认证的节点提取所述目标认证原语的语义,作为目标语义,并验证所述原语语义库中是否存在所述目标语义;
[0161]如果所述原语语义库中存在所述目标语义,则被认证节点的身份认证通过,否则,被认证节点的身份认证失败。
[0162]其中,在一种应用场景中,被认证节点在数据访问发起的同时发起身份认证,被认证节点在发送数据的同时需要发送身份认证信息,在本发明中,所述身份认证信息即目标认证原语。在另一种应用场景中,被认证节点先向执行认证的节点发送数据访问请求,执行认证的节点返回身份认证请求消息,被认证节点收到所述身份认证请求消息后,向执行认证的节点发送身份认证信息,在这种情况下,被认证节点收到身份认证请求消息即为被认证节点和执行认证的节点之间需要进行身份认证。
[0163]所述原语库预先建立,为认证原语的集合。认证原语为表征被认证节点唯一性的语句,由于无规则的语句难以提取语义,因此认证原语需符合被认证节点的预设语义规则。认证原语的预设语义规则可以为以下几类:
[0164](I)替换类语义规则:根据预设的字符替换表,将语句中的字符用字符替换表中与该字符对应的其他字符替换。
[0165](2)模式类语义规则:认证原语按预设的模式生成,例如在认证原语的偶数字符的后面,加入固定长度的随机字符组合。
[0166](3)标点类语义规则:在认证原语的固定位置加入固定的标点。
[0167]预设语义规则并不仅限于上述三种,上述三种也可以两两组合或者三者组合使用。
[0168]按照预设语义规则构建认证原语,并将认证原语存储在原语库中,每个认证原语在原语库中对应一个索引,每个被认证节点与其原语库一一对应。原语库中的认证原语至少包含2条,以使认证原语的选取不唯一。原语库可以保存于被认证节点处,也可以与被认证节点分离,原语库与被认证节点分离时,被认证节点通过网络访问原语库。所述原语库可以加密保存或添加访问控制机制,以防止认证原语泄漏。
[0169]其中,所述原语语义库预先根据原语库生成。原语语义库为原语库中认证原语的语义的集合。提取原语库中每个认证原语的语义,存储于原语语义库中。所述原语语义库可以位于执行认证的节点,也可以与执行认证的节点分离,所述原语语义库与执行认证的节点分离时,执行认证的节点通过网络访问所述原语语义库。如果被认证节点和执行认证的节点是--对应的,也就是说一个执行认证的节点只对一个被认证的节点进行认证,则该执行认证的节点访问的原语语义库中,只存储该被认证节点的原语库中认证原语的语义。如果执行认证的节点会对至少两个被认证节点进行认证,则该执行认证的节点访问的原语语义库中,存储对应的被认证节点的原语库中认证原语的语义。在一种实施方式中,所有执行认证的节点可以共用一个原语语义库,也就是提取所有原语库中认证原语的语义,存储在一个原语语义库中。
[0170]原语为字符组成的语句,其本质也为数据,原语语义即语句的含义,亦即数据的逻辑表示或者特征。提取原语的语义,即将原语按预设的方式进行逻辑组织,或者按预设的方式提取特征。
[0171]在一种实施方式中,根据原语库生成原语语义库,包括:获取原语库的认证原语的哈希值,根据所述认证原语的哈希值构建布隆散列,以所述布隆散列为认证原语的语义的集合,存储于原语语义库中。这种实施方式中,根据原语库生成原语语义库是不可逆的过程,因此可以更好地保护认证原语的安全,攻击者将无法通过原语语义库来得到认证原语,也正因为这样,原语语义库可以公开。使用哈希函数作用于原语库的认证原语,便能获取原语库的认证原语的哈希值。在获取到认证原语的哈希值后,构建布隆散列的方式可以为:将长度为m比特的布隆向量(bl, b2,…,bm)中的所有比特位初始化为0,然后将返回值在I到m间的k个相互独立的快捷HASH函数(hl,h2,…,hk),作用于每个输入的认证原语的哈希值上,得到k个返回值(rl, r2,…,rk),并将布隆向量中位置在rl, r2,…,rk的比特位设置为1,最后得到的整个布隆向量即布隆散列,所述布隆散列存储于原语语义库。
[0172]在另一种实施方式中,根据原语库生成所述原语语义库,包括:使用学习算法提取原语库的认证原语的特征,以认证原语的特征的集合作为原语语义库。学习算法有多种,例如支持向量算法等,都可以应用于本发明中。学习算法提取的认证原语的特征,可以为向量,也可以为矩阵,随学习算法的不同而不同。以支持向量算法为例,以原语库中的认证原语为输入,可以得到表征认证原语的特征的支持向量,以认证原语的支持向量的集合为原语语义库。利用学习算法根据原语库生成原语语义库也是不可逆的,有利于保证认证原语的安全,原语语义库也可以公开。
[0173]当被认证节点和执行认证的节点之间需要进行身份认证时,被认证节点从原语库中选取一个目标认证原语,选取方式可以为随机选取,也可以按照循环性规律选取。所述随机选取,可以为被认证节点先随机生成一个索引值(所述索引值在原语库的索引值范围内),然后选取原语库中与所述索引值对应的认证原语。所述按照循环性规律选取,可以为被认证节点按照原语库的索引值排列顺序,依次选取索引值对应的认证原语,当多次进行身份认证后,被认证节点选取的认证原语对应的索引值已达到原语库索引值排列的尾端时,在下一次身份认证的时候,被认证节点重新从原语库的索引值排列的第一个索引值开始选取。
[0174]另外,为进一步保证被选中的目标认证原语的安全,防止目标认证原语被改写或被破坏,在将目标认证原语发送给执行认证的节点之前,被认证节点还可以将所述目标认证原语加密。被认证节点加密目标认证原语的方法可以有多种,例如对认证原语进行字符错位处理。相应地,执行认证的节点在收到所述目标认证原语后,对所述目标认证原语进行解密。
[0175]执行认证的节点接收到所述被认证节点发送的目标认证原语后,提取所述目标认证原语的语义,作为目标语义,并验证所述原语语义库中是否存在所述目标语义。
[0176]如果根据原语库生成原语语义库,是获取原语库的认证原语的哈希值后,根据所述认证原语的哈希值构建布隆散列,以所述布隆散列为认证原语的语义的集合,相应地,执行认证的节点接收到目标认证原语后,获取所述目标认证原语的哈希值,获取所述哈希值的方法,与生成原语语义库时获取原语库中认证原语的哈希值的方法相同,执行认证的节点将目标认证原语的哈希值作为目标语义,然后以构建布隆散列时对输入的认证原语的哈希值进行处理的方式一样,处理所述目标语义,得到返回值,然后判断所述布隆散列中对应于所述返回值
当前第3页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1