时间:2024-06-19
杨建强 ,袁 磊
(襄樊学院 数学与计算机科学学院,湖北 襄樊 441053)
基于Java手机的一次性密码认证方案
杨建强 ,袁 磊
(襄樊学院 数学与计算机科学学院,湖北 襄樊 441053)
一次性密码认证方案比常见的用户名/密码认证方案要安全得多. 文章提出了一种基于质询/响应协议的 Java手机的一次性密码认证方案,方案中产生一次性密码的密钥由改进的Diffie/Hellman协议完成交换,还采用了保护MIDlet、密钥、通信链路等的安保措施. 方案的实施应用,除手机外,用户并不需要添置额外的硬件设备. 该方案可以作为已有的认证方案如用户名/密码方案的替代方案,具有很好的安全性及应用前景.
Java手机;密码认证;一次性密码
Internet上的服务越来越多,其中许多服务需要认证用户身份. 目前最常见的认证方案是使用“用户名/密码”方案,随着服务数目的不断增多,需要用户记住的用户名/密码对也越来越多,而且当不同的用户/密码数增多时,要记住它们是很不容易的. 因此,在多个Internet服务中,许多用户或者使用相同的用户名/密码对,或者选择容易记忆的密码,有时候甚至把密码随便记在纸上,这一切大大降低了这类本来就存在弱点的认证方案的安全性. 原因在于,如果多个服务使用相同的用户名/密码对,那么某个服务的密码一旦被破解,其他服务也就不再安全;另外,即使在不同的服务中使用了不同的用户名/密码对,如果不经常更改密码,那么也存在被破译的可能性. 但是,一次性密码(OTP,One-Time Password)不存在上述问题. 所谓一次性密码,就是一个密码只使用一次. 它与前面提到的静态密码不同,用户每次登录认证时都会改变,其主要思路是在登录过程中加入不确定因素,使每次登录过程中所用的密码均不同,即使非法用户截获了己经通过验证的正确密码,再次提交到认证服务器也不能通过验证. 目前已知的各种针对静态密码的攻击手段,对一次性密码都无效[1].
目前已有不少成熟的一次性密码认证方案,通过分析比较发现,它们大多另外增加了用户或服务提供者SP的开销,需要额外的硬件支持,并且常常是不同的服务需要不同的硬件/软件支持,增加了用户的使用成本和难度. 当前,手机已经成为了人们生活的必需品,具有完成认证过程的计算能力和通信能力,通过它可以实现用户认证,而且不需要用户另外添置新设备. 鉴于此,本文提出了一种使手机成为安全的一次性密码凭证的认证方案,该方案采用了Java技术实现认证信息交流,同时把用户的使用负担降到最小,不需要增加任何其它额外的硬件设备,具有很好的应用前景.
1.1 方案的组成结构
Internet服务中典型的认证结构包括如下设备:用户计算机、认证服务器AS(Authentication Server)和服务提供者SP(Service Provider). 服务提供者SP与认证服务器AS相连,认证服务器AS代表服务提供者SP处理对用户的认证. 在提出的方案中增加了手机设备并使用移动网络,认证服务器AS同时与移动网络相连,它使用SMS网关发送和接收SMS信息.
在使用一次性密码的系统中,用户端必须部署一个一次性密码生成器,生成器可以是一个软件程序,也可以是一个硬件生成器. 为了成功认证,服务器端也必须部署一个一次性密码认证模块,它对应于用户端生成器[1]. 方案采用Java ME/MIDlet技术实现用户端的一次性密码生成器,使用Servlet实现AS服务器端的认证模块. 图1显示了认证方案的重要组成. 其中,用户计算机中的Applet用于把一次性密码发送给认证服务器AS.
图1 方案的组成要素示意图
1.2 一次性密码的产生
根据不确定因素的选择方式,一次性密码的产生机制可以分为:质询/响应(challenge-response)机制、口令序列机制、时间同步机制和事件同步机制[2]. 基于质询/响应的一次性密码产生机制的基本原理是:用户向服务器提出认证申请时,服务器产生一个质询(通常是随机数),发送给用户;收到质询后,用户用自己的密钥和质询作为某种hash函数的输入,计算出一个一次性密码作为响应,发送给服务器;服务器用同样的hash函数做验算即可验证用户身份.
方案采用质询/响应机制/产生一次性密码,具体地说,一次性密码OTP = hash(challenge || key). 其中,challenge为质询,key为用户的密钥(只有用户和服务器知道),||为连接操作. 需要说明的是,密钥key是通过密钥交换的方式得到,该方式保证了密钥key的私密性和安全性.
1.3 认证过程发生前的准备工作
在认证过程发生以前,用户需要在认证服务器AS上注册,向AS提交用户名、手机号码等信息. 用户通过一个由TLS协议保护的Web页面完成注册,手机中的MIDlet是在注册的时候安装的. 用户通过计算机在认证服务器AS上完成注册后,AS向用户手机发出一个指向该MIDlet链接的推送信息. 用户同意下载后,MIDlet被下载并安装到用户的手机中,与此同时认证服务器AS生成一个随机数r,并显示在用户计算机的Web页面上(受TLS保护). 它将在密钥交换中被使用,且只使用一次. MIDlet安装完毕后,认证服务器AS给用户手机发送一个包含有公共数据的SMS短信息,准备与MIDlet交换密钥,收到该短信息后,利用MIDP 2.0的推送技术,MIDlet将被激活[3],此时MIDlet要求用户输入两个值,一个值是随机数r,另一个值由用户选择,作为保护MIDlet的密码. 此后,MIDlet开始与AS交换密钥,当密钥交换结束时,AS把所得到的密钥key和用户信息一起存储到AS的数据库中,而MIDlet把密钥key存储到手机中.
1.4 认证过程
当用户需要被认证的时候,要求用户输入用户名. Servlet根据用户名从数据库中取得用户信息,然后基于用户信息产生一个challenge,依据该challenge与用户密钥key计算出一次性密码OTP. 接下来计算该OTP的消息认证码(MAC),再通过SMS短信息,Servlet把challenge和MAC发送给用户手机中的MIDlet,同时把OTP保存起来.
当SMS信息到达用户手机时,MIDlet被自动激活. 根据challenge和密钥key,MIDlet使用与Servlet相同的方式计算出OTP,接着计算该OTP的MAC,并与来自Servlet的MAC进行比较. 如果这两个MAC值不匹配则认证失败,认证需要从头开始;如果值匹配,则MIDlet把该OTP转换成可显示的字符(以便于识记并显示在手机屏幕上). 用户在计算机的浏览器中输入转换后的OTP,由Applet转换回原始的OTP并以安全连接的方式(TLS)发送给Servlet.
当Servlet收到来自Applet的OTP,它把该OTP与它保存的OTP进行比较,如果二者匹配则用户通过认证. Servlet通知Applet,并把会话重定向回服务提供者SP,用户就可以使用相应的服务了.
2.1 密钥交换
用于产生一次性密码的密钥key只有用户和服务器AS知道. 方案使用一种改进的Diffie-Hellman协议完成密钥的交换[4],该协议可以有效的阻止中间人攻击. 该方案只需要两条信息,如图2所示.
图2 密钥交换过程示意图
密钥交换发生在MIDlet被下载并安装之后. 密钥交换由Servlet开始,它首先随机地生成一个值很大的安全素数p,然后计算g = hash(r)2mod p .
这里的r是用户注册完成之后由认证服务器AS产生并显示在用户浏览器中的随机数. 接着Servlet生成一个秘密的随机数a(需要保密),并计算ks= gamod p .
接下来,Servlet使用一个SMS短信息把p和ks发送给MIDlet. 这里的p和ks是在1.3中提到的公共数据.一旦收到来自Servlet的SMS短信息,MIDlet将被激活. 它首先生成一个秘密的随机数b,然后利用用户输入的r计算g = hash(r)2mod p与kc= gbmod p .
然后MIDlet利用SMS短信息把kc发送到认证服务器AS,并计算key = (ks)bmod p .
认证服务器AS在收到来自MIDlet的kc之后计算key = (kc)amod p .
至此,认证服务器AS和MIDlet完成了密钥交换,获得了共享的密钥key,它被用于以后的OTP的生成.
2.2 保护MIDlet和密钥key
如前所述,MIDlet安装完毕,首次被来自AS的SMS短信息激活的时候,会要求用户输入两个值,一个是随机数r,另一个值由用户选择,作为保护MIDlet的密码. MIDlet计算这个密码的hash值,并把它保存到MIDlet可识别的RS(Record Store)[5]中. 此后每次启动MIDlet,用户都需要提供该密码,否则MIDlet将不能正常工作. 这样可以防止用户以外的人误用MIDle. 存储的是密码的hash值而不是密码本身,即使外人读出了存储的hash值,也无法破解密码,原因是hash函数不可逆[6]61. 除了保护MIDlet,该密码也用作加密密钥,用于保护保存在手机中的密钥key(它同样存储在RS中),也就是说,密钥key在存储到RS中之前将被加密.由于密码很难被破解,所以要想解密密钥key也很困难. 需要说明的是,MIDlet以私有模式使用RS,这防止了手机中的其他MIDlet访问服务提供者RS中的记录.
正如前面描述的认证过程,当包含challenge和MAC的SMS信息到达的时候,MIDlet被自动激活. MIDlet随后提醒用户输入密码,然后生成该密码的hash值并和存储的密码的hash值进行比较. 如果二者匹配,
MIDlet就用该密码解密保存的密钥key,然后challenge和密钥key被连接在一起,作为hash函数的输入而产生一次性密码OTP.
2.3 通信链路的安全
在认证过程中,密钥key是保密的,因为使用了OTP的MAC,对经由移动网络发送的对challenge的任何修改都会导致认证失败. 虽然从移动网络上可以获得challenge和MAC,但它们并不能让攻击者得到密钥key. challenge只是一个随机数,而MAC是不可逆的[6]63.
当用户计算机向AS发送OTP的时候,采用了受TLS保护的连接方式. 另外,用户在向AS注册的时候,用户计算机和AS之间的通信数据也是受TLS保护的,包括提交的用户信息和返回的随机数r. 由于使用TLS安全连接,可能发生的网络监听、会话劫持和中间人攻击等恶意行为都被阻止了.
本文提出了一种基于Java手机的一次性密码认证方案. 该方案消除了已有的相似方案的不足,比如必须时钟同步,容易受到中间人的攻击等;该方案的另一个优势是,除手机外,用户并不需要额外的硬件设备. 方案中所采用的安全措施使认证可靠,因此,它完全可以作为已有的认证方案比如用户名/密码方案的一个替代方案,可以应用到当今的Internet上的需要认证的大部分服务上,比如网络银行、电子商务,以及电子政务等. 另外,方案中的软件模块采用Java技术实现,由于Java ME/MIDlet几乎已经成为所有手机的标准配置,并且在桌面计算机中Java技术也得到了广泛的应用,因此该方案具有很好的应用前景.
[1] 宋 云, 李 剑, 沈 冲. 基于一次性密码的数据安全认证机制[J]. 信息网络安全, 2009(6): 70-72.
[2] 张 亮, 刘建伟. 基于手机令牌的动态口令身份认证系统[J]. 通信技术, 2009, 42(1): 253-255.
[3] 杨建强, 袁 磊. 无线Java推送技术若干问题简析[J]. 计算机时代, 2005 (3): 5-6.
[4] JABLON D. Strong Password-Only Authenticated Key Exchange[J]. Computer Communication Review, ACM SIGCOMM, 1996, 26(5): 5-26
[5] JCP. MIDP - JSR 118, Mobile Information Device Profile for J2ME Version 2.0[S/OL]. (2002-11-01)[2010-04-28] http://jcp.org/aboutJava/ communityprocess/final/jsr118/index.html.
[6] WILLIAM STALLINGS. 网络安全基础-应用与标准[M]. 3版. 北京: 清华大学出版社, 2007.
Authentication Scheme Based on One-time Password and Java Mobile Phone
YANG Jian-qiang, YUAN Lei (School of Mathematics and Computer Science, Xiangfan University, Xiangfan 441053, China)
The one-time password authentication scheme is more secure than the common user name/password authentication scheme. A Java mobile phone-based, one-time password authentication scheme, which is based on a challenge-response protocol, was presented. The key, which as one of two arguments for the generation of the one-time password, is securely exchanged through the use of the improved version of Diffie-Hellman. The scheme also uses other security protection measures, such as protect the MIDlet and secret key, as well as protect communications links and so on. In addition to mobile phones, users do not require additional hardware devices. The security measures used in the scheme make it a good alternative for the existing authentication scheme, such as user name / password authentication scheme. This scheme has good application prospects.
Java Mobile Phone; Password authentication; One-time Password
TP393.08
A
1009-2854(2010)05-0040-04
2010-05-04
湖北省教育厅科研项目(D20092505); 襄樊学院科研项目(2009YB026)
杨建强(1972— ), 男, 湖北枣阳人, 襄樊学院数学与计算机科学学院副教授.
陈 丹)
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!