王耀民+熊刚强+曾永健+丘文峰+何文广
摘要:口令认证是身份验证领域的研究热点,最近几年很多基于口令的认证协议被提出来。该文对一种远程动态口令认证协议进行了安全分析,指出了这种认证协议存在无法抵抗冒充攻击和中间人攻击的安全漏洞。对其进行了改进,提出一种命名为SH-Key的远程动态口令认证协议。通过安全分析证明这种协议能够为用户提供安全,高效的远程动态口令认证。
关键词:口令认证; 动态; 远程; 信息安全
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2015)10-0049-03
随着计算机网络和信息技术的发展,越来越多的人通过网络来访问远程服务器进行工作和学习。随之而来的网络安全问题也就变得越来越重要,其中身份认证问题是远程服务当中需要首先解决的问题。口令认证作为一种简单实用的认证方式被广泛应用于很多的认证领域。传统的口令认证方式分为两个阶段:第一注册阶段,用户向服务器提出注册申请,服务器接到用户的注册申请后要求用户输入其用户名和密码。用户输入用户名、密码后,服务器存储用户的用户名密码。第二认证阶段,用户在需要登录服务器时,将自己的用户名,密码传递给服务器。服务器在收到用户的用户名密码后,在存储的用户名表里面查找用户的注册信息。找到用户的注册信息后,将用户传递过来的密码与存储的密码对照。如果一致,则认证通过,反之则认证不通过。在当前的网络环境下,这种传统的口令认证方式极易遭受窃听、重放、冒充、离线字典等攻击[1-2]。因而提高口令认证方式的安全性,在近几年成为信息安全领域的研究热点。目前较为安全的作法是使用动态口令认证。在这种认证系统下用户通过使用hash数等手段使自己每次登录的口令不同。可以有效的抵抗重放,离线字典等攻击。1991年,贝尔通信研究中心(Bellcore)首次研制出了基于一次口令思想的身份认证系统S/KEY。它于1995年为IETF所接受,成为RFC1760。这是一种基于Hash函数的一次性口令生成方案[3-4]。但是这种方案存在以下缺点[4-5]:1)用户只能认证N次,使用完后必须重新注册。2) 用户认证过程要经过多次hash,降低了认证效率。3)认证过程中用户的种子和认证次数均采用明文传输,攻击者可以采用小数攻击来获取一系列口令来冒充用户。文章[4]对文章[3]提出的方案进行了完善,试图得到一种安全的动态口令认证方案。本文对文章[4]提出的口令认证方案进行了分析(我们称之为MYH协议),指出其中存在的安全漏洞。并对其进行了完善,使其成为一种安全有效的口令认证协议。
本文剩下的部分按照如下组织,首先在第一章分析文章[4]提出的协议,指出其存在的安全隐患。随后在第二章提出一种新的协议,以修补文章[4]提出的协议存在的缺点。最后对我们提出的协议进行安全分析。
1 MYH协议介绍
1.1 术语介绍
本文中使用Ser代表谁服务器,U代表用户。本文中使用的一些其他字母的含义如下:
U错误!未找到引用源。S: U向S发送信息。
h(.): 一个安全的单向哈希函数。
⊕:异或操作。
pk: 服务器公钥。
sk:服务器私钥。
E{m} pk:使用服务器公钥对信息m进行加密。
D{m}sk:使用服务器私钥对信息m进行解密。
//:级联操作。
1.2 MYH协议
MYH认证协议的安全性主要是基于Hash函数(SHA函数)产生摘要的单一性和唯一性[6][7]。该协议主要分为两个阶段[4]:
1)口令注册阶段
用户A输入身份证IDA及登录口令S,并产生随机数N0,计算出验证因子Ver=H(S//N0),然后将IDA、N0、Ver这三部分传送给服务器,用户保留S。服务器收到以上三部分数据,先检查服务器的数据库中有无此用户,如果有,则发出错误信息;否则,添加此用户到数据库中,写入格式为:IDA、N0、Ver[4]。
2)远程口令认证过程
当用户A想要登录时,先产生一个随机函数N1,然后按如下步骤实现认证:用户A将用户身份证IDA传给远程服务器,请求登录;服务器先验证此用户是否注册过,如果没有,则发出错误信息,提示用户注册并拒绝登录,如果用户已经注册,则在数据库中找到此用户的N和H(S//N0),并将其传给用户A;用户A计算下面的值,并将其发送到主机,计算H(S//N0),H(S//N1)———>主机,N1———>主机。其中H(S//N0)是验证本次口令的计算参数,H(S//N1)是验证下次口令时的计算参数;主机用保留的验证因子Ver=H(S//N0)与接收来的验证因子Ver是否相等。若相等,则接受用户登录请求,且修改Ver= H(S//N1),并将随机数N1和验证因子Ver写入用户数据库中,以备下次用户登录时使用;如果不相等,则发出登录口令错误信息并拒绝用户登录[4]。其流程图如图1所示:
1.3 对MYH协议的攻击
通过该协议的执行过程,可以得出MYH协议通过两次握手来实现用户对服务器的验证和服务器对用户的验证。作者认为由于攻击者无法得到用户的口令S,也就无法生成用户的验证数据H(S//N0)和生成用户的下一次的验证数据H(S//N1)。其安全性主要建立在哈希函数的单向性上。但是由于在认证过程中,用户和服务器之间两次传送的H(S//N0)都是一样的。攻击者可以截取这个信息对协议进行攻击。
在这里我们假设攻击者拥有文章0规定的攻击者所有的能力,对MYH协议攻击者可以采取以下手段进行攻击:
1) 冒充攻击:由于用户注册阶段的IDA是明文传送的,所以攻击者可以通过简单的窃听就得到用户的IDA。攻击者在得到用户的IDA后,可以冒充用户向服务器发起登录请求。服务器在收到用户的登录请求后。开始按照协议开始执行,将存储的Ver和N0发送给攻击者。攻击者在收到服务器发来的Ver之后,只要再随机选取一个N1与收到的Ver一起发送给服务器。就可以冒充用户登录服务器,进行任何操作。
2) 中间人攻击:在协议认证的开始用户向服务器提出登录请求,服务器找到用户的注册信息,将用户的Ver和N0发送给用户。在这个过程中,攻击者可以截取服务器发送给用户的信息,并将其转发给用户。由于用户是通过验证信息Ver来验证服务器的,所以在这里攻击者可以完全冒充服务器与用户进行通信。同时攻击者截取用户发送给服务器的新认证信息,并将其转发给服务器,冒充用户与服务器进行通信。
这样攻击者就可以同时冒充用户与服务器,将任何对自己有利的信息传送给用户或者上传到服务器。而在这个过程中用户和服务器都无法察觉自己正在跟攻击者进行通信。
2 对MYH协议人改进
通过上述攻击,我们发现攻击主要是利用MYH协议中服务器与用户两次传送的验证信息H(S//N0)都是一样的这一点对协议进行攻击的。本文对MYH协议中的这一漏洞进行修补,提出一个新的协议。我们称为SH-Key口令认证协议。
2.1 SH-Key协议执行
协议准备阶段,服务器选取一个安全的哈希函数和公钥算法。将哈希函数和服务器公钥公布在自己站上。
1)注册阶段
用户A向服务器提出注册请求,并从服务器网站得哈希函数H()和服务器公钥pks。用户A输入身份证IDA及登录口令S,并产生随机数N0,计算出验证因子Ver=H(S//N0)。然后计算RA=E{IDA,N0 ,Ver} pks,并将RA传送给服务器,用户保留S。服务器收到RA后,先计算{IDA,N0 ,Ver}=D{RA}sk,然后检查服务器的数据库中有无此用户,如果有,则发出错误信息;否则,添加此用户到数据库中,写入格式为:IDA、N0、Ver
2)认证阶段
① [U→idSer]
用户向服务器发送登录请求,并将自己的用户名id传送给服务器。
② [Ser→N0 ,Vs,N*0U]
服务器在收到用户的登录请求后查找有无用户的注册信息。没有找到,返回错误信息。如果找到用户的注册信息,选取随机数N0并计算Vs=Ver⊕N0,N0*=H(N0)。并将Vs ,N0,N0*发送给用户。
③ [U→Ver′,N*1,Ver1Ser]
用户在收到服务器传过来的数据后,首先计算H(S//N0),然后计算N0=H(S//N0)⊕Vs.,验证N0*?=H(N0)。如果不相等,则丢弃,重新发送登录请求。如果相等说明所接收的数据是从服务器传送过来的。选取随机数N1,计算Ver=H(S//N0)⊕N1,N1*=H(N1),Ver1=H(S//N1)⊕N1*并将其发送给服务器。
④ 验证通过,服务器重新写入注册数据。
服务器在收到用户验证数据后。首先计算N1=Ver⊕Ver,验证N1*?=H(N1)。如果不相等,则验证不通过,不允许用户登录。相等,则验证通过,允许用户登录。计算Ver=Ver1⊕H(N1)。用Ver,N1更新用户的注册数据。
3 安全分析
本文提出的SH-Key协议有效的改进MYH协议不能够抵抗冒充攻击和中间人攻击的缺点。同时保留了MYH协议的高效性。本节主要针对本文的改进进行安全分析。
1)冒充攻击:本文提出的协议在用户注册阶段使用公钥加密算法将用户的注册信息进行加密,传送给服务器。这样攻击者即使能够截取用户的注册信息,因为无法对用户的注册信息进行解密,也就无法无法得用户的验证信息Ver。无法冒充合法用户进行登录。
2)中间人攻击:本文所提出的协议,用户在收到服务器返回的认证信息后,通过验证N1*?=H(N1)验证服务器器的合法性。服务器发送的随机数N0经过Ver进行加密。而攻击者在无法得到验证数据Ver的情况下是无法伪造服务器的验证数据Vs,也就无法冒充服务器向用户发送数据。服务器在收到用户的验证数据后,通过验证N1*?=H(N1)来确认用户的合法性。用户发送的随机数N1同样经过验证数据Ver进行了加密,因而攻击者也无法伪造用户的验证数据。通过用户与服务器的两次握手,使攻击者无法发起中间人攻击。
4 结束语
本文是对MYH协议的有效改进,弥补MYH协议无法抵抗冒充攻击和中间人攻击的安全漏洞。同时保留了MYH协议的认证的高效性和动态性。是一种高效安全的身份认证协议。
参考文献:
[1] 毛文波.现代密码学理论与实践[M].北京:电子工业出版社,2004
[2] 袁丁,范平志.远程动态口令鉴别方案[J].计算机应用研究,2001(7):64-65.
[3] Neil M,Haller.The S/KEY one-time password system.RCF1760[M].Network Working Group,1994.
[4] 孟艳红,李雅红,黄静.一种简单的远程动态口令认证方案[J].沈阳工业大学学报,2005(1):74-76.
[5] 王耀民,王立斌.一种基于口令的防窃取私钥保护协议[J].计算机系统应用,2010.19(4),65-68.
[6] Schneier B.The secure Hash algorithm directory MD5,SHA-1 and HMAC resources [EB/OL].http://www.secure-hash-algorithm-md5sha-1.co.uk/.2003-11-9.
[7] Benhamouda F, Blazy O, Chevalier C.New smooth projec-tive hash functions and one-round authenticated key exchange[EB/OL]. Cryptology ePrint Archive, Report 2013/034, 2013. http://eprint.iacr.org/2013/034.