信息的处理方法及装置、信息的认证方法、装置及系统与流程

文档序号:13142045阅读:156来源:国知局
信息的处理方法及装置、信息的认证方法、装置及系统与流程

本发明涉及计算机技术领域,具体涉及一种信息的处理方法及装置、信息的认证方法、装置及系统。



背景技术:

随着大数据时代的来临,数据与人们生活的关系也越来越为密切,比如网络购物、转账、以及会话等等,无不涉及到数据的处理,因此,如何保障数据安全,是极为重要的一个问题。

目前的安全技术,一般是通过在客户端的登陆界面提交用户名和密码,然后将该用户名和密码发送给服务器端,由服务器对所述密码进行加密处理。

目前的技术主要的安全隐患在于:

(1)容易被暴力破解,比如通过穷举口令的各种组合,来尝试登陆;

(2)可以通过自动化撞库工具,进行撞库测试,从而筛选出用户名和口令;以及

(3)可以通过拖库的方式,下载保存了用户认证凭证的数据库,并以此还原用户的口令。

因此,现有技术在信息处理及认证过程中,安全性不够高。



技术实现要素:

本发明实施例提供一种信息的处理方法及装置、信息的认证方法、装置及系统,可以提高信息的安全性。

本发明实施例提供一种信息的处理方法,包括以下步骤:

通过页面接收用户输入的信息;

确认输入完成后,从所述页面的执行脚本中获取第一盐值,所述第一盐值为字母、数字、和/或字符;

通过所述第一盐值对所述信息进行加盐处理,以得到加盐信息;

对所述加盐信息执行慢速加密处理,以得到加密数据;以及

将所述加密数据发送至服务器。

相应的,本发明实施例还提供一种信息的处理装置,包括:

第一接收模块,用于通过页面接收用户输入的信息;

第一获取模块,用于确认输入完成后,从所述页面的执行脚本中获取第一盐值,所述第一盐值为字母、数字、和/或字符;

加盐模块,用于通过所述第一盐值对所述信息进行加盐处理,以得到加盐信息;

第一加密模块,用于对所述加盐信息执行慢速加密处理,以得到加密数据;以及

发送模块,用于将所述加密数据发送至服务器。

本发明实施例提供一种信息的认证方法,包括:

接收来自于终端设备加密数据;

提取第二盐值,根据所述第二盐值执行对所述加密数据加盐散列操作,以得到加盐散列;以及

将所述加盐散列与预先存储的散列进行对比,以生成认证结果。

相应的,本发明还提供了一种信息认证的装置,包括:

第三接收模块,用于接收来自于终端设备的加密数据;

第三加密模块,用于提取第二盐值,根据所述第二盐值对所述加密数据执行加盐散列操作,以得到加盐散列;以及

认证模块,用于将所述加盐散列与预先存储的散列进行对比,以生成认证结果。

此外,本发明还提供了一种信息的认证系统,包括上述任一项所述的信息的处理装置,以及上述任一项所述的信息的认证装置。

本发明实施例所提供的一种信息的处理方法及装置、信息的认证方法、装 置及系统,通过对输入的信息进行加盐处理和慢速加密处理,极大地提高了暴力破解工具或撞库工具所需要的时间,从而提高了信息的安全性。

附图说明

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

图1是本发明实施例一提供的一种信息的处理方法的流程图;

图2是本发明实施例二提供的一种信息的处理方法的流程图;

图3是本发明实施例三提供的一种信息的认证方法的流程图;

图4是本发明实施例四提供的一种信息的处理装置的结构示意图;

图5是本发明实施例五提供的一种信息的认证装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供一种信息的处理方法及装置、认证的方法、装置以及系统。以下将分别进行详细说明。

实施例一、

本实施例将从信息的处理装置的角度进行描述,该信息的处理装置具体可以集成在终端或其他需要进行信息加密处理的设备中,例如,手机、pad或者电脑等。

一种信息的处理方法,包括:通过页面接收用户输入的信息;确认输入完 成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符;通过该第一盐值对该信息进行加盐处理,以得到加盐信息;对该加盐信息执行慢速加密处理,以得到加密数据;将该加密数据发送至服务器。

如图1所示,该信息的处理方法的具体流程可以如下:

101、通过页面接收用户输入的信息。

例如,以该信息的处理装置集成在终端设备为例子,则该终端设备具体可以接收用户在登陆界面通过按键输入的密码信息,也可以是用户通过在该登陆界面滑动以生成对应图案从而产生的密码信息,等等。

102、确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符。

该执行脚本主要是用于在确认输出完成后,通过执行该执行脚本来对信息进行加盐操作。该执行脚本的源代码隐藏在前端的页面源代码中,该页面的源代码由该信息的处理装置从服务器中实时获取并动态更新。该步骤“确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符”具体包括:

确认输入完成后,解析该页面的源代码,从而获取隐藏页面源代码的执行脚本,并解析该执行脚本的源代码,从而从该执行脚本的源代码中获取到当前的第一盐值,也即是前端盐值。

103、通过该第一盐值对该信息进行加盐处理,以得到加盐信息。

例如,若输入的信息是:xzl2016,获取到的第一盐值是qq23a$,进行加盐处理后,该加盐信息为xzl2016qq23a$。为了提高安全性,该第一盐值优选采用数字和字母的混合并且6位以上。

104、对该加盐信息执行慢速加密处理,以得到加密数据。

该慢速加密处理可以采用对该加盐信息执行多次单向散列操作的方式,也可以采用通过专门的慢速加密函数来对该加盐信息进行加密处理,从而获取到加密数据。即步骤“对该加盐信息执行慢速加密处理,以得到加密数据”具体 可以采用如下任意一种方式:

(1)第一种方式:

获取散列操作的预定次数,对该加盐信息执行预定次数的单向散列操作。

其中,该散列操作的预定次数隐藏在执行脚本中,该执行脚本用于在确认加盐操作完成之后,通过运行该执行脚本来对该加盐信息进行慢速加密处理。该执行脚本隐藏在前端页面的源代码中,而该预定次数则隐藏在该执行脚本的源代码中。因此,该步骤“获取散列操作的预定次数”具体包括:解析该执行脚本的源代码;从该源代码中获取执行散列操作的预定次数。

其中,该预定次数一般为使得该信息的处理装置的前端延迟为百毫秒级,要使得达到百毫秒级,例如300~500毫秒,该散列操作的预定次数可以达到几十万次或上百万次,其具体次数根据需要达到的毫秒数,根据多次试验并计算得出。该单向散列操作可以采用md5(messagedigestalgorithm5)、sha(securehashalgorithm,含sha-1、sha-2、sha-3)等算法。

(2)第二种方式:

选择慢加密函数,该慢加密函数为bcrypt函数或scrypt函数;根据该慢加密函数对该加盐信息执行加密处理,以得到加密数据。

其中,该bcrypt函数是专门为密码存储而设计的算法,基于blowfish加密算法变形而来,由nielsprovos发表于1999年的usenix。bcrypt最大的好处是有一个参数(workfactor),可用于调整计算强度,从而调整通过该bcrypt函数进行慢速加密处理的处理时间。

scrypt函数是由著名的freebsd黑客colinpercival为他的备份服务tarsnap开发的。scrypt函数不仅计算所需时间长,而且占用的内存也多,使得并行计算多个摘要异常困难,因此利用彩虹表进行暴力攻击更加困难。

105、将该加密数据发送至服务器。

其中,该加密数据可以以该加密数据本身的状态也即是以该加密数据的明文状态发送给服务器进行认证。该加密数据也可以经过进一步地加密用于提高 破解工具的开发难度和延长破解时间,例如采用服务器的公钥进行非对称加密,再将非对称加密后的加密数据发送给服务器,服务器采用对应的私钥进行解密后,再进行相关的认证操作。

由上可知,本实施例采用通过页面接收用户输入的信息;确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符;通过该第一盐值对该信息进行加盐处理,以得到加盐信息;对该加盐信息执行慢速加密处理,以得到加密数据;将该加密数据发送至服务器,从而实现对信息的加密处理的目的,由于该方案中对该终端设备的页面输入的信息不仅进行了加盐处理,还进行慢速加密处理,使得在不影响用户体验的情况,在终端设备的执行耗时的加密操作,从而强制撞库工具执行同样的耗时动作才能够模拟登录动作,极大地提高了暴力破解工具或撞库工具所需要的时间,从而提高了信息的安全性。

实施例二、

本实施例将继续从信息的处理装置的角度进行描述,该信息的处理装置具体可以集成在终端或其他需要进行信息加密处理的设备中,例如,手机、pad或者电脑等。

一种信息的处理方法,包括:通过页面接收用户输入的信息;确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符;通过该第一盐值对该信息进行加盐处理,以得到加盐信息;对该加盐信息执行慢速加密处理,以得到加密数据;获取该服务器的公钥;选择非对称加密函数,该非对称加密函数包括rsa加密函数或ecc加密函数;根据该非对称加密函数和该公钥,对该加密数据执行非对称加密;获取防止跨站请求伪造的令牌字段;将用户名、该加密数据以及该防止跨站请求伪造的令牌字段发送给该服务器;接收服务器的认证结果,该认证结果是由服务器根据该用户名、该加密数据以及该防止跨站请求伪造的令牌字段进行认证后生成的。

其在实施例一的基础上进行进一步的改进,在本实施例中,如图2所示,该信息的处理方法的具体流程可以如下:

其中,该步骤201至步骤204与实施例一中的步骤101至步骤104相同,故不赘述。

205、获取该服务器的公钥。

该公钥隐藏在该执行脚本的源代码中,通过运行该执行脚本对该加密数据进行非对称加密。获取该服务器的公钥的方法包括:从该信息的处理装置的前端页面获取执行脚本,并解析该执行脚本的源代码,从而获得该服务器的公钥。

206、选择非对称加密函数,该非对称加密函数包括rsa加密函数或ecc加密函数。

该非对称加密函数,例如,rsa加密函数或ecc加密函数也是加载在该终端设备的页面中。通过解析前端页面的执行脚本的源代码可以获取到该非对称加密函数。

207、根据该非对称加密函数和该公钥,对该加密数据执行非对称加密。

通过该公钥以及已经选择好的非对称加密函数对该加密数据进行加密,从而实现对该加密数据的保密性进行进一步强化。

208、获取防止跨站请求伪造的令牌字段。

该令牌字段由服务器侧随机生成,然后发送给该信息的处理装置的页面,该页面每次进行刷新时,或者每次向服务器发送一次信息时,均需要该令牌字段。因此,暴力破解工具或撞库工具在尝试登录的过程中,每次尝试都必须提取该令牌字段才能合法提交认证信息。

209、将用户名、该加密数据以及该防止跨站请求伪造的令牌字段发送给该服务器。

服务器在接收到用户名、加密数据以及防止跨站请求伪造的令牌字段后,先判断该防止跨站请求伪造的令牌字段是否合法,然后对该加密数据进行一定处理,并根据该用户名在数据库中查询预先存储的参照数据,将该加密数据进 行一定处理后与该参照数据进行对比从而生成认证结果。

210、接收服务器的认证结果,该认证结果是由服务器根据该用户名、该加密数据以及该防止跨站请求伪造的令牌字段进行认证后生成的。

例如,如果防止跨站请求伪造的令牌字段过期或者重复使用,收到的认证结果是认证失败。如果防止跨站请求伪造的令牌字段正确,但是该用户名不存在或输入错误,认证的结果是用户名输入错误。如果防止跨站请求伪造的令牌字段正确、用户名正确,但是加密数据与预先存储的不符合,则认证的结果是密码输入错误。如果防止跨站请求伪造的令牌字段正确、用户名正确、加密数据均正确,则认证成功。

由上可知,本实施例通过在实施例一的基础上新增以下步骤:获取该服务器的公钥;选择非对称加密函数,该非对称加密函数包括rsa加密函数或ecc加密函数;根据该非对称加密函数和该公钥,对该加密数据执行非对称加密;获取防止跨站请求伪造的令牌字段;使得该经过加盐处理以及慢速加密处理的信息进一步进行非对称加密,从而进一步提高了该信息被破解的可能性,并且由于在发送给服务器的信息中加入了防止跨站请求伪造的令牌字段,进一步延长了暴力破解工具或撞库工具所需要的时间,从而进一步提高了信息的安全性。

实施例三、

本实施例将从服务器的角度进行描述,该信息的认证装置具体可以集成在该服务器中。

一种信息的认证方法,包括:

接收来自于终端设备的用户名、该加密数据、和该防止跨站请求伪造的令牌字段;

当该防止跨站请求伪造的令牌字段满足预定值时,判断该加密数据是否启用了非对称加密;

若启用,则通过私钥解密,以得到慢速加密的加密数据;

提取第二盐值,根据该第二盐值执行加盐散列操作,以得到加盐散列;

将该加盐散列与预先存储的散列进行对比,以生成认证结果。

如图3所示,该信息的认证方法的具体流程可以如下:

301、接收来自于终端设备的用户名、该加密数据、和该防止跨站请求伪造的令牌字段。

其中,该用户名为用户在终端设备的登陆页面输入的名称,例如张三、tom、jack123等。该加密数据可以是对用户在输入界面输入的密码信息进行加密处理后的数据。该密码信息可以是信息输入按键输入的密码信息,也可以是用户通过在该登陆界面滑动以生成对应图案从而产生的密码信息。该防止跨站请求伪造的令牌字段由服务器生成并发送给终端设备的,终端设备每次提交认证信息时,都需要提交该防止跨站请求伪造的令牌字段才能算是合法认证。

302、当该防止跨站请求伪造的令牌字段满足预定值时,判断该加密数据是否启用了非对称加密。

该步骤302具体包括:

3021、判断该防止跨站请求伪造的令牌字段满足预定值。

3022、若满足预定值,则判断该加密数据是否启用了非对称加密。其中,当该防止跨站请求伪造的令牌字段不满足预定值时,有可能是该防止跨站请求伪造的令牌字段已经过期或者是重复提交的,在这种情况下,直接判断该终端设备发起的认证请求失败,并结束认证流程。

其中,当该防止跨站请求伪造的令牌字段满足预定值时,可以通过查询比对该加密数据中的加密标识来判断是否采用了非对称加密。如果没有采用非对称加密,则直接跳转至步骤304,如果采用了非对称加密则跳转至步骤303进行解密。

303、若启用了非对称加密,则通过私钥解密,以得到慢速加密的加密数据。

如果判断该加密数据采用了非对称加密,则从该服务器的存储区获取与终端设备采用的公钥所对应的私钥进行解密,从而得到位于终端设备的信息的处理装置采取慢速加密操作的加密数据。其中,该终端设备采用的非对称加密可以为rsa加密函数或ecc加密函数。

304、提取第二盐值,根据该第二盐值执行加盐散列操作,以得到加盐散列。

该步骤“提取第二盐值,根据该第二盐值执行加盐散列操作,以得到加盐散列。”具体包括以下子步骤:

提取第二盐值,根据该第二盐值执行加盐操作,以得到加盐数据。该第二盐值也即是后端盐值是由预先保存在该服务器的数据库中的随机盐值和写在代码中的固定盐值合并而成。其与终端设备进行加盐处理所采用的第一盐值不相同,以提高安全性。该第二盐值可以是字母、数字、和/或字符。

对该加盐数据执行单向散列操作,以得到加盐散列。

该单向散列操作优先采用sha-2或sha-3算法。

305、将该加盐散列与预先存储的散列进行对比,以生成认证结果。

预先存储的散列是将与用户名对应的信息如密码信息,进行了以下操作后生成:

第一次加盐处理、慢速加密处理、非对称加密处理、解密处理、第二次加盐操作以及单向散列处理。该第一加盐处理的盐值与在终端设备中进行加盐操作的前端盐值相同。该慢速加密处理采用与在终端设备进行的慢速加密处理方式相同。该非对称加密采用的是服务器的公钥,该解密处理采用的是服务器的私钥,该第二次加盐操作的盐值是与在服务器端进行的加盐操作的第二盐值相同,该单向散列处理所采用的函数与在服务器端进行单向散列处理所采用的函数相同。

由上可知,本实施例采用接收来自于终端设备的用户名、该加密数据、和该防止跨站请求伪造的令牌字段;提取第二盐值,根据该第二盐值执行加盐散 列操作,以得到加盐散列;将该加盐散列与预先存储的散列进行对比,以生成认证结果,来实现对来自终端设备的加密数据进行认证的目的,由于其在认证过程中对加密数据进行了加盐处理以及单向散列处理,而非对用户发送的数据进行直接对比,有利于提高在服务器的数据库中的用户数据例如用户密码的安全性,提高了防撞库的能力。另外,由于在验证前还进行了防止跨站请求伪造的令牌字段的验证,可以提高防撞库的能力。

实施例四、

为了更好地实施以上方法,本发明实施例还提供一种信息的处理装置,如图4所示,该信息的处理装置还可以包括:第一接收模块401、第一获取模块402、加盐模块403、第一加密模块404、第二获取模块405、选择模块406、第二加密模块407、第三获取模块408、发送模块409和第二接收模块410,如下:

(1)第一接收模块401:

该第一接收模块401用于通过页面接收用户输入的信息。

例如,该第一接收模块401具体可以接收用户在登陆界面通过信息输入按键输入的密码信息,也可以接收用户通过在该登陆界面滑动以生成对应图案从而产生的密码信息

(2)第一获取模块402:

该第一获取模块402用于确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符。

其中,该执行脚本主要是用于在确认输出完成后,通过执行该执行脚本来对信息进行加盐操作。该执行脚本的源代码隐藏在前端的页面源代码中,该页面的源代码由该信息的处理装置从服务器中实时获取并动态更新。该第一获取模块402具体用于在确认输入完成后,解析该页面的源代码,从而获取隐藏页面源代码的执行脚本,并解析该执行脚本的源代码,从而从该执行脚本的源代码中获取到当前的第一盐值,也即是前端盐值。

(3)加盐模块403:

加盐模块403用于通过该第一盐值对该信息进行加盐处理,以得到加盐信息。

例如,若输入的信息是:tom216,获取到的第一盐值是asd23$,进行加盐处理后,该加盐信息为tom216asd23$。为了提高安全性,该第一盐值优选采用数字和字母的混合并且6位以上。

(4)第一加密模块404:

第一加密模块404用于对该加盐信息执行慢速加密处理,以得到加密数据。

该第一加密模块404可以采用对该加盐信息执行多次单向散列操作的方式,也可以采用通过专门的慢速加密函数来对该加盐信息进行加密处理,从而获取到加密数据。

因此,该第一加密模块404可以包括获取单元和执行单元。

获取单元用于获取散列操作的预定次数。执行单元用于对该加盐信息执行所述预定次数的单向散列操作。

其中,该散列操作的预定次数隐藏在执行脚本中,该执行脚本用于在确认加盐操作完成之后,通过运行该执行脚本来对该加盐信息进行慢速加密处理。该执行脚本隐藏在前端页面的源代码中,而该预定次数则隐藏在该执行脚本的源代码中。该获取单元包括:解析子单元以及解析子单元。该解析子单元用于解析该执行脚本的源代码。该解析子单元用于从该源代码中获取执行散列操作的预定次数。该预定次数一般为使得该信息的处理装置的前端延迟为百毫秒级,要使得达到百毫秒级,例如500毫秒或者600毫秒,该散列操作的预定次数可以达到几十万次或上百万次,其具体次数根据需要达到的毫秒数,根据多次试验并计算得出。

或者,该第一加密模块404还可以包括选择单元和慢速加密单元。

该选择单元用于选择慢加密函数,该慢加密函数为bcrypt函数或scrypt函数;

慢速加密单元用于根据慢加密函数对该加盐信息执行加密处理,以得到加密数据。

(5)第二获取模块405:

第二获取模块405用于获取服务器的公钥。

该公钥隐藏在该执行脚本的源代码中,通过运行该执行脚本对该加密数据进行非对称加密。第二获取模块405具体用于从该信息的处理装置的前端页面获取执行脚本,并解析该执行脚本的源代码,从而获得该服务器的公钥。

(6)选择模块406:

该选择模块406用于选择非对称加密函数,该非对称加密函数可以包括rsa加密函数或ecc加密函数。该非对称加密函数,例如,rsa加密函数或ecc加密函数也是加载在该终端设备的页面中。通过解析前端页面的执行脚本的源代码可以获取到该非对称加密函数。

(7)第二加密模块407:

该第二加密模块407用于根据所选非对称加密函数和公钥,对该加密数据执行非对称加密。通过该公钥以及已经选择好的非对称加密函数对该加密数据进行加密,从而提高破解工具的开发难度及进一步延长破解时间。

(8)第三获取模块408:

该第三获取模块408用于获取防止跨站请求伪造的令牌字段。

(9)发送模块409:

该发送模块409用于将该加密数据发送至服务器,或者具体地,该发送模块409用于将用户名、加密数据以及防止跨站请求伪造的令牌字段发送给服务器。该令牌字段由服务器侧随机生成,然后发送给该信息的处理装置的页面,该页面每次进行刷新时,或者每次向服务器发送一次信息时,均需要该令牌字段。因此,撞库工具在进行撞库的过程中,每次撞库都必须提取该令牌字段才能合法提交认证信息。

(10)第二接收模块410:

第二接收模块用于接收服务器的认证结果。该认证结果是由服务器根据所述用户名、加密数据以及防止跨站请求伪造的令牌字段进行认证后生成的。例如,如果防止跨站请求伪造的令牌字段过期或者重复使用,收到的认证结果是认证失败。如果防止跨站请求伪造的令牌字段正确,但是该用户名不存在或输入错误,认证的结果是用户名输入错误。如果防止跨站请求伪造的令牌字段正确、用户名正确,但是加密数据与预先存储的不符合,则认证的结果是密码输入错误。如果防止跨站请求伪造的令牌字段正确、用户名正确、加密数据均正确,则认证成功。

由上可知,本实施例采用通过第一接收模块来接收用户输入的信息,通过第一获取模块来在确认输入完成后,从该页面的执行脚本中获取第一盐值,该第一盐值为字母、数字、和/或字符;通过加盐模块来根据该第一盐值对该信息进行加盐处理,以得到加盐信息;通过第一加密模块来对该加盐信息执行慢速加密处理,以得到加密数据;将该加密数据发送至服务器,从而实现对信息的加密处理的目的,由于该方案中对该终端设备的页面输入的信息不仅进行了加盐处理,还进行慢速加密处理,使得在不影响用户体验的情况,在终端设备的执行耗时的加密操作,从而强制撞库工具执行同样的耗时动作才能够模拟撞库动作,极大地提高了撞库工具进行撞库所需要的时间,从而提高了信息的安全性。

实施例五、

为了更好地实施以上方法,本发明实施例还提供一种信息的认证装置,如图5所示,该信息的认证装置还可以包括:第三接收模块501、判断模块502、解密模块503、第三加密模块504以及认证模块505。

(1)第三接收模块501:

该第三接收模块501用于接收来自于终端设备的用户名、加密数据、和防止跨站请求伪造的令牌字段。

其中,该用户名为用户在终端设备的登陆页面输入的名称,例如张三、tom、jack123等。该加密数据可以是对用户在输入界面输入的密码信息进行加密处理后的数据。该密码信息可以是信息输入按键输入的密码信息,也可以是用户通过在该登陆界面滑动以生成对应图案从而产生的密码信息。该防止跨站请求伪造的令牌字段由服务器生成并发送给终端设备的,终端设备每次提交认证信息时,都需要提交该防止跨站请求伪造的令牌字段才能算是合法认证。

(2)判断模块502:

该判断模块502用于当该防止跨站请求伪造的令牌字段满足预定值时,判断该加密数据是否启用了非对称加密。

(3)解密模块503:

该解密模块503用于当该加密数据启用了非对称加密时,通过私钥解密,以得到慢速加密的加密数据。

如果判断该加密数据采用了非对称加密,解密模块503则从该服务器的存储区获取与终端设备采用的公钥所对应的私钥进行解密,从而得到位于终端设备的信息的处理装置采取慢速加密操作的加密数据。其中,该终端设备采用的非对称加密可以为rsa加密函数或ecc加密函数。

(4)第三加密模块504:

该第三加密模块504用于提取第二盐值,根据所述第二盐值执行加盐散列操作,以得到加盐散列。具体地,第三加密模块包括:加盐单元以及散列单元。

该加盐单元用于提取第二盐值,根据该第二盐值执行加盐操作,以得到加盐数据。该第二盐值也即是后端盐值是由预先保存在该服务器的数据库中的随机盐值(每个用户使用不同的盐值)和写在代码中的固定盐值(所有用户使用同一盐值)合并而成。其与终端设备进行加盐处理所采用的第一盐值不相同,以提高安全性。该第二盐值可以是字母、数字、和/或字符。

散列单元用于对该加盐数据执行单向散列操作,以得到加盐散列。该单向散列操作优先采用sha-2或sha-3算法。

(5)认证模块505:

该认证模块505用于将该加盐散列与预先存储的散列进行对比,以生成认证结果。预先存储的散列是将与用户名对应的信息如密码信息,进行了以下操作后生成:

第一次加盐处理、慢速加密处理、非对称加密处理、解密处理、第二次加盐操作以及单向散列处理。该第一加盐处理的盐值与在终端设备中进行加盐操作的前端盐值相同。该慢速加密处理采用与在终端设备进行的慢速加密处理方式相同。该非对称加密采用的是服务器的公钥,该解密处理采用的是服务器的私钥,该第二次加盐操作的盐值是与在服务器端进行的加盐操作的第二盐值相同,该单向散列处理所采用的函数与在服务器端进行单向散列处理所采用的函数相同。

由上可知,本实施例采用第三接收模块接收来自于终端设备的用户名、该加密数据、和该防止跨站请求伪造的令牌字段,采用判断模块在当该防止跨站请求伪造的令牌字段满足预定值时,判断该加密数据是否启用了非对称加密;解密模块用于在启用了非对称加密时,则通过私钥解密,以得到慢速加密的加密数据,采用第三加密模块来提取第二盐值,根据该第二盐值执行加盐散列操作,以得到加盐散列;采用认证模块来将该加盐散列与预先存储的散列进行对比,以生成认证结果,从而实现对来自终端设备的加密数据进行认证的目的,由于其在认证过程中对加密数据进行了加盐处理以及单向散列处理,而非对用户发送的数据进行直接对比,有利于提高在服务器的数据库中的用户数据例如用户密码的安全性。另外,由于在验证前还进行了防止跨站请求伪造的令牌字段的验证,可以提高防撞库的能力。

实施例六、

此外,本发明实施例还提供一种信息的认证系统,可以包括本发明实施例所提供的任一种信息的处理装置以及信息的认证装置,该信息的处理装置可参 见实施例四,该信息的认证装置可参见实施例五。在此不再赘述。

其中,该信息的处理装置可以集成在终端设备端,例如手机、平板电脑等。

该信息的认证装置可以集成在服务器中。

下面详细说明该信息的认证系统的工作过程。

在终端设备侧,在该信息的处理装置中,第一接收模块401接收用户通过浏览器的登陆界面输入的密码信息,记为:password。

第一获取模块402从执行脚本中获取第一盐值也即是前端盐值,记为:front_salt。

加盐模块403通过该第一盐值对该信息进行加盐处理,以得到加盐信息,该加盐信息记为:password+front_salt。

第一加密模块404对该加盐信息执行慢速加密处理,在此处为执行预定次数的单向散列处理,得到加密数据hash(...hash(password+front_salt)),记录为slow_hash(password)。

第二获取模块405获取该服务器的公钥,该选择模块406选择非对称加密函数:rsa加密函数或ecc加密函数。

第二加密模块407根据所选非对称加密函数和公钥,对该加密数据执行非对称加密操作。该经过非对称加密之后的加密数据记录为:

rsa(slow_hash(password))。

第三获取模块408获取防止跨站请求伪造的令牌字段。

发送模块409将用户名、加密数据以及防止跨站请求伪造的令牌字段发送给服务器。

在服务器侧,在该信息的认证装置中,

第三接收模块501接收来自于终端设备的用户名、加密数据、和防止跨站请求伪造的令牌字段。如果该加密数据时经过非对称加密的,其可以记为:rsa(slow_hash(password))。

断模块502用于当该防止跨站请求伪造的令牌字段满足预定值时,判断该 加密数据是否启用了非对称加密。

该解密模块503在当该加密数据启用了非对称加密时,通过私钥解密,以得到慢速加密的加密数据,记为slow_hash(password)。

第三加密模块504的加盐单元提取并计算出第二盐值back_salt,也即是后端盐值,由预先保存在该服务器的数据库中的随机盐值(每个用户使用不同的盐值)和写在代码中的固定盐值(所有用户使用同一盐值)合并而成,根据该第二盐值执行加盐操作,以得到加盐数据,记为slow_hash(password)+back_salt。

第三加密模块504的散列单元对该加盐数据执行单向散列操作,以得到加盐散列记录为hash(slow_hash(password)+back_salt)。

认证模块505将该加盐散列与预先存储的散列进行对比,以生成认证结果。该预先存储的散列的存储形态为hash(slow_hash(password0)+back_salt)。

本实施例提供的信息的认证系统大幅度降低了用户方密码等信息所面临的暴力破解、撞库、拖库风险:

针对暴力破解,采用前端慢速加密操作之后,假设前端延迟为500毫秒左右,则一天只能尝试17万次,而一个普通的8位纯数字口令,组合有1亿次,暴力破解一个用户的8位纯数字密码需要588天,而破解一个用户的8位大小写字母和数字组合的口令需要亿年以上,这就让暴力穷举变得不可能。

针对撞库,前端各个执行脚本机制无法绕过,没有现成的自动化撞库工具可以使用,黑客必须针对具体的应用自行开发撞库工具,且开发难度较高,需要在客户端实现应用前端的全部安全机制才能继续,包括提取第一盐值和crfttoken防止跨站请求伪造的令牌字段、执行慢加密操作、执行非对称加密操作措施。由于该工具不具有通用性,只有黑客确信某应用的价值极高,且服务器侧没有采取其它防撞库措施(如限制登录频度)的情况下,才有可能开发专用的撞库工具。在强制延时的情况下,1天也只能尝试几万次,极大的提高 了撞库时间成本,为业务争取了必要的修复时间。

针对拖库,由于服务器侧存储的是前端慢速加密结果的加盐散列值,而前端慢速加密结果本身就是符合高强度要求的超长字符串,对其爆破是完全无效的,只能在熟悉应用本身的认证逻辑并在本地重建认证过程才有可能,通常只有系统开发人员才具备条件;对其撞库,由于第二盐值也即是后端盐值是由预先保存在该服务器的数据库中的随机盐值(每个用户使用不同的盐值)和写在代码中的固定盐值(所有用户使用同一盐值)合并而成,仅拿到数据库则只有随机盐值没有固定盐值,无法撞库,只有将数据库和服务器代码全部拿到才有可能。

采取前端慢速加密技术之后,服务器不再收到用户的真正口令,降低了服务器侧泄密的风险。

充分的利用了前端资源,在用户侧即可大幅度降低撞库威胁,减轻了服务器的负担。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(rom,readonlymemory)、随机存取记忆体(ram,randomaccessmemory)、磁盘或光盘等。

以上对本发明实施例所提供的一种时长获取方法和装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

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