适用于手机支付的身份认证机制

2016-02-13 05:58余小亮卢达龙王云峰
软件 2016年12期
关键词:公钥哈希密文

余小亮,卢达龙,吴 炜,王云峰

(厦门大学 信息科学与技术学院,福建 厦门 361005)

适用于手机支付的身份认证机制

余小亮,卢达龙,吴 炜,王云峰

(厦门大学 信息科学与技术学院,福建 厦门 361005)

手机支付已经成为目前电子商务平台的主要支付手段,但用于手机支付的双重认证机制无法抵抗手机病毒感染、手机号码被复制、手机丢失带来的安全隐患。本文基于用户账户、密码、手机序列号IMEI,借助于哈希函数、公钥密码等密码技术,设计了一个适用于手机支付的三级身份认证协议。经安全性分析,此机制具备安全性。

手机支付;身份认证;哈希函数;公钥密码

0 引言

互联网的飞速发展,方便了人们的生活,上网聊天、电子邮件、电子论坛等免费网络服务也逐渐成为人们生活的一部分[1]。网络交易的频繁进行极大地促进了手机电子商务的发展[2]。然而,由于网络本身的开放性,如何安全的进行交易成为人们所关注的问题[3]。网上交易的第一步是身份验证,它是保证交易系统安全的第一道门槛,也是一切安全技术的基础[4]。随着科技的快速发展,手机在电子商务中的作用不断突出,利用手机动态验证码进行身份验证的方式被越来越多的人接受并使用。

基于手机动态验证码的身份认证方式,在网上银行和淘宝、京东等电商平台上得到广泛的运用[5,6]。手机动态验证码认证方式的实质是将手机作为用户身份的标识,可是,如果用户的手机中毒、丢失或是手机号码被复制,都会使得动态验证码被非法盗用,那么盗用者就可以冒充用户通过身份认证进入到接下来的操作中。这就给用户的个人信息保护以及财产保护带来不安全的隐患。此外,2015年315晚会还曝光了这样一个问题:公共场所的免费WIFI居然会偷钱。究其原因竟然是用户在WIFI中传输的信息都是以明文的形式直接传输的。

为了解决上述机动态验证安全问题,同时避免信息在WIFI中以明文进行传输的现象,本文基于随机数发生器、用户账户、密码、手机序列号IMEI,借助于哈希函数[7]与公钥密码[8]等密码技术,设计了一个适用于手机支付的三级身份认证协议。经安全性分析,此方案可以抵制目前已知的各种攻击技术,即使是手机丢失或是手机号码被复制也具备安全性。

1 基于动态验证码的身份认证

为确保网络交易的安全性以及身份的可认证性,当今认证系统普遍采取了双重验证机制,即除了“用户名+密码”验证外,还附加使用手机动态验证码的验证方式[5]。认证过程如图1所示。

图中,请求方A向认证系统B请求通过身份验证,先要将自己的用户名和密码输入到认证系统B中,进行第一次身份认证;在通过第一次身份认证之后,认证系统B再向请求方A的手机上发送短信动态验证码,A收到动态验证码后立即将其送回给认证系统B,进行第二次身份认证。

图1 双重认证机制

在这个认证过程中,第一次认证确保请求方A在账号或是密码没有被窃取的情况下可以安全完成身份认证;但是,如果A的账号和密码被有心人士C窃取,那么可能存在C冒充A通过身份认证,然后发送虚假信息或接收信息等。而第二次认证通过向A的手机发送动态验证码,C无法获得动态验证码,也就无法完成第二次认证。因此,利用账号+密码和手机动态验证码双重认证的方式,使得身份认证过程更加安全。

但是现实生活中双重认证机制应用于手机上存在以下缺点:(1)如果手机中毒导致账户、密码和认证动态码泄露会使攻击者具备与手机用户同样的操作权限,给手机用户带来经济损失;(2)如果手机丢失,同样受到账户、密码和认证动态码泄露威胁;(3)攻击者通过监视等非法手段获得用户名和密码后非法复制手机号码就可以伪装成手机用户。

2 三级身份认证方案

为了解决手机支付双重认证的安全问题,对电子商务中的身份认证协议进行了设计,提出了三级身份认证机制。请求方和认证方之间利用公钥加密体制进行信息传递,并利用SHA-256算法生成动态验证码。三级身份认证中各个变量含义如表1所示。

表1 三级认证机制中各个参数

第一级认证流程如图2所示,步骤如下:

步骤1:请求方A(或手机A)向认证系统B发出请求,想要进行身份认证。

步骤2:B系统接收到请求后,允许认证。

步骤3:A使用自己的自己私钥Kd_A利用公钥密码对登录账户名name_A和登录密码secret_A进行加密,生成密文Kd_A(name_A||secret_A),然后再用B的公钥Ke_B对Kd_A(name_A||secret_A)进行加密,生成密文Ke_B(Kd_A(name_A|| secret_A))送给认证系统B。

步骤4:B收到密文Ke_B(Kd_A(name_ A||secret_A))之后,先用自己的私钥Kd_B将密文解密,得到Kd_A(name_A||secret_A),再用A的公钥对(Kd_A(name_A||secret_A))进行解密,得到A的账号名name_A',密码secret_A',并将其与认证系统B中保存的对比账号名name_A和密码secret_A进行比对,如果name_A=name_A',secret_A=secret_A'时,则第一级身份认证成功;如果有一个不相等,则身份认证失败。

第一级认证类似双重认证机制,存在一些安全隐患,因此A通过第一级身份认证后,可以在系统B中进行一些基本操作:比如浏览网页、添加或删减收藏等,如果A想要完成下一步支付操作时,那么就需要对A的身份进行第二级认证。

图2 第一级认证

第二级认证需要在通过了第一级认证基础上才能进行,认证流程如图3所示,步骤如下:

步骤5:请求方A向认证系统B发出请求,想要进行第二级身份认证。

步骤6:B接收到A的请求后,立即做出响应。利用SHA-256算法生成动态验证码Mca1,并用A的公开密钥Ke_A对Mca1进行加密,得到密文然后以手机短信的形式向A发送密文Ke_A(Mca1),并开始倒计时1分钟,同时保存Mca1以待稍后的比对验证。

步骤7:A收到密文Ke_A(Mca1)后,先用自己的私有密钥Kd_A对Ke_A(Mca1)进行解密,得到动态验证码Mca1',然后用B的公钥Ke_B将Mca1'、A手机的IMEI_A、A要进行的操作编码Op进行加密,得到密文,并立即送到交易系统B中。

步骤8:B收到A发送的密文Ke_B(Mca1'|| IMEI_A||OP)之后,先用自己的私有密钥Kd_B对密文进行解密得到Mca1'、IMEI'、Op,接着将Mca1'、IMEI'前保存的Mca1、IMEI进行对比,如果都相等,就表明A通过第二级身份认证,允许A在B平台上进行Op操作,否则A就无法通过第二级身份认证,B平台拒绝A所有操作请求。

步骤6中Mca1是由哈希函数SHA-256来产生的。用来产生Mca1的SHA-256种子如图4所示。需要指出的是,由于经过SHA-256算法后生成的摘要是256位,而实际中使用的验证码是4位、6位或是8位的数字或字母组合,因此需要对最后的结果进行相应的截取。具体操作如下:先将哈希种子Seed进行SHA-256算法计算,生成Seed的摘要,即Hv256,然后根据需要,分别截取Hv256的高16位、高24位和高32位,以分别生成4位、6位和8位的动态验证码mca_4、mca_6和mca_8。

在第二级身份认证过程中,通过认证手机号码与IMEI号,可以防止号码被复制的攻击方式,但无法抵抗手机丢失带来的安全隐患。因此可以允许通过第二级认证的用户进行一些例如小额支付、提交订单等损失不大的操作。如果用户想完成更加敏感的交易操作,保证交易的安全,就需要进行第三级身份认证。第三级身份需要在通过了第一、第二级认证的基础上,通过计算机才能进行,第三级认证如图5所示,具体步骤如下:

步骤9:请求方A向认证系统B发出请求。

步骤10:B接收到A的请求后,立即做出响应。利用SHA-256算法生成动态验证码Mca2,并用A的公开密钥Ke_A对Mca2进行加密,得到密文然后以电子邮件的形式把密文Ke_A (Mca2)发到A的指定邮箱Mail_A中,并开始倒计时5分钟,同时保存Mca2以待稍后的比对验证。

图3 第二级认证

图4 第二级认证动态码的SHA-256种子Seed

步骤11:A通过计算机先登陆指定邮箱Mail_A,取出密文Ke_A(Mca2),然后用自己的私有密钥Kd_A对Ke_A(Mca2)进行解密,得到动态验证码Mca2',接着用B的公钥Ke_B将Mca2'进行加密,得到密文Ke_B(Mca2'),并立即送到交易系统B中。

步骤12:B收到A发送的密文Ke_B(Mca2'_之后,先用自己的私有密钥Kd_B对密文进行解密得到Mca2',接着将其与之前保存的Mca2进行对比,如果对Mca2和Mca2'的值相等,就表明A通过第三级身份认证,但如果Mca2和Mca2'的值不相等,A就无法通过第三级身份认证。

步骤10中Mca2也是由哈希函数SHA-256来产生的,除种子不同外,其产生过程同Mca1产生过程相同。用来产生Mca2的SHA-256种子如图6所示。

3 安全性分析

在三级认证系统中,每级认证都必须在上一级身份认证通过后,才能进行下一级的身份认证,因此安全性是逐级递增的。平台可以根据安全性赋予不同的操作权限,实现便利与安全的折中。例如小额支付可以分配给第二级认证,不需要通过计算机登录邮箱进行验证;而大额支付必须通过第三级认证,最大程度的保证资金安全。

认证过程中传递的信息都是经过公钥密码加密后再进行传递的,因此,可以有效地避免信息在公共WIFI中明文传输的缺陷,使得信息不会被攻击者在信息传递过程有效获得。

第一级身份认证过程中,A的登录账户与登录密码首先通过A的私钥进行加密,在冒充者不知道A的私钥的前提下,因此即使冒充者知道A的账号和密码,也无法冒充A通过身份认证;此级认证无法抵抗重传攻击,即如果手机中毒,冒充者可以获得认证信息,然后重传认证信息获得认证通过;因此认证只具备一般安全性,平台可以不授权任何操作权限或只授权不会造成任何损失的操作。

第二级身份认证首先通过时间戳与随机数抵抗重传攻击,即每次认证请求的认证信息都不相同,因此无法通过重传信息获得认证通过。此外,由于认证还需验证手机的IMEI号,因此冒充者即使通过病毒植入获得了A的登录账户、登录密码、私钥,也无法通过复制手机卡的方式冒充A。

第三级身份认证通过向A的绑定邮箱发送动态验证码进行认证,请求方必须先通过计算机登录自己的邮箱,才能获得加密后的动态验证码。这样即使冒充者通过病毒植入获得了A的登录账户、登录密码、私钥,并且还获得了A的手机,也无法通过此级认证。只有在A手机中毒、计算机也中毒,同时手机又被攻击者获得的前提下才能被冒充,发生这样情况的概率是非常低的,几乎是不可能发生。

4 结束语

针对手机支付身份认证的潜在威胁,本文基于随机用户账户、密码、手机序列号IMEI,借助于哈希函数、公钥密码等密码技术,设计了一个适用于手机支付的三级身份认证机制。在认证的过程中,公钥密码用来保护信息在传输通道的安全,时间戳与随机数用来防止攻击者的重传攻击,手机的IMEI号用来防御手机卡被复制的危险,而第三级的电子信箱验证保证即使在手机丢失的前提下也不会被攻击者假冒。在使用此认证机制时,应根据需要授权不同级别认证允许的操作,实现便利与安全的折中。

图5 第三级认证

图6 第三级认证动态码的SHA-256种子Seed

[1] Kahri F, Bouallegue B, Machhout M, et al. An FPGA implementation and comparison of the SHA-256 and Blake-256[C]//International Conference on Sciences and Techniques of Automatic Control and Computer Engineering. IEEE, 2013: 152-157

[2] Shafiq S, Khiyal M S H, Khan A. Development of Mechanism of Integrity in M-Commerce using Joint Signature Scheme[J]. International Journal of Computer Theory & Engineering, 2012, 4(3): 332-336

[3] 郝舒欣, 赵耿, 徐刚, 等. 一种新的基于Chebyshev多项式的身份认证方案[C]//Asia-Pacific Conference on Information Network & Digital Content Security. 2010.

[4] 王斌君, 王靖亚, 杜凯选, 等. 验证码技术的攻防对策研究[J]. 计算机应用研究, 2013, 30(9): 2776-2779.

[5] 彭州. 基于手机动态验证码的网络支付风险分析[J]. 金融科技时代, 2015(1): 61-62.

[6] 马阳明. 基于可信硬件的智能手机短信加密方案[J]. 计算机与现代化, 2016(4): 29-35.

[7] 赵耿, 闫慧, 童宗科. 基于Chebyshev多项式的公钥密码系统算法[J]. 计算机工程, 2008, 34(24): 137-139

[8] GARC A R, ALGREDO-BADILLO I, MORALESSANDOVAL M, et al. A compact FPGA-based processor for the Secure Hash Algorithm SHA-256[J]. Computers & Electrical Engineering, 2014, 40(1): 194-202

An Authentication Mechanism for Mobile Payment

YU Xiao-liang, LU Da-long, WU Wei, WANG Yun-feng
(School of information science and engineering, Xiamen University, Xiamen Fujian 361005, China)

Mobile payment has become one of the most widely used payment methods of e-commerce platform. However, the dual authentication mechanism used during mobile payment is not security if the cell phone used payment gets viruses. It is also not safe when mobile phone card is copied and mobile phone has been lost. An authentication mechanism for mobile payment is proposed based user name, user password and international mobile equipment identity. Hash function and public key cryptography are applied in the authentication protocol. The result of analysis shows that this authentication mechanism is secure.

Mobile payment; Authentication; Hash function; Public key cryptography

TP391.41

ADOI:10.3969/j.issn.1003-6970.2016.12.041

国家自然科学基金资助项目(61274133)

余小亮(1993-),男,硕士,主要研究方向:数字集成电路设计及SLAM系统软硬件设计。

王云峰,博士,副教授,主要研究方向:数字集成电路设计及SLAM系统软硬件设计。

本文著录格式:余小亮,卢达龙,吴炜,等. 适用于手机支付的身份认证机制[J]. 软件,2016,37(12):192-196

猜你喜欢
公钥哈希密文
一种针对格基后量子密码的能量侧信道分析框架
一种支持动态更新的可排名密文搜索方案
基于模糊数学的通信网络密文信息差错恢复
一种基于混沌的公钥加密方案
HES:一种更小公钥的同态加密算法
SM2椭圆曲线公钥密码算法综述
基于维度分解的哈希多维快速流分类算法
云存储中支持词频和用户喜好的密文模糊检索
基于格的公钥加密与证书基加密
基于同态哈希函数的云数据完整性验证算法