专利名称:一种分布式互联网接入方法
技术领域:
本发明涉及网络通信领域技术,具体涉及一种基于口令双向认证的分布式互联 网接入方法。
背景技术:
互联网技术的广泛普及导致公网IP地址出现紧缺,尤其是C类地址的紧缺。目 前IP地址的分配主要包含两种方式一种就是拨号上网的方式,家庭终端使用ADSL拨 号上网时,电信为此类终端动态地分配公网IP地址;第二种方式是通过分配固定的公网 IP地址,这种方式主要运行在企业中。但是无论哪种方式,有限的C类公网IP地址资源 都无法满足终端的需求。因此,为了解决这个问题,对现有的网络地址进行转换成为必 然。
网络地址转换(NAT,Network Address Translation)是一种私网内的终端与具有公网地址的终端进行通信时,当IP数据包通过路由器或防火墙时重新改写该数据包的IP 源地址或目的IP地址的技术。这种技术被普遍使用于私有网路中的多台主机与具有公网 IP地址的通信中。NAT设备实现了公网IP地址和私网IP地址之间的一种映射关系。
尽管NAT技术能够很好解决公网终端与私网终端之间的通信,然而,同时也 阻止了两个私网内的终端进行直接通信。因为两个私网下的终端无法知道彼此之间在 NAT上的映射关系。目前已有用于解决私网下终端之间进行通信的技术,主要是基于 UDP协议的NAT穿越技术,如名称为一种将私网用户接入公网的方法的中国专利申请 200410006287.5。其解决方案是在公网中架设一台地址映射服务器,私网内终端注册到 该服务器上并通过该服务器访问到其他私网内终端的NAT公网出口地址及端口。
上述现有技术存在以下缺陷
1集中在一台服务器上查询会浪费大量带宽,增大服务器负担,使得NAT中映 射表项增多,降低查询效率;
2如主服务器遭遇网络中断将导致整个查询服务失效;
3查询服务器容易遭受非法终端的攻击。发明内容
本发明的目的是提出一种基于口令双向认证的分布式互联网接入方法。
本发明提出的技术方案是使用多台服务器检测终端当前所处网络的NAT(网络地 址转换)类型,然后向代理服务器请求查询服务器列表,最后向查询服务器发送注册请 求,注册成功后获取其他已在当前查询服务器注册了的终端的公网IP及端口,从而完成 接入过程。
本发明提出的分布式互联网接入方法包括下列步骤
步骤1 判断网络地址转换(NAT)类型,终端向网络协议6TUN)服务器发送 请求,要求得到自身经NAT映射后的地址,如果收不到服务器回复,则认为终端NAT类型为阻断(Blocked);如果收到服务器回复,对比本地地址,如果相同,则认为无NAT设 置,进入步骤5,否则认为有NAT设置,进入步骤2;
步骤2 终端向STUN服务器发送请求,要求服务器从其他IP和出口向终端回 复,如收不到服务器从其他IP地址的回复,认为请求被前置NAT设置为阻断,转入步骤 3,如收到,则认为网络的NAT类型为全克隆(Full Cone),转入步骤5 ;
步骤3:终端向STUN服务器的另外一个IP地址发送请求,要求得到自 身经NAT映射后的地址,并进行对比,如地址不相同,则网络NAT类型为对称式 NAT (Symmetric NAT),转入步骤4 ;如相同,则认为是已注册类型(Restricted NAT),转 入步骤5 ;
步骤4:终端使用端口预测算法向STUN服务器的2个IP(IP1,IP2)发送两次 STUN请求,并根据STUN服务器的响应消息来预测NAT后的对应公网地址和端口,之 后,转入步骤5;
步骤5:终端向代理服务器发起获取服务器列表的请求,所述服务器列表指分 布于互联网中具有公网IP地址的服务器群,代理服务器处理请求后返回该服务器列表;
步骤6 终端根据返回的服务器列表完成与某个私网内的其他终端之间的通
在步骤5和步骤6之间还可以包括口令双方认证的步骤
步骤51:终端查询服务器列表并对目标服务器发起认证请求,目标服务器根据 终端提交的口令及ID信息对终端进行验证,并返回身份验证结果;
步骤52:如果验证通过,目标服务器处理终端查询其负责的区域私网内所有 NAT出口 IP地址与端口的请求;如果验证失败,目标服务器拒绝为终端提供后续服务。
所述终端对目标服务器发起双向认证的流程包括下列步骤
步骤511:终端向目标服务器发送注册请求,并携带自身终端身份IDc;
步骤512:目标服务器响应终端注册请求,产生一个随机数Rs,然后发送自己 身份IDs和随机数Rs ;
步骤513:终端接收解析检查并验证反馈信息,产生一个随机数Re,同时计算 终端的哈希值(HMACc),然后发送双方身份,随机数对,以及认证数据HMACc到目标 服务器;
步骤514:目标服务器接收解析检查并验证反馈信息,计算会话密钥KM,并 衍生加密密钥EK,最后计算目标服务器的哈希值(HMACs),查找终端权限,然后发送 IDs, IDc,Rs, Re, HMACs 到终端;
步骤515终端接收到反馈信息后,终端接收解析并验证反馈信息,然后计算会 话密钥材料KM,利用KM衍生加密密钥EK,整个认证过程结束。
与现有技术相比,本发明具有如下优点
1采用分布式查询方案,减小服务器负担,提高查询效率;
2使用多台服务器提供服务,提高系统稳定性;
3采用基于口令的双向认证方式来避免查询服务器遭受非法终端的攻击。
下面结合附图和较佳实施例对本发明进行详细地说明,其中
图1为本发明提出的分布式互联网接入网络的拓扑结构图2为终端认证流程图3为本发明提出的分布式互联网接入方法的流程图。
具体实施方式
图1为本发明提出的分布式互联网接入网络的拓扑结构图。本发明中
Proxy Server指代理服务器。Server A、Server B为目标服务器。
PG_A、PG_B、别指处于私网或者公网上的终端。
STUN服务器是指用于防火墙穿透,使得终端可以了解到他们的公网地址、所处 网络的NAT类型以及公网出口的端口。
NAT指网络地址转换。
检测网络的NAT类型是指,通过向具有公网IP地址的STUN服务器发送请求数据 包,终端根据STUN服务器返回的消息IP地址及端口来判断其所处当前私网的NAT类型。
合法终端是指,无论这些终端处于私网内部并完成了 NAT穿透还是具有公网IP 地址,他们都需要通过查询服务器的认证才能获得相应查询服务。
查询服务器是指,该服务器保存了所有经过NAT穿透后的私网终端NAT后的IP 地址和端口以及公网终端的IP地址和端口。这些服务器均已注册到代理服务器并时刻保 持心跳连接。
分布式互联网接入方法是指,在公网上分布了多台查询服务器,这些查询服务 器为合法终端同时提供查询服务。
基于口令的双向认证方法是指,终端使用自己的口令向查询服务器发起认证请 求。如果认证通过,则终端可查询其他已注册终端的信息;否则,查询服务器拒绝向该 终端提供服务。
双向认证是指,终端发起认证请求后,查询服务器需要对终端所提供的ID信 息、口令及认证代码(HMAC)进行验证;终端对查询服务器反馈的认证结果,主要包括 服务器ID信息、随机数、HMAC值进行验证。双向验证通过后,终端最后产生会话密 钥KM。
本发明提出的基于口令双向认证的分布式互联网接入方法主要由三部分组成
一、终端使用多台服务器检测终端当前所处网络的NAT (网络地址转换)类型;
二、终端向代理服务器请求查询服务器列表,然后向目标服务器发送认证请 求,并进行双向认证;
三、认证成功后获取其他已在当前查询服务器注册终端的公网IP及端口,从而 完成接入过程。
在本发明的一个较佳实施例中具体包含以下实施步骤
步骤1:如图1和图3所示,终端A需要与某一公网PG_A进行连接时,首先检 测自己所处网络的NAT类型。终端向STUN服务器发送请求,要求得到自身经NAT映 射后的地址。如果收不到服务器回复,则认为UDP(网络协议)被防火墙阻断,不能通信,NAT类型为阻断(Blocked);如果收到服务器回复,对比本地地址,如果相同,则 认为无NAT设置,进入步骤5,否则认为有NAT设置,进入步骤2;
步骤2:终端A向STUN服务器发送请求,要求服务器从其他IP和出口(PORT) 向终端回复。如收不到服务器从其他IP地址的回复,认为请求被前置NAT设置阻断,转 入步骤3。如收到,则认为NAT类型为全克隆(Full Cone),即网络的NAT类型为全 克隆(Full Cone NAT),转入步骤5 ;
步骤3:终端A向STUN服务器的另外一个IP地址发送请求,要求得到自 身经NAT映射后的地址,并进行对比,如地址不相同,则网络NAT类型为对称式 NAT (Symmetric NAT),转入步骤4 ;如相同,则认为是已注册类型(Restricted NAT),转 入步骤5 ;
步骤4 根据步骤3所述实施方式,可以判断网络NAT类型为Symmetric NAT,终端使用端口预测算法向STUN服务器的2个IP(IP1,IP2)发送两次STUN请求,并根 据STUN服务器的响应消息来预测NAT后的对应公网地址和端口,之后,转入步骤5;
步骤5 终端A向代理服务器(Proxy Server)发起获取服务器列表的请求。所 述服务器列表就是指分布于互联网中具有公网IP地址的服务器群。代理服务器处理请求 后返回该服务器列表;
步骤51 终端A查询服务器列表并对目标服务器ServerA发起认证请求。Server A根据终端提交的口令及ID信息对终端A进行验证,并返回身份验证结果;
步骤52 根据步骤51所述实施方式,如果验证通过,ServerA处理终端查询其 负责的区域私网内所有NAT出口 IP地址与端口的请求;如果验证失败,Server A拒绝为 终端A提供后续服务;
步骤6 根据步骤52所述实施结果,终端A可以根据ServerA反馈的查询结果 来完成与某个私网内的其他终端进行通信,从而达到分布式互联网接入的目的。
参考图2,终端A对目标服务器Server A发起双向认证的流程步骤描述如下
步骤511: Client- > Server Register (IDc),终端向服务器发送注册请求,并携带自身终端身份IDc;
步骤512: Server- > Client IDs, Rs。Server响应终端注册请求,产生一个随机数Rs,然后发送自己身份IDs和随机数Rs;
步骤513: Client- > Server IDc, IDs, Re,Rs, HMACc (终端认证数据)。终端接收解析检查步骤512中信息,产生一个随机数Re,同时计算终端的哈希值HMACc, 然后发送双方身份,随机数对,以及认证数据(HMACc)到服务器;
步骤514: Server- > Client IDs, IDc, Rs, Re,HMACs (目标服务器的哈希 值)。Server接收解析检查并验证步骤513中信息,计算会话密钥KM,并衍生加密密 钥EK。最后计算HMACs,查找终端权限,然后发送IDs,IDc, Rs, Re,HMACs到终 端。
步骤515:终端接收到第步骤514中信息后,终端接收解析并验证步骤514中信 息(包括HMAC函数,这里指定使用HMAC-SHA1-96,的验证),然后计算会话密钥材 料KM,利用KM衍生加密密钥EK,整个认证过程结束。
其中
K = H(PW), PW为口令,K为口令经过哈希计算后的值;
HMACs = HMACK(IDs,IDc, Rs, Re);
HMACc = HMACK(IDc,IDs, Re, Rs);
KM = H (K, Rs, Re);
EK = H (KM, “ENCRYPTION”),其中 EK 为 16 个字节,ENCRYPTION 为盐值,也可以为空。
本发明中的信息验证根据哈希函数,采用SHAl算法计算所有反馈信息的认证 代码HMAC值,以HMAC值是否匹配为准来判断验证是否通过。
本发明在公网中架设一台代理服务器用于查询其他服务器的公网地址,从而达 到终端采用分布式方案接入互联网的目的。本发明使用分布式的服务器群方案避免因大 量终端通过同一台服务器接入互联网而导致服务器查询效率低的问题。本发明在终端向 服务器发起查询请求前使用基于口令的双向认证方式验证终端的权限,这样既可以保证 所提供的信息合法性,有可以防止来自非法终端的攻击。
权利要求
1.一种分布式互联网接入方法,其特征在于,该方法包括下列步骤步骤1 判断网络地址转换(NAT)类型,终端向网络协议6TUN)服务器发送请 求,要求得到自身经NAT映射后的地址,如果收不到服务器回复,则认为终端NAT类型 为阻断;如果收到服务器回复,对比本地地址,如果相同,则认为无NAT设置,进入步 骤5,否则认为有NAT设置,进入步骤2;步骤2:终端向STUN服务器发送请求,要求服务器从其他IP和出口向终端回复, 如收不到服务器从其他IP地址的回复,认为请求被前置NAT设置为阻断,转入步骤3, 如收到,则认为网络的NAT类型为全克隆(Full Cone),转入步骤5 ;步骤3:终端向STUN服务器的另外一个IP地址发送请求,要求得到自身经NAT 映射后的地址,并进行对比,如地址不相同,则网络NAT类型为对称式NAT Symmetric NAT),转入步骤4;如相同,则认为是已注册类型(Restricted NAT),转入步骤5 ;步骤4:终端使用端口预测算法向STUN服务器的2个IP(IP1,IP2)发送两次STUN 请求,并根据STUN服务器的响应消息来预测NAT后的对应公网地址和端口,之后,转 入步骤5 ;步骤5:终端向代理服务器发起获取服务器列表的请求,所述服务器列表指分布于 互联网中具有公网IP地址的服务器群,代理服务器处理请求后返回该服务器列表;步骤6 终端根据返回的服务器列表完成与某个私网内的其他终端之间的通信。
2.根据权利要求1所述的方法,其特征在于,步骤5和步骤6之间还包括口令双向认 证的步骤步骤51:终端查询服务器列表并对目标服务器发起认证请求,目标服务器根据终端 提交的口令及ID信息对终端进行验证,并返回身份验证结果;步骤52:如果验证通过,目标服务器处理终端查询其负责的区域私网内所有NAT出 口 IP地址与端口的请求;如果验证失败,目标服务器拒绝为终端提供后续服务。
3.根据权利要求2所述的方法,其特征在于所述的口令双方认证根据哈希函数, 采用SHAl算法计算所有反馈信息的认证代码HMAC值,以HMAC值是否匹配为准来判 断验证是否通过。
4.根据权利要求3所述的方法,其特征在于,终端对目标服务器发起双向认证的流程 包括下列步骤步骤511:终端向目标服务器发送注册请求,并携带自身终端身份IDc;步骤512:目标服务器响应终端注册请求,产生一个随机数Rs,然后发送自己身份 IDs和随机数Rs ;步骤513:终端接收解析检查并验证反馈信息,产生一个随机数Re,同时计算终端 的哈希值(HMACc),然后发送双方身份,随机数对,以及认证数据(HMACc)到目标服 务器;步骤514:目标服务器接收解析检查并验证反馈信息,计算会话密钥KM,并衍生加 密密钥EK,最后计算目标服务器的哈希值(HMACs),查找终端权限,然后发送IDs, IDc,Rs, Re, HMACs 到终端;步骤515终端接收到反馈信息后,终端接收解析并验证反馈信息,然后计算会话密 钥材料KM,利用KM衍生加密密钥EK,整个认证过程结束。
全文摘要
本发明提出了一种基于口令双向认证的分布式互联网接入方法。该方法使用多台服务器检测终端当前所处网络的NAT(网络地址转换)类型,然后向代理服务器请求查询服务器列表,最后向查询服务器发送认证请求,认证成功后获取其他已在当前查询服务器注册了的终端的公网IP及端口,从而完成接入过程。本发明方法采用分布式查询方案,减小服务器负担,提高查询效率和系统稳定性,此外,能避免查询服务器遭受非法终端的攻击。
文档编号H04L29/12GK102025769SQ20101028121
公开日2011年4月20日 申请日期2010年9月10日 优先权日2010年9月10日
发明者周磊, 张历卓, 沈平, 贾维嘉 申请人:香港城市大学深圳研究院