一种验证码安全加固的认证方法及系统与流程

文档序号:12068170阅读:317来源:国知局
一种验证码安全加固的认证方法及系统与流程

本发明涉及信息安全领域,尤其涉及一种验证码安全加固的认证方法及系统。



背景技术:

随着移动互联网技术的发展,手机银行已经走入大众生活,使用手机银行进行转账支付变得非常普遍。转账支付涉及用户资金,所以其安全性必需得到保证。目前的手机银行多是通过短信验证码来保护交易的安全性。

然而随着手机木马程序的出现,以及越来越多的廉价伪基站,短信验证码变得非常容易被截获。目前流行的短信验证码认证机制已经在很大程度上丧失了有效性,用户手机银行的资金安全备受威胁。



技术实现要素:

本发明提供一种验证码安全加固的认证方法及系统,用以解决现有技术中存在如何才能更安全的保障我们的短信验证码的安全性,如何在用户无感知,即不影响用户体验的前提下保障用户的权益,避免短信验证码被非法分子冒用损坏合法用户权益。

本发明一方面提供一种验证码安全加固的认证方法,包括步骤:

S100服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

S200所述客户端将所述用户获取的所述短信验证码通过算法进行加密生成短信密文;

S300所述客户端获取已验证次数,并添加本次验证,得到验证计数值;

S400所述客户端将用户信息,所述验证计数值和短信密文组成的验证文件发送给所述服务器;

S500所述服务器接收所述验证文件并进行验证。

客户端通过对短信验证码进行加密,统计客户端的已验证次数使得验证码认证更为安全,用户在获得短信验证码后,只需要将该短信验证码填入客户端,客户端即可自行完成短信的加密及已验证次数的统计,将包含用户信息、已验证计数值和加密后生成的短信密文组成的验证文件发给服务器。以便服务器需要对验证计数值、短信密文进行双层验证,确定用户身份。相对于传统的短信验证码,本发明大大增强了验证码认证的安全性,且这一切是在用户无感知的情况下进行的,用户体验度也高。

进一步的,在所述步骤S300之后还包括步骤:

S350所述客户端对所述验证计数值进行加密生成计数密文;

所述步骤S400包括步骤:

S410所述客户端将用户信息、客户端标识信息、所述计数密文、及短信密文组成的验证文件发送给所述服务器。

客户端统计验证次数,得到计数值后,进一步对计数值进行加密,更加保证了传输的安全性。且客户端统计验证次数是存储在客户端本地的,安全级别高。相应的,服务器也存储有不同客户端的已验证次数,因此,客户端发送的验证文件,需包含用户信息、客户端标识信息(即终端标识信息)、计数密文和短信密文。

进一步的,在认证之前,用户在服务器中的注册过程,至少包括以下步骤:

S010所述客户端获取所述用户信息,并将所述用户信息发送至所述服务器;

S020所述服务器接收所述用户信息,并根据所述用户信息生成与所述用户信息唯一关联的密钥参数,同时将所述密钥参数进行存储;

S030所述服务器根据所述密钥参数,通过算法重构机制将所述服务器内部存储的算法进行重构生成新算法;

S040所述服务器将所述新算法发送至所述客户端进行存储。

根据用户信息获取密钥参数,使得不同用户具有不同的算法,避免了不法分子批量破解,大大增强了广大用户的安全性。

进一步的,所述步骤S020包括:

所述服务器根据接收的所述用户信息结合存储的SOTP算法生成与所述用户信息唯一关联的密钥参数;

所述步骤S030包括步骤:

S031所述服务器结合所述密钥参数和数据码编码算法重构生成所述服务器的新算法;

S032所述服务器结合所述密钥参数和数据码解码算法重构生成所述客户端的新算法;

所述步骤S040包括步骤:

S041所述服务器将所述重构后生成的客户端的新算法发送至客户端。

SOTP(strong one time password,增强型动态口令)算法是一种对称算法,是众人科技有限公司独创的一种算法,该算法分初始注册阶段、认证阶段和会话阶段实现,该算法已被公开,具体内容参见专利CN201510033834.7,此处不再详细说明。此外,服务器通过编码、解码算法结合密钥参数分别重构服务器和客户端对应的算法,该算法非常复杂,且难度高,不法分子难以破解。即使破解了客户端的算法,也不知道服务器端的算法,安全性非常高。

进一步的,在步骤S030中,所述服务器结合所述密钥参数和所述算法重构机制将所述服务器内部存储的算法进行重构生成新算法,至少包括以下一个步骤:

根据所述密钥参数,确定所述新算法的运算顺序;

根据所述密钥参数,确定所述新算法的分组数据块的结构,以及所述分组数据块的运算顺序;

根据所述密钥参数,确定所述新算法中的固定参数。

进一步的,所述步骤S310包括步骤:

S311所述客户端对所述计数值采用RSA加密算法进行加密,生成计数密文。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

进一步的,所述步骤S500包括步骤:

S510所述服务器接收所述验证文件;

S520所述服务器使用解密算法解密所述验证文件中的所述计数密文,获得所述验证计数值

S530所述服务器判断所述验证计数值是否大于所述服务器存储的所述客户端的已验证计数值,若是则进入步骤S540,否则进入步骤S550;

S540所述服务器解密接收的所述验证文件中的短信密文,获得短信验证码,并判断所述短信验证码是否与之前下发给所述用户的短信验证码是否一致,若是,则验证所述用户身份成功,并将所述服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值;否则验证所述用户身份失败;

S550判断所述报文被重放,验证所述用户身份失败。

服务器需要对计数密文和短信密文进行双层验证,只有两个验证都通过了才算验证用户身份成功,也才能进行后续的交易或其它操作。如果其中任意一个验证不成功,则另一个无需再验证,即可判断验证失败。

进一步的,还包括步骤:

S080当所述客户端存储的验证计数值与所述服务器存储的所述客户端的已验证计数值的差值大于预设值时,校准所述客户端存储的验证计数值与所述服务器存储的所述客户端的已验证计数值。

另一方面,本发明还提供一种验证码安全加固的认证系统,包括服务器、与所述服务器相连的客户端,所述客户端包括第一信息收发模块、加密插件、统计模块及控制模块,其中,所述控制模块分别与所述第一信息收发模块、加密插件及统计模块相连,其中:

所述服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

所述客户端的第一信息收发模块获取到所述短信验证码后,所述加密插件在所述控制模块的作用下将所述短信验证码进行加密生成短信密文;

所述客户端的统计模块统计已验证次数,并添加本次验证,得到验证计数值;

所述客户端的第一信息收发模块在所述控制模块的作用下,将用户信息,所述验证计数值和短信密文组成的验证文件发送给所述服务器;

所述服务器接收所述验证文件并进行验证。

本系统相对于传统的短信验证,通过对短信验证码进行加密,及统计已验证次数来进行双层保护,服务器在验证时,首先需要核对验证次数是否正确,只有在验证次数正确的情况下才会进一步去验证短信密文。因为客户端验证次数是不断累计和更新的,使得不法分子冒充该用户的难度大大增强,增强了短信验证的安全性。

进一步的,所述客户端还包括与所述控制模块相连的计数加密模块,其中:

所述客户端的计数加密模块在所述控制模块的作用下,在获得验证计数值后对所述计数值进行加密生成计数密文;

所述客户端的第一信息收发模块在所述控制模块的作用下,将用户信息、客户端标识信息、所述计数密文及短信密文组成的验证文件发送给所述服务器。

将已验证次数的计数值进行加密,生成计数密文,使得传输过程中更为安全,即使被截获,也无法知晓其中内容。

进一步的,所述服务器包括第二信息收发模块、密钥生成模块、存储模块及算法重构模块,所述密钥生成模块分别与所述第二信息收发模块、存储模块、及算法重构模块相连,所述存储模块分别与所述算法重构模块、第二信息收发模块相连,其中:

所述客户端的第一信息收发模块获取所述用户信息,并将所述用户信息发送至所述服务器的第二信息收发模块;

所述服务器的第二信息收发模块接收所述用户信息,所述密钥生成模块根据所述用户信息生成与所述用户信息唯一关联的密钥参数,同时将所述密钥参数通过所述存储模块进行存储;

所述服务器的算法重构模块结合所述存储模块存储的所述密钥参数,通过算法重构机制将所述服务器的存储模块存储的算法进行重构生成新算法;

所述服务器的第二信息收发模块将所述新算法发送至所述客户端的加密插件进行存储。

通过算法重构机制,结合用户信息,使得不同用户都具有自己的一套独特的算法,用户后续采用各自的算法对短信验证码进行加密,大大增强安全性,即使其中一个用户的算法被破解,也不会影响到其它的用户。

进一步的,所述服务器的存储模块存储的算法包括SOTP算法、数据码编码算法、数据码解码算法、及所述新算法;其中:

所述密钥生成模块结合所述用户信息采用所述存储模块中存储的SOTP算法进行运算,生成与所述用户信息唯一关联的密钥参数;

所述服务器的算法重构模块结合所述存储模块存储的密钥参数和数据码编码算法重构生成所述服务器的新算法;

所述服务器的算法重构模块结合所述存储模块存储的密钥参数和数据码解码算法重构生成所述客户端的新算法,并通过所述第二信息收发模块将所述客户端的新算法发送至所述客户端的加密插件进行存储。

不同用户有不同算法,且客户端和服务端存储的相应算法互为逆算法,复杂程度高,保密性强。

进一步的,所述算法重构模块至少包括以下一个单元:

运算顺序单元,用于所述密钥参数,确定所述新算法的运算顺序;

分组单元,用于根据所述密钥参数,确定所述新算法的分组数据块的结构,以及所述分组数据块的运算顺序;

固定参数确定单元,用于根据所述密钥参数,确定所述新算法中的固定参数。

进一步的,所述客户端的计数加密模块对所述计数值进行加密生成计数密文所采用的算法为RSA加密算法。

进一步的,所述服务器还包括与所述第二信息收发模块相连的解密模块、验证模块,所述验证模块分别与所述解密模块、存储模块相连,其中:

所述服务器接收所述验证文件并进行验证包括:

所述服务器的第二信息收发模块接收所述验证文件;

所述服务器的解密模块解密所述验证文件中的计数密文,获得所述验证计数值;

所述服务器的验证模块判断所述验证计数值是否大于所述服务器的存储模块存储的所述客户端的已验证计数值,

若所述验证模块判断所述验证计数值大于所述服务器的存储模块存储的所述客户端的已验证计数值,则所述服务器的解密模块解密接收的所述验证文件中的短信密文,获得短信验证码,所述验证模块判断所述短信验证码是否与之前下发给所述用户的短信验证码是否一致,若是,则验证所述用户身份成功,并将所述服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值;否则验证所述用户身份失败;

若所述验证模块判断所述验证计数值小于或等于所述服务器的存储模块存储的所述客户端的已验证计数值,则判断所述报文被重放,验证所述用户身份失败。

进一步的,所述服务器还包括校准模块,所述校准模块分别与所述验证模块和存储模块相连,其中:

所述校准模块校准所述客户端的统计模块存储的验证计数值与所述服务器的存储模块存储的所述客户端的已验证计数值。

本发明在传统的短信验证基础上,对短信验证码进行了加密生成短信密文,且增加了客户端验证次数的统计,服务端在对验证码进行认证时,需要对客户端的验证次数和短信密文进行验证,由于验证次数是不断累积和更新的,大大增强了验证码认证的安全性。进一步的,本发明还对客户端验证次数也进行了加密,使得传输更为安全,进一步的对验证次数进行加密的算法采用的是RSA算法,能够抵抗到目前为止已知的绝大多数密码攻击。而对短信验证码的加密,本发明也采用了算法重构机制使得不同用户具有不同的算法,且算法复杂度高,即使验证次数的计数值验证通过,也会由于无法模拟该用户的安全加密机制(不同用户具有不同算法),从而无法完成认证。本发明在不影响用户体验的前提下,大大增强了短信验证码认证的安全性。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一种验证码安全加固的认证方法实施例一流程图;

图2为本发明一种验证码安全加固的认证方法实施例二流程图;

图3为本发明中用户注册获得重构算法流程图;

图4为本发明一种验证码安全加固的认证方法另一实施例流程图;

图5为本发明一种验证码安全加固的认证方法另一实施例流程图;

图6为本发明一种验证码安全加固的认证方法另一实施例示意图;

图7为本发明一种验证码安全加固的认证系统实施例框图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

本发明一种验证码安全加固的认证方法,实施例一如图1所示,包括步骤:

S100服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

S200所述客户端将所述用户获取的所述短信验证码通过算法进行加密生成短信密文;

S300所述客户端获取已验证次数,并添加本次验证,得到验证计数值;

S400所述客户端将用户信息,所述验证计数值和短信密文组成的验证文件发送给所述服务器;

S500所述服务器接收所述验证文件并进行验证。

本发明实施例,相较于传统的普通短信验证,采用了两方面的保护,一方面,对该短信验证码进行了加密处理;服务器下发的短信验证码即使被第三方截获,第三方不知晓加密算法及密钥的话,同样无法完成交易。另一方面,客户端在本地统计了已验证次数,并将验证次数随同短信密文一同发送,服务器只有在验证计数值和短信密文均验证成功的情况下,才会验证用户身份成功,才能完成后续的操作。也就是说客户端会在本地存储验证次数,服务器同样也会存储相应的验证的次数,客户端A发送的验证文件除了用户信息及需要对短信验证码进行加密生成加密文件外,还需要告知服务器这是我第几次发送的验证,服务器在收到后会验证客户端说的次数及加密文件。通过这两方面的保护,大大增加了短信验证的安全性,提高了用户体验。

本发明方法的实施例二,如图2所示,包括步骤:

S100服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

S200所述客户端将所述用户获取的所述短信验证码通过算法进行加密生成短信密文;

S300所述客户端获取已验证次数,并添加本次验证,得到验证计数值;

S350所述客户端对所述验证计数值进行加密生成计数密文;

S410所述客户端将用户信息、客户端标识信息、所述计数密文、及短信密文组成的验证文件发送给所述服务器;

S500所述服务器接收所述验证文件并进行验证。

本实施例采用了验证码和验证次数分别加密后进行认证的方法,对普通的短信验证码认证进行了加固和增强,解决了普通短信验证码被盗取而产生的安全问题。比如,当用户的手机接收到短信验证码后,用户将短信验证码填写到手机银行的APP中,APP获取到这个短信验证码后,会通过一个安全插件对这个短信验证码进行加密生成短信密文,此外,该手机APP还会在手机终端存储该终端已发送的验证次数,在短信密文发送之前,还会在存储的验证次数上添加本次验证,获得最新的验证计数值,然后对这个计数值进行加密,生成计数密文。计数密文采用的加密算法不受限制,可以采用和短信密文加密同样的算法,也可以采用不一样的算法,当然,采用不一样的算法安全性更高。最后APP会将加密后的短信密文和计数密文连同用户信息一起发送给服务器,让服务器来进行验证。

值得说明的是,关于验证计数值,可以有多种分类方法,如果采用一人一机的话,也就是说一个终端只能一个用户操作,即用户和终端绑定的话,那么,该终端统计的验证次数(验证计数值)即为该用户的验证次数(验证计数值),服务器可根据不同的终端来区分不同用户的已验证次数,那么客户端发送的验证文件除了短信密文和计数密文外,还至少需发送用户信息,服务器即可根据用户信息查找到存储的该用户已验证次数(已验证计数值)及对应密钥等。

当然,较为常见的,如果一个终端允许不同的用户登录使用的话,那么,有两种统计验证次数的计数值的方法,一种是终端统计总的验证次数(验证计数值),也就是说并不是按照用户来分类的,只统计该终端发出验证的总次数,那么服务器也同样需按照终端来统计已验证次数(已验证计数值);另一种是终端统计存储不同用户的验证次数(验证计数值),也就是说存储该用户在该终端发送验证的次数,这时,服务器也同样需按照不同终端不同用户的已验证次数来统计,比如A用户在终端1的已验证次数,A用户在终端2的已验证次数,B用户在终端1的已验证次数等。当然按照用户和终端结合分类存储已验证次数相对于只按照终端分类来存储已验证次数要复杂些。以上不管是统计终端总已验证次数还是统计不同用户在该终端的已验证次数,客户端在发送验证密文(短信密文和计数密文)的时候,需将客户端标识信息、用户信息一同发送。以便服务端根据客户端标识信息和用户信息找到相应的存储的已验证次数及密钥。

上述关于验证次数(验证计数值)的统计,均是存储在客户端本地,也就是说存储在客户端本机上,安全系数高,第三方获取难度大,且每个终端验证次数不同,更无法批量获取。相对于在网络或云端存储验证次数,由于在网络的不安全性和不确定性较多,在网络或云端存储易被第三方攻破,从而批量获取,因此本地存储验证次数的安全性更高。

本发明的第三实施例,在上述任一实施例基础上,增加了算法重构步骤,也就是说用户注册时,服务器会根据用户信息为用户量身定做一套算法,具体的,如图3所示,在认证之前,用户在服务器中的注册过程,包括步骤:

S010所述客户端获取所述用户信息,并将所述用户信息发送至所述服务器;

S020所述服务器接收所述用户信息,并根据所述用户信息生成与所述用户信息唯一关联的密钥参数,同时将所述密钥参数进行存储;

S030所述服务器根据所述密钥参数,通过算法重构机制将所述服务器内部存储的算法进行重构生成新算法;

S040所述服务器将所述新算法发送至所述客户端进行存储。

具体的,在步骤S010和S020中,用户信息包括用户名、密码、手机号等,用户通过客户端中输入界面输入用户信息,随后客户端将该用户信息发送服务器,特别的,在本发明中,对用户信息的具体内容不做限定,只要能唯一标识该用户,都包括在本发明的内容中。

在步骤S020中,密钥参数可以由设置在服务器内部的随机数生成器根据用户信息生成的随机数,也可以是将该用户信息通过存储的某种算法进行运算获得的结果作为密钥参数。随机数生成器生成的密钥参数可以使用8(0-7)进制数进行表示,即当服务器接收到客户端发送过来的用户信息,根据接收到的该用户信息,通过随机数生成模块生成一个随机数作为密钥参数,随后再将生成的密钥参数与用户信息进行管理存储。

在步骤S030中所述服务器内部存储的算法可以为目前应用较为官方的多种加密算法,本发明对算法类别不做限制,在本发明中,为了进一步提高验证的安全性,不再使用预存的现有的各种算法,而是通过算法重构机制,结合密钥参数,将预存的一种现有算法进行重构生成另一种新算法。如此,由于密钥参数的不同,使得生成的新算法也不同,而密钥参数又是与用户信息唯一关联,因此使得不同的用户采用不同的算法,在验证的过程中,实现了一人一算法、一次一密的安全特性,进一步的,可以实现一人一机一算法,一次一密保安全,且在验证中,添加了本地验证次数的统计及加密,验证的安全性非常牢固,使得非法分子难以破解。

较佳的,在上述实施例中,所述步骤S020包括:

所述服务器根据接收的所述用户信息结合存储的SOTP算法生成与所述用户信息唯一关联的密钥参数;

具体的,SOTP算法用于生成参与重构算法的密钥参数,本实施例通过SOTP算法生成密钥参数,SOTP算法将算法和密钥种子融合,使得每个用户的算法都不一样,生成的密钥参数与每个用户唯一关联,具有更高的安全性。

所述步骤S030包括步骤:

S031所述服务器结合所述密钥参数和数据码编码算法重构生成所述服务器的新算法;

S032所述服务器结合所述密钥参数和数据码解码算法重构生成所述客户端的新算法;

具体的,本实施例中的数据码编码算法为QR(Quick Response,快速反应)Code的Alphanumeric mode(子母数字模式)字符数据码编码算法。

本实施例中的数据码解码算法为Alphanumeric mode(子母数字模式)字符数据码编码算法的逆运算。

所述步骤S040包括步骤:

S041所述服务器将所述重构后生成的客户端的新算法发送至客户端。

本实施例通过对数据码编码算法和数据码解码算法进行重构,分别生成服务器的新算法和客户端的新算法,其中客户端的新算法为服务器的新算法的逆运算,复杂程度高,使得即使短信密文被截获也难以破译,具有较高的安全性。

本发明方法的另一实施例,在上述第三实施例的基础上,在步骤S030中,所述服务器结合所述密钥参数和所述算法重构机制将所述服务器内部存储的算法进行重构生成新算法,至少包括以下一个步骤:

根据所述密钥参数,确定所述新算法的运算顺序;

根据所述密钥参数,确定所述新算法的分组数据块的结构,以及所述分组数据块的运算顺序;

根据所述密钥参数,确定所述新算法中的固定参数。

本发明实施例采用的算法重构机制主要通过以上三种方式实现,通过改变预存的旧算法的运算顺序、分组数据块结构和顺序以及旧算法中包括的固定参数,且未了进一步保障重构后的新算法的唯一性和不可预见性,在本实施例中,算法重构机制结合密钥参数对预存的算法进行重构。由于密钥参数的随机性,即其中包括的每一个字节的参数都是随机的,因而将其代入算法重构机制,对预存的算法进行重构后的算法即具备了随机性,即每个用户对应的重构后的算法都不相同,因而算法的安全性能高,难以破译,即使不法分子破解了一个用户,也不影响其它用户,提高了验证的安全性,避免了安全隐患。

较佳的,在上述第二实施例或第三实施例的基础上,所述步骤S300包括步骤:

S311所述客户端对所述计数值采用RSA加密算法进行加密,生成计数密文。

RSA算法是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码共计,已被ISO推荐为公钥数据加密标准。

本发明方法的另一实施例,具体的,如图4所示,包括步骤:

100服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

S200所述客户端将所述用户获取的所述短信验证码通过算法进行加密生成短信密文;

S300所述客户端获取已验证次数,并添加本次验证,得到验证计数值;

S350所述客户端对所述验证计数值进行加密生成计数密文;

S410所述客户端将用户信息、客户端标识信息、所述计数密文、及短信密文组成的验证文件发送给所述服务器;

S510所述服务器接收所述计数密文和短信密文;

S520所述服务器使用解密算法解密所述计数密文,获得所述验证计数值;

S530所述服务器判断所述验证计数值是否大于所述服务器存储的所述客户端的已验证计数值,若是则进入步骤S540,否则进入步骤S550;

S540所述服务器解密接收的所述短信密文,获得短信验证码,并判断所述短信验证码是否与之前下发给所述用户的短信验证码是否一致,若是,则验证所述用户身份成功,并将所述服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值;否则验证所述用户身份失败;

S550判断所述报文被重放,验证所述用户身份失败。

本实施例中,服务器在接收到客户端发送的验证密文(包括用户信息、计数密文和短信密文)后,会首先对计数密文进行解密,获取到客户端发送的计数值,然后根据客户端标识信息,在服务器内部查找到存储的该终端的已验证次数;若该客户端存储统计不同用户的验证次数,则服务器根据终端的标识信息和用户信息,在内部查找到存储的该用户在该终端的已验证次数(对应客户端本地统计的验证次数为该用户在该终端的验证次数);若该客户端只统计从该客户端发出的总的验证次数,则相应的,服务器根据该终端的标志信息,查找到存储的该终端的总的已验证次数(对应客户端本地统计的验证次数为不限用户的总的验证次数)。服务器通过比对解密后的计数值和查找到的存储的对应的计数值,初步判断用户身份,如果是合法用户的话,由于客户端的计数值添加了本次验证次数,所以肯定比服务器存储的已验证次数的计数值要高,因此,如果解密获得的验证计数值小于或等于服务器存储的对应的已验证计数值的话,则说明这条报文被重放了,说明这个用户不是合法用户了,可能是被不法分子截获了之前的报文重新发送过来的,因此也不需要进行后续的加密短信的验证就可以直接判断用户身份验证失败了。如果计数密文的验证成功了,也就是说解密获得的验证计数值大于服务器存储的相应的已验证计数值,那么就初步验证通过,接着进行第二重验证,也就是短信密文的验证,验证的方式包括两种,一种是根据用户信息查找到对应的密钥参数,及对应的解密算法,然后将获取到的短信密文、结合密钥参数采用解密算法进行解密,获得短信验证码,然后与之前下发给该用户的短信验证码进行比对,判断是否一致,一致的话则说明短信验证成功,该用户身份验证成功了,那么服务器就将服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值,从而更新了服务器存储的所述客户端的已验证计数值,减少漏洞。若不一致的话就说明可能是不法分子发来的,不是合法用户,那么判断该用户身份验证失败,从而交易失败。另一种短信密文的验证方式是,根据用户信息,查找到对应的密钥参数和算法,然后将之前下发给该用户的短信验证码结合密钥参数采用该用户对应的算法进行运算,生成验证码,然后比对验证码和短信密文是否一致,一致则同样验证成功,否则失败。具体的,例如,当前,客户端B统计的验证计数值为31,服务器端存储的已验证计数值为28(客户端发起的29、30、31次验证因为网络问题或被不法分子拦截等其它原因,造成服务器未收到第29、30、31次验证文件),现在客户端B发起第32次验证,于是,客户端B在发送前添加本次验证,于是,客户端B的验证计数值更新为32了,然后发给服务器,服务器接收到客户端B发过来的验证文件后,解密计数密文,获得客户端B的验证计数值为32,然后根据客户端B标识信息,查找到服务器存储的该客户端B的已验证计数值为28,显然32>28,也就是说客户端B的验证计数值大于服务器存储的该客户端B的已验证计数值,于是计数认证通过,然后再解密短信密文,验证验证码是否正确,如果均正确的话,则此次验证通过,服务器端再更新内部存储的该客户端B的已验证计数值为32。假如后续客户端B发起的第33次、34次、35次验证均验证成功,那么验证成功后,服务器端存储的该客户端B的已验证计数值和客户端B的验证计数值一样,均为35;其中,如果第33次验证时,客户端B发送给服务器的验证文件被黑客获取到了,后面,黑客再冒充客户端B,向服务器认证时,发送的计数密文就是窃取到的客户端B之前发送过的第33次验证的计数密文,那么服务器在收取到该计数密文,解密后获得客户端B的验证计数值33,然后查看内部存储的该客户端B的已验证计数值已经是35了,显然,33<35,计数认证失败,服务器可以判断出此报文是被重复发送了(重放),也就是说极有可能是不法分子窃取到之前客户端B第33次发送的的验证文件。

较佳的,本发明方法的另一实施例,具体的,如图5所示,包括步骤:

100服务器接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

S200所述客户端将所述用户获取的所述短信验证码通过算法进行加密生成短信密文;

S300所述客户端获取已验证次数,并添加本次验证,得到验证计数值;

S350所述客户端对所述验证计数值进行加密生成计数密文;

S410所述客户端将用户信息、客户端标识信息、所述计数密文、及短信密文组成的验证文件发送给所述服务器;

S510所述服务器接收所述计数密文和短信密文;

S520所述服务器使用解密算法解密所述计数密文,获得所述验证计数值;

S535所述服务器判断所述解密后的计数值与所述服务器存储的所述客户端的已验证计数值的差值,是否大于0且小于预设的最大差值,若是则进入步骤S536,否则进入步骤S538;

S536所述服务器解密接收的所述短信密文,获得短信验证码,并判断所述短信验证码是否与之前下发给所述用户的短信验证码是否一致,若是,进入步骤S537,否则进入步骤S538;

S537验证所述用户身份成功,并将所述服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值;

S538验证所述用户身份失败。

通过设置预设最大差值,避免了不法分子使用一个大计数值来蒙混验证。比如,如果不法分子用10000做为计数值,冒充合法客户端C来发起验证,服务器端如果解密获得的次数10000也显然大于实际存储的客户端C的已验证计数值256,由于10000>256,如果按照前面的实施例的话,则将会任务计数验证通过,而本实施例通过设置最大差值,则防止了这种情况发生,例如,预设的最大差值为100,则服务器在解密获得10000后,会进行判断,

10000-256=9744,显然,9744大于预设的最大差值100,也就是说9744不在0到100的范围内,那么就会判断验证失败。

较佳的,还包括步骤:

S080当所述服务器存储的已验证计数值与所述客户端存储的验证计数值的差值大于预设值时,校准所述客户端存储的验证计数值与所述服务器存储的所述客户端的已验证计数值。

由于可能存在网络或或被不法分子拦截等其它方面的原因,有可能客户端发出的验证,服务器未收到,那么就会导致客户端的验证次数的计数值和服务器存储的相应的已验证次数的计数值的差值会越来越大,因此,如果二者的差值超出了预设值时,则需对双方的计数值进行校准。校准的话,在客户端(或用户)通过验证后,以客户端存储的计数值为准进行校准,校准方式不限。

本发明方法的另一实施例,采用基于SOTP白盒密码技术的多因子短信验证码认证增强方案,解决普通短信验证码被盗取而产生的安全问题。即当用户手机接收到短信验证码后,填写到手机银行APP中,先经由SOTP插件加密,然后由银行APP端生成一个加密文件,对本次验证添加计数,当前计数器的值用RSA加密算法,生成计数密文,然后短信验证码密文和本次计数器密文一起发送到认证服务端,由认证服务端使用对应的解密算法先解密计数器的值,来跟服务端的值对比,如果服务器的值大于解密计数器的值,说明这条报文是被重放,验证了用户身份非法。如果合法的话,则进入第二步解密短信的密文验证用户身份。因为无法模拟SOTP安全加密机制,即使有攻击者截获了短信验证码,也无法完成交易认证流程。

本发明实施例解决的技术问题是服务器通过白盒密码技术对短信认证做增强保护及RSA算法对用户身份的识别,白盒密码技术:一种将算法密钥融合到算法中的加密技术。具体的认证示意图,如图6所示。

service下发短信验证码(A)给APP端,App端调用白盒密码,也就是本实施例中的SOTP插件加密生成S(A),连同用RSA加密的计数器的值,一起发送给service,serice通过解密RSA(conter)验证conter,来验证用户身份,如果正确则解密S(A)来验证短信码,达到保护用户短信验证的目的。本实施例中的算法还可采用重构机制根据用户信息进行重构,从而且具有一人一机一算法和一次一密的安全特性,同时除了短信验证进行加密外,还添加本地文件计数器,并对计数值进行加密,对短信验证做了增强保护。

基于相同的技术构思,本发明实施例还提供一种验证码安全加固的认证系统,该系统可执行上述方法实施例。本发明实施例提供的系统如图7所示,包括服务器200、与所述服务器200相连的客户端100,所述客户端100包括第一信息收发模块110、加密插件120、统计模块130及控制模块140,其中,所述控制模块140分别与所述第一信息收发模块110、加密插件120及统计模块130相连,其中:

所述服务器200接收用户发送的获取验证码请求后,下发短信验证码给所述用户;

所述客户端100的第一信息收发模块110获取到所述短信验证码后,所述加密插件120在所述控制模块140的作用下将所述短信验证码进行加密生成短信密文;

所述客户端100的统计模块130统计已验证次数,并添加本次验证,得到验证计数值;

所述客户端100的第一信息收发模块110在所述控制模块140的作用下,将用户信息、客户端标识信息、所述验证计数值和短信密文组成的验证文件发送给所述服务器200;

所述服务器200接收所述验证文件并进行验证。

本系统相对于传统的短信验证,通过对短信验证码进行加密,及统计已验证次数来进行双层保护,服务器在验证时,首先需要核对已验证次数是否正确,只有在已验证次数正确的情况下才会进一步去验证短信密文。因为客户端已验证次数是不断累计和更新的,使得不法分子冒充该用户的难度大大增强,增强了短信验证的安全性。

较佳的,在上述实施例基础上,所述客户端100还包括与所述控制模块140相连的计数加密模块150,其中:

所述客户端100的计数加密模块150在所述控制模块140的作用下,在获得验证计数值后对所述计数值进行加密生成计数密文;

所述客户端100的第一信息收发模块110在所述控制模块140的作用下,将用户信息、所述计数密文及短信密文组成的验证文件发送给所述服务器200进行验证。

加密插件120和计数加密模块150分别对短信验证码和验证计数值进行加密,他们采用的加密方法可以相同,也可以不同,当然,加密方法不同的话安全系数更高。通过双层独立的加密使得验证码认证更加安全。

本发明系统的第二实施例,在上述实施例一的基础上,所述服务器200包括第二信息收发模块210、密钥生成模块220、存储模块230及算法重构模块240,所述密钥生成模块220分别与所述第二信息收发模块210、存储模块230、及算法重构模块240相连,所述存储模块230分别与所述算法重构模块240、第二信息收发模块210相连,其中:

所述客户端100的第一信息收发模块110获取所述用户信息,并将所述用户信息发送至所述服务器200的第二信息收发模块210;

所述服务器200的第二信息收发模块210接收所述用户信息,所述密钥生成模块220根据所述用户信息生成与所述用户信息唯一关联的密钥参数,同时将所述密钥参数通过所述存储模块230进行存储;

所述服务器200的算法重构模块240结合所述存储模块230存储的所述密钥参数,通过算法重构机制将所述服务器200的存储模块230存储的算法进行重构生成新算法;

所述服务器200的第二信息收发模块210将所述新算法发送至所述客户端100的加密插件120进行存储。

本实施例中,密钥生成模块220根据用户信息生成与用户信息唯一关联的密钥参数,由于用户的唯一性,也就是使得密钥参数根据用户不同而不同,也就是说每一个用户的密钥参数都不同,进一步的,使得重构后的算法根据用户的不同而不同,达到了一人一密的效果。即使不法分子破解了一个用户,也不会影响到其它用户,不法分子不能批量破解用户,提高了算法在使用过程中的安全性,避免了安全隐患。

较佳的,在上述实施例二的基础上,所述服务器200的存储模块230存储的算法包括SOTP算法、数据码编码算法、数据码解码算法、及所述新算法;其中:

所述密钥生成模块220结合所述用户信息采用所述存储模块230中存储的SOTP算法进行运算,生成与所述用户信息唯一关联的密钥参数;

所述服务器200的算法重构模块240结合所述存储模块230存储的密钥参数和数据码编码算法重构生成所述服务器200的新算法;

所述服务器200的算法重构模块240结合所述存储模块230存储的密钥参数和数据码解码算法重构生成所述客户端100的新算法,并通过所述第二信息收发模块210将所述客户端100的新算法发送至所述客户端100的加密插件120进行存储。

较佳的,在上述实施例二的基础上,所述算法重构模块240至少包括以下一个单元:

运算顺序单元,用于所述密钥参数,确定所述新算法的运算顺序;

分组单元,用于根据所述密钥参数,确定所述新算法的分组数据块的结构,以及所述分组数据块的运算顺序;

固定参数确定单元,用于根据所述密钥参数,确定所述新算法中的固定参数。

本实施例中,服务器200会存储一个预存算法,也就是初始的算法,每个用户重构后的新算法都是在这个预存算法的基础上,结合密钥参数,通过改变预存算法的运算顺序、分组数据块结构和顺序,以及第一算法中包括的固定参数来实现重构,生成新算法。

较佳的,所述客户端100的计数加密模块150对所述计数值进行加密生成计数密文所采用的算法为RSA加密算法。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。

较佳的,在上述任一实施例的基础上,所述服务器200还包括与所述第二信息收发模块210相连的解密模块250、验证模块260,所述验证模块260分别与所述解密模块250、存储模块230相连,其中:

所述服务器200接收所述验证文件并进行验证包括:

所述服务器200的第二信息收发模块210接收所述验证文件;

所述服务器200的解密模块250解密所述验证文件中的计数密文,获得所述验证计数值;

所述服务器200的验证模块260判断所述验证计数值是否大于所述服务器200的存储模块230存储的所述客户端100的已验证计数值,

若所述验证模块260判断所述验证计数值大于所述服务器200的存储模块230存储的所述客户端100的已验证计数值,则所述服务器200的解密模块250解密接收的所述验证文件中的短信密文,获得短信验证码,所述验证模块260判断所述短信验证码是否与之前下发给所述用户的短信验证码是否一致,若是,则验证所述用户身份成功,并更新所述服务器200存储的所述客户端100的计数值为解密计数密文获得的计数值;否则验证所述用户身份失败;

若所述验证模块260判断所述验证计数值小于或等于所述服务器200的存储模块230存储的所述客户端100的已验证计数值,则判断所述报文被重放,验证所述用户身份失败。

服务器在接收到验证文件后,首先对计数密文进行解密验证,所述服务器在解密计数密文获得客户端的验证计数值后,可以与服务器内部存储的相应的已验证计数值进行比较(如果一人一机,则该服务器存储该用户的验证次数,如果不是用户与客户端绑定的话,则需存储该用户在该终端的已验证次数,当然,这种情况下,客户端发送的验证文件中还要包括客户端的标识信息),若所述验证模块判断所述验证计数值大于所述服务器的存储模块存储的所述客户端的已验证计数值,则计数值验证成功,此时再对短信密文进行验证,如果计数值验证失败,那么也就无需验证短信密文了,如此也减少了服务器的工作量,节省了验证时间。所述验证模块若验证所述用户身份成功,则更新所述服务器在存储模块存储的所述客户端的已验证计数值,将服务器存储的所述客户端的已验证计数值更新为解密计数密文获得的计数值。

进一步的,若所述服务器200的验证模块260判断所述解密后的计数值与所述服务器200的存储模块230存储的所述客户端100的验证计数值的差值,大于0且小于预设最大差值时,则计数值验证成功,然后再对短信密文进行解密验证。

通过设置预设最大差值,避免了不法分子使用一个超大计数值来蒙混验证。

较佳的,所述服务器200还包括校准模块270,所述校准模块270与所述验证模块260和存储模块230相连,其中:

当所述客户端100的统计模块130存储的验证计数值与所述服务器200的存储模块230存储的所述客户端100的已验证计数值的差值大于预设值时,所述校准模块270校准所述客户端100的统计模块130存储的验证计数值与所述服务器200的存储模块230存储的所述客户端100的已验证计数值。

客户端存储的计数值和服务器存储的相应的计数值差额较大时,需要进行校准。例如,差额的预设值为10,那么也就是说,如果客户端存储的验证计数值为33,而服务器端存储的该客户端已验证计数值为12,两者的差额达到了11,那么,就需要对双方的计数值进行校准了。校准时,可以在双方都认证通过后再将客户端存储的验证计数值作为标准,校准服务器存储的该客户端的已验证计数值,具体校准方式不限。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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