动态密码生成和验证的方法

文档序号:7589573阅读:1014来源:国知局
专利名称:动态密码生成和验证的方法
技术领域
本发明涉及一种密码生成和验证的方法,特别是涉及动态密码生成和验证的方法。
背景技术
动态密码的概念在20世纪80年代由美国数学家Leslie Lamport最先提出。著名的RSA SecurID身份验证系统则是这方面的商业化代表产品。动态密码的最大优势就在于密码不重复使用,每次使用的密码都只是一次有效,密码可以根据某种算法预先设定,也可以完全随机生成(需要一定的同步机制)。由于密码仅一次可用的特性,即使攻击者通过网络监听等手段得到了用户的若干密码也无法登录系统。所以动态密码系统比传统的密码系统有了很大的改进,可以更好的保护计算机系统的安全。
专利号为02100841.8的申请文件公开了一种动态密码生成系统,该系统包括GSM网络、短信息处理平台、动态密码生成服务器、商家身份验证处理系统和系统维护管理系统;彼此间通过GSM网关、短信息处理平台进行数据传输;所述动态密码生成服务器可随机生成用于身份验证的一次性动态密码该密码生成服务器包括接收装置、密码生成装置和传输装置;所述接收装置接收用户用于申请动态密码的手机号码;所述密码生成装置对用户手机号码进行身份判断、验证,自动随机产生一组数据作为一次性动态密码;所述传输装置将密码生成装置产生的一次性动态密码通过GSM网关、短信息处理平台向用户手机和身份验证系统发送该动态密码。
由上述现有技术的方案可以看出,用户要想得到动态密码,必须先向服务端申请,而服务端验证用户身份后生成动态密码,并将此密码通过GSM网关、短信息处理平台发送给用户后,用户才可以使用。如果移动电话网络出现故障时,用户则不能收到该密码,而且在通信过程中,仍然存在密码被窃取的安全隐患。
本发明的目的在于克服上述用户必须通过GSM网关、短信息处理平台才能够得到动态密码的弊端,而提供一种动态密码生成的方法,该方法能够实现客户端利用已有的移动设备生成动态密码。

发明内容为了实现上述目的,本发明提供的动态密码生成和验证的方法采用以下技术方案该方法应用于包括服务端及客户端的动态密码生成和验证系统。该方法的特征在于包括以下步骤A、客户端使用移动设备生成随机的动态密码,并输入此密码登录服务端;B、服务端得到客户端输入的密码后,在自己系统内计算客户端的动态密码;C、服务端判断客户端输入的密码是否符合自己计算的密码,若是,则允许该用户登录;否则,用户登录失败。
该方法的特征还在于,在所述步骤C中还包括以下步骤C1、服务端首先判断用户输入的密码与自己第一次计算的密码是否一致,若一致,则允许用户登录;否则,服务端计算包括一定时间误差范围内的密码。
该方法的特征在于,在所述计算一定范围内的密码的过程之后还包括以下步骤C2、服务端判断用户输入的密码是否在自己第二次计算的密码范围内,若是,则允许该用户登录,否则,服务端计算包括一定时间误差和时间漂移值范围内的密码。
该方法的特征在于,在所述步骤A之前还包括随机生成密钥的过程。
该方法的特征还在于,在步骤A中所述客户端随机生成动态密码的过程具体包括A1)、取密钥和系统时间作为散列函数的输入;A2)、计算所得的散列函数的输出为一定长度的随机字符串;A3)、对随机字符串进行编码,取其结果的一部分作为动态密码。
该方法的特征还在于,在步骤B中所述服务端计算客户端的动态密码的过程具体包括B1)、读取密钥和系统时间;B2)、取密钥和系统时间作为散列函数的输入;B3)、计算所得的散列函数的输出为一定长度的随机字符串;B4)、对随机字符串进行编码,取其结果的一部分作为动态密码。
该方法的特征还在于,所述服务端计算包括一定时间误差范围内的密码的过程具体包括C11)、读取密钥和包含时间误差的数个时间值;C12)、取密钥和上述数个时间值作为散列函数的输入;C13)、计算所得的数个散列函数的输出为一定长度的随机字符串;C14)、对随机字符串进行编码,取其结果的一部分作为动态密码。
该方法的特征还在于,所述服务端计算包括一定时间误差和时间漂移值范围内的密码的过程具体包括C21)、读取密钥、包含时间漂移值和时间误差的数个时间值;C22)、取密钥、包含时间漂移值和时间误差的数个时间值作为散列函数的输入;C23)、计算,得数个散列函数的输出为一定长度的随机字符串;C24)、对随机字符串进行编码,取其结果的一部分作为动态密码。
该方法的特征还在于,所述随机生成密钥的过程具体包括客户端随机设定密钥,并将该密钥添加到服务端。
该方法的特征还在于,所述随机生成密钥的过程具体包括服务端随机设定密钥,并将该密钥添加到客户端。
本发明由于客户端能够自己生成动态密码,并输入此密码登录服务端进行验证,所以该方法能够实现客户端利用已有的移动设备生成动态密码,而且动态密码不需要通过移动通信网络(如GSM、CDMA等)、短信息处理平台发送,避免了密码被窃取的安全隐患。
附图的简要说明


图1是按照本发明的动态密码生成和验证过程的流程图。
具体实施方式本发明公开一种动态密码生成和验证的方法,应用于包括服务端及客户端的动态密码生成和验证系统,该动态密码系统的安装需要两步。第一步为系统服务端安装验证模块,随后在服务端设置客户端的个人目录,将每个客户端的密钥、时间漂移值等数据存储于该客户端的个人目录之下,当客户端达到一定数量时,需要采用一套独立的数据库进行存储和管理。第二步是最终客户端根据其个人移动设备的类型和具体型号,选择合适的移动客户端模块下载到其个人移动设备。下载的方式可以由客户端根据需要自行决定,例如可以使用红外线、蓝牙或数据线的方式,也可以采用移动电话网络的GPRS等方式。客户端进行一些初始化的设置之后,就可以开始使用了。例如,一用户希望在一台FTP服务器中使用MOTP(MobileOne-Time Passwords移动式动态密码),假定用户使用的是Linux系统,其自己的个人移动设备(如手机、PDA等)支持Java技术。第一步,该客户端需要在服务端安装好MOTP的基于PAM(行业标准验证框架Pluggable Authentication Modules)的验证模块(如果是Windows系统,则安装针对具体应用程序的插件),然后用户需要在数据库中添加该用户的密钥和时间漂移值(默认值为0),例如,用户名为john,设定的密钥为toF+FpEHbH8DM91X。第二步,用户需要下载移动客户端模块到自己的个人移动设备里,例如其使用的是Nokia3100,则下载适用于Nokia3100的移动客户端。然后运行这个程序,在“密钥管理”菜单中添加这个密钥toF+FpEHbH8DM91X。至此,安装工作就完成了。
在使用中,用户使用任一FTP的客户端软件连接到这台FTP服务端,在系统提示输入密码时,用户运行自己手机上的移动客户端程序,在“密码生成”菜单中得到了一个密码,例如8beo h3J7,用户输入这个密码,顺利的进入了系统。由于密码是动态变化的,通常将其设定为60秒变化一次,于是60秒后,客户端再次登录时,用户的个人移动设备上就会显示出一个新的密码。
本发明所述方法的具体实施过程将参照图1进行描述。首先执行步骤S101,即生成密钥。密钥的长度至少为128位,也可以根据具体应用的需要进行设置。密钥的生成是完全随机的,密钥的设定可以由客户端输入,也可以在客户端使用GPRS下载之前由服务端完成设定再传送给客户端。密钥的管理可以由应用程序完成,也可以使用一个独立的数据库,服务器端验证系统从这个数据库里检索和提取客户端的密钥。
接着执行步骤S102,即客户端使用移动设备生成随机的动态密码,并输入此密码登录服务端;也就是客户端首先使用一台计算设备,个人台式机或者笔记本,启动上述系统安装的某个应用程序,例如某个在线游戏的客户端程序,然后运行其个人移动设备上的移动客户端程序,生成并显示出一个动态密码,密码的具体长度可以根据具体应用的安全等级需要而设定,对于一般的应用程序,6~8个字符即可。移动客户端采用如下密码计算规则读取密钥(key)和系统时间(time),然后将密钥和系统时间作为散列函数(例如SHA256)的输入值进行计算,即p=h(key,time)。散列函数的输出p为一定长度(SHA256的输出为256bit)的随机字符串,然后使用一定的编码规则(例如Base64)对这个随机字符串进行编码,最后取其结果的一部分(例如64bit)作为动态密码使用。按照上述生成动态密码后,用户输入客户端用户名和这个动态密码登录服务端。
其次,执行步骤S103,即服务端得到客户端输入的密码后,在自己系统内计算客户端的动态密码;服务端采用如下密码计算规则读取密钥(key)和系统时间(time),然后将密钥和系统时间作为散列函数(例如SHA256)的输入值进行计算,即p=h(key,time)。散列函数的输出p为一定长度(SHA256的输出为256bit)的随机字符串,然后使用一定的编码规则(例如Base64)对这个随机字符串进行编码,最后取其结果的一部分(例如64bit)作为动态密码使用。
接着执行步骤S104,即服务端判断客户端输入的密码与自己计算的密码是否一致,若一致,则表明用户为合法用户,第一轮验证通过,转入执行步骤S110,即允许客户端登录。客户端的时间漂移值为0,记录到数据库,登录成功。
如果不一致,则进行第二轮验证,即执行步骤S105,即计算包含一定时间误差的密码。以5分钟为例,散列函数的第一项输入仍为密钥(key),第二项输入则依次为time+delta,其中delta取-5~+5,这里的time代表系统时间,delta为时间误差变化量。这样,服务端就依次计算出了10个不同的密码。接着执行步骤S106,即判断客户端输入的密码是否在自己计算的密码范围内,判断的具体方案为服务端逐一比较客户端的密码是否与上述计算出的10个密码中的某一个相同,如果有任何一个符合,比如当delta=3时符合了,则表明用户为合法用户,第二轮验证通过,转入执行步骤S110,即允许该用户登录,delta作为更新的时间漂移值被记录到数据库,登录成功。
如果均不一致,则进行第三轮验证,即执行步骤S107,即服务端计算包含时间漂移值和一定时间误差的密码。仍以5分钟为例,但与第二次验证不同的是,第二项输入依次为time+drift+delta,其中delta取-5~+5,这里的time代表系统时间,drift代表从数据库读取的时间漂移值,delta为时间误差变化量。这样,也得到了10个不同的密码。接着执行步骤S108,即判断客户端输入的密码是否在自己计算的密码范围内,判断的具体方案为服务器端逐一比较,如果有任何一个符合所计算的10个密码中的一个,比如当delta=3符合时,则第三轮验证通过,转入执行步骤S110,即允许该用户登录;drift+delta作为更新的时间漂移值被记录到数据库。
否则,执行步骤S109,即服务器端认定用户为非法用户,拒绝客户端登录,客户端登录失败。服务端提醒客户端登录失败的可能原因为时间漂移误差过大,客户端可以尝试校准个人移动设备上的时钟,然后重新尝试登录。
总之,本发明与现行的密码系统相比,具有安全性高,易于升级维护和最终用户零花费等优点。此方法可以广泛应用于各种基于互联网的应用行业。
以上为本发明的最佳实施方式,依据本发明公开的内容,本领域的普通技术人员能够显而易见的想到一些雷同、替代的方案,均应落入本发明保护的范围。
权利要求
1.一种动态密码生成和验证的方法,应用于包括服务端及客户端的动态密码生成和验证系统,其特征在于,包括以下步骤A、客户端使用移动设备生成随机的动态密码,并输入此密码登录服务端;B、服务端得到客户端输入的密码后,在自己系统内计算客户端的动态密码;C、服务端判断客户端输入的密码是否符合自己计算的密码,若是,则允许该用户登录;否则,用户登录失败。
2.按照权利要求1所述的方法,其特征在于,在所述步骤C中还包括以下步骤C1、服务端首先判断用户输入的密码与自己第一次计算的密码是否一致,若一致,则允许用户登录;否则,服务端计算包括一定时间误差范围内的密码。
3.按照权利要求2所述的方法,其特征在于,在所述计算一定范围内的密码的过程之后还包括以下步骤C2、服务端判断用户输入的密码是否在自己第二次计算的密码范围内,若是,则允许该用户登录,否则,服务端计算包括一定时间误差和时间漂移值范围内的密码。
4.按照权利要求3所述的方法,其特征在于,在所述步骤A之前还包括随机生成密钥的过程。
5.按照权利要求4所述的方法,其特征在于,在步骤A中所述客户端移动设备生成动态密码的过程具体包括A1)、取密钥和系统时间作为散列函数的输入;A2)、计算,所得的散列函数的输出为一定长度的随机字符串;A3)、对随机字符串进行编码,取其结果的一部分作为动态密码。
6.按照权利要求5所述的方法,其特征在于,在步骤B中所述服务端计算客户端的动态密码的过程具体包括B1)、读取密钥和系统时间;B2)、取密钥和系统时间作为散列函数的输入;B3)、计算,所得的散列函数的输出为一定长度的随机字符串;B4)、对随机字符串进行编码,取其结果的一部分作为动态密码。
7.按照权利要求6所述的方法,其特征在于,所述服务端计算包括一定时间误差范围内的密码的过程具体包括C11)、读取密钥和包含时间误差的数个时间值;C12)、取密钥和上述数个时间值作为散列函数的输入;C13)、计算,所得的数个散列函数的输出为一定长度的随机字符串;C14)、对随机字符串进行编码,取其结果的一部分作为动态密码。
8.按照权利要求7所述的方法,其特征在于,所述服务端计算包括一定时间误差和时间漂移值范围内的密码的过程具体包括C21)、读取密钥、包含时间漂移值和时间误差的数个时间值;C22)、取密钥、包含时间漂移值和时间误差的数个时间值作为散列函数的输入;C23)、计算,所得数个散列函数的输出为一定长度的随机字符串;C24)、对随机字符串进行编码,取其结果的一部分作为动态密码。
9.按照权利要求4所述的方法,其特征在于,所述随机生成密钥的过程具体包括客户端随机设定密钥,并将该密钥添加到服务端。
10.按照权利要求4所述的方法,其特征在于,所述随机生成密钥的过程具体包括服务端随机设定密钥,并将该密钥添加到客户端。
全文摘要
本发明公开了一种动态密码生成和验证的方法,应用于包括服务端及客户端的动态密码生成和验证系统,其特征在于,包括以下步骤客户端使用移动设备生成随机的动态密码,并输入此密码登录服务端;服务端得到客户端输入的密码后,在自己系统内计算客户端的动态密码;服务端判断客户端输入的密码是否符合自己计算的密码,若是,则允许该用户登录;否则,用户登录失败。本发明与现行的密码系统相比,具有安全性高,易于升级维护和最终用户零花费等优点。此方法可以广泛应用于各种基于互联网的应用行业。
文档编号H04L9/14GK1731722SQ20041000991
公开日2006年2月8日 申请日期2004年11月30日 优先权日2004年11月30日
发明者李岳 申请人:李岳
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1