一种分布式网络的认证方法和系统的制作方法

文档序号:7647285阅读:176来源:国知局
专利名称:一种分布式网络的认证方法和系统的制作方法
技术领域
本发明涉及网络通信领域,特别涉及一种在分布式网络中的认证方法和系统。
背景技术
移动Ad hoc网络(MANETMobile Ad hoc Network,也称移动自组织网络)是一种分布式网络,它是由一群移动设备(比如智能手机)动态地组成的。Ad hoc网络的建立不需要借助于已有的网络基础设施或者中央的管理。由于其部署快捷方便,应用环境广泛(从军用到商用),移动Ad hoc网络已经成为一个热门的研究领域。在带来建立通信网络方便快捷的同时,移动Ad hoc由于其自身的特点而带来了诸多安全上的考虑。其中之一就是如何保障资源不被非授权用户访问。
目前,基于口令的认证是用来解决系统的保密性和安全性问题最流行的证实方法之一。在传统的基于口令认证方案的模型中,为了申请资源,用户首先向远程服务器发出请求消息,其中包括用户的身份ID和经过哈希运算的口令值h(PW)。收到请求后,远程服务器在本地的数据库中的访问列表中搜寻是否存在和用户提交的请求匹配的(ID,h(PW))对,若存在,服务器将授予用户ID访问权限,否则拒绝访问。但是传统的单依靠用户名和口令匹配来确认用户的真实性的方式已经暴露出很多安全缺陷,比如口令容易被猜测或通过交际工程学等途径获取,输入口令时容易被人窥视,口令容易被很多工具破解,存在着没有被检测到的缺陷和漏洞,口令可以在网络离线时被窥测,口令和文件容易从PC和服务器上被转移等等。基于上述原因,这种方法并不能用于对安全性要求高的场合。因此,在许多应用环境中,除了采用个人所知道的因素(口令),往往还采用个人所拥有的因素(比如,智能卡)来实现安全强度更高的双因素认证。
在过去若干年内,诸多基于口令的认证方案被提出,以增强安全性和效率为目标。这些方案一般可分为用户注册阶段,登陆阶段和认证阶段。在注册阶段,服务器根据新用户提交的身份信息和口令,签发一个数字票据,并将该票据存贮在一个具有防篡改功能的智能卡中,最后把智能卡发给用户。在登陆阶段中,用户将智能卡插入登陆设备,输入口令,由智能卡根据票据和口令生成登陆请求消息。在认证阶段,服务器对登陆请求消息进行验证,决定是否允许用户登陆。
现有的这些方案均是应用在单服务器的场合中,而在分布式网络,如移动Ad hoc网络中,为了提高系统的可用性,认证的过程应该是以多服务器分布式的方式完成的。移动Ad hoc网络区别与其它网络的重要特点之一就高度的动态性。移动Ad hoc网络是由许多自由移动的节点通过无线信号组建的。在这种方式组建的网络中,没有两点间的链接是保证一直通畅地连通着,因为一个节点可能突然离开另一个节点的无线发射范围,或者传输信号可能招受其它信号的干扰。因此,按照有线网络中采用单服务器的实现将是一种冒险的做法。一旦单个服务器无法被访问到,那么整个系统的服务将被中断。因而现有技术所采用的方案无法直接应用在需要分布式认证的环境中,不能适用于可用性要求高的场合。
其次,在有线网络环境中,服务器往往都配有足够大容量的存储设备,足以存储所有注册用户的口令。然而,在移动Ad hoc网络中,作为节点之一的服务器可能只是一个资源有限的移动设备。对于资源受限的移动设备而言,维护并存储所有用户的口令表将是一项巨大的负担,特别是当用户数量剧增时,问题将更加突出。而且,存储口令表容易使服务器招致窃取和修改替换验证表攻击。
再次,移动Ad hoc网络经常部署在开放的网络环境(甚至是敌对的环境)中的。与有线网络中的节点相比,移动Ad hoc网络中的节点受到的保护更少,更容易遭受攻击,因而需要有更多的安全考虑。首先需要考虑的是作为服务器节点遭受攻击的情况。在传统的方案中,系统的密钥被保密存放在单一的服务器中,这是因为在有线网络环境中的服务器都受到层层保护,攻击者很难攻破服务器。然而在移动Ad hoc网络中,利用单一服务节点保存密钥的做法是不安全的,因为节点相对容易攻破。其次需要考虑普通用户节点遭受攻击的情况。目前,在不需要口令表的强认证方案中,服务器会给注册用户签发一份票据。利用该票据及口令,用户可以登陆到服务器。如果攻击者获得了该票据,那么攻击者可以利用离线字典攻击的手段猜测用户的密码,进而假冒用户登陆服务器。在传统的方案中,票据都被保存在具有防篡改能力的智能卡中,这就增加了应用的成本,降低了用户的易用性。且智能卡有限的运算能力也容易成为应用的瓶颈。
综上所述,出于可用性和安全的考虑,传统的基于单服务器架构和借助于防篡改的智能卡的方案不适合在分布式网络中应用。

发明内容
本发明实施例的目的在于克服现有技术中存在的不足,以保障系统的可用性和安全性。本发明实施例提出了一个基于口令的(t,n)门限认证方法和系统。共有n个服务器节点分享一个系统密钥,只有当其中任意t(t<n)个节点共同合作,才能完成对用户请求的认证操作。本发明实施例所述技术方案如下一种分布式网络的认证方法,所述方法包括产生系统密钥,将所述系统密钥分片后得到分片密钥,并将所述分片密钥分别保存在服务器组的成员服务器节点上;认证服务器组接收用户的身份标识和口令,根据所述身份标识、口令和分片密钥共同签发一份票据,并将所述票据发送给登陆设备;所述登陆设备根据所述票据及所述用户的身份标识和口令生成登陆请求消息,并将所述登陆请求消息发送给所述认证服务器组;所述认证服务器组收到所述登陆请求消息后,验证所述登陆请求消息,如果所述消息通过验证,则所述认证服务器组与所述用户进行双向认证。
本发明实施例还提供了一种分布式网络的认证系统,所述系统包括初始化模块,用于产生系统密钥,将所述系统密钥分片后得到分片密钥,并将所述分片密钥分别保存在服务器组的成员服务器节点上;注册模块,用于对服务器组接收用户的身份标识和口令进行认证,根据所述身份标识、口令和分片密钥共同签发一份票据;登陆模块,用于根据所述票据及所述用户的身份标识和口令生成登陆请求消息,并将所述登陆请求消息发送给所述认证服务器组;认证模块,用于所述认证服务器组收到所述登陆请求消息后,验证所述登陆请求消息,如果所述消息通过验证,则所述认证服务器组与所述用户进行双向认证。
本发明实施例的有益效果是1、在本发明实施例提供的技术方案中,共有n个服务器节点分享一个系统密钥,只有当其中任意t(t<n)个节点共同合作,才能完成对用户请求的认证操作。即使攻击者击破了少量的服务器节点,攻击者还是无法获取密钥。即使有少数(小于n-t个)服务节点遭受攻击或者离线,其它剩余的服务节点仍然可以提供安全的服务,增强了密钥的安全性和高可用性。
2、由于认证服务器组给用户签发票据,因而服务器中不需要存储口令表。
3、可以抵抗字典攻击。在通常的离线字典攻击中,攻击者利用猜测的口令计算出某些中间值,然后把这些中间值和已经得到的相应的正确值比较,若吻合,说明猜测口令正确,攻击成功。而且在本发明实施例所述的方案设计中,由于攻击者能得到的正确值和能计算出的中间值没有联系,无法比较,所以攻击者无法确定猜测口令的正确性。所以攻击者即使获得用户节点中的票据,也无法利用离线字典攻击的方法获得用户口令,更无法冒充合法用户登陆服务器。
4、由于本发明实施例提供的技术方案将票据直接存在登陆设备(即移动终端设备)中,无需智能卡,降低了成本,增加了易用性,同时也不失安全性。
5、成员服务器和登陆设备之间通过两次的信息交换达到双向认证。不仅服务节点可以对用户节点进行认证,用户节点也可以对服务节点进行认证,增强了认证的可靠性。


图1是本发明实施例所述分布式网络的认证方法的流程图;图2是本发明实施例所述分布式网络的认证系统的结构图。
具体实施例方式
下面将参照相应的附图和实施例对本发明作进一步说明。
本发明实施例提供了一种分布式网络的认证方法,所述方法主要包括四个阶段系统初始化阶段,注册阶段,登陆阶段和认证阶段。参见图1,具体步骤如下步骤101系统初始化阶段一个可信第三方产生系统密钥x,并将之分成n片分片密钥,并将这n个分片密钥分别保存在服务器组的所有n个成员服务节点S1,…,Sn上。具体可以采取如下方式实现1)选择两个大素数p和q,满足p=2p′+1且q=2q′+1,其中p′和q′是大素数;一般而言,本领域中,大素数通常是指用多于512比特表示的素数,即诸如3,5等只被1和本身整除的数。
2)计算合数N=p×q,随机选择g∈QN,其中QN是模N二次剩余的集合。
3)在1到p′q′中随机选择系统密钥x,使得x与p′q′互素,即x∈Zp′q′*,]]>随机选择在Zp′q′*上的t-1次多项式f(.),满足f(0)=xmodp′q′,其中Zp′q′*是1到p′q′的整数模p′q′有乘法逆元的集合,t是被要求参与认证操作的服务器节点的个数。
4)计算n个分片密钥xi=f(i)/∏j∈Φ,j≠i(i-j)modp′q′,然后通过秘密渠道将xi发送给服务器组的n个成员服务器Si,其中,Φ是包含数字1至n的集合,即Φ={1,...,n},这里的秘密渠道可以认为是将该票据加密后传输。
5)销毁x,p,q,并公开N和g。
步骤102注册阶段一个需要注册的新用户U发送自己的身份ID和哈希变换后的口令h(PW)给包含t个认证成员服务器节点Si(f∈φ)的认证服务器组Ω。其中φ是包含f个{1,...,n}中元素的集合,即φ{1,...,n},且满足φ包含t个元素,t<n,h()是哈希函数。在证实了用户身份后,t个成员服务节点将共同签发一份票据,并将该票据发送给用户。签发及发送票据的步骤可以采取如下方式实现1)t个认证成员服务器节点Si计算并给分发节点发送如下值Bi=gh(ID)ximodN,]]>其中分发节点可以是t个认证成员服务器中的一个,也可以是独立的节点。
2)分发节点收集到t份Bi后,该分发节点计算β=Πi∈φBiLi0-h(PW)modN=gh(ID)x-h(PW)modN,]]>其中Li′0=Πj∈Φ,j∉φ(i-j)Πj∈φ,j≠i(0-j).]]>3)最后,分发节点将包括(ID,β,N,g,h(·))信息的票据发给登陆设备,并存储在登陆设备中。为了增强安全性,该票据可以通过秘密渠道发送并存储在登陆设备中。在票据的发送过程中,是否需要用户直接参与可以由具体实现方法决定。可以采用直接让用户拷贝票据,然后自己存入登陆设备的方式,也可以采用登陆设备直接通过数据线路下载票据的方式。
在本实施例中,登陆设备可以是移动终端设备。
在本步骤中,为了保证口令不会暴露给服务器,将口令经过了哈希变换。在服务器确实可信的情况下,而且注册不是通过网络进行的,也可以直接提交口令明文。
另外,身份的证实可以通过非技术手段实现,比如用户出示身份证给系统管理员,管理员同意后,就可以给用户签发票据。也可以没有身份证实过程,那就对任何注册请求都签发票据,在这种情况下;用户也仅能获得自己提交的口令,对其他身份对应的口令还是一无所知。
步骤103登陆阶段当已经注册的用户U想登陆认证服务器组Ω时,用户U在存储其个人票据的登陆设备上输入身份标识ID和口令PW。由登陆设备生成登陆请求消息,并发送至认证服务器组。具体可以采取如下方式实现1)选择随机数r,并获取登陆设备的当前时间戳T。
2)计算B=β+h(PW)=gh(ID)xmod N。
3)计算E=Br=gh(ID)xrmod N。
4)计算D=grmod N。
5)计算C=h(T‖E‖B)mod N。
6)发送登陆请求消息M=(ID,T,D,C)至认证服务器组Ω。
步骤104认证阶段认证服务器组Ω中的分发节点收到登陆请求消息M=(ID,T,D,C)后,t个认证成员服务器节点将联合验证该请求并发回响应。例如,具体操作如下每个参与验证的认证成员服务器节点Si首先按照如下的过程检查消息M是否被正确产生1)检查身份ID的有效性,如果格式不正确,则拒绝该登陆请求,请求消息将被丢弃。
2)检查当前时间与登陆请求中时间T的时间差,若该时间差大于合理的传输时延,那么该拒绝该登陆请求。
如果消息M通过初步验证,那么t个认证成员服务器Si(i∈φ)与用户的登陆设备执行以下协议完成双向认证1)Si(i∈φ)计算并发送以下值给分发节点Bi′=gh(ID)ximodN]]>Ei′=Dh(ID)ximodN;]]>2)收到所有E′i和B′i后,分发节点计算B′=Πi∈φBi′Li0modN]]>E′=Πi∈φEi′Li0modN;]]>3)分发节点验证等式C=h(T‖E′‖B′)是否成立,如果不成立,请求被拒绝,否则接受请求。然后分发节点计算C′=h(B′‖T′‖E′)并发回响应(ID,C′,T′)至用户的登陆设备,其中T′是分发节点的当前时间戳。
4)收到服务器响应(ID,C′,T′)后,登陆设备首先检查ID和T′,检查的步骤和步骤104中检查消息M是否被正确产生相同。然后验证等式C′=h(B‖T′‖E)是否成立。如果验证通过,U和Ω之间完成了双向认证,否则,登陆设备丢弃当前会话。
在本实施例中,假设各个节点的时间都是一致的。这样就可以利用时间戳来简化协议的过程,保证消息的即时性。在各个节点时钟不统一的环境下,本实施例可以不利用时间戳,而采用挑战随机数的方法实现。
参见图2,本发明实施例还提供了一种分布式网络认证系统,包括初始化模块201,注册模块202,登陆模块203和认证模块204。其中初始化模块201用于产生系统密钥,将所述系统密钥分片,并将分片后的密钥分别保存在服务器组的成员服务器节点上。
注册模块202位于认证服务器组中,用于接收用户的身份标识和口令,根据所述身份标识、口令和分片密钥共同签发一份票据,并将所述票据发送给登陆模块203。
登陆模块203位于登陆设备中,用于接收注册模块202发送的票据,根据所述票据及所述用户的身份标识和口令生成登陆请求消息,并将所述登陆请求消息发送给所述认证模块204。在本实施例中,登陆设备可以是用户终端设备。
认证模块204位于认证服务器组中,用于在收到所述登陆模块发送的登陆请求消息后,验证所述登陆请求消息,如果所述消息通过验证,则与所述用户进行双向认证。
在本发明实施例提供的技术方案中,共有n个服务器节点分享一个系统密钥,只有当其中任意t(t<n)个节点共同合作,才能完成对用户请求的认证操作。即使攻击者击破了少量的服务器节点,攻击者还是无法获取密钥。即使有少数(小于n-t个)服务节点遭受攻击或者离线,其它剩余的服务节点仍然可以提供安全的服务,增强了密钥的安全性和高可用性。
由于认证服务器组给用户签发票据,因而服务器中不需要存储口令表。
本发明实施例提供的技术方案还可以抵抗字典攻击。在通常的离线字典攻击中,攻击者利用猜测的口令计算出某些中间值,然后把这些中间值和已经得到的相应的正确值比较,若吻合,说明猜测口令正确,攻击成功。而且在本发明实施例所述的方案中,由于攻击者能得到的正确值和能计算出的中间值没有联系,无法比较,所以攻击者无法确定猜测口令的正确性,更无法冒充合法用户登陆服务器。
由于本发明实施例提供的技术方案将票据直接存在登陆设备(即移动终端设备)中,无需智能卡,降低了成本,增加了易用性,同时也不失安全性。
由于成员服务器和登陆设备之间通过两次的信息交换达到双向认证,不仅服务节点可以对用户节点进行认证,用户节点也可以对服务节点进行认证,增强了认证的可靠性。
由于本发明实施例所述技术方案可以抵抗离线字典攻击,因此用户可以自由选择和更换简单、容易记忆的短口令,而不用担心口令被猜出。
由于用户的口令是经过哈希变换的,因而用户口令不会暴露给服务器。
本发明实施例所述的技术方案可以抵抗重放攻击,替换和盗窃口令表攻击,和并行会话攻击。
在本发明实施例所述的技术方案中,由于采用了时间戳,所以可以抵抗重放攻击。重放攻击是指攻击者首先截获正确的登陆请求消息,然后重新发送该消息至服务器节点,以企图达到合法登陆的目的。
在本发明实施例所述的技术方案中,由于根本不存在用户口令表,服务器只存储一个密钥分片,所以无法发动替换和盗窃口令表的攻击。替换和盗窃口令表攻击是指在服务器节点保存有完整的用户名和口令表的情况下,攻击者通过修改或盗窃该口令表的手段来发动攻击。
并行会话攻击是指攻击者截获登陆会话A中服务器的响应消息,以充当同时进行的会话B的登陆请求消息(之所以同时进行,是为了保证时间戳的有效性),这种攻击成功的条件是响应消息和请求消息格式相互匹配。在本发明实施例所述的技术方案中,两种消息的格式不一样,所以能够抵抗这种攻击。
以上只是对本发明的优选实施方式进行了描述,本领域的技术人员在本发明的技术方案范围内进行的通常变化和替换,都应包含在本发明的保护范围内。
权利要求
1.一种分布式网络的认证方法,其特征在于,所述方法包括产生系统密钥,将所述系统密钥分片后得到分片密钥,并将所述分片密钥分别保存在服务器组的成员服务器节点上;认证服务器组接收用户的身份标识和口令,根据所述身份标识、口令和分片密钥共同签发一份票据,并将所述票据发送给登陆设备;所述登陆设备根据所述票据及所述用户的身份标识和口令生成登陆请求消息,并将所述登陆请求消息发送给所述认证服务器组;所述认证服务器组收到所述登陆请求消息后,验证所述登陆请求消息,如果所述消息通过验证,则所述认证服务器组与所述用户进行双向认证。
2.如权利要求1所述的认证方法,其特征在于,所述产生系统密钥,将所述系统密钥分片,并将分片密钥分别保存在服务器组的多个成员服务器节点上的步骤具体包括选择两个大素数p和q,满足p=2p′+1且q=2q′+1,其中p′和q′都是大素数;计算合数N=p×q,随机选择g∈QN,其中QN是模N二次剩余的集合;在1到p′q′中随机选择系统密钥x,使得x与p′q′互素,即x∈ZP′q′*,]]>随机选择在Zp′q′*上的t-1次多项式f(.),满足f(0)=x mod p′q′,其中Zp′q′*是1到p′q′的整数模p′q′有乘法逆元的集合,t是被要求参与认证操作的服务器节点的个数;计算n个分片密钥xi=f(i)/∏j∈Φ,j≠i(i-j)mod p′q′,然后通过秘密渠道将xi发送给服务器组的n个成员服务器Si,其中,Φ是包含数字1至n的集合,即Φ={1,...,n},i取遍1至n;销毁x,p,q,并公开N和g。
3.如权利要求2所述的认证方法,其特征在于,所述认证服务器组接收用户的身份标识和口令,根据所述身份标识、口令和分片密钥共同签发一份票据,并将所述票据发送给登陆设备的步骤具体包括用户发送自己的身份标识ID和哈希变换后的口令h(PW)给包含t个成员服务器节点Si(i∈φ)的认证服务器组,其中φ是包含t个{1,...,n}中元素的集合,即φ{1,...,n},且满足φ包含t个元素,h()是哈希函数;t个成员服务器节点Si证实用户身份后,计算Bi=gh(ID)ximodN,]]>并将计算出的Bi值发送给分发节点;所述分发节点收集到t份Bi后,计算β=Πl∈φBiLi0-h(PM)modN=gh(ID)x-h(PW)modN,]]>其中Li0=Πj∈Φ,j∉φ(i-j)Πj∈φ,j≠i(0-j);]]>所述分发节点将包括(ID,β,N,g,h(·))信息的票据发送给用户。
4.如权利要求3所述的认证方法,其特征在于,所述生成登陆请求的步骤具体包括选择随机数r,并获取登陆设备的当前时间戳T;计算B=β+h(PW)=gh(ID)xmod N;计算E=Br=gh(ID)xrmod N;计算D=grmod N;计算C=h(T‖E‖B)mod N;生成登陆请求消息M=(ID,T,D,C)。
5.如权利要求4所述的认证方法,其特征在于,所述验证登陆请求消息的步骤具体包括检查用户身份标识的有效性,如果格式不正确,则拒绝所述登陆请求;检查当前时间与登陆请求中时间T的时间差,若该时间差大于合理的传输时延,则拒绝所述登陆请求。
6.如权利要求4所述的认证方法,其特征在于,所述双向认证的步骤具体包括认证服务器节点Si(i∈φ,φ{1,...,n})计算并发送以下值给分发节点B′i=gh(ID)ximodN]]>E′i=Dh(ID)ximodN;]]>所述分发节点收到所有E′i和B′i后,计算B′=Πi∈φB′iLi0modN]]>E′=Πi∈φE′iLi0modN;]]>分发节点验证等式C=h(T‖E′‖B′)是否成立,如果不成立,则拒绝所述登陆请求,否则接受所述登陆请求;所述分发节点获取分发节点的当前时间戳T′,计算C′=h(B′‖T′‖E′)并发回响应(ID,C′,T′)至用户的登陆设备;所述登陆设备收到所述响应(ID,C′,T′)后,首先检查ID和T′的有效性,然后验证等式C′=h(B‖T′‖E)是否成立,如果验证通过,用户登陆设备和认证服务器组之间完成了双向认证,否则所述登陆设备丢弃当前会话。
7.如权利要求1至6中任意一项权利要求所述的认证方法,其特征在于,所述票据通过秘密渠道发送并存储在所述登陆设备中。
8.如权利要求3或6中所述的认证方法,其特征在于,所述分发节点为独立的节点或t个成员服务器中的一个。
9.如权利要求3或6中所述的认证方法,其特征在于,所述登陆设备为用户终端设备。
10.一种分布式网络的认证系统,其特征在于,所述系统包括初始化模块,用于产生系统密钥,将所述系统密钥分片后得到分片密钥,并将所述分片密钥分别保存在服务器组的成员服务器节点上;注册模块,用于对服务器组接收用户的身份标识和口令进行认证,根据所述身份标识、口令和分片密钥共同签发一份票据;登陆模块,用于根据所述票据及所述用户的身份标识和口令生成登陆请求消息,并将所述登陆请求消息发送给所述认证服务器组;认证模块,用于所述认证服务器组收到所述登陆请求消息后,验证所述登陆请求消息,如果所述消息通过验证,则所述认证服务器组与所述用户进行双向认证。
全文摘要
本发明提供了一种分布式网络的认证方法和系统,属于网络通信领域。为了克服现有技术中认证方案无法直接应用在需要分布式认证的环境中,不能适用于可用性要求高的场合,本发明提供了一种分布式网络的认证方法,所述方法包括产生分片密钥,新用户注册时,认证服务器组共同向用户签发一份票据,用户登陆时,认证服务器组联合验证用户发送的登陆请求消息,如果所述消息通过验证,则所述成员服务器与用户的登陆设备进行双向认证。本发明还提供了一种分布式网络的认证系统,包括初始化模块、注册模块、登陆模块和认证模块。本发明可用于移动Ad hoc网络、网格等分布式网络的认证。
文档编号H04L12/28GK101030859SQ20071006360
公开日2007年9月5日 申请日期2007年2月6日 优先权日2007年2月6日
发明者曹珍富, 董晓蕾, 柴震川, 位继伟 申请人:上海交通大学, 华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1