一种基于SM2算法的可扩展身份认证方法和系统转让专利

申请号 : CN202010108672.X

文献号 : CN111314072B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 徐梦剑张会彬李良灿张杰赵永利李亚杰赵硕

申请人 : 北京邮电大学

摘要 :

本发明公开了一种基于SM2算法的可扩展身份认证方法和系统,所述方法包括:EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;EAP服务器向EAP客户端发送认证消息1,其中包括利用CertP加密的MAC;EAP客户端利用SkeyP从认证消息1中解密得到MAC后,向EAP服务器发送认证消息2,其中包括利用CertS加密的MAC;EAP服务器利用SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC和之前加密的MAC之间的比较结果,确定EAP客户端的认证是否通过。应用本发明可以加强EAP的认证保证,提高网络身份认证安全性。

权利要求 :

1.一种基于SM2算法的可扩展身份认证方法,其特征在于,包括:EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;其中,所述EAP客户端、服务器预先生成的公钥‑私钥对分别为(CertP,SkeyP)、(CertS,SkeyS),所述EAP客户端、服务器临时产生的公钥‑私钥对分别为(CertP*,SkeyP*)、(CertS*,SkeyS*);

所述EAP服务器向所述EAP客户端发送认证消息1,其中包括利用CertP加密的MAC;

所述EAP客户端利用SkeyP从认证消息1中解密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用CertS加密的MAC;

所述EAP服务器利用SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC和之前加密的MAC之间的比较结果,确定所述EAP客户端的认证是否通过;

其中,所述EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换,具体包括:

所述EAP客户端向所述EAP服务器发送认证请求信息;

所述EAP服务器接收到所述认证请求信息后生成临时公钥‑私钥对(CertS*,SkeyS*)后,向所述EAP客户端发送认证准备开始消息,所述认证准备开始消息中携带所述EAP服务器的标识符ID_S和CertS*;

所述EAP客户端接收到所述认证准备开始消息后,向所述EAP服务器发送认证准备消息

1,所述认证准备消息1携带所述EAP客户端的标识符ID_P,ECertS*(CertP)和ESkeyP(H(CertP));

所述EAP服务器利用SkeyS*从接收到的认证准备消息1中解密得到CertP,利用CertP对ESkeyP(H(CertP))验签成功后,向所述EAP客户端发送认证准备消息2,所述认证准备消息2携带所述EAP服务器的标识符ID_S,ECertP(CertS)和ESkeyS(H(CertS));

所述EAP客户端利用SkeyP从接收到的认证准备消息2中解密得到CertS,利用CertS对ESkeyS(H(CertS))验签成功后,生成临时公钥‑私钥对(CertP*,SkeyP*),并向所述EAP服务器发送认证准备完成消息,所述认证准备完成消息携带ID_S、ID_P、ECertS(CertP*)和ESkeyP*(H(CertP*));

所述EAP服务器利用SkeyS从接收到的认证准备完成消息中解密得到CertP*,利用CertP*对ESkeyP*(H(CertP*))验签成功后,确认认证准备阶段完成;

其中,ECertS*(CertP)表示用CertS*加密CertP,ESkeyP(H(CertP))表示用SkeyP加密H(CertP);ECertP(CertS)表示用CertP加密CertS,ESkeyS(H(CertS))表示用SkeyS加密H(CertS);ECertS(CertP*)表示用CertS加密CertP*;ESkeyP*(H(CertP*))表示用SkeyP*加密H(CertP*);H(CertP)表示对ID_P和CertP进行哈希Hash运算得到的Hash运算结果;H(CertS)表示对ID_S和CertS进行哈希Hash运算得到的Hash运算结果;H(CertP*)表示对ID_P和CertP*进行哈希Hash运算得到的Hash运算结果。

2.根据权利要求1所述的方法,其特征在于,在所述EAP服务器向所述EAP客户端发送认证消息1之前,还包括:

所述EAP服务器向EAP客户端发送携带ID_S的认证开始消息;

所述EAP客户端向所述EAP服务器返回携带ID_P的认证响应消息。

3.根据权利要求2所述的方法,其特征在于,所述认证消息1还包括:ID_S、ID_P、ESkeyS(H(ID_S|MAC));以及

在所述EAP客户端利用SkeyP从认证消息1中解密得到MAC后,还包括:利用CertS解密出H(ID_S|MAC),并利用解密出的MAC对H(ID_S|MAC)进行验签;

其中,ESkeyS(H(ID_S|MAC))表示用SkeyS加密H(ID_S|MAC),H(IDS|MAC)表示对ID_S|MAC进行哈希Hash运算得到的Hash运算结果。

4.根据权利要求3所述的方法,其特征在于,所述认证消息2还包括:ID_S、ID_P、ESkeyP(H(ID_P|MAC));以及

在所述EAP服务器利用SkeyS从认证消息2中解密得到MAC后,还包括:利用CertP解密出H(ID_P|MAC),并利用解密出的MAC对H(ID_P|MAC)进行验签;

其中,ESkeyP(H(ID_P|MAC))表示用SkeyP加密H(ID_P|MAC),H(ID_P|MAC)表示对ID_P|MAC进行哈希Hash运算得到的Hash运算结果。

5.根据权利要求1所述的方法,其特征在于,在确定所述EAP客户端的认证通过后,还包括:

所述EAP客户端和EAP服务器利用交换的公钥,完成共享密钥的协商过程。

6.根据权利要求5所述的方法,其特征在于,所述EAP客户端和EAP服务器利用交换的公钥,进行共享密钥的协商,具体包括:

所述EAP客户端和EAP服务器均计算出Z_S、Z_P;其中,Z_S是根据CertS和ID_S计算的杂凑值,Z_P是根据CertP和ID_P计算的杂凑值;

所述EAP服务器使用Z_S,Z_P,(CertS,SkeyS),(CertS*,SkeyS*),CertP,CertP*通过密钥协商算法得到协商密钥K1后,向所述EAP客户端发送密钥协商消息1,所述密钥协商消息1携带ID_S、ID_P、ECertP(K1)和ESkeyS(H(ID_S|K1));

所述EAP客户端接收到所述密钥协商消息1后,利用SkeyP解密出密钥K1,并利用K1对根据CertS解密出的H(ID_S|K1)进行验签成功后,使用Z_S,Z_P,(CertP,SkeyP),(CertP*,SkeyP*),CertS,CertS*通过密钥协商算法得到协商密钥K2;

所述EAP客户端在验证K1与K2相等后,确认密钥协商成功,将K1和ID_S对应保存。

7.根据权利要求6所述的方法,其特征在于,在所述确认密钥协商成功后,还包括:所述EAP客户端向所述EAP服务器发送密钥协商消息2,所述密钥协商消息2携带ID_S、ID_P、ECertS(K2)和ESkeyP(H(ID_P|K2));

所述EAP服务器接收到所述密钥协商消息2后,利用SkeyS解密出密钥K2,并利用K2对根据CertP解密出的H(ID_P|K2)进行验签成功后,将解密出的K2与K1进行比较;

所述EAP服务器确定K2与K1的比较结果一致后,确认密钥协商成功,将K1和ID_P对应保存。

8.一种基于SM2算法的可扩展身份认证系统,其特征在于,包括:EAP客户端和EAP服务器;其中,

所述EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换:

所述EAP客户端向所述EAP服务器发送认证请求信息;

所述EAP服务器接收到所述认证请求信息后生成临时公钥‑私钥对(CertS*,SkeyS*)后,向所述EAP客户端发送认证准备开始消息,所述认证准备开始消息中携带所述EAP服务器的标识符ID_S和CertS*;

所述EAP客户端接收到所述认证准备开始消息后,向所述EAP服务器发送认证准备消息

1,所述认证准备消息1携带所述EAP客户端的标识符ID_P,ECertS*(CertP)和ESkeyP(H(CertP));

所述EAP服务器利用SkeyS*从接收到的认证准备消息1中解密得到CertP,利用CertP对ESkeyP(H(CertP))验签成功后,向所述EAP客户端发送认证准备消息2,所述认证准备消息2携带所述EAP服务器的标识符ID_S,ECertP(CertS)和ESkeyS(H(CertS));

所述EAP客户端利用SkeyP从接收到的认证准备消息2中解密得到CertS,利用CertS对ESkeyS(H(CertS))验签成功后,生成临时公钥‑私钥对(CertP*,SkeyP*),并向所述EAP服务器发送认证准备完成消息,所述认证准备完成消息携带ID_S、ID_P、ECertS(CertP*)和ESkeyP*(H(CertP*));

所述EAP服务器利用SkeyS从接收到的认证准备完成消息中解密得到CertP*,利用CertP*对ESkeyP*(H(CertP*))验签成功后,确认认证准备阶段完成;

其中,ECertS*(CertP)表示用CertS*加密CertP,ESkeyP(H(CertP))表示用SkeyP加密H(CertP);ECertP(CertS)表示用CertP加密CertS,ESkeyS(H(CertS))表示用SkeyS加密H(CertS);ECertS(CertP*)表示用CertS加密CertP*;ESkeyP*(H(CertP*))表示用SkeyP*加密H(CertP*);H(CertP)表示对ID_P和CertP进行哈希Hash运算得到的Hash运算结果;H(CertS)表示对ID_S和CertS进行哈希Hash运算得到的Hash运算结果;H(CertP*)表示对ID_P和CertP*进行哈希Hash运算得到的Hash运算结果;

所述EAP服务器向所述EAP客户端发送认证消息1,其中包括利用所述EAP客户端的公钥CertP加密的MAC;

所述EAP客户端利用自己的私钥SkeyP从认证消息1中解密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用所述EAP服务器的公钥CertS加密的MAC;

所述EAP服务器利用自己的私钥SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC,和之前加密的MAC之间的比较结果,确定所述EAP客户端的认证是否通过。

9.根据权利要求8所述的系统,其特征在于,所述EAP客户端和EAP服务器还用于利用交换的公钥,进行共享密钥的协商。

说明书 :

一种基于SM2算法的可扩展身份认证方法和系统

技术领域

[0001] 本发明涉及通信加密技术领域,特别是指一种基于SM2算法的可扩展身份认证方法和系统。

背景技术

[0002] 网络的广泛使用,深深影响着人们的生活,但随着网络广泛应用所带来的安全性问题也十分突出。网络安全的众多问题中,身份认证问题是其中一个首要解决的问题。身份
认证是用于鉴别接入用户身份,并识别和限制非法用户访问网络系统资源的一种技术手
段。如何正确的识别用户身份,并在相对安全的情况下对用户信息进行验证,是身份认证方
法设计中普遍的思路。
[0003] 可扩展身份认证协议(Extensible Authentication Portocol,EAP)最早定义在RFC 2284中,被设计用于点对点封装协议PPP协议中,是一种一般运行在数据链路层上,不
必依赖于IP,支持多种认证方法的认证框架,而不是一个认证机制,后来被RFC 3748更新,
用于基于端口的802.1X访问控制,最后又被RFC 5247所更新,现在主要用于网络接入认证。
EAP协议是IEEE 802.1X认证机制的核心,它在链路控制(LCP)阶段没有选定一种认证机制,
而把这一步推迟到了认证阶段。这就允许认证者在决定采用何种认证方法前得到更多信
息,甚至允许认证者把收到的报文直接传给后端认证服务器,由后端认证服务器来真正实
施各种认证方法,实现了EAP的扩展性及灵活性。
[0004] 使用EAP协议,任意身份认证方法都可以对远程访问连接进行身份认证。通过远程VPN客户端和认证程序协商要使用的确切身份认证方案。特定的EAP身份认证方案称为EAP
类型。远程访问客户端和认证程序必须支持相同的EAP类型才能成功进行身份认证。
[0005] EAP协议类型包括多种,有些EAP类型是产商私有的,有些EAP类型是标准的,如LEAP是Cisco私有的,PEAP是公有的标准。有些EAP仅能提供单向认证,而有些EAP可提供双
向认证。在双向认证中,不仅认证服务器需要对请求方的身份进行认证,请求方也必须对认
证服务器的身份进行认证,以防止自己提供的用户名和密码被非法或假冒的认证服务器窃
取。
[0006] EAP一般的认证流程如下:
[0007] 1)在链路建立阶段完成后,认证者发送一个或多个请求(Request)消息给被认证者,请求消息中有一个区域表明请求的类型;
[0008] 2)被认证者对每一个请求消息响应一个响应(Response)消息,同样,响应消息中也有一个区域,与请求的类型对应;
[0009] 3)认证者发送一个成功(Success)或失败(Failure)消息来结束认证。
[0010] 现有的EAP认证方法目前大约有40种,IETF的RFC中定义的方法包括:EAP‑MD5、EAP‑OTP、EAP‑GTC、EAP‑TLS、EAP‑SIM和EAP‑AKA,还包括一些厂商提供的新的方法和新的建
议。而其中很多方法都没有很强的认证保证,例如,MD5挑战字,只提供用户名和密码,还是
单向认证,因此很容易受到离线字典攻击和中间人攻击,被攻破或假冒。

发明内容

[0011] 有鉴于此,本发明的目的在于提出一种基于SM2算法的可扩展身份认证方法和系统,用以加强EAP的认证保证,提高网络身份认证安全性。
[0012] 基于上述目的,本发明提供一种基于SM2算法的可扩展身份认证方法,包括:
[0013] EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;其中,所述EAP客户端、服务器预先生成的公钥‑私钥对分别为
(CertP,SkeyP)、(CertS,SkeyS),所述EAP客户端、服务器临时产生的公钥‑私钥对分别为
(CertP*,SkeyP*)、(CertS*,SkeyS*);
[0014] 所述EAP服务器向所述EAP客户端发送认证消息1,其中包括利用CertP加密的MAC;
[0015] 所述EAP客户端利用SkeyP从认证消息1中解密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用CertS加密的MAC;
[0016] 所述EAP服务器利用SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC和之前加密的MAC之间的比较结果,确定所述EAP客户端的认证是否通过。
[0017] 其中,所述EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换,具体包括:
[0018] 所述EAP客户端向所述EAP服务器发送认证请求信息;
[0019] 所述EAP服务器接收到所述认证请求信息后生成临时公钥‑私钥对(CertS*,SkeyS*)后,向所述EAP客户端发送认证准备开始消息,所述认证准备开始消息中携带所述
EAP服务器的标识符ID_S和CertS*;
[0020] 所述EAP客户端接收到所述认证准备开始消息后,向所述EAP服务器发送认证准备消息1,所述认证准备消息1携带所述EAP客户端的标识符ID_P,ECertS*(CertP)和ESkeyP(H
(CertP));
[0021] 所述EAP服务器利用SkeyS*从接收到的认证准备消息1中解密得到CertP,利用CertP对ESkeyP(H(CertP))验签成功后,向所述EAP客户端发送认证准备消息2,所述认证准备
消息2携带所述EAP服务器的标识符ID_S,ECertP(CertS)和ESkeyS(H(CertS));
[0022] 所述EAP客户端利用SkeyP从接收到的认证准备消息2中解密得到CertS,利用CertS对ESkeyS(H(CertS))验签成功后,生成临时公钥‑私钥对(CertP*,SkeyP*),并向所述
EAP服务器发送认证准备完成消息,所述认证准备完成消息携带ID_S、ID_P、ECertS(CertP*)
和ESkeyP*(H(CertP*));
[0023] 所述EAP服务器利用SkeyS从接收到的认证准备完成消息中解密得到CertP*,利用CertP*对ESkeyP*(H(CertP*))验签成功后,确认认证准备阶段完成;
[0024] 其中,ECertS*(CertP)表示用CertS*加密CertP,ESkeyP(H(CertP))表示用SkeyP加密H(CertP);ECertP(CertS)表示用CertP加密CertS,ESkeyS(H(CertS))表示用SkeyS加密H
(CertS);ECertS(CertP*)表示用CertS加密CertP*;ESkeyP*(H(CertP*))表示用SkeyP*加密H
(CertP*);H(CertP)表示对ID_P和CertP进行哈希Hash运算得到的Hash运算结果;H(CertS)
表示对ID_S和CertS进行哈希Hash运算得到的Hash运算结果;H(CertP*)表示对ID_P和
CertP*进行哈希Hash运算得到的Hash运算结果。
[0025] 进一步,在所述EAP服务器向所述EAP客户端发送认证消息1之前,还包括:
[0026] 所述EAP服务器向EAP客户端发送携带ID_S的认证开始消息;
[0027] 所述EAP客户端向所述EAP服务器返回携带ID_P的认证响应消息。
[0028] 进一步,所述认证消息1还包括:ID_S、ID_P、ESkeyS(H(ID_S|MAC));以及
[0029] 在所述EAP客户端利用SkeyP从认证消息1中解密得到MAC后,还包括:利用CertS解密出H(ID_S|MAC),并利用解密出的MAC对H(ID_S|MAC)进行验签;
[0030] 其中,ESkeyS(H(ID_S|MAC))表示用SkeyS加密H(ID_S|MAC),H(IDS|MAC)表示对ID_S|MAC进行哈希Hash运算得到的Hash运算结果。
[0031] 进一步,所述认证消息2还包括:ID_S、ID_P、ESkeyP(H(ID_P|MAC));以及
[0032] 在所述EAP服务器利用SkeyS从认证消息2中解密得到MAC后,还包括:利用CertP解密出H(ID_P|MAC),并利用解密出的MAC对H(ID_P|MAC)进行验签;
[0033] 其中,ESkeyP(H(ID_P|MAC))表示用SkeyP加密H(ID_P|MAC),H(ID_P|MAC)表示对ID_P|MAC进行哈希Hash运算得到的Hash运算结果。
[0034] 进一步,在确定所述EAP客户端的认证通过后,还包括:
[0035] 所述EAP客户端和EAP服务器利用交换的公钥,完成共享密钥的协商过程。
[0036] 其中,所述EAP客户端和EAP服务器利用交换的公钥,进行共享密钥的协商,具体包括:
[0037] 所述EAP客户端和EAP服务器均计算出Z_S、Z_P;其中,Z_S是根据CertS和ID_S计算的杂凑值,Z_P是根据CertP和ID_P计算的杂凑值;
[0038] 所述EAP服务器使用Z_S,Z_P,(CertS,SkeyS),(CertS*,SkeyS*),CertP,CertP*通过密钥协商算法得到协商密钥K1后,向所述EAP客户端发送密钥协商消息1,所述密钥协商
消息1携带ID_S、ID_P、ECertP(K1)和ESkeyS(H(ID_S|K1));
[0039] 所述EAP客户端接收到所述密钥协商消息1后,利用SkeyP解密出密钥K1,并利用K1对根据CertS解密出的H(ID_S|K1)进行验签成功后,使用Z_S,Z_P,(CertP,SkeyP),
(CertP*,SkeyP*),CertS,CertS*通过密钥协商算法得到协商密钥K2;
[0040] 所述EAP客户端在验证K1与K2相等后,确认密钥协商成功,将K1和ID_S对应保存。
[0041] 进一步,在所述确认密钥协商成功后,还包括:
[0042] 所述EAP客户端向所述EAP服务器发送密钥协商消息2,所述密钥协商消息2携带ID_S、ID_P、ECertS(K2)和ESkeyP(H(ID_P|K2));
[0043] 所述EAP服务器接收到所述密钥协商消息2后,利用SkeyS解密出密钥K2,并利用K2对根据CertP解密出的H(ID_P|K2)进行验签成功后,将解密出的K2与K1进行比较;
[0044] 所述EAP服务器确定K2与K1的比较结果一致后,确认密钥协商成功,将K1和ID_P对应保存。
[0045] 本发明还提供一种基于SM2算法的可扩展身份认证系统,包括:EAP客户端和EAP服务器;其中,
[0046] 所述EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;
[0047] 所述EAP服务器向所述EAP客户端发送认证消息1,其中包括利用所述EAP客户端的公钥CertP加密的MAC;
[0048] 所述EAP客户端利用自己的私钥SkeyP从认证消息1中解密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用所述EAP服务器的公钥CertS加密的MAC;
[0049] 所述EAP服务器利用自己的私钥SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC,和之前加密的MAC之间的比较结果,确定所述EAP客户端的认证是否通过。
[0050] 本发明的技术方案中,EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;其中,所述EAP客户端、服务器预先生成的公
钥‑私钥对分别为(CertP,SkeyP)、(CertS,SkeyS),所述EAP客户端、服务器临时产生的公
钥‑私钥对分别为(CertP*,SkeyP*)、(CertS*,SkeyS*);所述EAP服务器向所述EAP客户端发
送认证消息1,其中包括利用CertP加密的MAC;所述EAP客户端利用SkeyP从认证消息1中解
密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用CertS加密的MAC;所述EAP服
务器利用SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC和之前加密的MAC之间
的比较结果,确定所述EAP客户端的认证是否通过。通过非对称加密算法SM2算法对认证信
息进行加密传输,被认证方和认证方在可扩展认证协议(Extensible Authentication 
Protocol,EAP)下对认证消息进行确认,保证验证用户信息的相对安全,实现点对点无中心
的身份认证,从而实现安全的身份认证功能,并达到加强EAP认证保证的目的,提高信息系
统安全性。
[0051] 此外,本发明技术方案中,在对所述EAP客户端的身份认证通过后,所述EAP客户端和EAP服务器还可利用交换的公钥,完成共享密钥的协商过程;也就是说实现SM2密钥协商
基础上的EAP认证方法,进一步提高信息系统安全性。

附图说明

[0052] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以
根据这些附图获得其他的附图。
[0053] 图1为本发明实施例提供的一种基于SM2算法的可扩展身份认证方法流程图;
[0054] 图2为本发明实施例提供的一种认证准备阶段的方法流程图;
[0055] 图3为本发明实施例提供的一种身份认证阶段的方法流程图;
[0056] 图4为本发明实施例提供的一种密钥配置阶段的方法流程图。

具体实施方式

[0057] 为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0058] 需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第
二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部
分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后
面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似
的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是
间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变
后,则该相对位置关系也可能相应地改变。
[0059] 本发明的发明人考虑到,现有的“弱”EAP认证方法绝大多数都是传统EAP类型,很大原因是因为缺少复杂的可靠的加密算法。而随着密码技术和计算技术的发展,常用的
1024位RSA算法面临严重的安全威胁,因此设计了非对称加密算法,SM2椭圆曲线加密算法
(国产商用密码算法的一种)来替换RSA算法。SM2椭圆曲线加密算法是我国基于国际公开的
ECC加密算法而自主设计的一种加密算法,其标准由国家密码管理局于2010年12月17日发
布。SM2标准包括总则,数字签名算法,密钥交换协议,公钥加密算法四个部分,分别用于实
现数字签名,密钥协商和数据加密等功能。
[0060] 与ECC算法不同的是,SM2算法(一种商用密码算法)在签名、密钥交换方面采取了比ECDSA、ECDH等国际标准更为安全的机制。
[0061] 另外,SM2算法的椭圆曲线方程为y2=x3+ax+b,在SM2算法标准中,通过指定a、b系数,可以确定唯一的标准曲线。同时,标准还推荐了一条256位的椭圆曲线作为标准曲线。
[0062] 但由于SM2算法与ECC一样是基于椭圆曲线离散对数问题的,计算复杂度是指数级,求解难度较大,因此同等安全程度要求下,椭圆曲线密码算法较其他公钥加密算法所需
密钥长度可以小很多,这也就意味着,相对于RSA算法,256位的SM2密码强度已经比2048位
的RSA密码强度还要高。
[0063] 因此,本发明提出一种基于SM2算法的可扩展身份认证方法,通过非对称加密算法SM2算法对认证信息进行加密传输,被认证方和认证方在可扩展认证协议(Extensible 
Authentication Protocol,EAP)下对认证消息进行确认,保证验证用户信息的相对安全,
从而实现安全的身份认证功能,并达到加强EAP认证保证的目的,提高信息系统安全性。
[0064] 本发明的主要思路为,第一个阶段,EAP客户端和EAP认证服务器进行认证准备工作,完成双方公钥的安全公开。本阶段需要1条开始认证请求消息和由2次EAP请求/响应处
理消息组成4次信息交换。第一个阶段完成才允许进行第二个阶段。第二个阶段,EAP客户端
和EAP认证服务器进行相互认证,并建立起安全的共享协商密钥。本阶段需要由2次EAP请
求/响应处理消息组成4次信息交换。第二个阶段完成,可选择进行第三个阶段。第三个阶
段,对EAP客户端进行共享协商密钥配置。本阶段需要由1次EAP请求/响应处理组成2次信息
交换。重复执行,直到完成所有的客户端所需的认证配置。和所有EAP认证一样,EAP服务器
初始化每一次交换。
[0065] 下面结合附图详细说明本发明实施例的技术方案。
[0066] 本发明提供的一种基于SM2算法的可扩展身份认证系统,包括:EAP服务器和EAP客户端;其中,EAP服务器和EAP客户端之间基于SM2算法的可扩展身份认证方法的流程如图1
所示,包括如下步骤:
[0067] 步骤S101:EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换。
[0068] 具体地,本步骤中,EAP客户端和EAP服务器进行公钥交换,进行认证准备,具体流程如图2所示,包括如下子步骤:
[0069] 子步骤S201:EAP客户端向所述EAP服务器发送认证请求信息。
[0070] 具体地,EAP客户端向所述EAP服务器发送认证请求信息,该认证请求信息为开始认证的标记,消息类型为请求消息,消息内容为空。
[0071] 子步骤S202:EAP服务器接收到所述认证请求信息后生成临时公钥‑私钥对(CertS*,SkeyS*)。
[0072] 具体地,EAP服务器接收到所述认证请求信息后生成临时公钥‑私钥对(CertS*,SkeyS*),并生成一个随机数R1;
[0073] 此外,EAP服务器中还有预先生成的公钥‑私钥对(CertS,SkeyS)。
[0074] 子步骤S203:EAP服务器向所述EAP客户端发送认证准备开始消息。
[0075] 具体地,EAP服务器向EAP客户端发送认证准备开始消息,认证准备开始消息为准备阶段的开始消息,消息类型为请求消息,消息内容包括随机数R1,EAP服务器的标识符ID_
S和CertS*。
[0076] 子步骤S204:EAP客户端接收到所述认证准备开始消息后,向所述EAP服务器发送认证准备消息1。
[0077] 具体地,EAP客户端接收到所述认证准备开始消息后,生成一个随机数R2,并向所述EAP服务器发送认证准备消息1,所述认证准备消息1的消息类型为响应消息,消息内容包
括随机数R1、随机数R2、所述EAP客户端的标识符ID_P,ECertS*(CertP)和ESkeyP(H(CertP))。
[0078] 其中,ECertS*(CertP)表示用CertS*加密CertP,ESkeyP(H(CertP))表示用SkeyP加密H(CertP),H(CertP)表示对ID_P和CertP进行哈希Hash运算得到的Hash运算结果;(CertP,
SkeyP)为EAP客户端预先生成的公钥‑私钥对。
[0079] 子步骤S205:EAP服务器利用SkeyS*从接收到的认证准备消息1中解密得到CertP,利用CertP对ESkeyP(H(CertP))验签。
[0080] 具体地,EAP服务器从接收到的认证准备消息1中利用SkeyS*解密ECertS*(CertP)得到CertP,利用CertP解密ESkeyP(H(CertP))得到H(CertP),将ID_P和解密得到的CertP进行哈
希Hash运算得到的Hash运算结果与解密得到的H(CertP)进行比较,比较结果一致则验签成
功,继续执行如下子步骤S206;否则,结束认证准备过程。
[0081] 子步骤S206:EAP服务器向所述EAP客户端发送认证准备消息2。
[0082] 具体地,验签成功后EAP服务器向所述EAP客户端发送认证准备消息2,认证准备消息2为EAP服务器的确认消息,消息类型为请求消息,消息内容包括:随机数R1、随机数R2、
ID_S、ID_P、ECertP(CertS)和ESkeyS(H(CertS));
[0083] 其中,ECertP(CertS)表示用CertP加密CertS,ESkeyS(H(CertS))表示用SkeyS加密H(CertS);H(CertS)表示对ID_S和CertS进行哈希Hash运算得到的Hash运算结果。
[0084] 子步骤S207:EAP客户端利用SkeyP从接收到的认证准备消息2中解密得到CertS,利用CertS对ESkeyS(H(CertS))验签。
[0085] 具体地,EAP客户端从接收到的认证准备消息2中利用SkeyP解密ECertP(CertS)得到CertS,利用CertS解密ESkeyS(H(CertS))得到H(CertS),将ID_S和解密得到的CertS进行哈希
Hash运算得到的Hash运算结果与解密得到的H(CertS)进行比较,比较结果一致则验签成
功,继续执行如下子步骤S208;否则,结束认证准备过程。
[0086] 子步骤S208:EAP客户端生成临时公钥‑私钥对(CertP*,SkeyP*),并向所述EAP服务器发送认证准备完成消息。
[0087] 具体地,验签成功后EAP客户端生成临时公钥‑私钥对(CertP*,SkeyP*),并向所述EAP服务器发送认证准备完成消息,所述认证准备完成消息为准备阶段完成消息,消息类型
为响应消息,消息内容包括:随机数R1、随机数R2、ID_S、ID_P、ECertS(CertP*)和ESkeyP*(H
(CertP*));
[0088] 其中,ECertS(CertP*)表示用CertS加密CertP*;ESkeyP*(H(CertP*))表示用SkeyP*加密H(CertP*);H(CertP*)表示对ID_P和CertP*进行哈希Hash运算得到的Hash运算结果。
[0089] 子步骤S209:EAP服务器利用SkeyS从接收到的认证准备完成消息中解密得到CertP*,利用CertP*对ESkeyP*(H(CertP*))验签成功后,确认认证准备阶段完成。
[0090] 具体地,EAP服务器从接收到的认证准备完成消息中利用SkeyS解密ECertS(CertP*)得到CertP*,利用CertP*解密ESkeyP*(H(CertP*))得到H(CertP*),将ID_P和解密得到的
CertP*进行哈希Hash运算得到的Hash运算结果与解密得到的H(CertP*)进行比较,比较结
果一致则验签成功,确认认证准备阶段完成;否则,结束认证准备过程失败。
[0091] 步骤S102:在认证准备阶段完成后,EAP服务器和EAP客户端基于交换的公钥,完成EAP客户端的身份认证。
[0092] 具体地,本步骤中EAP服务器对EAP客户端进行身份认证的过程,如图3所示,包括如下子步骤:
[0093] 子步骤S301:EAP服务器向EAP客户端发送认证开始消息。
[0094] 具体地,EAP服务器向EAP客户端发送携带ID_S的认证开始消息,所述认证开始消息的消息类型为请求消息,消息内容包括:随机数R1、随机数R2、ID_S,开始的消息是未被认
证的。
[0095] 子步骤S302:EAP客户端向所述EAP服务器返回认证响应消息。
[0096] 具体地,EAP客户端接收到认证开始消息后,向所述EAP服务器返回携带ID_P的认证响应消息,所述认证响应消息为EAP客户端的响应消息,消息类型为响应消息,消息内容
包括随机数R1、随机数R2、ID_P。
[0097] 子步骤S303:EAP服务器向所述EAP客户端发送认证消息1。
[0098] 具体地,EAP服务器接收到认证响应消息后,向所述EAP客户端发送认证消息1,所述认证消息1为EAP服务器的确认消息,消息类型为请求消息,消息内容包括:随机数R1、随
机数R2、ID_S、ID_P、ECertP(MAC)和ESkeyS(H(ID_S|MAC));
[0099] 其中,ECertP(MAC)表示利用CertP加密的MAC,MAC表示EAP服务器的媒体存取控制位址(Media Access Control Address);ESkeyS(H(ID_S|MAC))表示利用SkeyS加密H(ID_S|
MAC);H(ID_S|MAC)表示对ID_S|MAC进行哈希Hash运算得到的Hash运算结果;|表示数据连
接。
[0100] 子步骤S304:EAP客户端利用SkeyP从认证消息1中解密得到MAC后,向所述EAP服务器发送认证消息2。
[0101] 具体地,EAP客户端从认证消息1中利用SkeyP解密ECertP(MAC)得到MAC,利用CertS解密ESkeyS(H(ID_S|MAC))得到H(ID_S|MAC)后利用解密出的MAC对H(ID_S|MAC)进行验签:将
根据ID_S|MAC进行哈希Hash运算得到的Hash运算结果与解密得到的H(ID_S|MAC)进行比
较;若比较结果一致,则确认验签成功;否则,验签失败。
[0102] 在确认ESkeyS(H(ID_S|MAC))验签成功后,EAP客户端向所述EAP服务器发送认证消息2,所述认证消息2为认证阶段完成消息,消息类型为响应消息,消息内容包括:随机数R1、
随机数R2、ID_S、ID_P、ECertS(MAC)和ESkeyP(H(ID_P|MAC))。
[0103] 其中,ECertS(MAC)表示利用CertS加密的MAC;ESkeyP(H(ID_P|MAC))表示利用SkeyP加密H(ID_P|MAC);H(ID_P|MAC)表示对ID_P|MAC进行哈希Hash运算得到的Hash运算结果。
[0104] 子步骤S305:EAP服务器根据接收的认证消息2对EAP客户端进行身份认证。
[0105] 具体地,EAP服务器从认证消息2中利用SkeyS解密ECertS(MAC)得到MAC,利用CertP解密ESkeyP(H(ID_P|MAC))得到H(ID_P|MAC)后利用解密出的MAC对H(ID_P|MAC)进行验签:将
对ID_P|MAC进行哈希Hash运算得到的Hash运算结果与解密得到的H(ID_P|MAC)进行比较;
若比较结果一致,则确认验签成功;否则,验签失败。
[0106] 在验签成功后EAP服务器将解密得到的MAC和之前加密的MAC进行比较,根据比较结果确定所述EAP客户端的认证是否通过:若解密得到的MAC和之前加密的MAC之间的比较
结果一致,则EAP服务器确定所述EAP客户端的认证通过;否则,确定所述EAP客户端的认证
不通过,即认证失败,EAP服务器返回初始状态,初始化数据。
[0107] 步骤S103:EAP客户端和EAP服务器利用交换的公钥,进行密钥配置,完成共享密钥的协商过程。
[0108] 本步骤的具体过程,如图4所示,包括如下子步骤:
[0109] 子步骤S401:EAP客户端和EAP服务器均计算出Z_S、Z_P。
[0110] 具体地,本步骤中,EAP客户端根据CertS和ID_S通过SM3杂凑算法(国产商用密码算法中常用于数字签名和验签认证的杂凑值计算的一种算法)得到杂凑值Z_S,根据CertP
和ID_P通过SM3杂凑算法得到杂凑值Z_P;且EAP服务器根据CertS和ID_S通过SM3杂凑算法
得到杂凑值Z_S,根据CertP和ID_P通过SM3杂凑算法得到杂凑值Z_P。
[0111] 子步骤S402:EAP服务器向EAP客户端发送密钥协商消息1。
[0112] 具体地,EAP服务器使用Z_S,Z_P,(CertS,SkeyS),(CertS*,SkeyS*),CertP,CertP*通过密钥协商算法得到协商密钥K1后,向所述EAP客户端发送密钥协商消息1;所述
密钥协商消息1为EAP服务器的密钥配置请求消息,消息类型为请求消息,消息内容包括:随
机数R1、随机数R2、ID_S、ID_P、ECertP(K1)和ESkeyS(H(ID_S|K1));
[0113] 其中,ECertP(K1)表示利用CertP加密的K1;ESkeyS(H(ID_S|K1))表示利用SkeyS加密的H(ID_S|K1);H(ID_S|K1)表示对ID_S|K1进行哈希Hash运算得到的Hash运算结果。
[0114] 子步骤S403:EAP客户端根据接收的密钥协商消息1确认密钥协商是否成功。
[0115] 具体地,EAP客户端接收到所述密钥协商消息1后,利用SkeyP解密出密钥K1,并利用K1对根据CertS解密出的H(ID_S|K1)进行验签:将对ID_S|K1进行哈希Hash运算得到的
Hash运算结果与解密得到的H(ID_S|K1)进行比较;若比较结果一致,则确认验签成功;否
则,验签失败。
[0116] 验签成功后,EAP客户端使用Z_S,Z_P,(CertP,SkeyP),(CertP*,SkeyP*),CertS,CertS*通过密钥协商算法得到协商密钥K2;EAP客户端在验证K1与K2相等后,确认密钥协商
成功,将K1和ID_S对应保存。
[0117] 子步骤S404:EAP客户端向所述EAP服务器发送密钥协商消息2。
[0118] 具体地,EAP客户端确认密钥协商成功后,向所述EAP服务器发送密钥协商消息2,所述密钥协商消息2为密钥配置完成消息,消息类型为响应消息,消息内容包括:随机数R1、
随机数R2、ID_S、ID_P、ECertS(K2)和ESkeyP(H(ID_P|K2))。
[0119] 其中,ECertS(K2)表示利用CertS加密的K2;ESkeyP(H(ID_P|K2))表示利用SkeyP加密的H(ID_P|K2);H(ID_P|K2)表示对ID_P|K2进行哈希Hash运算得到的Hash运算结果。
[0120] 子步骤S405:EAP服务器根据接收的密钥协商消息2确认密钥协商是否成功。
[0121] 具体地,EAP服务器接收到所述密钥协商消息2后,利用SkeyS解密ECertS(K2)得到密钥K2,并利用K2对根据CertP解密出的H(ID_P|K2)进行验签:将对ID_P|K2进行哈希Hash运
算得到的Hash运算结果与解密得到的H(ID_P|K2)进行比较;若比较结果一致,则确认验签
成功;否则,验签失败。
[0122] 验签成功后,EAP服务器将解密出的K2与K1进行比较;EAP服务器确定K2与K1的比较结果一致后,确认密钥协商成功,将K1和ID_P对应保存。
[0123] 本发明的技术方案中,EAP客户端和EAP服务器基于临时产生的公钥‑私钥对,完成双方的预先生成的公钥‑私钥对中的公钥交换;其中,所述EAP客户端、服务器预先生成的公
钥‑私钥对分别为(CertP,SkeyP)、(CertS,SkeyS),所述EAP客户端、服务器临时产生的公
钥‑私钥对分别为(CertP*,SkeyP*)、(CertS*,SkeyS*);所述EAP服务器向所述EAP客户端发
送认证消息1,其中包括利用CertP加密的MAC;所述EAP客户端利用SkeyP从认证消息1中解
密得到MAC后,向所述EAP服务器发送认证消息2,其中包括利用CertS加密的MAC;所述EAP服
务器利用SkeyS从认证消息2中解密得到MAC后,根据解密得到的MAC和之前加密的MAC之间
的比较结果,确定所述EAP客户端的认证是否通过。通过非对称加密算法SM2算法对认证信
息进行加密传输,被认证方和认证方在可扩展认证协议(Extensible Authentication 
Protocol,EAP)下对认证消息进行确认,保证验证用户信息的相对安全,实现点对点无中心
的身份认证,从而实现安全的身份认证功能,并达到加强EAP认证保证的目的,提高信息系
统安全性。
[0124] 此外,本发明技术方案中,在对所述EAP客户端的身份认证通过后,所述EAP客户端和EAP服务器还可利用交换的公钥,完成共享密钥的协商过程;也就是说实现SM2密钥协商
基础上的EAP认证方法,进一步提高信息系统安全性。
[0125] 本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或
其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器
(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器
(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读
存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其
他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
[0126] 所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例
或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如
上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。
[0127] 另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以
以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这
些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当
完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的
示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节
的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明
性的而不是限制性的。
[0128] 尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例
如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
[0129] 本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进
等,均应包含在本发明的保护范围之内。