著录项信息
专利名称 | 一种多因子身份验证方法及其系统 |
申请号 | CN201510097325.0 | 申请日期 | 2015-03-05 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-05-27 | 公开/公告号 | CN104660605A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04L29/06 | IPC分类号 | H;0;4;L;2;9;/;0;6;;;H;0;4;L;9;/;3;2查看分类表>
|
申请人 | 北京安普诺信息技术有限公司 | 申请人地址 | 北京市海淀区安宁庄西路9号院25号楼3层1-303室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京安普诺信息技术有限公司 | 当前权利人 | 北京安普诺信息技术有限公司 |
发明人 | 张涛;宁戈;王雁 |
代理机构 | 北京万象新悦知识产权代理事务所(普通合伙) | 代理人 | 苏爱华 |
摘要
本发明公布了一种多因子身份验证方法及其系统,包括注册阶段和认证阶段,注册阶段:当前用户设定为C,通过设置用户登录名和登录口令进行注册,认证阶段包括客户端与服务器端双向认证和登录关联:服务器端通过结合随机数和硬件指纹验证客户端信息、客户端通过注册时服务器返回的公钥验证服务器端、服务器端将本次登录和下一次登录进行登录关联。本发明是一种非硬件的多因子身份鉴别方法,可以满足登录身份验证系统的身份认证、信息安全性、完整性及不可抵赖性的要求;且无需硬件设备,方便使用。
1.一种多因子身份验证方法,包括注册阶段和认证阶段,具体包括如下步骤:
(一)注册阶段:设定当前用户为C,当前用户C通过设置用户登录名为Uc、用户登录口令为Pc和登录次数为Nc进行注册,客户端和服务器端S依次进行如下操作:
1.1)客户端生成随机数Rc1,通过哈希函数计算得到注册阶段临时变量J1,将{Uc,J1}保存;同时将{Uc,J1}发送给服务器端;
1.2)服务器端接收并保存{Uc,J1},采集得到客户端硬件指纹信息Fc,通过计算得到注册阶段临时变量J2,将{e,J2}作为质询信息发送给客户端;其中e为服务器S的公钥;
1.3)客户端收到来自服务器端的质询信息,通过计算得到服务器身份鉴别的信息注册阶段临时变量J3和J4;将 保存至本地硬盘;将{Uc,Nc,J3,J4}作为回应服务器端的质询的信息发送给服务器;
1.4)服务器端接收来自客户端传递的回应信息,计算得到客户端的身份鉴别信息 和激活手机软件的密钥信息Key;经过注册,Pass是注册成功信息;将
保存至服务器;将{Pass,Key}发送给客户端;
1.5)客户端接收{Pass,Key},用户C将收到的Key输入该用户使用的手机激活软件;
(二)认证阶段:用户C在客户端输入用户登录名Uc和用户登录口令Pc,认证阶段包括客户端与服务器端双向认证和登录关联,具体为如下操作:
2.1)客户端通过计算得到认证阶段客户端的临时变量Kc1和Kc2,将{Uc、Kc1、Kc2}发送给服务器端;
2.2)服务器端验证客户端信息:服务器端通过结合随机数和硬件指纹,计算得到服务器端质询信息{Ks1,Ks2}发送给客户端;所述客户端信息包括用户名Uc、用户口令Pc、用户使用的计算机和用户身份,所述用户使用的计算机通过注册时采集的硬件指纹来验证,所述用户身份通过注册时用户使用的手机来验证;
2.3)客户端验证服务器端:客户端通过注册时服务器返回的公钥e,计算得到认证阶段客户端的临时变量Kc3、Kc4、Kc5和Kc6,将{Uc,Kc3,Kc4,Kc5,Kc6}作为回应信息发送给服务器;
2.4)服务器端将本次登录和下一次登录进行登录关联,通过计算得到客户端身份鉴别信息 认证通过后更新服务器中的存储信息 将{Pass}发送
给客户端;
2.5)客户端更新本地硬盘中的存储信息,认证结束;客户端本地硬盘中的存储信息更新为 其中
其中,As为服务器端S自有的秘密信息;h为哈希函数;||是逻辑或运算符;是逻辑异或运算符。
2.如权利要求1所述多因子身份验证方法,其特征是,所述注册阶段步骤1.2)具体包括:
1.2.1)接收并保存{Uc,J1}至服务器端S;
1.2.2)采集得到客户端硬件指纹信息Fc,将Fc存储在服务器S;其中,Fc=Mac||HD||Cpu,Mac为客户端硬件Mac地址,HD为客户端硬盘序列号,Cpu为客户端的CpuID;
1.2.3)利用服务器S自有的秘密信息As、服务器S的公钥e和J1,通过哈希函数计算得到注册阶段临时变量J2;
1.2.4)将{e,J2}作为质询信息发送给客户端。
3.如权利要求1所述多因子身份验证方法,其特征是,所述注册阶段步骤1.3)具体包括:
1.3.1)保存{e,J2}至本地硬盘;
1.3.2)利用J1和J2,计算 作为服务器身份鉴别信息的一部分;
1.3.3)利用Uc、Pc和Nc,计算h2(Uc||Pc||Nc),得到的是服务器身份鉴别信息的一部分;
1.3.4)利用步骤1.3.2)和1.3.3)的结果,计算
1.3.5)将 保存至本地硬盘;
1.3.6)利用Uc、Pc、Nc和Fc,计算得到h2(Uc||Pc||Nc||Fc);
1.3.7)利用步骤1.3.2)和1.3.6)的结果,计算 得到
数据J3;
1.3.8)利用步骤1.3.2)的结果和该用户使用的手机M的IMEI电子串号Im,计算
得到J4;
1.3.9)将{Uc,Nc,J3,J4}作为回应服务器端的质询的信息发送给服务器。
4.如权利要求1所述多因子身份验证方法,其特征是,所述注册阶段步骤1.4)具体包括:
1.4.1)保存{Uc,Nc,J3,J4}至服务器;
1.4.2)利用As、e和J3,由函数 计算得到h2(Uc||Pc||Nc||Fc);
1.4.3)利用As和服务器S的私钥d,计算h2(As||d);
1.4.4)利用步骤1.4.2)和1.4.3)的结果,计算 作
为客户端的身份鉴别信息;
1.4.5)利用As、e和J4,计算 Im为手机M的电子串号IMEI;
1.4.6)利用Uc、Nc、Fc、 及Im,计算 得到激活手机软件的
密钥Key;
1.4.7)经过注册,将 保存至服务器;
1.4.8)将{Pass,Key}发送给客户端。
5.如权利要求1所述多因子身份验证方法,其特征是,所述认证阶段步骤2.1)具体包括:
2.1.1)利用Uc、Pc、Nc,计算h2(Uc||Pc||Nc),得到用户名、用户口令、登录次数的哈希值;
2.1.2)由 计算得到h2(As||e);
2.1.3)生成随机数Rc2,通过 Kc2=h2(Rc2||Uc)计算得到认证阶段
客户端的临时变量Kc1和Kc2;
2.1.4)保存{h2(As||e),Rc2};
2.1.5)将{Uc、Kc1、Kc2}发送给服务器端。
6.如权利要求1所述多因子身份验证方法,其特征是,所述认证阶段步骤2.2)具体包括:
2.2.1)将步骤2.1)发送来的{Uc、Kc1、Kc2}保存至服务器S;
2.2.2)利用As和e,计算得到h2(As||e);
2.2.3)计算 得到Rc2;其中,Rc2为客户端在认证阶段产生的随机
数;
2.2.4)计算得到h2(Uc||Rc2);
2.2.5)将步骤2.2.4)的结果h2(Uc||Rc2)与Kc2进行比较;
2.2.6)服务器S采集客户端的硬件指纹,与Fc比较;
2.2.7)若步骤2.2.5)、步骤2.2.6)的比较结果均相同,则认证通过,进入步骤2.2.8);
否则认证无法通过,发出无法验证客户端身份的警告,认证结束;
2.2.8)利用私钥d加密当前时间信息Ti,得到d(Ti);
2.2.9)计算 得到Ks1,作为服务器发送给客户端的质询信息的一
部分;
2.2.10)计算Ks2=h2(Ti||Rc2),得到Ks2,作为服务器端质询信息的另一部分;
2.2.11)将{Ks1,Ks2}作为质询信息发送给客户端。
7.如权利要求1所述多因子身份验证方法,其特征是,所述认证阶段步骤2.3)具体包括:
2.3.1)客户端保存{Ks1,Ks2}至本地硬盘;
2.3.2)由函数 计算得到d(Ti);其中,Ti为时间信息,i=1,2,3,4,5,6;d
为服务器端S的私钥;
2.3.3)利用服务器公钥e解密d(Ti),得到Ti;
2.3.4)由哈希函数计算得到h2(Rc2||Ti);其中,Rc2为客户端在认证阶段产生的随机数;
2.3.5)将步骤2.3.4)的结果h2(Rc2||Ti)与Ks2进行比较;
2.3.6)若比较结果相同,且本次时间信息Ti晚于上次认证时间,则认证通过,进入步骤
2.3.7);否则认证无法通过,发出警告,认证结束;
2.3.7)利用Uc、Pc、Nc、Fc和Ti,计算得到以下值作为客户端回应服务器端质询的答复的一部分:
Kc5=h3(Uc||Pc||Nc-1||Fc);
2.3.8)用户C利用手机M生成随机数Rm,其中Rm=h(Key||Tj),Tj为当前时间;
2
2.3.9)计算Kc6=h(Uc||Rm),得到客户端回应服务器端质询的答复的一部分信息;
2.3.10)将{Uc,Kc3,Kc4,Kc5,Kc6}作为回应信息发送给服务器。
8.如权利要求1所述多因子身份验证方法,其特征是,所述认证阶段步骤2.4)具体包括:
2.4.1)保存{Uc,Kc3,Kc4,Kc5,Kc6}至服务器;
2.4.2)由哈希函数计算得到h2(As||d);其中,d为服务器端S的私钥;
2.4.3)由函数 计算得到Ks3;
2.4.4)由函数 计算得到Ks4;其中,Ti为时间信息,i=1,2,3,4,5,6;
2.4.5)将Ks3与Ks4比较,相同则认证通过,进入步骤2.4.6);否则认证无法通过,发出警告,认证结束;
2.4.6)由哈希函数计算得到h(Key||Tj);其中,Tj为时间信息,j=1,2,3,4,5,6;
2.4.7)由哈希函数计算得到h2(Uc||Rm);其中,Rm为手机M生成的动态随机数;
2.4.8)将步骤2.4.7)的结果与Kc6比较,相同则认证通过,进入步骤2.4.9);否则认证无法通过,发出警告,认证结束;
2.4.9)利用Ks3及Kc4,计算 h(Ks5)=h3(Uc||
Pc||Nc-1||Fc);
2.4.10)将h(Ks5)与Kc5比较,相同则认证通过,进入步骤2.4.11);否则,认证无法通过,发出警告,认证结束;
2.4.11)利用Ks5及步骤2.4.2)的结果,计算 得
到客户端身份鉴别信息
2.4.12)更新服务器中的存储信息
2.4.13)将{Pass}发送给客户端。
一种多因子身份验证方法及其系统\n技术领域\n[0001] 本发明涉及信息安全技术领域,尤其涉及一种多因子身份验证方法及其系统。\n背景技术\n[0002] 随着互联网技术的飞速发展,通过互联网提供的互联网应用也越来越多。用户在访问这些互联网应用时,如访问电子邮件、访问即时通信应用、访问网站等,为了保证访问的安全性,各互联网应用的提供方通常需要在用户登录时对用户进行身份验证。\n[0003] 从基本原理角度,根据认证因子的不同,身份认证可分为三类:用户所知道的信息(比如口令);用户所持有的物理介质,一般为令牌、智能卡等;用户所具有的特征,即生物特征认证方式。针对多因子身份验证,目前国内外采用的主要是用户名/口令(用户所知)+硬件(用户所持有)。其中,静态口令存在很多安全隐患,比如攻击者在侵入服务器后对获取的用户口令表采用口令猜测攻击来获取用户口令;在远程登录时则不能抵抗直接的网络窃听,从而易遭受重放攻击等。而动态口令即在传输的口令验证信息,是动态变化的。\n[0004] 从计算开销方面考虑,身份鉴别方案可分为两类:基于非单向散列函数和基于单向散列函数的方案。前者有以DES、RSA和EIGamal等进行加密的方案,这类方案的主要局限性是计算开销大、配置较复杂等问题,因此不太适合某些受限制的应用环境(比如用户的计算机配置较低的系统)。以单向散列函数(如MD5和SHA-1)进行加密的方案,由于具有存储、处理和传输开销较小的优点而被广泛关注,但下面几种常见的身份认证协议存在中间人攻击等安全隐患。\n[0005] 1)S/KEY。此方案中由于种子(seed)和迭代值(Seq)都是以明文形式在网络上传输,因此容易受到小数攻击。另外用户登录N-I次后必须重新注册,并且此方案的运算量大且在不同时间运算量不平均,实用性不佳。\n[0006] 2)CHAP(Challenge Handshake Authentication Protocol)。CHAP采用质询/响应方式进行身份鉴别,通过三次握手来对用户进行周期性地验证登录和访问请求,这种方案易受到内部攻击,口令猜测攻击和中间人攻击。\n[0007] 综合说来,多因子身份验证方法的现有技术存在如下问题:\n[0008] 1.多因子认证中,包含硬件因子,比如令牌、智能卡等会给认证带来以下问题:丢失硬件导致无法认证,引入的硬件与企业中原有Key发生冲突,增加企业成本(比如USB Key的缺点在于CA中心的部署和维护成本非常巨大)等。\n[0009] 2.单向认证方法无法抵抗中间人攻击。用户无法验证服务器身份,会存在服务器被冒充的风险。\n发明内容\n[0010] 为了克服上述现有技术的不足,本发明提供一种多因子身份验证方法,目的是提高身份验证的安全性,可以应用到具有客户端/服务器端且保密性要求较高的身份验证系统中。\n[0011] 为了便于说明,本方法中所使用的符号说明如表1:\n[0012] 表1本发明所使用的符号及其含义说明\n[0013]\n[0014] 本发明的原理是:本发明的方法是通过动态口令、双向认证、非硬件因子相结合的一种多因子身份认证方法。其中:在本方法中引入时间和随机数作为动态因子。双向认证中,服务器验证客户端的身份结合了随机数和硬件指纹来实现,在特定局域网办公机构中自有USB Key决定了一人一机,本方法采集客户端的MAC地址、硬盘序列号和CpuID作为硬件指纹;虽然在这种特定办公环境下,可以将客户端身份和用户身份等同,但是这依旧存在很大安全隐患,为了解决这个问题,本方法采用手机软件来验证用户身份;而客户端是通过注册时服务器返回的公钥来验证服务器身份。此外,本发明还通过登录关联的方法,即将本次登录和下一次登录相关联,使得重放攻击的风险降到最低。本发明首先通过客户端注册,在注册阶段,客户端与服务器端相互通信,最终,客户端保存 至本地硬盘,服务器保存了 本发明提供的多因子身份认证是一种非硬件的多因子身\n份鉴别方法,一方面,可以满足登录身份验证系统的身份认证、信息安全性、完整性及不可抵赖性的要求;另一方面,本发明提供方法无需硬件设备,方便使用。\n[0015] 本发明提供的技术方案如下:\n[0016] 一种多因子身份验证方法,包括注册阶段和认证阶段,具体包括如下步骤:\n[0017] (一)注册阶段:当前用户设定为C,通过设置登录名为Uc、登录口令为Pc、登录次数为Nc进行注册,客户端和服务器端S依次进行如下操作:\n[0018] 1.1)客户端生成随机数Rc1,通过计算得到J1,将{Uc,J1}保存;同时将{Uc,J1}发送给服务器端;\n[0019] 其中,利用Uc和Rc1,通过哈希函数,J1=h2(Uc||Rc1)计算得到J1。\n[0020] 1.2)服务器端接收并保存{Uc,J1},采集得到客户端硬件指纹Fc,通过计算得到J2,将{e,J2}作为质询信息发送给客户端;其中e为服务器S的公钥;具体包括;\n[0021] 1.2.1)接收并保存{Uc,J1}至服务器端;\n[0022] 1.2.2)采集客户端硬件指纹Mac、HD和Cpu,Fc为客户端指纹信息,Fc=Mac||HD||Cpu,将Fc存储在服务器;\n[0023] 1.2.3)利用服务器S自有的秘密信息As、e及接收到的J1,计算\n[0024] 1.2.4)将{e,J2}作为质询信息发送给客户端;\n[0025] 1.3)客户端收到来自服务器端的质询信息,进行以下操作,将回应服务器端的质询的信息发送给服务器:\n[0026] 1.3.1)保存{e,J2}至本地硬盘;\n[0027] 1.3.2)利用J1和J2,计算 作为服务器身份鉴别信息的一部分;\n[0028] 1.3.3)利用Uc、Pc和Nc,计算h2(Uc||Pc||Nc),得到的是服务器身份鉴别信息的一部分;其中,Nc是由用户C设置的登录次数;\n[0029] 1.3.4)利用步骤1.3.2)和1.3.3)的结果,计算 作\n为服务器身份鉴别的完整信息;\n[0030] 1.3.5)将 保存至本地硬盘;\n[0031] 1.3.6)利用Uc、Pc、Nc和Fc,计算h2(Uc||Pc||Nc||Fc),对用户名、用户口令、登录次数、硬件指纹进行哈希运算,保存运算的值以备用;\n[0032] 1.3.7)利用步骤1.3.2)和1.3.6)的结果,计算\n得到数据J3;\n[0033] 1.3.8)利用步骤1.3.2)的结果及Im,计算 得到J4;Im为手机M的\nIMEI(电子串号);\n[0034] 1.3.9)将{Uc,Nc,J3,J4}作为回应服务器端的质询的信息发送给服务器;\n[0035] 1.4)服务器端接收来自客户端传递的{Uc,Nc,J3,J4},进行以下操作:\n[0036] 1.4.1)保存{Uc,Nc,J3,J4}至服务器;\n[0037] 1.4.2)利用As、e和J3,由函数 计算得到h2(Uc||Pc||Nc||Fc);\n[0038] 1.4.3)利用As和d,计算h2(As||d),其中d为服务器S的私钥;\n[0039] 1.4.4)利用步骤1.4.2)和1.4.3)的结果,计算\n作为客户端的身份鉴别信息;\n[0040] 1.4.5)利用As、e和J4,计算\n[0041] 1.4.6)利用Uc、Nc、Fc、 及Im,计算 得到激活手机软\n件的秘钥Key;\n[0042] 1.4.7)经过注册,将 保存至服务器;\n[0043] 1.4.8)将{Pass,Key}发送给客户端;其中,Pass是注册成功信息;\n[0044] 1.5)客户端接收{Pass,Key},用户C将收到的Key输入该用户使用的手机激活软件;\n[0045] 上述注册阶段中,由客户端设置当前用户C的登录名Uc、登录的次数Nc、登录口令Pc,并且在注册时产生随机数Rc1;由服务器端S保存客户端传来的用户名Uc、登录的次数Nc、客户端指纹信息Fc、客户端的身份鉴别信息 激活手机软件的秘钥Key。注册完成后,用户C在客户端保留的信息是用户名Uc的有效登录次数Nc和服务器S的身份鉴别信息 服务器端保存的信息是保存客户端传来的用户名Uc、登录的次数Nc、客户端指纹信息Fc、客户端的身份鉴别信息Ecn、激活手机软件的秘钥Key。用户C将从服务器端收到的Key输入手机激活软件,到此注册结束。\n[0046] (二)认证阶段:包括双向认证和登录关联,双向认证包括服务器端验证客户端和客户端验证服务器端;用户C在客户端(用户使用的计算机)输入Uc、Pc,服务器端根据认证阶段的判定对客户端信息(包括用户登录名、用户登录口令、用户使用的计算机和用户身份)进行验证,用户使用的计算机通过注册时采集的硬件指纹判定,用户身份是注册时使用的手机,手机对应一个用户;在认证阶段,客户端和服务器端依次进行如下操作:\n[0047] 2.1)客户端:\n[0048] 2.1.1)利用Uc、Pc、Nc,计算h2(Uc||Pc||Nc),得到用户名、用户口令、登录次数的哈希值;\n[0049] 2.1.2)利用2.1.1)步的结果及注册阶段存储的 由 计算得\n到h2(As||e);\n[0050] 2.1.3)生成随机数Rc2,并利用步骤2.1.2)的结果及Uc,计算\nKc2=h2(Rc2||Uc);客户端会将这两个量发送到服务器;\n[0051] 2.1.4)保存{h2(As||e),Rc2}以备后续使用;\n[0052] 2.1.5)将{Uc、Kc1、Kc2}发送给服务器端;\n[0053] 2.2)服务器端通过结合随机数和硬件指纹验证客户端:\n[0054] 2.2.1)保存{Uc、Kc1、Kc2}至服务器;\n[0055] 2.2.2)利用As和e,计算h2(As||e),得到的结果运用到下一步中;\n[0056] 2.2.3)利用Kc1及步骤2.2.2)的结果,计算 得到Rc2运用到下\n一步中;\n[0057] 2.2.4)利用Uc及步骤2.2.3)的结果,计算h2(Uc||Rc2),得到的结果运用到下一步骤中;\n[0058] 2.2.5)将步骤2.2.4)的结果h2(Uc||Rc2)与Kc2比较;\n[0059] 2.2.6)服务器S采集客户端的硬件指纹(Mac、HD及Cpu),并与Fc比较;\n[0060] 2.2.7)若步骤2.2.5)、步骤2.2.6)的比较结果均相同,则认证通过,继续后面的步骤;否则发出无法验证客户端身份的警告;\n[0061] 2.2.8)利用私钥d加密当前时间信息Ti(保存以备后续使用),得到d(Ti);\n[0062] 2.2.9)利用步骤2.2.2)、步骤2.2.8)的结果,计算 得到Ks1,\n作为服务器发送给客户端的质询信息的一部分;\n[0063] 2.2.10)利用Ti及步骤2.2.3)的结果,计算Ks2=h2(Ti||Rc2),得到Ks2,与上一步骤的结果作为服务器端质询信息发送到客户端;\n[0064] 2.2.11)将{Ks1,Ks2}作为质询信息发送给客户端;\n[0065] 2.3)客户端通过注册时服务器返回的公钥验证服务器端:\n[0066] 2.3.1)保存{Ks1,Ks2}至本地硬盘;\n[0067] 2.3.2)利用认证阶段保存的h2(As||e)及Ks1,由函数 计算得到d\n(Ti);\n[0068] 2.3.3)利用服务器公钥e解密d(Ti),得到Ti;\n[0069] 2.3.4)利用认证阶段保存的Rc2及Ti,由函数h2(Rc2||Ti)计算得到数值,运用到下一步骤中;\n[0070] 2.3.5)将步骤2.3.4)的结果h2(Rc2||Ti)与Ks2进行比较;\n[0071] 2.3.6)若上述比较结果相同,且本次时间信息Ti晚于上次认证时间,则认证通过,继续后面的步骤;否则发出警告(无法验证服务器身份!);\n[0072] 2.3.7)利用Uc、Pc、Nc、Fc和Ti,\n[0073] 计算\n[0074]\n[0075] Kc5=h3(Uc||Pc||Nc-1||Fc),得到的数值会作为客户端回应服务器端质询的答复的一部分;\n[0076] 2.3.8)用户C利用手机M生成随机数Rm,其中Rm=h(Key||Tj),Tj为当前时间(有效期30s);\n[0077] 2.3.9)利用Uc及Rm,计算Kc6=h2(Uc||Rm),得到客户端回应服务器端质询的答复的一部分信息;\n[0078] 2.3.10)将{Uc,Kc3,Kc4,Kc5,Kc6}作为回应信息发送给服务器;\n[0079] 2.4)服务器端进行登录关联:\n[0080] 2.4.1)保存{Uc,Kc3,Kc4,Kc5,Kc6}至服务器;\n[0081] 2.4.2)利用As和d,由函数h2(As||d)计算得到相应的值,将会运用到下一步骤去;\n[0082] 2.4.3)利用注册阶段保存的 及步骤2.4.2)的结果,Ks3是由函数\n计算得到,h2(Uc||Pc||Nc||Fc)也是由该函数计算得到;\n[0083] 2.4.4)利用Ti、Kc3及Ks3,Ks4由函数 计算得到,h2(Uc||Pc||Nc||Fc)也是由该函数计算得到;\n[0084] 2.4.5)将Ks3与Ks4比较,相同则认证通过,继续后面的步骤;否则发出警告(无法验证客户端身份!);\n[0085] 2.4.6)利用注册阶段保存的Key及Tj,由函数h(Key||Tj)计算出数值,运用到下一步中;\n[0086] 2.4.7)利用Uc及步骤2.4.6)的结果,由函数h2(Uc||Rm)计算得到数值,运用到下一步骤中;\n[0087] 2.4.8)将步骤2.4.7)的结果与Kc6比较,相同则认证通过,继续后面的步骤;否则发出警告(无法验证用户身份!);\n[0088] 2.4.9)利用Ks3及Kc4,计算 h(Ks5)=h3\n(Uc||Pc||Nc-1||Fc);\n[0089] 2.4.10)将h(Ks5)与Kc5比较,相同则表示客户端发送来的数据没有被篡改;否则,发出警告(信息被篡改!);\n[0090] 2.4.11)利用Ks5及步骤2.4.2)的结果,计算\n得到客户端身份鉴别信息;\n[0091] 2.4.12)更新服务器中的存储信息\n[0092] 2.4.13)将{Pass}发送给客户端;\n[0093] 2.5)客户端更新本地硬盘中的存储信息,认证结束:\n[0094] 更新本地硬盘中的存储信息 其中\n[0095] 本发明还提供通过上述多因子身份验证方法实现的多因子身份验证系统,客户端包括客户端注册模块和客户端认证模块,服务器端包括服务器端注册模块和服务器端认证模块;客户端与服务器端通过网络通信接口进行通信。客户端注册模块用于保存用户C设置的登录次数Nc和客户端的身份鉴别信息 服务器端注册模块用于用户注册并保存用户C的用户名、设置的登录次数、客户端指纹信息、客户端的身份鉴别信息、激活手机软件的秘钥:{Uc,Nc,Fc,Ecn,Key};客户端认证模块用于认证用户是否成功登录客户端;服务器端认证模块用于认证用户是否成功登录服务器端。针对上述多因子身份验证系统,在本发明实施例中,客户端采用Windows系统;服务器端采用Linux系统。\n[0096] 本发明的有益效果是:\n[0097] 本发明提供的多因子身份认证是一种非硬件的多因子身份鉴别方法,一方面,该方法不同于单因子身份认证(比如用户名+静态口令,因用户名易知,其安全性全部依赖于静态口令,实际只是单因子认证),可以满足登录身份验证系统的身份认证、信息安全性、完整性及不可抵赖性的要求;另一方面,目前现有的身份认证系统在保密方面涉及很少,且多因子身份鉴别一般都会引入硬件设备(比如USB Key),而硬件设备存在的一些缺陷导致很难在企业中使用,而本发明提供方法无需硬件设备,使用方便。\n[0098] 本发明采用了用户名/口令,随机数、时间因子和登录次数构成的动态因子等鉴别因子,完成了客户端与服务器端的双向认证,安全可靠,可抵御中间人攻击、重放攻击、口令猜测等攻击方式。\n附图说明\n[0099] 图1是本发明注册阶段的流程框图。\n[0100] 图2本发明认证阶段的流程框图。\n[0101] 图3本发明实施例的系统总体结构框架图。\n[0102] 图4本发明实施例中用户注册的流程框图。\n[0103] 图5本发明实施例中用户登录的流程框图。\n具体实施方式\n[0104] 下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。\n[0105] 本实施例采用C++语言,通过本发明提供的方法编写多因子身份认证系统。该系统的客户端工作在Windows平台下,服务器端工作在Linux平台下,客户端与服务器端通过网络通信接口进行通信。图3本发明实施例的系统总体结构,系统包括客户端注册模块、服务器端注册模块、客户端认证模块和服务器端认证模块。其中,客户端注册模块用于保存用户C设置的登录次数Nc和客户端的身份鉴别信息 服务器端注册模块用于保存用户C的用户名、设置的登录次数、客户端指纹信息、客户端的身份鉴别信息、激活手机软件的秘钥:{Uc,Nc,Fc,Ecn,Key};客户端认证模块用于认证用户是否成功登录客户端;服务器端认证模块用于认证用户是否成功登录服务器端。\n[0106] 图1是本发明注册阶段的流程框图,当前用户设定为C,在注册阶段,设置的登录名为Uc,登录的次数Nc,设置的登录口令为Pc;并且在用户注册时客户端产生随机数Rc1。在注册阶段,客户端与服务器端相互通信,最终,客户端保存 至本地硬盘,服务器保存了结合附图1详细说明如下:\n[0107] 1.1)客户端生成随机数Rc1,通过计算得到J1,将{Uc,J1}保存;同时将{Uc,J1}发送给服务器端;\n[0108] 其中,利用Uc和Rc1,通过J1=h2(Uc||Rc1)计算得到J1。\n[0109] 1.2)服务器端接收并保存{Uc,J1},采集得到客户端硬件指纹Fc,通过计算得到J2,将{e,J2}作为质询信息发送给客户端;其中e为服务器S的公钥;具体包括;\n[0110] 1.2.1)接收并保存{Uc,J1}至服务器端;\n[0111] 1.2.2)采集客户端硬件指纹Mac、HD和Cpu,Fc为客户端指纹信息,Fc=Mac||HD||Cpu,将Fc存储在服务器;\n[0112] 1.2.3)利用服务器S自有的秘密信息As、e及接收到的J1,计算\n[0113] 1.2.4)将{e,J2}作为质询信息发送给客户端;\n[0114] 1.3)客户端收到来自服务器端的质询信息,进行以下操作:\n[0115] 1.3.1)保存{e,J2}至本地硬盘;\n[0116] 1.3.2)利用J1和J2,计算 作为服务器身份鉴别信息的一部分;\n[0117] 1.3.3)利用Uc、Pc和Nc,计算h2(Uc||Pc||Nc),得到的是服务器身份鉴别信息的一部分;其中,Nc是由用户C设置的登录次数;\n[0118] 1.3.4)利用步骤1.3.2)和1.3.3)的结果,计算 作\n为服务器身份鉴别的完整信息;\n[0119] 1.3.5)将 保存至本地硬盘;\n[0120] 1.3.6)利用Uc、Pc、Nc和Fc,计算h2(Uc||Pc||Nc||Fc),对用户名、用户口令、登录次数、硬件指纹进行哈希运算,保存运算的值以备用;\n[0121] 1.3.7)利用步骤1.3.2)和1.3.6)的结果,计算\n得到数据J3;\n[0122] 1.3.8)利用步骤1.3.2)的结果及Im,计算 得到J4;\n[0123] 1.3.9)将{Uc,Nc,J3,J4}作为回应服务器端的质询的信息发送给服务器;\n[0124] 1.4)服务器端接收来自客户端传递的{Uc,Nc,J3,J4},进行以下操作:\n[0125] 1.4.1)保存{Uc,Nc,J3,J4}至服务器;\n[0126] 1.4.2)利用As、e和J3,由函数 计算得到h2(Uc||Pc||Nc||Fc);\n[0127] 1.4.3)利用As和d,计算h2(As||d),其中d为服务器S的私钥;\n[0128] 1.4.4)利用步骤1.4.2)和1.4.3)的结果,计算\n作为客户端的身份鉴别信息;\n[0129] 1.4.5)利用As、e和J4,计算\n[0130] 1.4.6)利用Uc、Nc、Fc、 及Im,计算 得到激活手机软\n件的秘钥Key;\n[0131] 1.4.7)经过注册,将 保存至服务器;\n[0132] 1.4.8)将{Pass,Key}发送给客户端;其中,Pass是注册成功信息;\n[0133] 1.5)客户端接收{Pass,Key},用户C将收到的Key输入手机激活软件;\n[0134] 上述注册阶段中,由客户端设置当前用户C的登录名Uc、登录的次数Nc、登录口令Pc,并且在注册时产生随机数Rc1;由服务器端S保存客户端传来的用户名Uc、登录的次数Nc、客户端指纹信息Fc、客户端的身份鉴别信息Ecn、激活手机软件的秘钥Key。注册完成后,用户C在客户端保留的信息是用户名Uc的有效登录次数Nc和服务器S的身份鉴别信息 服务器端保存的信息是保存客户端传来的用户名Uc、登录的次数Nc、客户端指纹信息Fc、客户端的身份鉴别信息 激活手机软件的秘钥Key。用户C将从服务器端收到的Key输入手机激活软件,到此注册结束。\n[0135] 图2本发明的认证阶段的流程图,在认证阶段,用户C输入Uc、Pc,服务器端根据认证阶段的判定对信息进行验证。认证阶段引入了随机数、时间因子和登录次数作为动态因子,利用随机数、硬件指纹和数字签名技术完成客户端与服务器端的双向认证,服务器对用户是身份认证则是通过手机软件来完成的,同时为了抵御重放攻击,将本次登录与上次登录相关联,具体流程如下:\n[0136] 2.1)客户端:\n[0137] 2.1.1)利用Uc、Pc、Nc,计算h2(Uc||Pc||Nc),得到用户名、用户口令、登录次数的哈希值;\n[0138] 2.1.2)利用2.1.1)步的结果及注册阶段存储的 由 计算得\n到h2(As||e);\n[0139] 2.1.3)生成随机数Rc2,并利用第(2)步的结果及Uc,计算 Kc2\n=h2(Rc2||Uc),客户端会将这两个量发送到服务器;\n[0140] 2.1.4)保存{h2(As||e),Rc2}以备后续使用;\n[0141] 2.1.5)将{Uc、Kc1、Kc2}发送给服务器。\n[0142] 2.2)服务器端验证客户端:\n[0143] 2.2.1)保存{Uc、Kc1、Kc2}至服务器;\n[0144] 2.2.2)利用As和e,计算h2(As||e),得到的结果运用到下一步中;\n[0145] 2.2.3)利用Kc1及步骤2.2.2)的结果,计算 得到Rc2运用到下\n一步中;\n[0146] 2.2.4)利用Uc及步骤2.2.3)的结果,计算h2(Uc||Rc2),得到的结果运用到下一步骤中;\n[0147] 2.2.5)将步骤2.2.4)的结果与Kc2比较;\n[0148] 2.2.6)服务器S采集客户端的硬件指纹(Mac、HD及Cpu),并与Fc比较;\n[0149] 2.2.7)若步骤2.2.5)、步骤2.2.6)的比较结果均相同,则认证通过,继续后面的步骤;否则发出无法验证客户端身份的警告;\n[0150] 2.2.8)利用私钥d加密当前时间信息Ti(保存以备后续使用),得到d(Ti);\n[0151] 2.2.9)利用步骤2.2.2)、步骤2.2.8)的结果,计算 得到\nKs1,作为服务器发送给客户端的质询信息的一部分;\n[0152] 2.2.10)利用Ti及步骤2.2.3)的结果,计算Ks2=h2(Ti||Rc2),得到Ks2,与上一步骤的结果作为服务器端质询信息发送到客户端;\n[0153] 2.2.11)将{Ks1,Ks2}作为质询信息发送给客户端;\n[0154] 2.3)客户端验证服务器端:\n[0155] 2.3.1)保存{Ks1,Ks2}至本地硬盘;\n[0156] 2.3.2)利用认证阶段保存的h2(As||e)及Ks1,由函数 计算得到d\n(Ti);\n[0157] 2.3.3)利用服务器公钥e解密d(Ti),得到Ti;\n[0158] 2.3.4)利用认证阶段保存的Rc2及Ti,由函数h2(Rc2||Ti)计算得到数值,运用到下一步骤中;\n[0159] 2.3.5)将第2.3.4)步的结果与Ks2比较;\n[0160] 2.3.6)若第2.3.4)步的比较结果相同,且本次时间信息Ti晚于上次认证时间,则认证通过,继续后面的步骤;否则发出警告(无法验证服务器身份!);\n[0161] 2.3.7)利用Uc、Pc、Nc、Fc和Ti,计算:\n[0162]\n[0163]\n[0164] Kc5=h3(Uc||Pc||Nc-1||Fc),\n[0165] 得到的数值会作为客户端回应服务器端质询的答复的一部分;\n[0166] 2.3.8)用户C利用手机M生成随机数Rm,其中Rm=h(Key||Tj),Tj为当前时间(有效期30s);\n[0167] 2.3.9)利用Uc及Rm,计算Kc6=h2(Uc||Rm),得到客户端回应服务器端质询的答复的一部分信息;\n[0168] 2.3.10)将{Uc,Kc3,Kc4,Kc5,Kc6}作为回应信息发送给服务器;\n[0169] 2.4)服务器端进行登录关联:\n[0170] 2.4.1)保存{Uc,Kc3,Kc4,Kc5,Kc6}至服务器;\n[0171] 2.4.2)利用As和d,由函数h2(As||d)计算得到相应的值,将会运用到下一步骤去;\n[0172] 2.4.3)利用注册阶段保存的 及2.4.2)步的结果,Ks3是由函数 计\n算得到,h2(Uc||Pc||Nc||Fc)也是由该函数计算得到;\n[0173] 2.4.4)利用Ti、Kc3及Ks3,Ks4由函数 计算得到,h2(Uc||Pc||Nc||Fc)也是由该函数计算得到;\n[0174] 2.4.5)将Ks3与Ks4比较,相同则认证通过,继续后面的步骤;否则发出警告(无法验证客户端身份!);\n[0175] 2.4.6)利用注册阶段保存的Key及Tj,由函数h(Key||Tj)计算出数值,运用到下一步中;\n[0176] 2.4.7)利用Uc及步骤2.4.6)的结果,由函数h2(Uc||Rm)计算得到数值,运用到下一步骤中;\n[0177] 2.4.8)将步骤2.4.7)的结果与Kc6比较,相同则认证通过,继续后面的步骤;否则发出警告(无法验证用户身份!);\n[0178] 2.4.9)利用Ks3及Kc4,计算 h(Ks5)=h3\n(Uc||Pc||Nc-1||Fc);\n[0179] 2.4.10)将h(Ks5)与Kc5比较,相同则表示客户端发送来的数据没有被篡改;否则,发出警告(信息被篡改!);\n[0180] 2.4.11)利用Ks5及步骤2.4.2)的结果,计算\n得到客户端身份鉴别信息;\n[0181] 2.4.12)更新服务器中的存储信息\n[0182] 2.4.13)将{Pass}发送给客户端;\n[0183] 2.5)客户端更新本地硬盘中的存储信息,认证结束:\n[0184] 更新本地硬盘中的存储信息 其中\n[0185] 上述认证阶段的步骤2.2)和2.3)包括了双向认证阶段,双向认证包括服务器端验证客户端和客户端验证服务器端,具体的步骤如下:\n[0186] 步骤2.2)为服务器端验证客户端,验证过程分为两步:\n[0187] 第一步:\n[0188] 用户C生成随机数Rc2,并将Kc1,Kc2发送给服务器;服务器接收后利用存储在服务器端的已有数据As和e从Kc1中得到Rc2,并通过计算后与Kc2相比较。\n[0189] 第二步:\n[0190] 服务器主动采集客户端的硬件指纹(Mac、HD、Cpu),并与注册时采集的硬件指纹进行比较。\n[0191] 若两步结果均比较相同,则认证通过,否则发出警告。\n[0192] 步骤2.3)为客户端验证服务器端,验证过程为:\n[0193] 服务器S用私钥d对时间信息Ti加密d(Ti),并将Ks1,Ks2发送给客户端;客户端收到后利用存在客户端的已有数据As和e(注册时服务器派发的公钥e)从Ks1中得到d(Ti),然后通过e解密得到Ti,最后通过计算后与Ks2相比较。同时还需满足Ti要晚于上次登陆采用的时间(若为第1次登陆,令其为0)。\n[0194] 上述认证阶段步骤2.4)包括了登录关联阶段,即将本次登录和下次登录相关联,可以有效防止重放攻击。登录关联具体是:在双向认证通过后,用户C计算Kc3,Kc4,Kc5,并发送给服务器;服务器收到后利用存储在服务器端的已有信息As、d、 Ti计算出A41、A42,然后将Ks3与Ks4相比较,目的是验证客户端的身份。然后要判断客户端传过来的数据是否被篡改,同时也是确认服务器和客户端的数据同步问题。此处是将h(Ks5)与Kc5比较,相同则表示数据没被篡改。\n[0195] 本发明实施例的系统总体结构框架如附图3,客户端工作在Windows平台下,服务器端工作在Linux平台下。具体如下:\n[0196] 客户端注册模块,在注册阶段主要是保存用户C设置的登录次数Nc和客户端的身份鉴别信息 通过网络通信接口与服务器端进行通信;服务器端的注册模块,在注册阶段主要是保存用户C的用户名、设置的登录次数、客户端指纹信息、客户端的身份鉴别信息、激活手机软件的秘钥:{Uc,Nc,Fc,Ecn,Key};客户端认证模块,用户成功登录1次后更新信息;\n通过网络通信接口与服务器端通信;服务器端认证模块,成功登录一次后,更新信息,同时判断登录的次数是否大于零。\n[0197] 图4为本发明实施例的用户注册流程图,主要步骤是:\n[0198] 1)用户提供用户名以及密码;\n[0199] 2)获取手机标识码;\n[0200] 3)获取到客户端主机硬件指纹;\n[0201] 4)收集用户名、密码、手机识别码、登录硬件指纹信息;\n[0202] 5)算法提取阶段分别为用户、手机、用户主机本法认证,并且利用MD5加密存储这些信息。\n[0203] 图5为本发明实施例的用户登录的认证阶段的流程图,本实施例认证阶段包括了双向认证、令牌认证和口令认证,主要步骤是:\n[0204] 双向认证阶段:\n[0205] 1)系统得到客户端主机硬件指纹以及系统生成的随机数,经过MD5算法加密,生成数值;\n[0206] 2)登录端请求验证;\n[0207] 3)根据注册时已存储的经过MD5加密的登录端指纹,对客户端主机进行认证;\n[0208] 4)对获取的信息进行私钥加密;\n[0209] 5)发送上述4)加密的结果,进行服务端验证;\n[0210] 6)对信息进行公钥解密,验证服务端指纹;\n[0211] 7)验证通过则进入下一步生成动态口令;\n[0212] 令牌认证阶段:\n[0213] 1)由注册时存储的手机特征码加上时间戳,生成动态口令;\n[0214] 2)提示输入令牌口令;\n[0215] 3)由手机特征码加上时间戳,加上上一步的动态口令,利用标准算法,生成动态口令;\n[0216] 4)根据令牌验证口令验证动态口令;\n[0217] 5)返回验证结果;进入下一步发送用户名密码;\n[0218] 口令认证阶段:\n[0219] 1)用户发送用户名以及密码;\n[0220] 2)系统对用户名以及密码进行MD5加密;\n[0221] 3)根据注册时存储的用户名以及密码,结合上一步的数值,进行验证;\n[0222] 4)返回验证结果;\n[0223] 5)登录结束。\n[0224] 需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
法律信息
- 2018-03-23
- 2015-06-24
实质审查的生效
IPC(主分类): H04L 29/06
专利申请号: 201510097325.0
申请日: 2015.03.05
- 2015-05-27
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-04-18
|
2010-09-28
| | |
2
| |
2013-04-03
|
2013-01-10
| | |
3
| |
2011-04-20
|
2010-12-17
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |