著录项信息
专利名称 | 一种基于短信的身份验证方法、系统和装置 |
申请号 | CN201110264451.2 | 申请日期 | 2011-09-07 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2011-12-28 | 公开/公告号 | CN102300182A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04W4/14 | IPC分类号 | H;0;4;W;4;/;1;4;;;H;0;4;L;9;/;3;2查看分类表>
|
申请人 | 飞天诚信科技股份有限公司 | 申请人地址 | 北京市海淀区学清路9号汇智大厦B座17层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 飞天诚信科技股份有限公司 | 当前权利人 | 飞天诚信科技股份有限公司 |
发明人 | 陆舟;于华章 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种基于短信的身份验证方法、系统和装置,涉及网络安全技术领域。所述身份验证系统包括服务器、客户端和手机,所述身份验证装置即所述服务器包括收发模块、存储模块、计数模块、判断模块、生成模块、验证模块、控制模块和计算模块。所述基于短信的身份验证方法由服务器生成验证码并记录生成验证码的时间,通过外带方式发送生成的验证码至用户手机,再由用户输入客户端,由客户端发送给服务器进行验证,可在一定程度上阻止中间人攻击,并且服务器产生的验证码具备时效性,过期作废。
一种基于短信的身份验证方法、系统和装置\n技术领域\n[0001] 本发明涉及网络安全技术领域,特别涉及一种基于短信的身份验证方法、系统和装置。\n背景技术\n[0002] 目前,用户通过客户端使用服务器端提供的有权限要求的软件或应用程序时,服务器通常通过客户端要求用户输入相应的密码和账号信息,以防止非法用户的进入,但是处于黑客软件盛行的网络环境下,常常会出现用户密码被盗取的现象,因此,严重侵害了合法用户使用服务器端提供的有权限要求的软件或应用程序的权益。\n[0003] 现有技术中常用的身份验证技术有:静态密码认证技术,其用用户的账号名和密码来认证和识别用户的合法性,其主要特点是用一个固定的密码去激活一个特定的账号,但由于密码和账号作为软性标识,静态不变,且在网络中传输,存在许多弊端和安全漏洞,针对它的破解技术在不断发展,产生了许多可以盗取账号密码的工具和方法,例如采取窃取、破译、偷窥、骗取等,此外对用户创建、记忆、修改口令的要求较高,口令设定太简单容易破解,设得太复杂,就容易被遗忘。\n发明内容\n[0004] 针对上述现有技术的不足,本发明提供了一种基于短信的身份验证方法、系统和装置,身份验证信息传送保密度高,也无需配备专用认证设备。\n[0005] 本发明采取的技术方案是,一种基于短信的身份验证装置包括:\n[0006] 第一收发模块,用于接收客户端发送来的用户信息、登录请求以及验证码并传输给验证模块,用于向客户端返回相应应答结果;还用于接收生成模块传输来的验证码并向与当前登录请求绑定的手机号发送包含验证码的短信;\n[0007] 存储模块,用于存储用户信息、手机号、起始参考时间、校验码生成时间、认证基数、时间戳、存活周期、用户密钥;\n[0008] 计数模块,用于对认证基数进行计数,并将计数结果即当前认证基数传输给存储模块,用于对时间戳清零并将清零结果传输给存储模块;\n[0009] 判断模块,用于判断当前时间戳是否为零,还用于判断当前时间戳是否超出存活周期;\n[0010] 生成模块,用于获取存储模块中的当前认证基数和用户密钥并生成验证码或校验码,用于将生成的验证码传输给第一收发模块,将生成的校验码传输给验证模块;\n[0011] 验证模块,用于接收第一收发模块传输来的验证码和生成模块传输来的校验码,并比对两者是否一致,并将比对结果传输给控制模块;还用于验证第一收发模块传输来的用户信息是否与存储模块中存储的用户信息一致,并将验证结果传输给控制模块;\n[0012] 控制模块,用于接收验证模块传输来的比对结果和验证结果,并根据比对结果向第一收发模块发送认证成功或失败的返回码,根据验证结果控制第一收发模块向客户端发送是否通过临时验证的应答;\n[0013] 计算模块,用于计算当前时间与起始参考时间的差值,用于根据差值和存活周期计算得到认证基数预增加的步长。\n[0014] 所述存储模块还用于存储验证码,当存储模块接收到生成模块发送来的验证码则用所述接收到的验证码替换当前存储的验证码;所述生成模块还用于将生成的验证码传输给存储模块;所述验证模块还用于直接从存储模块获取验证码,并比对所述获取的验证码与接收到的第一收发模块传输来的验证码是否一致,并将比对结果传输给控制模块。\n[0015] 一种基于短信的身份验证系统包括身份验证装置、客户端和手机,[0016] 所述身份验证装置,用于接收客户端传输来的用户登录请求和用户信息,用于产生验证码发送到用户手机,还用于接收客户端传输来的验证码,验证接收到的验证码是否正确并将验证结果返回给客户端;\n[0017] 所述客户端,用于接收用户输入的登录请求并将用户信息和所述登录请求发送给所述身份验证装置,用于接收用户输入的验证码并发送给所述身份验证装置以及接收所述身份验证装置返回的验证结果;\n[0018] 所述手机,用于接收所述身份验证装置发送来的验证码并显示给用户。\n[0019] 所述客户端包括:\n[0020] 第二收发模块,用于接收用户输入的验证码及登录请求并发送给身份验证装置,用于接收所述身份验证装置返回的验证结果及是否通过临时验证的应答;\n[0021] 液晶显示模块:用于显示所述第二收发模块接收到的所述身份验证装置返回的验证结果及是否通过临时验证的应答。\n[0022] 所述手机包括:\n[0023] 第三收发模块,用于接收所述身份验证装置发送来的短信并传输给短信存储模块;\n[0024] 短信存储模块,用于存储所述第三收发模块传输来的短信;\n[0025] 显示模块,用于从所述短信存储模块获取短信并显示。\n[0026] 一种基于短信的身份验证方法,包括服务器生成验证码的过程和所述服务器验证接收到的验证码的过程;\n[0027] 所述服务器生成验证码的过程包括以下步骤,\n[0028] 步骤S1:服务器接收用户登录请求;\n[0029] 步骤S2:所述服务器判断当前时间戳是否为无效,是则执行步骤S3,否则执行步骤S4;\n[0030] 步骤S3:所述服务器生成验证码并更新当前时间戳,然后执行步骤S5;\n[0031] 步骤S4:所述服务器判断当前时间是否超出存活周期,是则生成验证码然后执行下一步,否则生成验证码并更新当前时间戳然后执行下一步;具体为若当前时间的时间值大于当前时间戳加存活周期得到的时间值,则当前时间超出存活周期。\n[0032] 步骤S5:所述服务器发送所述验证码到与所述用户登录请求绑定的手机号;\n[0033] 所述服务器验证接收到的验证码的过程包括以下步骤,\n[0034] 步骤S6:所述服务器接收到验证码和第二用户信息,判断当前时间是否超出存活周期,是则认证失败,否则执行下一步;\n[0035] 步骤S7:所述服务器生成校验码,将所述校验码与接收到的所述验证码进行比对,若一致则执行下一步,否则认证失败;\n[0036] 步骤S8:服务器将当前时间戳置为无效;\n[0037] 步骤S9:认证成功。\n[0038] 所述步骤S1具体为:服务器接收到客户端发送来的用户登录请求,从中提取第一用户信息,在数据库中检索是否存在与所述第一用户信息相符的用户信息,若存在则通过临时验证,所述服务器从数据库中提取与所述第一用户信息绑定的手机号,若不存在则认证失败。所述步骤S6还包括所述服务器接收到所述验证码和所述第二用户信息,并判断所述第二用户信息是否与存储的所述第一用户信息一致,若一致则判断当前时间是否超出存活周期,否则认证失败。所述步骤S2之前包括:所述服务器从数据库中获取当前认证基数和当前时间戳;步骤S3所述服务器生成验证码并更新当前时间戳具体为所述服务器根据第一用户信息获取密钥,采用一次口令生成算法对所述密钥和当前认证基数进行计算生成验证码,并将当前时间戳更新为生成验证码的时间;步骤S4中所述若当前时间未超出存活周期则生成验证码具体为所述服务器根据第一用户信息获取密钥,采用一次口令生成算法对所述密钥和当前认证基数进行计算生成验证码;步骤S4中所述若当前时间超出存活周期则生成验证码并更新当前时间戳具体为:所述服务器将当前认证基数按预设规则计算并用计算结果更新当前认证基数;所述服务器根据第一用户信息获取密钥,所述服务器采用一次口令生成算法对所述密钥和当前认证基数进行计算生成验证码,将当前时间戳更新为生成所述验证码的时间。步骤S7所述服务器生成校验码具体为所述服务器获取当前认证基数,根据第二用户信息获取密钥,采用一次口令生成算法对所述密钥和当前认证基数进行计算生成校验码;\n[0039] 所述步骤S3或步骤S8还包括:服务器将当前认证基数按预设规则进行计算并记录计算结果,用计算结果更新当前认证基数。\n[0040] 所述将当前认证基数按预设规则计算具体为将当前认证基数递增或递减预设步长。\n[0041] 步骤S6所述判断当前时间是否超出存活周期具体为判断当前时间的时间值是否大于当前时间戳加存活周期得到的时间值。\n[0042] 步骤S8所述当前时间戳置为无效优选设置将当前时间戳清零。\n[0043] 所述步骤S2之前可以包括:所述服务器从数据库中获取起始参考时间、校验码生成时间、存活周期、当前认证基数和当前时间戳,从内部时钟源读取当前时间,所述服务器根据起始参考时间、当前时间、存活周期计算得到第一步长;步骤S3所述服务器生成验证码并更新当前时间戳包括:\n[0044] 步骤205:判断当前时间是否超出存活周期,是则执行步骤205-1,否则执行步骤\n205-1′;具体为判断当前时间是否超出校验码生成时间加存活周期得到的时间值。\n[0045] 步骤205-1′:将当前认证基数增加第二步长后得到的结果替换数据库中存储的当前认证基数,然后执行步骤205-1;\n[0046] 步骤205-1:根据当前认证基数和第一步长计算得到第一计数值,然后执行步骤\n205-2;\n[0047] 步骤205-2:根据所述第一计数值生成验证码,将当前时间戳更新为生成验证码的时间;\n[0048] 步骤S4中所述若当前时间未超出存活周期则生成验证码具体为:\n[0049] 所述服务器根据当前认证基数和第一步长计算得到第二计数值;\n[0050] 所述服务器根据第一用户信息获取密钥,采用一次口令生成算法对所述密钥和所述第二计数值进行计算生成验证码;\n[0051] 步骤S4中所述若当前时间超出存活周期则生成验证码并更新当前时间戳具体为:\n[0052] 所述服务器根据当前认证基数和第一步长计算得到第二计数值;\n[0053] 所述服务器根据第一用户信息获取密钥,采用一次口令生成算法对所述密钥和所述第二计数值进行计算生成验证码,所述服务器将当前时间戳更新为生成验证码的时间;\n[0054] 步骤S7所述服务器生成校验码具体为:\n[0055] 根据起始参考时间、当前时间、存活周期计算得到第三步长;\n[0056] 服务器获取当前认证基数,根据当前认证基数和第三步长计算得到第三计数值;\n[0057] 所述服务器根据第二用户信息获取密钥,采用一次口令生成算法对所述密钥和所述第三计数值进行计算生成校验码;\n[0058] 步骤S8之前包括记录校验码生成时间。\n[0059] 所述第一步长和第三步长的计算方法为将当前时间转换为一个相对值,所述相对值是指当前时间与起始参考时间的差值,用所述相对值除以存活周期并取整数部分。\n[0060] 所述步骤S3可用步骤S3’替换,所述步骤S4可用步骤S4’替换,所述步骤S7可用步骤S7’替换,且\n[0061] 所述步骤S3’为,所述服务器生成验证码并用所述生成的验证码更新数据库中存储的验证码,将当前时间戳更新为生成验证码的时间;\n[0062] 所述步骤S4’为,所述服务器判断当前时间是否超出存活周期,然后执行下一步;\n[0063] 若当前时间未超出存活周期则获取数据库中存储的验证码,若当前时间超出存活周期则所述服务器生成验证码并用所述生成的验证码更新数据库中存储的验证码,将当前时间戳更新为生成验证码的时间;\n[0064] 所述步骤S7’为,所述服务器获取数据库中存储的验证码,所述服务器将接收到的验证码和获取的所述数据库中存储的验证码进行比对,若比对结果一致则执行下一步,否则认证失败。\n[0065] 本发明具有如下有益效果:\n[0066] 1.验证码由服务器产生,通过外带方式发送至用户,可在一定程度上阻止中间人攻击;\n[0067] 2.验证码具备时效性,过期作废。\n附图说明\n[0068] 图1是实施例1提供的一种基于短信的身份验证系统示意图;\n[0069] 图2是实施例2提供的一种基于短信的身份验证装置组成框图;\n[0070] 图3是实施例3提供的一种基于短信的身份验证方法流程图;\n[0071] 图4是实施例4提供的另一种基于短信的身份验证方法流程图;\n[0072] 图5是实施例4提供的又一种基于短信的身份验证方法流程图。\n具体实施方式\n[0073] 下面结合附图和具体实施例对本发明作进一步说明,但不作为对本发明的限定。\n[0074] 实施例1\n[0075] 本实施例1提供了一种基于短信的身份验证系统,包括服务器10、客户端20、手机\n30,所述服务器10相当于一种身份验证装置,其中,\n[0076] 所述服务器10用于接收客户端20传输来的用户登录请求和用户信息,用于产生验证码发送到用户手机30,还用于接收客户端20传输来的验证码,验证接收到的验证码是否正确并将验证结果返回给客户端20;\n[0077] 所述客户端20用于接收用户输入的登录请求并将用户信息和登录请求发送给服务器10,用于接收用户输入的验证码并发送给服务器10以及接收服务器10返回的验证结果;\n[0078] 所述手机30用于接收服务器10发送来的验证码并显示给用户。\n[0079] 所述服务器10包括第一收发模块101、存储模块102、计数模块103、判断模块\n104、生成模块105、验证模块106、控制模块107和计算模块108;\n[0080] 第一收发模块101,用于收发客户端20与服务器10之间传输的数据,接收生成模块105传输来的验证码并向绑定的手机号发送包含验证码的短信;\n[0081] 本实施例中,第一收发模块101具体用于接收客户端20发送来的用户信息、登录请求以及验证码并传输给验证模块106,用于向客户端20返回相应应答结果。\n[0082] 存储模块102,用于存储用户信息、手机号、起始参考时间、校验码生成时间、认证基数、时间戳、存活周期、用户密钥;\n[0083] 所述存储模块102还可以用于存储验证码,当服务器接收到登录请求时,若当前时间戳不为零且当前时间未超出存活周期则所述服务器直接从存储模块102获取所述验证码发送给当前用户绑定的手机号;相应地当服务器接收到验证码时,直接从存储模块\n102获取当前存储的验证码与所述接收到的验证码进行比对得出验证结果。\n[0084] 计数模块103,用于对认证基数进行计数,并将计数结果即当前认证基数传输给存储模块102,用于对时间戳清零并将清零结果传输给存储模块102;\n[0085] 判断模块104,用于判断当前时间戳是否为零,判断当前时间是否超出存活周期;\n[0086] 生成模块105,用于获取存储模块102中的当前认证基数和用户密钥,并根据所述当前认证基数和用户密钥生成验证码或校验码,并将生成的验证码传输给第一收发模块\n101,将生成的校验码传输给验证模块106;\n[0087] 所述生成模块105还用于将生成的验证码传输给存储模块102。\n[0088] 验证模块106,用于接收第一收发模块101传输来的验证码和生成模块105传输来的校验码,并比对两者是否一致,并将比对结果传输给控制模块107;用于验证第一收发模块101传输来的用户信息是否与存储模块102中存储的用户信息一致,并将验证结果传输给控制模块107;\n[0089] 所述验证模块106还可以用于比对第一收发模块101传输来的验证码和从存储模块102中获取的验证码是否一致,并将比对结果传输给控制模块107;\n[0090] 控制模块107,用于接收验证模块106传输来的比对结果和验证结果,并根据比对结果向第一收发模块101发送认证成功或失败的返回码,根据验证结果控制第一收发模块\n101向客户端20发送是否通过临时验证的应答;\n[0091] 计算模块108:用于计算当前时间与起始参考时间的差值,用于根据差值和存活周期计算得到认证基数预增加的步长;\n[0092] 所述计数模块103对认证基数进行计数时调用计算模块108计算得到的步长。\n[0093] 所述客户端20包括第二收发模块201和液晶显示模块202,其中,\n[0094] 第二收发模块201,用于接收用户输入的验证码及登录请求并发送给服务器10,用于接收服务器10返回的验证结果及是否通过临时验证的应答;\n[0095] 液晶显示模块202:用于显示第二收发模块201接收到的服务器10返回的验证结果及是否通过临时验证的应答;\n[0096] 所述手机30包括第三收发模块301、短信存储模块302和显示模块303,其中[0097] 第三收发模块301,用于接收服务器10发送来的短信并传输给短信存储模块\n302;\n[0098] 短信存储模块302,用于存储第三收发模块301传输来的短信;\n[0099] 显示模块303,用于从短信存储模块302获取短信并显示。\n[0100] 实施例2\n[0101] 如图2所示,本发明提出了一种基于短信的身份验证装置,所述装置包括第一收发模块1001、存储模块1002、计数模块1003、判断模块1004、生成模块1005、验证模块\n1006、控制模块1007和计算模块1008;\n[0102] 第一收发模块1001,用于收发客户端与服务器之间传输的数据,用于接收生成模块1005传输来的验证码并向与当前登录请求绑定的手机号发送包含验证码的短信;\n[0103] 本实施例中,第一收发模块1001具体用于接收客户端发送来的用户信息、登录请求以及验证码并传输给验证模块1006,用于向客户端返回相应应答结果。\n[0104] 存储模块1002,用于存储用户信息、手机号、起始参考时间、校验码生成时间、认证基数、时间戳、存活周期、用户密钥;\n[0105] 所述存储模块1002还可以用于存储验证码,当存储模块1002接收到生成模块\n1005发送来的验证码时则用新接收到的验证码替换当前存储的验证码。\n[0106] 计数模块1003,用于对认证基数进行计数,并将计数结果即当前认证基数传输给存储模块1002存储,用于对时间戳清零并将清零结果传输给存储模块1002;\n[0107] 本实施例中,具体为每完成一次认证,认证基数按照预设步长递增或递减;例如,优选设置为认证基数的初始值为0,完成一次认证,认证基数加1。每完成一次认证,当前时间戳清零并记录在存储模块1002中。\n[0108] 判断模块1004,用于判断当前时间戳是否为零,用于判断当前时间戳是否超出存活周期;\n[0109] 生成模块1005,用于获取存储模块1002中的当前认证基数和用户密钥并生成验证码或校验码,用于将生成的验证码传输给第一收发模块1001,将生成的校验码传输给验证模块1006;\n[0110] 所述生成模块1005还用于将生成的验证码传输给存储模块1002存储。\n[0111] 验证模块1006,用于接收第一收发模块1001传输来的验证码和生成模块1005传输来的校验码,并比对两者是否一致,并将比对结果传输给控制模块1007;用于验证第一收发模块1001传输来的用户信息是否与存储模块1002中存储的用户信息一致,并将验证结果传输给控制模块1007;\n[0112] 所述验证模块1006还用于直接从存储模块1002获取验证码,并比对所述获取的验证码与接收到的第一收发模块1001传输来的验证码是否一致,并将比对结果传输给控制模块1007。\n[0113] 控制模块1007,用于接收验证模块1006传输来的比对结果和验证结果,并根据比对结果向第一收发模块1001发送认证成功或失败的返回码,根据验证结果控制第一收发模块1001向客户端发送是否通过临时验证的应答。\n[0114] 计算模块1008,用于计算当前时间与起始参考时间的差值,用于根据差值和存活周期计算得到认证基数预增加的步长。所述计数模块1003对认证基数进行计数时调用计算模块1008得到的步长。\n[0115] 实施例3\n[0116] 本实施例提供了一种基于短信的身份验证方法,\n[0117] 其中服务器生成验证码的过程包括如下步骤:\n[0118] 步骤S1:服务器接收用户登录请求;\n[0119] 步骤S2:所述服务器判断当前时间戳是否为无效,是则执行步骤S3,否则执行步骤S4;\n[0120] 步骤S3:所述服务器生成验证码并更新当前时间戳,然后执行步骤S5;\n[0121] 步骤S4:所述服务器判断当前时间是否超出存活周期,是则生成验证码然后执行下一步,否则生成验证码并更新当前时间戳然后执行下一步;\n[0122] 步骤S5:所述服务器发送所述验证码到与所述用户登录请求绑定的手机号。\n[0123] 其中,服务器验证接收到的验证码的过程包括以下步骤:\n[0124] 步骤S6:所述服务器接收到验证码和第二用户信息,判断当前时间是否超出存活周期,是则认证失败,否则执行下一步;\n[0125] 步骤S7:所述服务器生成校验码,将所述校验码与接收到的所述验证码进行比对,若一致则执行下一步,否则认证失败;\n[0126] 步骤S8:服务器将当前时间戳置为无效;\n[0127] 步骤S9:认证成功。实施例4\n[0128] 本实施例是基于实施例3的一种基于短信的身份验证方法,如图3所示本实施例提出的方法包括以下步骤:\n[0129] 步骤101:服务器接收登录请求,从中提取与登录请求绑定的手机号和第一用户信息;\n[0130] 本实施例中,在步骤101之前包括:客户端接收到用户的登录请求,向服务器发送登录请求;\n[0131] 具体为,当客户端出现登录窗口时,用户通过在登录窗口输入第一用户信息的方式向客户端发送登录请求,客户端将接收到的登录请求发送给服务器。用户在登录窗口输入的第一用户信息可以具体为用户账号、密码或者两者的组合等。\n[0132] 进一步的,客户端向服务器发送登录请求的同时将接收到的第一用户信息发送给服务器。\n[0133] 所述步骤101具体为:服务器接收到客户端发送的第一用户信息,在数据库中对其进行检索,如果第一用户信息例如用户账号与服务器在数据库中检索到的信息相符,则通过临时验证,服务器提取与该用户账号绑定了的手机号。\n[0134] 进一步的,服务器接收到登录请求后会存储当前登录用户的用户信息直至接收到客户端发送的退出登录请求。\n[0135] 步骤102:服务器获取当前认证基数、当前时间戳;\n[0136] 当前认证基数记录在服务器的数据库中,是一个具体的数值,用于生成验证码;\n[0137] 当前时间戳记录在服务器的数据库中,是一个具体的时间值。\n[0138] 本实施例中,优选设置:服务器若是第一次接收到登录请求,则当前认证基数取值为0。\n[0139] 步骤103:服务器判断当前时间戳是否为无效,如果是则执行步骤106,否则执行步骤104;\n[0140] 在本实施例中,当前时间戳被置为无效优选设置将当前时间戳清零,相应的本步骤中,判断当前时间戳是否为无效是通过判断当前时间戳是否为零来判断的。\n[0141] 步骤104:服务器判断当前时间是否超出存活周期,若超出则执行步骤105,否则执行步骤107;\n[0142] 存活周期是一个具体的以时间为单位的数值,比如存活周期取值为600s;\n[0143] 当前时间是否超出存活周期的判断方法具体为:当前时间的时间值如果大于当前时间戳加存活周期得到的时间值,则当前时间超出了存活周期,例如,当前时间戳为1:20,存活周期为600s,则当前时间如果超出1:30则判断为当前时间超出存活周期。\n[0144] 步骤105:将当前认证基数按预设规则计算并用计算结果更新当前认证基数;\n[0145] 本实施例中具体为服务器利用计数器对第一认证基数进行递增或递减的计算,并用计算结果更新当前认证基数。优选的,所述将当前认证基数按预设规则计算具体为对当前认证基数进行加1的计算。\n[0146] 步骤106:根据当前认证基数生成验证码,将当前时间戳更新为生成验证码的时间,执行步骤108;\n[0147] 本实施例中具体为:服务器根据当前存储的用户信息获取与当前用户绑定的密钥,服务器采用一次口令生成算法对所述密钥和当前认证基数进行计算得到验证码,并记录验证码的生成时间。将当前时间戳更新为生成验证码的时间则当前时间戳有效。\n[0148] 若当前时间戳等于生成验证码的时间则认为当前时间戳有效,则从步骤103跳转到执行步骤106是将当前时间戳置为有效的过程,从步骤103顺序执行到步骤106是将一个有效的当前时间戳更新的过程,更新后的时间戳仍有效。\n[0149] 步骤107:根据当前认证基数生成验证码;\n[0150] 本实施例中具体为:服务器根据当前存储的用户信息获取与当前用户绑定的密钥,服务器采用一次口令生成算法对所述密钥和当前认证基数进行计算得到验证码。\n[0151] 步骤108:服务器以短信方式向与当前登录请求绑定的手机号发送验证码;\n[0152] 步骤109:客户端接收用户输入的验证码,向服务器发送验证码和第二用户信息;\n[0153] 步骤110:服务器接收验证码和第二用户信息,并判断第二用户信息是否与存储的第一用户信息一致,若一致则执行步骤111,否则认证失败;\n[0154] 步骤111:服务器判断当前时间是否超出存活周期,如果超出则认证失败,否则执行步骤112;\n[0155] 具体为:服务器从内部时钟源读取当前时间,从数据库中获取当前时间戳,判断当前时间是否超出当前时间戳加存活周期得到的时间值,若超出则验证码失效,认证失败,若未超出则继续执行下一步;\n[0156] 步骤112:服务器获取当前认证基数,根据当前认证基数计算生成校验码;\n[0157] 具体为:服务器根据第二用户信息获取与第二用户绑定的密钥,采用一次口令生成算法对所述密钥和当前认证基数进行计算得到校验码。\n[0158] 步骤113:服务器将接收到的验证码与生成的校验码进行比对,若比对结果一致则执行步骤114,否则认证失败;\n[0159] 步骤114:服务器将当前认证基数按预设规则进行计算并记录计算结果,用计算结果更新数据库中存储的当前认证基数;\n[0160] 所述预设规则与步骤105所述预设规则相同。\n[0161] 进一步的,步骤114还可以调整到步骤103后执行,具体为当步骤103判断得出当前时间戳为无效时执行步骤114,然后再执行步骤106根据当前认证基数生成验证码,将当前时间戳更新为生成验证码的时间。\n[0162] 步骤115:服务器将当前时间戳置为无效,认证成功。\n[0163] 在本实施例中,服务器每成功认证一次,都会执行步骤114和115的操作,即更新当前认证基数,将当前时间戳置为无效,为下一次认证做准备。\n[0164] 具体的,本实施例中认证完成后服务器会向客户端返回认证成功或认证失败的验证结果。\n[0165] 进一步地,本实施例中上述步骤106、步骤107、步骤112和步骤113还可分别用步骤106′、步骤107′、步骤112′和步骤113′替换,具体如下:\n[0166] 步骤106′:根据当前认证基数生成验证码并用生成的验证码更新数据库中存储的验证码,将当前时间戳更新为生成验证码的时间,执行步骤108;\n[0167] 本实施例中具体的,服务器数据库中存储的验证码的更新时长等于存活周期;将当前时间戳更新为生成验证码的时间则当前时间戳有效。\n[0168] 步骤107′:获取数据库中存储的验证码;\n[0169] 具体地,在当前时间戳有效且当前时间未超出存活周期时直接从数据库中获取验证码。\n[0170] 步骤112′:服务器获取当前认证基数和当前数据库中存储的验证码;\n[0171] 步骤113′:服务器将接收到的验证码和获取的数据库中存储的验证码进行比对,若比对结果为二者一致则执行步骤114,否则认证失败。\n[0172] 实施例5\n[0173] 本实施例是基于实施例3的一种基于短信的身份验证方法,如图4所示本实施例提出的方法包括以下步骤:\n[0174] 步骤201:服务器接收登录请求,从中提取与登录请求绑定的手机号和第一用户信息;\n[0175] 步骤202:获取起始参考时间、校验码生成时间、存活周期、当前时间、当前认证基数、当前时间戳;\n[0176] 步骤203:根据起始参考时间、当前时间、存活周期计算得到第一步长;\n[0177] 本实施例中具体为:将当前时间转换为一个相对值,所述相对值是指当前时间与起始参考时间的差值,用所述相对值除以存活周期并取整数部分即得到第一步长。\n[0178] 步骤204:判断当前时间戳是否为无效,是则执行步骤205,否则执行步骤206;\n[0179] 在本实施例中,当前时间戳被置为无效优选设置将当前时间戳清零,相应的本步骤中,判断当前时间戳是否为无效是通过判断当前时间戳是否为零来判断的。\n[0180] 步骤205:判断当前时间是否超出存活周期,是则执行步骤205-1,否则执行步骤\n205-1′,\n[0181] 本实施例中具体为:判断当前时间是否超出校验码生成时间加存活周期得到的时间值。\n[0182] 步骤205-1′:利用当前认证基数增加第二步长后得到的结果替换数据库中存储的当前认证基数,返回执行步骤205-1;\n[0183] 所述第二步长是一个预设数值,例如,可以设置第二步长取值为1,则将当前认证基数更新为当前认证基数加1的计算结果;\n[0184] 步骤205-1:根据当前认证基数和第一步长计算得到第一计数值,然后执行步骤\n205-2;\n[0185] 所述第一计数值是当前认证基数加第一步长计算得到的。\n[0186] 步骤205-2:根据第一计数值生成验证码,然后执行步骤207;\n[0187] 本实施例中生成验证码的过程具体为:服务器根据第一用户信息获取与第一用户绑定的密钥,采用一次口令生成算法对所述密钥和所述第一计数值进行计算得到验证码。\n[0188] 步骤206:根据当前认证基数和第一步长计算得到第二计数值,然后执行步骤\n206-1;\n[0189] 所述第二计数值是当前认证基数加第一步长计算得到的。\n[0190] 步骤206-1:根据所述第二计数值生成验证码;\n[0191] 本实施例中生成验证码的过程与步骤205-2相同,在此不再赘述。\n[0192] 步骤206-2:判断当前时间是否超出存活周期,是则执行步骤207,否则执行步骤\n208;\n[0193] 所述当前时间是否超出存活周期的判断方法具体为:当前时间如果超出当前时间戳加存活周期得到的时间值,则当前时间超出了存活周期,例如,当前时间戳为1:20,存活周期为600s,则当前时间如果超出1:30则判断为当前时间超出存活周期。\n[0194] 步骤207:将当前时间戳更新为生成验证码的时间,然后执行步骤208;\n[0195] 本实施例中具体地,当前时间戳更新为生成验证码的时间时则当前时间戳有效。\n[0196] 步骤208:服务器以短信方式向所述手机号发送验证码;\n[0197] 所述手机号是步骤201获取的与登录请求绑定的手机号。\n[0198] 步骤209:客户端接收用户输入的验证码,向服务器发送验证码和第二用户信息;\n[0199] 步骤210:服务器接收验证码和第二用户信息,判断第二用户信息是否与第一用户信息一致,是则执行步骤211,否则认证失败;\n[0200] 本实施例中步骤209和步骤210具体为:客户端提示用户输入验证码和用户信息,客户端将接收到的验证码和用户信息发送给服务器,服务器验证当前接收到的用户信息是否与登录请求中获取的用户信息一致,若一致则执行步骤211,若不一致则认证失败。\n[0201] 步骤211:服务器获取当前时间,判断当前时间是否超出存活周期,若是则认证失败,否则执行下一步;\n[0202] 本实施例中判断当前时间是否超出存活周期具体为:判断当前时间是否超出步骤\n207记录的当前时间戳加存活周期得到的时间值,若超出则认证失败,否则执行步骤212。\n[0203] 步骤212:根据起始参考时间、当前时间、存活周期计算得到第三步长;\n[0204] 本实施例中具体计算方法为:计算当前时间与起始参考时间的差值,用所述差值除以存活周期并取整数部分得到的结果即为第三步长;例如:起始参考时间为T0,当前时间距起始参考时间的相对秒数为S,存活周期为I,则第三步长等于S/I并取整数部分。\n[0205] 所述当前时间为一个变量,起始参考时间和存活周期为常量。\n[0206] 步骤213:服务器获取当前认证基数,根据当前认证基数和第三步长计算得到第三计数值;\n[0207] 步骤214:根据第三计数值生成校验码;\n[0208] 本实施例中具体为:服务器获取当前用户的密钥,采用一次口令生成算法对所述密钥和当前认证基数进行计算得到校验码。\n[0209] 步骤215:比对步骤214生成的校验码和步骤210接收到的验证码,若一致则执行下一步,否则认证失败;\n[0210] 步骤216:记录步骤214所述校验码的生成时间;\n[0211] 步骤217:将当前时间戳置为无效。\n[0212] 本实施例中将当前时间戳置为无效优选设置将当前时间戳清零。\n[0213] 顺序执行至步骤217则认证成功,服务器向客户端返回认证成功的提示,客户端显示提示信息给用户以便执行其他操作。\n[0214] 进一步地,本实施例中上述步骤205-2可用步骤205-2′替换,具体如下:\n[0215] 步骤205-2′:根据第一计数值生成验证码并用生成的验证码更新数据库中存储的验证码,执行步骤207;\n[0216] 本实施例中生成验证码的过程具体为:服务器根据第一用户信息获取与第一用户绑定的密钥,采用一次口令生成算法对所述密钥和所述第一计数值进行计算得到验证码。\n[0217] 上述步骤206至步骤207可用图5所示方法替换,具体如下:\n[0218] 步骤206′:判断当前时间是否超出存活周期,是则执行步骤206-1′,否则执行步骤206-3′;\n[0219] 步骤206-1′:根据当前认证基数计算得到第二计数值;然后执行步骤206-2′;\n[0220] 所述第二计数值是当前认证基数加第一步长计算得到的。\n[0221] 步骤206-2′:根据所述第二计数值生成验证码并用生成的验证码更新数据库中存储的验证码,然后执行步骤207;\n[0222] 本实施例中生成验证码的过程与步骤205-2′相同,在此不再赘述。\n[0223] 步骤206-3′:获取数据库中存储的验证码;\n[0224] 上述步骤214可用步骤214′替换,步骤215用步骤215′替换,同时,步骤212和\n213可以略去,执行完步骤211后直接执行步骤214′,具体如下:\n[0225] 步骤214′:服务器获取当前数据库中存储的验证码;\n[0226] 步骤215′:服务器将接收到的验证码和获取的数据库中存储的验证码进行比对,若比对结果为二者一致则执行步骤216,否则认证失败。\n[0227] 以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
法律信息
- 2013-08-14
- 2012-02-15
实质审查的生效
IPC(主分类): H04W 4/14
专利申请号: 201110264451.2
申请日: 2011.09.07
- 2011-12-28
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2008-04-23
|
2006-10-19
| | |
2
| |
2006-09-13
|
2006-04-06
| | |
3
| |
2006-10-25
|
2005-12-23
| | |
4
| |
2009-06-10
|
2007-11-29
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2013-11-11 | 2013-11-11 | | |
2 | | 2013-11-11 | 2013-11-11 | | |