基于手机令牌的移动应用双向身份认证方案研究*
2014-09-29郑兆华彭金莲程杰仁
郑兆华,彭金莲,程杰仁
(海南大学信息科学技术学院 海口570228)
1 引言
随着移动互联网的迅速发展,越来越多企业希望通过移动信息化提高效率。作为移动信息化核心的移动应用已成为企业典型应用。移动应用将企业核心业务数据延伸到移动终端中运用,然而安全问题是制约企业移动信息化发展的一个主要瓶颈。移动应用是在开放移动互联网场景下的频繁交互,需要认证用户的合法性。目前绝大部分移动应用采用静态口令认证,其安全性难以控制,容易被猜测、窃听和暴力破解,不能满足企业移动信息化的安全要求。动态口令认证技术能够弥补静态口令的不足,能满足移动应用的安全认证要求。
2 动态口令技术
2.1 动态口令实现原理及实现机制
动态口令,又叫一次性口令,是指在认证中加入了时间、随机数等不确定因素,使用专门算法生成的一个不可预测的随机数字。每个密码只能使用一次,使得攻击者无法通过窃取口令或重放攻击来获取登录权限。动态口令被公认为是最安全的身份认证方式之一,并获得广泛应用。根据动态因素不同,可分为时间同步机制、事件同步机制和挑战/应答机制[1],具体介绍如下。
·时间同步机制以登录时间作为动态因素。优点是实现简单,但对时间准确度要求较高,技术上难以实现。数据在网络上传输和处理存在一定时延,增大了重放攻击和暴力破解的可能性[2]。
·事件同步机制是以事件的次序作为动态因素。该机制比较容易实现,不需要特殊硬件的支持,但同样存在失去同步的风险。
·挑战/应答机制是以认证服务器发出的挑战码作为动态因素。它有很高的安全性,并不涉及同步问题,是目前最可靠的认证方法之一,但缺点是存在单向认证和需人工输入挑战码。
时间同步和事件同步机制容易失去同步,可靠性不是很高;挑战/应答机制虽然增加用户输入步骤,但是可靠性最好。如果能自动输入挑战码并双向认证,就是一种较优的解决方案。
2.2 动态口令的实现方式
实现方式分为硬件令牌和软件令牌。目前大部分采用硬件令牌,如中国银行e-token、网易将军令、盛大密宝、QQ令牌等。硬件令牌是一种采用内置电源、存储器、密码计算芯片和显示屏的设备,具有使用便利、安全性高等特点[3]。但它“认牌不认人”,虽然携带方便,但也容易丢失;缺少通信模块,认证服务器无法对其管理和更新数据,一旦失去同步,将无法使用;实施成本较高,这对于预算有限的中小企业来说,显然是不现实的。
软件令牌指使用软件实现的令牌。随着移动时代的到来,智能手机的迅速普及为软件令牌带来了发展机遇。软件令牌无需用户携带额外的设备,相对硬件令牌来说,手机有通信模块,功能更强大,能有效解决上述硬件令牌的缺点。软件令牌必将成为行业的发展趋势。
软件令牌具有安全性高、使用便捷、实施成本低的特点,非常适合中小企业使用。韦广剑提出基于Android令牌的身份认证系统[4]是基于时间同步机制的,存在时间失步和被跟踪破解的风险;郭建昌等提出一种电信级手机令牌动态口令系统[5],但对于普通企业来说,并不具备实施条件;叶晰也提出手机令牌方案[6],但是其使用过时的J2ME技术。本文提出一种基于手机令牌的身份认证新方案。该方案采用更安全的指纹而不是PIN码作为使用凭证,能真实地绑定使用者和手机令牌的关系;能够实现双向可信认证,并以分段双通道(互联网+短信)方式进行加密通信;能远程初始化手机令牌,方便令牌发放。
3 身份认证方案
身份认证方案包括手机令牌注册和身份认证两部分。手机令牌注册包括手机令牌初始化和令牌发放过程。身份认证是指手机令牌生成动态口令,然后通过身份认证系统进行身份认证。涉及的符号及其说明见表1。
表1 符号和说明
3.1 手机令牌注册过程
注册过程是指手机令牌(MT)向认证服务器(AS)登记指纹信息、设备信息和账户相关信息,并初始化的过程,如图1所示。具体说明如下。
(1)用户(U)扫描指纹,登记注册信息。指纹具有普遍性、唯一性和永久性等特征,是世界公认的身份识别标识,是一种最高水平的安全保密解决方案[7]。指纹加密存储在手机令牌内,并作为使用者的凭证,只有和登记指纹相吻合,才能使用该令牌。注册信息主要包括账户、姓名、性别、E-mail、手机号等注册信息。其中手机号必填,作为除互联网之外的信道,用于传输敏感信息。
图1 注册过程
(2)发送指纹、硬件特征码和注册信息到认证服务器。硬件特征码HFC=SHA1(手机 IMEI+SIM卡 IMSI),用于标识硬件运行环境。具体处理步骤如下。
生成随机数R1和临时通信密钥TPK;明文 (PT)=指纹+注册信息+HFC+R1,进行数字签名SGPB(PT);用AS的私钥加密TPK;用TPK加密明文。
处理后,将密文、加密的TPK和签名一起发送给AS。
(3)注册账户,生成令牌序列号、通信密钥和短信密钥。AS用私钥解密签名和TPK,然后用TPK解密密文。SHA1(明文)与解密后的签名进行比较,以验证信息完整性。验证通过后,注册用户,提取指纹特征码(FFC)。把当前时间、FFC、HFC和注册信息使用专门算法处理后,生成令牌序列号(SN)、通信密钥(CK)和短信密钥(SK)。将 CK、SK、HFC和 FFC 用 AS的公钥加密存储在数据库。密钥CK和SK属于核心机密,使用短信和互联网双通道传送给MT。具体处理过程如下。
·生成随机数R2,对明文中随机数R1进行Fn(R1)处理。
·将SK分为SK1和SK2,将 CK分为 CK1和CK2。
·互联网通道回应:首先,(PT)=SN+CK1+SK2+Fn(R1)+R2,进行数字签名(DS)=SGPR(PT);然后,用TPK 加密明文;最后,将密文和数字签名通过互联网通道回应给手机令牌。
·短信通道回应类似互联网回应,明文是(CK2,SK1,Fn(R1),R2),最后短信给令牌注册手机号。
由于密钥分段和双通道传输,只要黑客不能在全部通道截获所有信息,就不能复原密文。在不能复原密文的情况下,即使窃取了密钥,也无法破解密文,从而保证了密钥安全。
(4)接收通信密钥、短信密钥和令牌序列号,令牌初始化完成。具体处理过程如下。
·对于互联网通道的处理:首先,MT使用AS公钥对签名解密,用缓存的密钥TPK进行解密密文;然后,SHA1(明文)与解密的签名比较,以验证数据完整性,对缓存随机数R1进行Fn(R1)处理,与明文中Fn(R1)比较,以对认证服务器进行可信认证。如果这两个比较均通过,表明MT收到的数据完整,认证服务可信;最后,对明文进行处理得到SN、CK1、SK2。
·短信通道处理类似互联网通道,最终处理得到CK2和SK1。
·CK=CK1+CK2,SK=SK1+SK2。将SN设置到手机令牌。使用根密钥(RK)加密CK,用CK加密SK,并存储到手机令牌。
·发送确认通知。生成随机数R3,对R2进行Fn(R2)处理,对明文数字签名SGPB(Fn(R2)+R3)。使用通信CK加密明文,用公钥加密SN。最后将密文和签名加密SN回应AS。
·AS收到后,用私钥解密SN,从数据库检索对应通信密钥CK解密密文。SHA1(明文)和其私钥解密的签名比较。将缓存的R2进行Fn(R2)处理,然后和明文Fn(R2)比较。比较均通过后,表明数据完整,MT可信并正确收到密钥了。
整个过程中,签名用于确保传输数据的完整性。Fn是算法保密的函数,用于MT与AS进行双向可信认证。AS能用ECC私钥解密,表明其可信。通过密钥分段双通道传输数据以及多级加密存储等方式,多方面提高密钥安全性,保障了令牌的安全性。
3.2 认证过程
用户扫描指纹,启用手机令牌并产生动态口令,然后发送给认证服务器进行身份认证,如图2所示。具体说明如下。
(1)扫描指纹,启用手机令牌,发送SN。用户在手机令牌上扫描指纹验证身份,然后将SN发送给认证服务器。具体处理过程如下。
生成随机数R1;明文(PT)=Fn(SN)+R1,进行数字签名SGPB(PT);用AS公钥对SN加密;用CK加密明文,并与加密的SN和签名一起发送给AS。
图2 认证过程
(2)生成挑战码和口令算法密钥K。AS用私钥解密SN,并根据SN查找对应的密钥CK来解密密文。通过SHA1(明文)和解密后的签名比较,确认数据完整性。将SN进行Fn(SN)处理,然后通过和明文中的Fn(SN)比较,对令牌可信认证。比较均通过后,AS使用SN、特征码和当前时间作为影响因素,生成随机的不重复挑战码C和口令算法密钥K。由于C和K属于机密信息,关系着动态口令安全性,需要对其进行分段和双信道传输,具体步骤如下。
算法密钥K分为K1和K2两部分,挑战码C分为C1和C2两部分;产生随机数R2;互联网通道回应:首先,明文(PT)=K1+C2+Fn(R1)+R2,进行数字签名SGPR(PT);然后,用CK加密明文;最后,将密文和签名通过互联网通道回应手机令牌请求;短信通道回应类似互联网处理,明文是K2+C1+Fn(R1)+R2,最后短信给令牌注册手机。
将信息分段和打乱次序,提高破解难度,增加安全性。Fn(R1)用于可信认证。为了节约成本,C1和K2相对短小,保证一条短信就可发送。
(3)手机令牌生成动态口令,具体过程如下。
·互联网信道处理:MT用密钥CK解密密文。通过SHA1(明文)与解密签名比较来判断数据完整性。对缓存的R1进行Fn(R1)处理,然后通过与明文中Fn(R1)比较,从而认证服务器可信。最后得到C2和K1。
·短信信道处理类似互联网信道,最后获得C1和K2。
·挑战码C=C1+C2,口令算法密钥K=K1+K2。
·提取指纹特征码(FFC)。S=FFC+HFC+SN+C。用密钥K对S进行AES加密,然后SHA1摘要,得到长度20的字符串ABS。通过GC(ABS)处理得到8位的动态口令,并向AS发送时效同步通知,时效为60 s。
(4)认证服务器按同样算法生成动态口令。
(5)同步时效。AS收到令牌的通知后开始同步计算口令的时效。
(6)验证动态口令。用户输入MT的动态口令和账户,以加密形式发送到AS进行身份认证。AS解密收到信息,并验证账户、动态口令及时效,认证过程结束。
4 安全性分析
关于本文提出方案的安全性分析如下。
·截获/重放攻击。即使攻击者窃听到用户的动态口令,但是由于动态口令是一次性的,发送给AS也不能通过认证。通信中引入不重复随机数R,当入侵者进行重放攻击时,因为重复随机数,而拒绝请求,重放攻击失败。
·小数攻击。手机令牌和认证服务器的通信过程是采用AES加密和ECC签名,安全性很高,攻击者无法窃取敏感信息,也无法进行小数攻击。动态口令以动静因子相结合的算法产生,并无规律可循,也避免了小数攻击。
·中间人攻击。手机令牌和认证服务器采用加密通信和双向可信认证,口令和密钥等敏感信息通过分段双通道加密发送。中间人攻击将因为这些措施而攻击失败。
·暴力破解。该系统的安全性依赖于AES加密算法和ECC加密算法的安全性。AES是公认最安全的对称加密算法[8],是目前公认最高比特加密强度的公钥算法[9],目前没有有效可行的破解办法。AES和ECC确保攻击者无法获取有效信息,也无从攻击。认证服务器的账户锁定功能使得蛮力攻击和猜测攻击难以成功,因为在有限次数内猜中动态口令的概率极小。
·保证物理安全。即使用户的移动终端丢失或者被盗,由于令牌使用指纹凭证,只能用户本人使用。指纹也是口令计算因素之一,缺少了指纹,将无法生成动态口令。
5 仿真结果及分析
实验环境包含运行在Android系统上的手机令牌仿真程序和利用Java开发的仿真认证服务器两部分。其中手机令牌运行在三星的NoteⅡ智能手机上,认证服务器运行在部署了Tomcat 6.0的PC上,设备的主要参数见表2。
表2 设备主要参数
首先,进行算法功能性测试。经过多次测试,结果表明算法正确,功能正常。然后,测试口令生成效率。图3是测试50次的实验结果。
从图3可以看出生成口令过程中,手机令牌耗时为8~20 ms,平均 10.8 ms;认证服务器耗时为 1~4 ms,平均2.3 ms。因此,该认证方案具有非常高的运行效率。
6 结束语
随着互联网和智能手机产业的发展,手机令牌动态口令技术具备覆盖范围广、安全性高、成本低和携带方便等特点,是未来移动应用身份认证解决方案的发展方向。本文提出一种手机令牌身份认证方案,它使用指纹作为令牌使用凭证,精确地绑定手机令牌和使用者的关系,采用分段双通道方式传送密钥和挑战码,并在通信过程中能够双向可信认证;口令生成算法将动静因子结合,并以AES、SHA1算法为基础;该方案运用手机作为令牌载体,实现一种软件令牌,具有使用便捷、安全性高、运行效率高、成本低、功能强大和人性化等特点,非常适合移动应用的身份认证。
图3 生成口令性能
1 郑强,高能,张令臣.基于SM3算法的动态口令卡的设计与实现.计算机应用与软件,2013,30(2):14~17
2 张利华,章丽萍,张有光等.基于口令的远程身份认证及密钥协商协议.计算机应用,2009,29(4):924~927
3 林元明.基于手机令牌的身份认证系统的研究与实现.厦门大学硕士学位论文,2009
4 韦广剑.基于Android令牌的动态密码认证系统的研究与实现.武汉理工大学硕士学位论文,2012
5 郭建昌,郭茂文,黎艳.一种电信级手机令牌动态口令系统的架构设计及其实现.电信科学,2012,28(10):94~98
6 叶晰,叶依如,岑琴.基于手机令牌的动态口令身份认证系统的实现.计算机系统应用,2010,19(10):32~36
7 刘超凡,张永良,肖刚等.基于滚动指纹数字签名的电子商务安全认证.计算机应用,2012,32(2):475~479
8 赵新杰,王韬,郭世泽等.AES访问驱动Cache计时攻击.软件学报,2011,22(3):572~591
9 闫茂德,纪志强,贺昱曜等.AES与ECC混合加密算法的无线数据通信系统设计.微电子学与计算机,2007,24(7):135~138