随着电子商务的迅速发展,网上支付业务的快速发展,越来越多的人开始使用手机购物付款,这样的购物既方便又快捷受到大家的喜欢,但是随之带来的安全问题也越来越严重,在WIFI上网购物支付的时候,很可能会话被劫持,从而导致支付密码被别人盗用,身份认证技术可以很好解决这个问题。
身份认证技术是让认证方相信正在与之通信的另一方就是所声称的那个实体,其目的是防止伪装。身份认证技术的本质是被认证方有一些信息(无论是一些秘密信息还是一些个人持有的特殊硬件或个人特有的生物学信息),除被认证方自己外,任何第三方不能拥有或伪造,被认证方能够使认证相信他确实拥有哪些秘密,则他的身份就得到了认证,目前在电子商务被广泛使用的是双因子认证技术,利用该技术进行身份认证安全性高,方便易操作。该文主要研究分析实现双因子认证技术的HOTP算法,重点阐述了HOTP算法原理,实现过程,有助于双因子认证技术推广和在移动互联网上实现。
1 双因子认证原理
双因子认证(2FA)是指结合密码以及实物如信用卡、SMS手机、令牌或指纹等生物标志,两种条件对用户进行认证的方法。这种方法已经为企业所采用,特别是在远程访问时,但在其它领域应用还很有限。双因子认证的推广之所以受阻,主要在于其需要使用额外的工具并且为IT和技术支持人员带来负担。
为减轻必须携带专用双因子令牌设备所带来的阻力,可以利用现在无处不在的移动计算平台作为双因子客户平台。目前移动通信的迅速发展,是电子商务企业采用双因子认证的主要动力,电子支付行业团体,如PCI和APACS已经开始强制使用双因子认证。
双因子认证的核心就是HOTP算法,它会根据密钥和时间戳计算一个一次性密码,并且每隔一定时间会产生一个新的一次性密码,密钥只有服务器和用户知道,所以问题的关键就是用户的智能手机和服务器的时间必须同步。
双因子认证技术中采用动态口令认证是应用最广的一种身份识别方式,一般是长度为5~8的字符串,由数字、字母、特殊字符、控制字符等组成。用户名和口令的方法几十年来一直用于提供所属权和准安全的认证来对服务器提供一定程度的保护。当你每天访问自己的电子邮件服务器、服务器要采用用户名与动态口令对用户进行认证的,一般还要提供动态口令更改工具。
2 动态口令认证原理
身份认证实现的方式很多,目前最流行的是动态口令,动态口令牌是客户手持用来生成动态密码的终端,主流的是基于时间同步方式,每60秒变换一次动态口令,口令一次有效,它产生6位动态数字进行一次一密的方式认证。
动态口令又叫“一次性口令”,是由电子令牌等手持终端设备生成的,根据某种加密算法,产生的随某个不断变化的参数不停地、没有重复变化的一种口令,是为了解决传统静态的、固定的口令和密码存在的无法解决的缺陷,而设计的一种密码体制,以保护用户的关键数据资源。动态口令认证是一种摘要认证,单项散列函数在其中起着非常重要的作用,在登录过程中基于用户的密码通行短语加入不确定因素,使每次登录过程中传送的信息都不相同,以提高登录过程安全性。
动态口令认证方法和原理,当令牌或其他终端设备持有者将令牌中计算出来的某一时刻的口令输入计算机的登录窗口时,在计算机另一端的认证服务器软件会根据相同的算法和同样的要素计算出这一时刻对应于该令牌的认证口令,这个口令用来与令牌产生口令比对,进行身份认证,对比相同,则通过认证,对比不同,则不能通过认证。
但是由于基于时间同步方式的动态令牌存口在60秒的时间窗口,导致该密码在这60秒内存在风险,现在已有基于事件同步的,双向认证的动态口令牌。基于事件同步的动态口令,是以用户动作触发的同步原则,真正做到了一次一密,并且由于是双向认证,即:服务器验证客户端,并且客户端也需要验证服务器,从而达到了彻底杜绝木马网站的目的。
3 HOTP算法研究与分析
企业或公司在部署双因子身份验证时仍然受到范围和规模限制。尽管目前网络攻击水平越来越高,但是大多数网络应用程序仍然依靠简单的用户访问身份验证方案。因为缺乏硬件和软件技术供应商之间的互操作性是采用双因子身份验证技术一个限制因素。特别是,开放规范的缺失导致解决方案在硬件和软件组件技术困难,高成本解决方案。
一次性密码肯定是最简单、最受欢迎双因子身份验证来保护网络访问。大型企业、虚拟私人网络访问需要使用一次性密码令牌为远程用户身份验证。一次性密码使用上比公钥基础设施(PKI)或认证生物识别技术更灵活方便,因为一个第三方装置或客户端桌面软件不需要在用户机器上安装。
本文研究分析HOTP算法是一个产生动态口令的算法,HOTP算法可以产生一次性密码实现任何硬件制造商和软件开发商创建可互操作的身份验证设备和软件代理。该算法是基于事件的,这样它就可以嵌入大容量设备如Java智能卡,USB软件狗,GSM SIM卡。
HOTP是基于散列的消息认证码(HMAC)的一次密码算法,该算法可以运用于从远程虚拟专用网络访问,以及使用Wi-Fi网络登录交易的电子商务网站。下面详细介绍该算法内容,首先说明算法中使用的符号。
算法中一个字符串是一个二进制字符串,也就是由0和1组成的序列,如果s是一个字符串,则|s|表示其长度,如果n是一个数字,则|n|表示其绝对值,如果s是一个字符串,则s[i]表示第i位,因此s=s[0]s[1]…s[n-1],n=|s|表示s的长度。StTONum表示字符串s计算得到的数字,如StToNum(110)=6。
4 结束语
基于HOTP的双因子认证技术算法简单,实现容易,利用开源代码平台可以轻松实现。利用该算法产生的一次性密码,可应用于目前电子商务支付系统中的动态口令身份认证技术,大大提高交易的安全性,同时这中算法是基于事件的,解决了基于时间计算动态口令的客户端和服务器的同步问题,应用前景广泛。
参考文献:
[1] 陈红霞,李陶深.基于TEA算法的企业网动态口令安全系统研究[J].信息技术,2010(3):20-22.
[2] 李美满,易德成.基于ECC的增强型双因子身份认证系统的设计[J].湘潭大学自然科学学报,2009,31(2):144-147.
[3] 牟化建,李欣妍.基于ECC具有消息恢复功能的双向身
份认证签名[J].计算机安全,2013(8):12-14.
[4] 任慧琴.一种基于随机矩阵的双因子身份验证方法[J].电脑知识与技术,2009,5(16):4267-4268.
[5] Bruce Schneier.应用密码学协议、算法与C源程序[M]北京:机械工业出版社,2014.
[6] Mark Stamp.信息安全原理与实践[M].北京:清华大学出版社,2013.
[7] 申永军,徐华龙.一种双因子的双向身份认证系统[J].计算机应用研究,2008,25(9):2822-2825.
[8] 吴永英,邓路,肖道举,等.一种基于USB Key的双因子身份认证与密钥交换协议[J].计算机工程与科学,2007,29(5):56-59.