一种基于口令的远程认证协议方法

文档序号:7799595阅读:259来源:国知局
一种基于口令的远程认证协议方法
【专利摘要】本发明涉及一种基于口令的远程认证协议方法,其特征在于:基于椭圆曲线密码算法实现,包括如下步骤:步骤1:在系统初始化子协议中,用户同服务器协商好以后认证需要使用的椭圆曲线密码系统参数;步骤2:新用户UA通过用户注册子协议进行注册,选择身份标识和用户口令PWA;步骤3:用户UA希望登陆系统并进行会话密钥协商时,首先输入自己的身份标识IDA和用户口令PWA;然后通过身份认证和密钥协商子协议,与服务器进行双向认证并且协商在以后通信中使用的密钥SK。
【专利说明】一种基于口令的远程认证协议方法
【技术领域】
[0001]本发明涉及一种基于口令的远程认证协议方法。
【背景技术】
[0002]在网络应用中,身份认证对于保障网络资源的安全性起着重要作用,因此寻找简单有效、实用方便、费用低廉的认证协议是当前研究的重点内容。基于口令的身份认证协议由于数据运算简单、部署成本低廉、安全可靠而成为近年来研究的热点。然而,基于口令的身份认证协议仍然存在着安全隐患。因为用户习惯上选择使用简单容易自己记忆的字符串作为口令,例如自己姓名字母的缩写、生日数字的组合,身份证号码的组合以及邮箱电话号码等,这将直接导致这种方式的身份认证协议容易遭到典型的字典攻击,这其中就包括包括离线口令猜测攻击和在线口令猜测攻击等。根据调查显示,在使用英语的国家当中,有25%的用户使用的口令是英文单词,Morris Thompson发现穷举搜索一部字典,可以在短短的5分钟之内发现超过1/3的口令;1999年,中科院信息安全中心的Samsa进行了一项研究,他根据中国人姓氏和人名中经常出现的汉字,设计了一部专用的字典,用它穷举搜索,发现了某服务器中保存的将近1/2的用户口令。事实表明,口令认证协议很容易遭受口令猜测攻击(password guessing attack)。[0003]尽管基于口令的认证存在着如上所述的安全隐患,但这并不能阻止人们对它的青睐,由于其相对于生物特征认证,口令认证机制拥有更小的数据量,更快的响应速度等优点,而且实现起来更容易,多数用户能够接受,因而口令认证机制目前仍然是系统网络等各种需要认证的系统中主要采取的认证方式。

【发明内容】

[0004]本发明目的在于提供一种基于口令的远程认证协议方法,能够实现双向认证,有效提高安全性。
[0005]实现本发明目的技术方案:
[0006]一种基于口令的远程认证协议方法,其特征在于:基于椭圆曲线密码算法实现,包括如下步骤:
[0007]步骤1:在系统初始化子协议中,用户同服务器协商好以后认证需要使用的椭圆曲线密码系统参数;
[0008]步骤2:新用户Ua通过用户注册子协议进行注册,选择身份标识和用户口令PWa ;
[0009]步骤3:用户Ua希望登陆系统并进行会话密钥协商时,首先输入自己的身份标识IDa和用户口令PWa ;,然后通过身份认证和密钥协商子协议,与服务器进行双向认证并且协商在以后通信中使用的密钥SK。
[0010]步骤2中,服务器S收到新用户Ua注册提交的身份标识IDa和用户口令PWa ;后,进行计算^(10」|ds) ? PWa,然后把数据(IDa,Wa)保存在服务器的认证数据库中,前述式中,ds表示服务器的私钥,h表示单向哈希函数。[0011]步骤3中,具体包括以下步骤,
[0012]步骤3.1:用户Ua首先输入自己的身份标识IDa和用户口令PWa ;用户自由选择一个随机数r1,r1∈Z*n,Z*n表示整数模n的剩余类,然后进行运算R1=A.P,P表示群G的生成元,把消息<IDa,R1)发送给服务器S ;
[0013]步骤3.2:服务器S接收到上一步来自用户Ua的消息<IDA,R1)后,根据自己的认证数据库中存储的数据对用户IDa进行合法性检验;如果在数据库中未找到该IDa,则服务器S终止协议的进程;否则,服务器S进行如下运算,
[0014]选择随机数r2, r2 e Z*n,计算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示服务器的身份标识,最后由服务器s把消息<R2,hi>发送到用户Ua;
[0015]步骤3.3:当用户Ua接收到来上一步来自服务器S的消息<R2,hi〉后,进行运算Ku^1.R2=IT1.r2.P,以及计算 h广=h (S IDa R1 R2 T1.Ps I Ku),验证 Ii1* 与收到来自服务器的h是否保持一致,如果不一致,则用户Ua终止进行协议进程;否则,用户Ua计算h2=h(IDaI I S| Ir1.Ps I IKuI IPWa),然后将h2发送给服务器S,并且用户Ua计算一个密钥SK=h(IDaI |s| Ir1I Ir2I Ir1-PsI IkuI |PWA);
[0016]步骤3.4:服务器S从本地认证数据库中提取步骤2中计算获得的WA,并进行计算Wa ? h(IDA |ds)得到服务器端计算得到的PW/,然后计算h(IDaI |S| R3 Ks |PW/),得到的计算结果与上一步中收到的h2进行对比验证,看是否保持一致,如果不一致,则用户Ua对服务器的认证请求失败,终止协议;否则,服务器S认可用户Ua的合法身份,并且服务器S计算一个密钥 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
[0017]用户Ua可进行口令修改,包括以下步骤,
[0018]步骤4.1:用户Ua和服务器S首先执行密钥SK ;
[0019]步骤4.2:假如上一步成功,则用户Ua通过客户端输入新的口令PWAnew ;
[0020]步骤4.3:用户Ua通过客户端计算PWD=h (Ku | | SK) ? Pfftoew和[0021 ] ff=h (Ku I I SKI I PffAnew),并把消息〈PWD,ff> 发送至服务器 S ;
[0022]步骤4.4:当服务器S收到来自于用户Ua的请求修改口令的消息〈PWD,W〉后,首先进行如下式子的计算,
[0023]PWahJ=PWD ? h(Ks |PffAnew),
[0024]然后对比验证W是否等于h (Ks I I SK I I Pfftoe;),假如不相等,服务器需要计算h3=h(SK| Ks I “Refused”)并将消息〈“Refused”,h3>发送给用户,拒绝更改口令;如果两者相等,则进行计算h4=h (SKI I Ks I I "Accepted"),并将消息< "Accepted", h4>发送给用户,允许其变更口令;最后服务器将计算新的W/来替换原来的Wa并保存到认证数据库,其中 Wa* 的计算式为 ffA*=h (IDa I I ds) ? Pfftoe;;
[0025]步骤4.5:如果用户Ua收到消息〈“Refused” , h3>,并且经验证h3等于h(SK| |Kj I “Refused”),则可以确定是服务器S发送的消息拒绝更改口令;而如果收到消息〈“Accepted”, h4>,并且经过验证h4等于h (SKI KuI “Accepted”),贝U用户Ua可以确定是服务器S发送的消息接收了变更口令请求。
[0026]本发明具有的有益效果:
[0027]本发明可以抵抗重放攻击。本发明是一种三消息挑战-响应模式的认证协议,只有合法用户才能正确的应答挑战信息R2,同时也只有合法的服务器才能正确的响应新鲜值R1,所以本发明能够有效的抵御重放攻击。
[0028]本发明可以抵抗离线口令猜测攻击。本发明能够有效地抵抗离线口令猜测攻击,假设以下两种情形:
[0029]I)假设攻击者捕获了 Wa,但是由于其无法或者服务器的私钥ds,所以无法进行离线口令猜测攻击;
[0030]2)攻击者不能够从h2发动离线口令猜测攻击,这是因为假如攻击者要计算h2,则必须同时计算出Ku或者Ks,而计算Ku或者Ks则需要根据R1, R2来计算,这又归结为椭圆曲线计算Diffie-Hellman问题。
[0031 ] 本发明能够抵抗身份冒充攻击。攻击者在不知道PW的情况下,是不能构造出正确的第3条回应消息的,所以攻击者就无法冒充用户身份。同时,攻击者也无法正确的通过计算得出ds -R1和回应消息,因为如果要构造该值,则需要知道A或者ds,而假如通过R1来计算得到^或者通过Ps计算得到ds都将面临椭圆曲线离散对数难题。
[0032]本发明能够提供双向认证。从上面的认证和密钥协商过程可以清楚的看到,本协议提供了双向认证。第2条响应消息只有拥有合法身份的服务器才能构造出来;而第3条响应消息只有除了服务器之外的合法用户才能构造出来。所以该认证协议提供了双向认证。
[0033]本发明能够提供前向安全性。本发明是基于椭圆曲线Diffie-Hellman机制,攻击者如果强行从R1和R2来计算SK将面临椭圆曲线离散对数难题,从而提供了前向安全性。
【专利附图】

【附图说明】
[0034]图1为用户注册流程图;
[0035]图2为认证和密钥协商流程图;
[0036]图3为口令修改流程图。
【具体实施方式】
[0037]本发明基于椭圆曲线密码算法实现,在系统初始化子协议中,用户同服务器协商好以后认证需要使用的椭圆曲线密码系统参数;
[0038](一)用户注册子协议:
[0039]在注册初始时,由用户Ua自己选择身份标识和用户口令PWa,然后通过安全方式提交给服务器S ;
[0040]服务器S收到新用户Ua注册提交的身份标识IDa和用户口令PWa ;后,进行计算WA=h(IDA |ds) ? PWa,然后把数据(IDa,Wa)保存在服务器的认证数据库中,前述式中,屯表示服务器的私钥,h表示单向哈希函数。
[0041 ] (二)认证和密钥协商子协议:
[0042]I)用户Ua首先输入自己的身份标识IDa和用户口令PWa ;用户自由选择一个随机数r1,r1 ∈ Z*n,Z*n表示整数模η的剩余类,然后进行运算R1=F1* P,P表示群G的生成元,把消息<IDa,R1)发送给服务器S ;
[0043]2)服务器S接收到上一步来自用户Ua的消息<IDa,RA后,根据自己的认证数据库中存储的数据对用户IDa进行合法性检验;如果在数据库中未找到该IDa,则服务器S终止协议的进程;否则,服务器S进行如下运算,
[0044]选择随机数r2, r2 e Z*n,计算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示服务器的身份标识,最后由服务器s把消息<R2,hi>发送到用户Ua;
[0045]3)当用户Ua接收到来上一步来自服务器S的消息<R2,hi〉后,进行运算Ku^1.R2=IT1.r2.P,以及计算h广=h (S IDa R1 R2 T1.Ps Ku),验证Ii1*与收到来自服务器的Ii1是否保持一致,如果不一致,则用户Ua终止进行协议进程;如果一致,那么服务器是合法的,通过用户的认证。在这里的依据是,只有合法的服务器才能给出正确的R3,接下来用户Ua计算h2=h (IDa I I S I I ι -Ps I I Ku I IPWA),然后将h2发送给服务器S,并且用户Ua计算一个密钥 SK=h(iDA| |s| R1IIR2 Ir1-Ps IkuI |pwa);
[0046]4)服务器S从本地认证数据库中提取步骤2中计算获得的Wa,并进行计算Wa ? h(IDA |ds)得到服务器端计算得到的PW/,然后计算h(IDaI |S| R3 Ks |PW/),得到的计算结果与上一步中收到的h2进行对比验证,看是否保持一致,如果不一致,则用户Ua对服务器的认证请求失败,终止协议;否则,服务器S认可用户Ua的合法身份,并且服务器S计算一个密钥 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
[0047]通过以上步骤,用户和服务器之间完成了认证,这种认证是双向的,保证了用户和服务器双方的合法身份,并且协商好共同的密钥SK。
[0048](三)口令修改子协议:
[0049]用户Ua可进行口令修改,包括以下步骤,
[0050]I)用户Ua和服务器S首先执行会话密钥SK ;
[0051]2)假如上一步成功,则用户Ua通过客户端输入新的口令PWitew ;
[0052]3 )用户Ua通过客户端计算PWD=h (Ku | | SK) ? PffAnew和
[0053]ff=h (Ku I I SKI I PWAnew),并把消息〈PWD,ff> 发送至服务器 S ;
[0054]4)当服务器S收到来自于用户Ua的请求修改口令的消息〈PWD,W〉后,首先进行如下式子的计算,
[0055]PU=PWD ? h(Ks |PffAnew),
[0056]然后对比验证w是否等于h(Ks| sk| Ipwam;),假如不相等,服务器需要计算h3=h(SK| Ks I “Refused”)并将消息〈“Refused”,h3>发送给用户,拒绝更改口令;如果两者相等,则进行计算h4=h (SKI I Ks I I "Accepted"),并将消息< "Accepted", h4>发送给用户,允许其变更口令;最后服务器将计算新的W/来替换原来的Wa并保存到认证数据库,其中 Wa* 的计算式为 ffA*=h (IDa I I ds) ? Pfftoe;;
[0057]5)如果用户Ua收到消息〈“Refused”,h3>,并且经验证h3等于h(SK| |Kj I “Refused”),则可以确定是服务器S发送的消息拒绝更改口令;而如果收到消息〈“Accepted”, h4>,并且经过验证h4等于h (SKI KuI “Accepted”),贝U用户Ua可以确定是服务器S发送的消息接收了变更口令请求。
【权利要求】
1.一种基于口令的远程认证协议方法,其特征在于:基于椭圆曲线密码算法实现,包括如下步骤: 步骤1:在系统初始化子协议中,用户同服务器协商好以后认证需要使用的椭圆曲线密码系统参数; 步骤2:新用户Ua通过用户注册子协议进行注册,选择身份标识和用户口令PWa ; 步骤3:用户Ua希望登陆系统并进行会话密钥协商时,首先输入自己的身份标识IDa和用户口令PWa ;,然后通过身份认证和密钥协商子协议,与服务器进行双向认证并且协商在以后通信中使用的密钥SK。
2.根据权利要求1所述的基于口令的远程认证协议方法,其特征在于:步骤2中,服务器S收到新用户Ua注册提交的身份标识IDa和用户口令PWa ;后,进行计算WA=h(IDA |ds) ? PWa,然后把数据(IDa,Wa)保存在服务器的认证数据库中,前述式中,屯表示服务器的私钥,h表示单向哈希函数。
3.根据权利要求2所述的基于口令的远程认证协议方法,其特征在于:步骤3中,具体包括以下步骤, 步骤3.1:用户Ua首先输入自己的身份标识IDa和用户口令PWa ;用户自由选择一个随机数ri,ri e Z\,Z\表示整数模η的剩余类,然后进行运算R1=F1* P,P表示群G的生成元,把消息<IDa,R1)发送给服务器S ; 步骤3.2:服务器S接收 到上一步来自用户Ua的消息<IDa,R1)后,根据自己的认证数据库中存储的数据对用户IDa进行合法性检验;如果在数据库中未找到该IDa,则服务器S终止协议的进程;否则,服务器S进行如下运算, 选择随机数 r2, r2 e Z*n,计算 R2=r2.P, Ks=r2.R1, R3=ds.R1,h1=h(s| |ida| R1I Ir2 R3 Iks),式中s表示服务器的身份标识,最后由服务器s把消息<R2,hi>发送到用户Ua; 步骤3.3:当用户Ua接收到来上一步来自服务器S的消息<R2,hi〉后,进行运算Ku^1.R2=IT1.r2.P,以及计算 h广=h (S IDa R1 R2 T1.Ps I Ku),验证 Ii1* 与收到来自服务器的h是否保持一致,如果不一致,则用户Ua终止进行协议进程;否则,用户Ua计算h2=h(IDaI I S| Ir1.Ps I IKuI IPWa),然后将h2发送给服务器S,并且用户Ua计算一个密钥SK=h(IDaI |s| Ir1I Ir2I Ir1-PsI IkuI |PWA); 步骤3.4:服务器S从本地认证数据库中提取步骤2中计算获得的WA,并进行计算Wa ? h(IDA |ds)得到服务器端计算得到的PW/,然后计算h(IDaI |S| R3 Ks |PW/),得到的计算结果与上一步中收到的h2进行对比验证,看是否保持一致,如果不一致,则用户Ua对服务器的认证请求失败,终止协议;否则,服务器S认可用户Ua的合法身份,并且服务器S计算一个密钥 SK=h(iDA| |s| R1IIR2 R3 |ks |pwa*)。
4.根据权利要求3所述的基于口令的远程认证协议方法,其特征在于:用户Ua可进行口令修改,包括以下步骤, 步骤4.1:用户Ua和服务器S首先执行密钥SK ; 步骤4.2:假如上一步成功,则用户Ua通过客户端输入新的口令PWamw ; 步骤4.3:用户Ua通过客户端计算PWD=h (Ku I I SK) ? Pfftoew和 W=h (Ku I I SKI I Pfftoew),并把消息〈PWD,W〉发送至服务器S ;步骤4.4:当服务器S收到来自于用户Ua的请求修改口令的消息〈PWD,W〉后,首先进行如下式子的计算,
PffAne;=PWD ? h(Ks I PWaiiJ , 然后对比验证W是否等于h(Ks| SKl Ipwam/),假如不相等,服务器需要计算h3=h(SK| Ks I “Refused”)并将消息〈“Refused”,h3>发送给用户,拒绝更改口令;如果两者相等,则进行计算h4=h (SKI I Ks I I "Accepted"),并将消息< "Accepted", h4>发送给用户,允许其变更口令;最后服务器将计算新的W/来替换原来的Wa并保存到认证数据库,其中 Wa* 的计算式为 ffA*=h (IDa I I ds) ? Pfftoe;; 步骤4.5:如果用户Ua收到消息〈“Refused” , h3>,并且经验证h3等于h(SK| |Kj I “Refused”),则可以确定是服务器S发送的消息拒绝更改口令;而如果收到消息〈“Accepted”, h4>,并且经过验证h4等于h (SKI KuI “Accepted”),贝U用户Ua可以确定是服务器S发送的消 息接收了变更口令请求。
【文档编号】H04L9/32GK103905437SQ201410108353
【公开日】2014年7月2日 申请日期:2014年3月22日 优先权日:2014年3月22日
【发明者】马春光, 付韬, 崔振山, 苗俊峰 申请人:哈尔滨工程大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1