专利名称:一种生成双因数动态口令的方法
技术领域:
本发明涉及一种安全认证技术,具体涉及一种生成双因数动态口令的方法。
背景技术:
随着Web应用的不断发展,网络在为人们的生活提供方便的同时,也带来了巨大的信息安全隐患,网络信息资源的安全访问控制显得愈来愈重要。双因素动态密码身份认证作为网络应用系统的安全屏障,通过一次性密码验证通信双方的真实身份,可以达到防止非法用户假冒合法用户窃取数据资料的目的。动态密码是一种一次性密码,每个密码只能使用一次。动态密码可以随时间、次数和挑战信息而变化。动态密码具有良好的安全性,广泛适用于各类信息系统。动态口令是一种安全便捷的帐号防盗技术,可以有效保护交易和登录的认证安全,采用动态口令就无需定期密码,安全省心,这是这项技术的一个额外价值,对企事业内部应用尤其有用。动态令牌是一种密码设备,用来生成动态口令终端,动态口令技术可以有效防止盗号,免除频繁修改静态密码的烦恼。但是目前VPN等设备或一些应用软件上无法通过修改程序代码来增加动态密码输入框,只能输入静态密码或动态密码,而仅仅输入静态密码或动态密码无法完成实际意义上的双因素认证。就目前技术而言,若要实现实际意义上的双因素认证只有通过对设备进行整体改造,使其具有动态密码输入框和静态密码输入框,以此实现同时输入静态密码和动态密码进行双因素认证。但这就需要摒弃原有设备进行安装新的设备,其费用非常的高,不具备可行性。为此,如何在现有设备的基础上实现真正的双因素认证是本领域亟需解决的问题。
发明内容
本发明针对现有现有VPN等设备或一些应用软件上无法实现真正意义上的双因素认证,而提供一种生成双因数动态口令的方法,其通过将动态密码与静态密码结合后产生的密码进行认证,以此实现真正的双因素认证,保证系统和应用的安全。为了达到上述目的,本发明采用如下的技术方案一种生成双因数动态口令的方法,所述方法包括如下步骤(1)将静态密码输入令牌;(2)令牌根据种子密钥以及时间信息进行动态密码运算,得到一动态密码;(3)令牌再根据输入的静态密码和生成的动态密码信息进行加密运算得到一双因素动态密码。在本发明的一实施例中,所述双因素动态密码采用HOTP算法,Hash函数采用SHAl,动态密码的位数为6位。本发明得到的动态密码既与令牌自身相关,也与输入的静态密码相关,是一个包含了上述两个因素的密码。本发明特别适合用于由于设备或应用限制,只能输入一个密码的情况,通过本发明能够在现有设备的基础上实现真正意义上的双因素认证,避免大规模的更换设备造成的资源和经济浪费。同时,本发明的应用可以使得在不改变应用或设备的程序的前提下,通过引入可输入静态密码的动态令牌来实现双因素身份认证,做到了易用性和安全性的有效平衡,减少了信息安全隐患。
以下结合附图和具体实施方式
来进一步说明本发明。
图1为本发明的原理框图。图2为本发明的实施流程图。
具体实施例方式为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。本发明采用一种动态密码与静态密码混合的技术,实现只有一个输入框的情况下可以同时结合静态密码和动态密码认证。基于上述原理,本发明的实现过程如下(参见图1)首先,通过将静态密码输入令牌。接着,令牌根据种子密钥以及时间因素进行动态密码运算,得到一种动态密码。再者,令牌再根据输入的静态密码和生成的动态密码信息进行加密运算得到一双因素动态密码(及混合动态密码)。该动态密码既与令牌自身相关,也与输入的静态密码相关,是一个包含了上述两个因素的密码。本发明中采用的动态令牌算法完全符合OATH规范,通过该算法形成的产品特性如下1、种子长度为160it ;2、动态口令位数为6位;3、动态口令变化周期为1分钟;动态密码TOTP函数如下TOTP = HOTP (K, T) = Truncate (HMAC-SHA-1 (K, Τ))K为种子密钥,在令牌中,K的长度为160bit ;T =(当前 Unix 时间-T0) /X,T 的长度为 64bit ;T0为从1970年1月1日的Unix时间;X为密码变化周期,密码变化周期为60秒;动态密码计算过程如下1、首先计算 HS = HMAC-SHA-I (K, T) ;HS 的长度为 20byte ;
2、进行动态截短,Sbis = DT (HS),Sbits 的长度为 4byte ;截短函数DT的过程如下1)约定 HS = HS
· · · HS[19];2) OffsetBits 为 String[19]的低位 4bits ;3) Offset = StToNum(OffsetBits);这里 0 < = OffSet <=154)P = HS[OffSet]... HS
;5)得到 P 的低位 31bits。3、将 Sbits 转换为数字 Snum == StToNum(Sbits);4、得到动态密码D = Snum mod 10'Digit (Digit为动态密码位数)。本发明中采用的双因素动态密码算法完全符合OATH规范,本发明的实施例中具体算法实现采用 0CRA-1 =HOTP-SHA 1-6 :QA64_T1M。各个算法说明选项的基本含义为0CRA-1 采用 OCRA 算法版本 1 ;H0TP-SHA1-6 采用HOTP算法,散列算法采用SHAl,产生的应答码为6位;TlM 时间参与运算,参与运算的时间单位为分钟。双因素动态密码的具体算法如下OCRA = CryptoFunction (D, DataInput)D为上述方案产生的动态密码;DataInput 为静态密码。CryptoFunction是双因素动态密码生成的具体算法,缺省的算法为HOTP-SHA 1_6。动态密码采用HOTP算法,Hash函数采用SHA1,动态密码的位数为6位。即以 DataInput为静态密码,进行HMAC-SHA1运算,并采用HOTP的算法进行动态截短并转换为6 位动态密码。具体的HOTP的运算过程,包括动态截短和转换过程如上述的时间型动态密码算法,此处不加以赘述。基于上述方案,本发明的具体实施如下(参见图2)(1)用户进入VPN等设备或一些应用软件的客户端的登录界面。(2)通过通过PIN码启动动态令牌,并在动态令牌上输入静态密码,按下确认键。(3)动态令牌根据输入的静态密码进行加密运算得到混合动态密码。(4)在登录界面上输入令牌上产生的混合动态密码,为一种双因素动态密码。(5)用户输入令牌计算得到的混合动态密码,并由客户端传到认证服务器上进行认证。(6)认证服务器返回混合动态密码认证结果。本发明实施的核心为在第三步在动态令牌上得到混合动态密码,通过该混合动态密码即可实现输入一个密码就能够在现有设备的基础上实现真正意义上的双因素认证。以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
权利要求
1.一种生成双因数动态口令的方法,其特征在于,所述方法包括如下步骤(1)将静态密码输入令牌;(2)令牌根据种子密钥以及时间信息进行动态密码运算,得到一动态密码;(3)令牌再根据输入的静态密码和生成的动态密码信息进行加密运算得到一双因素动态密码。
2.根据权利要求1所述的一种生成双因数动态口令的方法,其特征在于,所述双因素动态密码采用HOTP算法,Hash函数采用SHA1,动态密码的位数为6位。
全文摘要
本发明公开了一种生成双因数动态口令的方法,其通过将静态密码输入令牌,令牌根据静态密码、种子密钥以及时间因素进行动态密码运算,得到一种双因素动态密码。本发明得到的动态密码既与令牌自身相关,也与输入的静态密码相关,是一个包含了上述两个因素的密码。
文档编号H04L9/32GK102307093SQ20111010647
公开日2012年1月4日 申请日期2011年4月27日 优先权日2011年4月27日
发明者杨波, 胡永刚, 高蒙雄 申请人:上海动联信息技术有限公司