一种身份验证方法和装置与流程

文档序号:14993450发布日期:2018-07-20 22:59阅读:118来源:国知局

本发明涉及身份验证技术领域,尤其涉及一种身份验证方法和装置。



背景技术:

在实际中,当用户想要登录到某台服务器时,为了提高安全性,通常该服务器会通过某个途径(例如,通过手机短信或邮箱等)向用户发送一次性密码,从而只有在用户输入的用户名和密码都正确,且一次性密码与之前服务器所发送的一次性密码相同时,用户才能成功地登录该服务器,这种技术即为totp(time-basedone-timepassword,基于时间戳算法的一次性密码)。

为了提高一次性密码的安全性,通常会给该一次性密码设置有效时间(例如,60s等),即当该服务器收到该一次性密码和发送该一次性密码的时间间隔超过有效时间时,用户就无法登录,可以理解的是,该服务器需要再发送一个不同的一次性密码。可见,如果该有效时间设置得过短,就会降低该服务器的安全性;而如果设置的过长,而且向用户发送一次性密码也会产生一些延迟,从而使得用户在很短的有效时间内,有可能无法输完该一次性密码,不利于用户的使用。

因此,设计出一种安全性高、且便于用户使用的身份验证方法,就成为一种亟待解决的问题。



技术实现要素:

本发明的目的在于提供一种身份验证方法和装置。

为了实现上述发明目的之一,本发明一实施方式提供了一种用于服务器的身份验证方法,包括以下步骤:生成预设长度的一次性密码,并将所述一次性密码发送到客户端;接收客户端发送的用户名和第一密码,获取服务器所存储的所述用户名对应的第二密码,基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;在确定第一密码为第二密码、特征值拼接而成时,通过身份验证。

作为本发明一实施方式的进一步改进,所述将所述一次性密码发送到客户端,包括:将所述一次性密码加密之后再发送到客户端。

作为本发明一实施方式的进一步改进,所述从客户端接收用户名和第一密码,包括:从客户端接收已加密的用户名和已加密的第一密码,进行解密操作,从而得到用户名和第一密码。

作为本发明一实施方式的进一步改进,所述将所述一次性密码发送到客户端,包括:将所述一次性密码和预设算法发送到客户端。

本发明一实施方式提供了一种用于服务器的身份验证装置,包括以下模块:字符串生成模块,用于生成预设长度的一次性密码,并将所述一次性密码发送到客户端;特征值生成模块,用于接收客户端发送的用户名和第一密码,获取服务器所存储的所述用户名对应的第二密码,基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;处理模块,用于在确定第一密码为第二密码、特征值拼接而成时,通过身份验证。

本发明一实施方式提供了一种用于客户端的登录方法,包括以下步骤:从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;显示所述特征值,将所输入的用户名和第一密码发送到服务器。

作为本发明一实施方式的进一步改进,所述从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,包括:从服务器接收一次性密码和预设算法,并基于预设算法生成所述一次性密码的特征值。

作为本发明一实施方式的进一步改进,所述从服务器接收一次性密码,包括:从服务器接收已加密的一次性密码,进行解密操作,从而得到一次性密码。

作为本发明一实施方式的进一步改进,所述将所输入的用户名和第一密码发送到服务器,包括:将所输入的用户名和第一密码进行加密之后发送到服务器。

本发明一实施方式提供了一种一种用于客户端的登录装置,包括以下模块:

接收模块,用于从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;

发送模块,用于显示所述特征值,将用户所输入的用户名和第一密码发送到服务器。

相对于现有技术,本发明的技术效果在于:本发明实施例提供了一种身份验证方法,在该方法中,服务器会生成一次性密码并发送到客户端,且服务器以生成一次性密码的特征值,所述特征值为一个字符;在客户端也会生成一次性密码的特征值,且用户只需要输入用户名,密码和该特征值,即可成功登录服务器,可见,在该登录方法中,客户端会基于预设算法将该一次性密码映射成一个字符并显示,从而用户就可以将该字符输入密码框中,可见,这非常便于用户的使用,且也不明显降低服务器的安全性。

附图说明

图1是本发明实施例一中的身份验证方法的流程示意图;

图2是本发明实施例一中的字符与数字之间的映射表;

图3是本发明实施例一中的登录方法的流程示意图。

具体实施方式

以下将结合附图所示的各实施方式对本发明进行详细描述。但这些实施方式并不限制本发明,本领域的普通技术人员根据这些实施方式所做出的结构、方法、或功能上的变换均包含在本发明的保护范围内。

本发明实施例一提供了一种用于服务器的身份验证方法,该身份验证方法由服务器来执行,如图1所示,包括以下步骤:

步骤101:生成预设长度的一次性密码,并将所述一次性密码发送到客户端;当用户想通过客户端来登录服务器时,客户端会向服务器发送获取一次性密码的请求,例如,在客户端会设置有用于获取一次性密码的按钮,只要该按钮被点击,客户端就会向服务器发送获取一次性密码的请求,于是服务器就开始执行步骤101。可以理解的是,该一次性密码是一个预设长度的随机字符串。

这里,所述将所述一次性密码发送到客户端的方法可以包括很多种,例如:(1)客户端向服务器发送获取一次性密码的请求时,在该请求中可以包含有用户名的信息,这样服务器就会将该一次性密码发送到该用户名所对应的手机或邮箱中;(2)客户端向服务器发送获取一次性密码的请求时,在该请求中可以不包括用户名信息,客户端可以将所接收到的一次性密码显示。

这里,可以使用一个随机算法来生成预设长度(例如,可以为6)的一次性密码。例如,使用以下otp计算公式:otp(k,c)=truncate(hmac-sha-1(k,c)),其中,k为密钥串,c为表示随机数,hmac-sha-1表示使用sha-1(securehashalgorithm-1,安全散列算法-1)做hmac(keyed-hashingformessageauthentication,密钥相关的哈希运算消息认证码),truncate()是一个函数,能够从所输入的字符串中截取预设长度的字符串,从而得到预设长度的一次性密码。

步骤102:接收客户端发送的用户名和第一密码,获取服务器所存储的所述用户名对应的第二密码,基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;当用户在客户端输入完用户名和第一密码,点击“登录”时,客户端就会将用户名和第一密码发送给服务器,这样,服务器就能够接收到用户名和第一密码了;可以理解是,在用户注册时,在服务器上会存储用该用户名及其对应的第二密码,于是在该步骤中,服务器就可以获取该用户名对应的第二密码了。

这里,服务器基于预设算法将一次性密码转换成一个字符,可以包括:

(1)假设预设长度为6,一次性密码使用英文字母[a-z]组成,则可以通过图2所示的表格得到6个英文字母对应的数字,然后计算这些数值的和,再模26得到模值,然后再通过图2所示的表格得到该模值对应的英文字母,则该英文字母即为该字符。例如,dbcfgh对应的字符为x,计算过程为:(3+1+2+5+6+7)%26=24;ehbgjd对应的字符为e,计算过程为:(4+7+1+6+9+3)%26=4。

(2)假设预设长度为6,一次性密码使用英文字母[a-z]组成,则可以通过公式图2所示的表格得到6个英文字母对应的数字,然后计算这些数值的和,再模10得到模值,该模值即为该字符。例如,bfggcd对应的字符为3,计算过程为:(1+5+6+6+2+3)%10=3;ighbed对应的字符为9,计算过程为:(8+6+7+1+4+3)%10=9。

步骤103:在确定第一密码为第二密码、特征值拼接而成时,通过身份验证。可以理解的是,在客户端,用户不仅需要输入密码而且还需要输入该一次性密码的特征值,并将该特征值与密码拼接(例如,先输入密码,在密码后面紧接着输入特征值;也可以先输入特征值,在特征值后面紧接着输入密码),然后输入密码输入框中即可。

优选的,所述将所述一次性密码发送到客户端,包括:将所述一次性密码加密之后再发送到客户端。为了防止在传输的过程中,一次性密码被窃取,可以使用加密的手段来加密一次性密码。

优选的,所述从客户端接收用户名和第一密码,包括:从客户端接收已加密的用户名和已加密的第一密码,进行解密操作,从而得到用户名和第一密码。同样,为了防止在传输的过程中,用户和密码被窃取,可以使用加密的手段来加密用户名和密码,在服务器端接收到已加密的用户和密码时,需要解密,并得到解密后的用户名和密码。

优选的,所述将所述一次性密码发送到客户端,包括:将所述一次性密码和预设算法发送到客户端。可以理解的是,在客户端也需要使用相同的预设算法来得到一次性密码的特征值,且为了提高服务器的安全性,预设算法也需要经常变化,因此,在每次用户通过客户端登录服务器时,服务器可以将预设算法发送到客户端。这里,服务器可以将实现了该预设算法的程序发送到客户端,也可以在客户端预先存储有若干不同的预设算法的程序,而服务器仅仅需要将预设算法的标识符发送到客户端即可。

本发明实施例提供了一种用于服务器的身份验证装置,包括以下模块:

字符串生成模块,用于生成预设长度的一次性密码,并将所述一次性密码发送到客户端;

特征值生成模块,用于接收客户端发送的用户名和第一密码,获取服务器所存储的所述用户名对应的第二密码,基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;

处理模块,用于在确定第一密码为第二密码、特征值拼接而成时,通过身份验证。

本发明实施例二提供了一种用于客户端的登录方法,如图3所示,包括以下步骤:

步骤301:从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;在该步骤中,预设算法与实施例一中的预设算法是一样的。

步骤302:显示所述特征值,将所输入的用户名和第一密码发送到服务器。在该步骤中,将特征值显示出来,从而用户就可以获知该特征值,进而用户在输入密码的时候,就可以将密码和特征值拼接,然后一并输入密码输入框中,例如,先输入密码,在密码后面紧接着输入特征值;也可以先输入特征值,在特征值后面紧接着输入密码;从而得到第一密码。之后,在“登录”按钮被点击时,客户端会将用户名和第一密码发送到服务器。

在该登录方法中,客户端会基于预设算法将该一次性密码映射成一个字符并显示,从而用户就可以将该字符输入密码框中,可见,这非常便于用户的使用,且也不明显降低服务器的安全性。

优选的,所述从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,包括:从服务器接收一次性密码和预设算法,并基于预设算法生成所述一次性密码的特征值。

优选的,所述从服务器接收一次性密码,包括:从服务器接收已加密的一次性密码,进行解密操作,从而得到一次性密码。

优选的,所述将所输入的用户名和第一密码发送到服务器,包括:将所输入的用户名和第一密码进行加密之后发送到服务器。

本发明实施例还提供了一种用于客户端的登录装置,包括以下模块:

接收模块,用于从服务器接收一次性密码,并基于预设算法生成所述一次性密码的特征值,所述特征值为一个字符;

发送模块,用于显示所述特征值,将用户所输入的用户名和第一密码发送到服务器。

应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1