本发明涉及计算机通信技术领域,尤其涉及一种基于eap-md5改进协议的身份认证方法及系统。
背景技术:
可扩展身份认证协议(extensibleauthenticationportocol,eap)是一种支持多种认证方法的认证框架,用于基于端口的802.1x访问控制。eap-md5是一种最为基本的也是第一个用于wlan中的eap类型,较广泛的应用于有线或无线网络中端口认证。然而传统的eap-md5协议存在几个缺点,因此在一些高安全级的认证环境中eap-md5不被推荐使用,这几大缺点分别为:
1、易被md5字典暴力破解用户密钥:请求方的用户名和认证挑战数总是明文可见,因此由用户名+密码+挑战数组成的md5哈希值,其很容易受到离线字典攻击从而破译出用户密码。
2、容易出现重放攻击,即使不破解md5哈希值,将上次一认证的所有数据包对认证服务器进行重放,由于服务器无法判断数据包的时间关系,因此也可能完成认证过程。
技术实现要素:
针对上述问题,本发明旨在提供一种基于eap-md5改进协议的身份认证方法及系统,以降低协议被暴力破解哈希的概率,并且有效防止数据包重放攻击,提高协议的安全性。
具体方案如下:
一种基于eap-md5改进协议的身份认证方法,包括以下步骤:
s1:客户端向接入设备发送eapol_start报文,开始认证接入;
s2:接入设备向客户端发送eap_request_identity报文,要求客户端将用户名发送至接入设备;
s3:客户端发送请求回应eap_response/identity报文至接入设备,其中请求回应eap_response/identity报文中包括用户名;
s4:接入设备将接收到的请求回应eap_response/identity报文中的用户名封装到radius_access_request报文后,发送至认证服务器;
s5:认证服务器判断用户名是否属于合法用户名,如果不是,则不允许接入;如果是,则认证服务器产生一个challenge,并将challenge与用户名结合后,将结合后的结果进行哈希计算,并将计算的哈希值与用户密码进行异或运算处理,得到request信息,并将request信息通过接入设备使用radius_access_challenge报文返回给接入设备;
s6:接入设备通过eap_request_method报文,将接收到的request信息转发至客户端,要求客户端进行认证;
s7:客户端接收到request信息后,首先,将用户密码和request信息做异或运算,其次,将运算结果与当前时间戳进行异或运算,最后,将运算结果进行哈希运算得到哈希值,将哈希值与当前时间戳共同放入eap_response_method报文中发送至接入设备;
s8:接入设备根据接收到的eap_response_method报文将哈希值与当前时间戳共同放入radius_access_request报文中发送至认证服务器,由认证服务器进行认证;
s9:认证服务器首先将用户名和挑战challenge相加后,对相加结果计算哈希值;其次,将计算的哈希值与接收到的当前时间戳进行异或运算后,对异或运算结果计算哈希值;最后,将计算的哈希值与接入设备上传至认证服务器的哈希值进行比对认证,如果相同,则表示用户密码认证通过,且用户时间戳未经篡改,进而再比对时间戳,如果与上次认证时间相同,则认证不通过,如果晚于上次认证时间,则认证通过;
s10:认证完成后,通过radius_access_accept/failure报文将认证结果返回给接入设备,接入设备通过eap_request_method报文将认证结果返回给客户端,客户端通过eapol_logoff报文向认证设备确认认证过程完成;
s11:当认证通过时,用户通过标准协议通过接入设备获取规划的ip地址。
一种基于eap-md5改进协议的身份认证系统,包括客户端、接入设备和认证服务器,且所述客户端、接入设备和认证服务器均包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。
本发明采用如上技术方案,可以在身份认证的过程中,有效降低协议被暴力破解的概率,并有效防止数据包的重放攻击,提高了认证的安全性。
附图说明
图1所示为传统的eap-md5协议身份认证示意图。
图2所示为本发明实施例一中方法的身份认证示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
参考图1,传统的eap-md5协议身份认证流程如下:
(1)客户端向接入设备发送一个eapol_start报文,开始802.1x认证接入;
(2)接入设备向客户端发送eap_request_identity报文,要求客户端将用户名(即用户id)送到接入设备来;
(3)客户端回应一个eap_response/identity给接入设备的请求,其中包括用户id;
(4)接入设备将eap_response_identity报文中的用户名封装到radius_access_request报文中,发送给认证服务器;
(5)认证服务器判断用户名是否属于已注册的合法用户名,如果不是,则不允许接入;如果是,则认证服务器产生一个challenge,并将用户名id+1,将challenge和id+1通过radius_access_challenge报文返回给接入设备;
(6)接入设备通过eap_request_method,将id+1与challenge转发送给客户端,要求客户端进行认证;
(7)客户端收到报文后,将id+1、密码、challenge拼接组合在一起,进行md5哈希运算,得到hash值,将哈希值放入eap_response_method报文中回应给接入设备;
(8)接入设备将哈希值,放入radius_access_request报文中送到认证服务器,由认证服务器进行认证;
(9)认证服务器将用户名id、密码和挑战challenge顺序拼接,求md5哈希。将此哈希值与接入设备上传hash值进行比对。如果相同,则表示用户密码认证通过,否则认证不通过。通过radius_access_accept/failure报文将认证结果返回给接入设备。接入设备通过eap_request_method报文将认证结果返回给客户端。客户端通过eapol_logoff报文向认证设备确认认证过程完成;
(10)如果认证通过,用户通过标准的dhcp协议,通过接入设备获取规划的ip地址接入网络。
传统eap-md5协议身份认证有如下缺点:challenge和用户id明文传输,这就提高了破解md5哈希的可能性。采用暴力字典破解,较容易的可破解出用户密码。同时,即使不破解md5哈希值,将上次一认证的所有数据包对认证服务器进行重放,由于服务器无法判断数据包的时间关系,因此也可能完成认证过程。
针对上述传统eap-md5协议的缺点,本发明实施例一提出了一种基于eap-md5改进协议的身份认证方法,参考如2,具体为:
(1)客户端向接入设备发送一个eapol_start报文,开始802.1x认证接入;
(2)接入设备向客户端发送eap_request_identity报文,要求客户端将用户名(即用户id)发送至接入设备来;
(3)客户端回应一个eap_response/identity报文至接入设备,其中请求回应eap_response/identity报文中包括用户名;
(4)接入设备将接收到的请求回应eap_response/identity报文中的用户名封装到radius_access_request报文后,发送至认证服务器;
(5)认证服务器判断用户名是否属于合法用户名,如果不是,则不允许接入;如果是,则认证服务器产生一个挑战challenge,并将challenge与用户名结合后,将结合后的结果进行md5哈希(hash)计算,并将计算的哈希值与用户密码进行异或运算处理,得到request信息,并将request信息通过接入设备使用radius_access_challenge报文返回给接入设备;
在该步骤中,将challenge和用户名进行了哈希处理,再将结果与用户密码进行异或,从而保护了challenge,避免了明文传输,黑客由于不知道密码,因此截取数据后,无法直接采用暴力或字典破解的方法破解challenge值,提高了暴力破解哈希的难度。同时,密码采用异或而不再明文组合式的包含在哈希值里,更增加了破解难度和复杂度,提高了密码使用的安全性。采用本方法对challenge保护之后,接着使用后续步骤的方法,可继续完成认证,不会影响认证功能。
(6)接入设备通过eap_request_method报文,将接收到的request信息转发至客户端,要求客户端进行认证;
(7)客户端接收到request信息后,首先,将用户密码和request信息做异或运算,其次,将运算结果与当前时间戳timestamp进行异或运算,最后,将运算结果进行md5哈希运算得到哈希值,将哈希值与当前时间戳timestamp共同放入eap_response_method报文中发送至接入设备;
在该步骤中引入了时间戳timestamp,可作为后续认证中时间重放的判定依据。
(8)接入设备根据接收到的eap_response_method报文将哈希值与当前时间戳共同放入radius_access_request报文中发送至认证服务器,由认证服务器进行认证;
(9)认证服务器首先将用户名和挑战challenge相加后,对相加结果计算md5哈希值;其次,将计算的md5哈希值与接收到的当前时间戳进行异或运算后,对异或运算结果计算md5哈希值;最后,将计算的md5哈希值与接入设备上传至认证服务器的md5哈希值进行比对认证,如果相同,则表示用户密码认证通过,且用户时间戳未经篡改,进而再比对时间戳,如果与上次认证时间相同,则认证不通过,如果晚于上次认证时间,则认证通过;
(10)认证完成后,通过radius_access_accept/failure报文将认证结果返回给接入设备,接入设备通过eap_request_method报文将认证结果返回给客户端,客户端通过eapol_logoff报文向认证设备确认认证过程完成;
(11)如果认证通过,用户通过标准的dhcp协议(可以是dhcprelay),通过接入设备获取规划的ip地址。
本发明实施例一采用的基于eap-md5改进协议的身份认证方法可以在身份认证的过程中,有效降低协议被暴力破解的概率,并有效防止数据包的重放攻击,提高了认证的安全性。
实施例二:
本发明还提供一种基于eap-md5改进协议的身份认证系统,包括客户端、接入设备和认证服务器,且所述客户端、接入设备和认证服务器均包括处理器、存储器以及存储在所述存储器中并在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述客户端、接入设备和认证服务器可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述客户端、接入设备和认证服务器可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述客户端、接入设备和认证服务器的组成结构仅仅是客户端、接入设备和认证服务器的示例,并不构成对客户端、接入设备和认证服务器的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述客户端、接入设备和认证服务器还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述客户端、接入设备和认证服务器的控制中心,利用各种接口和线路连接整个客户端、接入设备和认证服务器的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述客户端、接入设备和认证服务器的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。