口令信息加固与数据处理方法、设备、系统及存储介质转让专利

申请号 : CN201810962226.8

文献号 : CN110858832A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张佳辰

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请实施例提供一种口令信息加固与数据处理方法、设备、系统及存储介质。在本申请实施例中,以用户输入的原始口令信息为数据基础,生成多个数据片段,并对多个数据片段进行哈希处理,进而获得多个哈希结果;之后将多个哈希结果进行融合处理以得到目标口令信息,并将其上报给服务器进行认证处理。其中,得到目标口令信息需要经过对多个数据片段进行哈希处理的过程,需要经过大量的计算工作,这就意味着如果攻击者要破解目标口令信息,则每次破解都需要执行和加固处理时等量的计算工作,这无疑提高了目标口令信息被破解的难度,进而可降低口令被破解的概率,提高口令安全性。

权利要求 :

1.一种口令信息加固方法,其特征在于,包括:获取用户输入的原始口令信息;

以所述原始口令信息为数据基础,生成多个数据片段;

对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;

对所述多个哈希结果进行融合处理以得到目标口令信息,所述目标口令信息被上报给服务器进行认证处理。

2.根据权利要求1所述的方法,其特征在于,以所述原始口令信息为数据基础,获得多个数据片段,包括:将所述原始口令信息扩展为第一固定长度的数据串;

对所述第一固定长度的数据串进行切分以获得多个数据片段。

3.根据权利要求2所述的方法,其特征在于,将所述原始口令信息扩展为第一固定长度的数据串,包括:采用非内存困难型哈希函数,对所述原始口令信息与站点ID进行哈希处理,以获得所述第一固定长度的数据串。

4.根据权利要求1所述的方法,其特征在于,对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,包括:将所述多个数据片段拆分为L1和L2个数据片段;

利用用于本次口令信息加固操作的K个CPU线程,采用内存困难型哈希函数对所述L1个数据片段分别进行哈希处理,以获得L1个哈希结果;

利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述L2个数据片段分别进行哈希处理,以获得L2个哈希结果;

其中,L1、L2是大于或等于1的整数,M、K是大于或等于2的整数。

5.根据权利要求4所述的方法,其特征在于,在对每个数据片段分别进行哈希处理,以获得多个哈希结果之前,还包括:获取计算机设备的CPU核数,并根据所述CPU核数创建K个CPU线程;

获取所述计算机设备的GPU资源,并在获取到所述GPU资源时初始化GPU渲染管线数M。

6.根据权利要求4所述的方法,其特征在于,利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述L2个数据片段分别进行哈希处理,以获得L2个哈希结果,包括:每次从所述L2个数据片段中提取尚未处理的M个数据片段,将所述M个数据片段转换为M张图形并分别送入M个GPU渲染管线进行哈希处理;

其中,在每个GPU渲染管线内部,采用非内存困难型哈希函数对相应图形循环执行N次哈希处理,以获得一个哈希结果;N是大于或等于2的整数。

7.根据权利要求6所述的方法,其特征在于,还包括:在每次利用M个GPU渲染管线对M张图像进行哈希处理结束后,判断本次的处理耗时与上一次的处理耗时是否在设定误差范围内;

若是,则根据管线数调整步长更新当前管线数M,将更新后的管线数M作为下一次哈希处理使用的管线数;

若否,将上一次哈希处理使用的管线数作为下一次哈希处理使用的管线数。

8.根据权利要求1所述的方法,其特征在于,对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,包括:利用用于本次口令信息加固操作的K个CPU线程,采用内存困难型哈希函数对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,K是大于或等于2的整数。

9.根据权利要求1所述的方法,其特征在于,对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,包括:利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,M是大于或等于2的整数。

10.根据权利要求1-9任一项所述的方法,其特征在于,根据所述多个哈希结果得到目标口令信息,包括:将所述多个哈希结果进行合并,以获得合并结果;

采用非内存困难型哈希函数,对所述合并结果进行哈希处理,以获得第二固定长度的数据串作为所述目标口令信息。

11.一种计算机设备,其特征在于,包括:存储器和处理器;

所述存储器,用于存储计算机程序;

所述处理器,用于执行所述计算机程序,以用于:获取用户输入的原始口令信息;

以所述原始口令信息为数据基础,生成多个数据片段;

对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;

对所述多个哈希结果进行融合处理以得到目标口令信息,所述目标口令信息被上报给服务器进行认证处理。

12.根据权利要求11所述的计算机设备,其特征在于,所述处理器在获得多个数据片段时,具体用于:将所述原始口令信息扩展为第一固定长度的数据串;

对所述第一固定长度的数据串进行切分以获得多个数据片段。

13.根据权利要求12所述的计算机设备,其特征在于,所述处理器在将所述原始口令信息扩展为第一固定长度的数据串时,具体用于:采用非内存困难型哈希函数,对所述原始口令信息与站点ID进行哈希处理,以获得所述第一固定长度的数据串。

14.根据权利要11所述的计算机设备,其特征在于,所述处理器在获得多个哈希结果时,具体用于:将所述多个数据片段拆分为L1和L2个数据片段;

利用用于本次口令信息加固操作的K个CPU线程,采用内存困难型哈希函数对所述L1个数据片段分别进行哈希处理,以获得L1个哈希结果;

利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述L2个数据片段分别进行哈希处理,以获得L2个哈希结果;

其中,L1、L2是大于或等于1的整数,M、K是大于或等于2的整数。

15.根据权利要11-14任一项所述的计算机设备,其特征在于,所述处理器在得到目标口令信息时,具体用于:将所述多个哈希结果进行合并,以获得合并结果;

采用非内存困难型哈希函数,对所述合并结果进行哈希处理,以获得第二固定长度的数据串作为所述目标口令信息。

16.一种存储有计算机程序的可读计算机存储介质,其特征在于,所述计算机程序被执行时,可执行权利要求1-10任一项所述方法中的操作。

17.一种网站系统,其特征在于,包括:计算机设备和网站服务器;

所述计算机设备,用于获取用户通过所述计算机设备上运行的浏览器输入的原始口令信息;以所述原始口令信息为数据基础,生成多个数据片段;对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;对所述多个哈希结果进行融合处理以得到目标口令信息,将所述目标口令信息上报给网站服务器进行认证处理;

所述网站服务器,用于接收所述计算机设备发送的所述目标口令信息,根据所述目标口令信息对所述用户进行认证处理。

18.一种数据处理方法,用于第一计算设备,其特征在于,所述方法包括:所述第一计算设备获取第一口令信息,其中,所述第一口令信息与第一账户对应;

所述第一计算设备基于所述第一口令信息,生成多个数据片段;

所述第一计算设备基于所述多个数据片段,生成第二口令信息,其中,所述第二口令信息与所述第一账户对应;

所述第一计算设备将所述第二口令信息发送给第二计算设备。

19.根据权利要求18所述的方法,其特征在于,基于所述第一口令信息,生成多个数据片段,包括:将所述第一口令信息以预设切分长度进行切分,生成多个数据片段;

或者,

将所述第一口令信息扩展为第一固定长度的数据串,对所述第一固定长度的数据串以预设切分长度进行切分,获得多个数据片段;

或者,

将所述第一口令信息以随机切分长度进行切分,生成多个数据片段。

20.根据权利要求18所述的方法,其特征在于,基于所述多个数据片段,生成第二口令信息,包括:对所述多个数据片段分别进行哈希处理,得到多个哈希结果;

对所述多个哈希结果进行融合处理,得到第二口令信息。

21.根据权利要求18-20任一项所述的方法,其特征在于,所述第一口令信息包括所述第一账户;或者,所述第一口令信息包括与所述第一账户对应的第一密码;或者,所述第一口令信息包括所述第一账户和与所述第一账户对应的第一密码。

22.一种数据处理方法,其特征在于,包括:

接收第一记录,并将所述第一记录存储至数据库中;其中,所述第一记录包括第一口令信息,所述第一口令信息以第一加密方式被加密;

接收第二记录,并将所述第二记录存储至所述数据库中;其中,所述第二记录包括第二口令信息,所述第二口令信息以第二加密方式被加密;

其中,所述第一加密方式不同于所述第二加密方式。

23.一种数据库,用于存放口令信息,其特征在于,包括:第一记录,其中,所述第一记录包括第一口令信息,所述第一口令信息以第一加密方式保持;

第二记录,其中,所述第二记录包括第二口令信息,所述第二口令信息以第二加密方式保持;

其中,所述第二加密方式与所述第一加密方式不同。

说明书 :

口令信息加固与数据处理方法、设备、系统及存储介质

技术领域

[0001] 本申请涉及互联网技术领域,尤其涉及一种口令信息加固与数据处理方法、设备、系统及存储介质。

背景技术

[0002] 随着互联网技术的发展,为用户提供服务的网站越来越多。为便于管理用户,保证网站安全,这些网站大多会要求用户注册账号和密码等口令信息,进而通过账号和密码对用户进行管理和区分。
[0003] 当用户通过浏览器访问网站提供的特定网页时,需要输入预先注册的账号和密码进行登录。在实际应用中,网站服务器可能遭受网络攻击,导致网站用户的账号和密码被泄露。这些被泄露的账号和密码一旦被攻击者破解,很可能会给用户造成巨大损失。
[0004] 在现有技术中,越来越多的网站采用增强账号和密码强度的方式,强制用户设置复杂度较高的账号和密码,以降低被破解的概率,提高安全性。然而,这种方式对安全性的提高很有限,账号和密码的安全性仍有待进一步提高。

发明内容

[0005] 本申请的多个方面提供一种口令信息加固与数据处理方法、设备、系统及存储介质,用以借助加固口令信息来提升其被破解的难度,进而提高口令信息的安全性。
[0006] 本申请实施例提供一种口令信息加固方法,包括:获取用户输入的原始口令信息;以所述原始口令信息为数据基础,生成多个数据片段;对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;对所述多个哈希结果进行融合处理以得到目标口令信息,所述目标口令信息被上报给服务器进行认证处理。
[0007] 本申请实施例还提供一种计算机设备,包括:存储器和处理器;所述存储器,用于存储计算机程序;所述处理器,用于执行所述计算机程序,以用于:获取用户输入的原始口令信息;以所述原始口令信息为数据基础,生成多个数据片段;对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;对所述多个哈希结果进行融合处理以得到目标口令信息,所述目标口令信息被上报给服务器进行认证处理。
[0008] 本申请实施例还提供一种网站系统,包括:计算机设备和网站服务器;所述计算机设备,用于获取用户通过所述计算机设备上运行的浏览器输入的原始口令信息;以所述原始口令信息为数据基础,生成多个数据片段;对所述多个数据片段分别进行哈希处理,以获得多个哈希结果;对所述多个哈希结果进行融合处理以得到目标口令信息,将所述目标口令信息上报给网站服务器进行认证处理;所述网站服务器,用于接收所述计算机设备发送的所述目标口令信息,根据所述目标口令信息对所述用户进行认证处理。
[0009] 本申请实施例还提供一种存储有计算机程序的可读计算机存储介质,所述计算机程序被执行时,可执行上述方法中的操作。
[0010] 本申请实施例还提供一种数据处理方法,用于第一计算机设备,该方法包括:所述第一计算设备获取第一口令信息,其中,所述第一口令信息与第一账户对应;所述第一计算设备基于所述第一口令信息,生成多个数据片段;所述第一计算设备基于所述多个数据片段,生成第二口令信息,其中,所述第二口令信息与所述第一账户对应;所述第一计算设备将所述第二口令信息发送给第二计算设备。
[0011] 本申请实施例还提供一种数据处理方法,包括:接收第一记录,并将所述第一记录存储至数据库中;其中,所述第一记录包括第一口令信息,所述第一口令信息以第一加密方式被加密;接收第二记录,并将所述第二记录存储至所述数据库中;其中,所述第二记录包括第二口令信息,所述第二口令信息以第二加密方式被加密;其中,所述第一加密方式不同于所述第二加密方式。
[0012] 本申请实施例还提供一种数据库,用于存放口令信息,包括:第一记录,其中,所述第一记录包括第一口令信息,所述第一口令信息以第一加密方式保持;第二记录,其中,所述第二记录包括第二口令信息,所述第二口令信息以第二加密方式保持;其中,所述第二加密方式与所述第一加密方式不同。
[0013] 在本申请实施例中,首先获取用户输入的原始口令信息,并以该原始口令信息为数据基础,生成多个数据片段,并对多个数据片段进行哈希处理,进而获得多个哈希结果;之后将多个哈希结果进行融合处理以得到目标口令信息,并将其上报给服务器进行认证处理。其中,得到目标口令信息需要经过对多个数据片段进行哈希处理的过程,需要经过大量的计算工作,这就意味着加固后的目标口令信息的复杂度比较高,如果攻击者要暴力破解目标口令信息,每次破解都需要执行和加固处理时等量的计算工作,这无疑提高了破解难度,降低了口令被破解的概率,提高口令安全性。

附图说明

[0014] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0015] 图1为本申请一实施例提供一种网站系统的结构示意图;
[0016] 图2a为本申请一实施例提供的一种口令信息加固方法的流程示意图;
[0017] 图2b为本申请一实施例提供的一种数据处理方法的流程示意图;
[0018] 图3为本申请一实施例提供的一种计算机设备的结构示意图。

具体实施方式

[0019] 为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0020] 针对现有口令加强方式对防止口令破解有限的技术问题,在本申请一些实施例中,以用户输入的原始口令信息为数据基础,生成多个数据片段,并对多个数据片段进行哈希处理,进而获得多个哈希结果;之后对多个哈希结果进行融合处理以得到目标口令信息,并将其上报给服务器进行认证处理。其中,得到目标口令信息需要经过对多个数据片段进行哈希处理的过程,需要经过大量的计算工作,这就意味着加固后的目标口令信息的复杂度比较高,如果攻击者要暴力破解目标口令信息,则每次破解都需要执行和加固处理时等量的计算工作,这无疑提高了破解难度,进而可降低口令被破解的概率,提高口令安全性。
[0021] 以下结合附图,详细说明本申请各实施例提供的技术方案。
[0022] 图1为本申请一实施例提供的一种网站系统的结构示意图。如图1所示,该网站系统10包括:计算机设备10a和网站服务器10b。图1中所呈现的计算机设备10a和网站服务器10b只是示例性说明,并不对二者的实现形式做限定。
[0023] 其中,计算机设备10a和网站服务器10b之间可以是无线或有线连接。可选地,计算机设备10a可以通过移动网络和网站服务器10b通信连接,相应地,移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、WiMax等中的任意一种。可选地,计算机设备10a也可以通过蓝牙、WiFi、红外线等方式和网站服务器10b通信连接。
[0024] 在本实施例中,计算机设备10a是指用户使用的,具有用户所需计算、上网、通信等功能的设备,例如可以是智能手机、平板电脑、个人电脑、穿戴设备等。计算机设备10a通常包括至少一个处理单元和至少一个存储器。处理单元和存储器的数量取决于计算机设备10a的配置和类型。存储器可以包括易失性的,例如RAM,也可以包括非易失性的,例如只读存储器(Read-Only Memory,ROM)、闪存等,或者也可以同时包括两种类型的。存储器内通常存储有操作系统(Operating System,OS)、一个或多个应用软件,也可以存储有程序数据等。除了处理单元和存储器之外,计算机设备10a也会包括网卡芯片、IO总线、音视频组件等基本配置。可选地,根据计算机设备10a的实现形式,计算机设备10a也可以包括一些外围设备,例如键盘、鼠标、输入笔、打印机等。这些外围设备在本领域中是众所周知的,在此不做赘述。
[0025] 在本实施例中,网站服务器10b(Website Server)是指在互联网中存放网站的服务器,主要用于网站在互联网中的发布、应用,是网络应用的基础硬件设施。网站服务器10b可以是一台,也可以是多台。本实施例并不限定网站服务器10b的实现形式。例如,在一些可选实施方式中,网站服务器10b可以是常规服务器、云服务器、云主机、虚拟中心等服务器设备。其中,网站服务器10b设备的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似。
[0026] 本实施例提供的计算机设备10a上安装有浏览器,用户可以通过浏览器访问网站服务器10b所存放的网站的网页。当用户访问网站提供的特定网页时,需要用户输入预先注册的口令信息进行登录,以便网站服务器10b进行身份认证。例如,当用户需要在社交类网站上发表评论、文章等内容时,需要用户输入预先注册的口令信息进行身份认证。又例如,当用户在购物类网站上进行购物时,在加购物车或者提交订单时也需要用户输入预先注册的口令信息进行身份认证。在本实施例中,用户注册的口令信息可以包括账号和/或密码。
[0027] 除了上述用户进行网站登录时需要进行身份认证之外,在用户进行修改密码、地址、银行卡号、联系方式等注册信息时,也可能需要输入原始的口令信息进行身份认证,以防止非法用户恶意篡改注册信息。
[0028] 当用户通过浏览器输入预先注册的口令信息时,计算机设备10a可获取用户输入的口令信息。为便于区分,在本实施例中,将用户输入的口令信息称为原始口令信息。
[0029] 在本实施例中,并不限定用户输入原始口令信息的方式,具体视各网站提供的口令输入方式而定。例如用户可以通过键盘、输入笔等方式在网站提供的认证页面(例如登录页面)上的口令框内输入口令信息,例如在用户名输入框内输入用户名,在密码输入框内输入密码。又例如,用户可以通过终端扫描网站提供的认证二维码完成口令信息的输入。又例如,若网站支持语音认证方式,用户也可以通过语音方式完成口令信息的输入。
[0030] 在实际应用中,网站服务器10b可能被攻击从而造成预先维护在网站服务器10b上的原始口令信息被泄露,又或者,在计算机设备10a向网站服务器10b传输原始口令信息的过程因为被拦截而造成原始口令信息泄露。针对这些问题,为了保证用户口令信息的安全性,在本实施例中,不直接使用原始口令信息,而是使用加固后的口令信息,即在网站服务器10b上维护经过加固的口令信息,计算机设备10a也采用经过加固的口令信息与网站服务器10b进行交互。
[0031] 基于上述,在获取用户输入的原始口令信息之后,计算机设备10a以该原始口令信息为数据基础,生成多个数据片段。其中,针对不同原始口令信息生成的数据片段的个数可以相同,也可以不相同。在本实施例中,数据片段的个数大于等于2个,但不限于此。理论上,数据片段个数越多,其后续计算结果越复杂,口令信息加固的强度越大,当然,后续处理计算量也就越大,相应的处理时间也就越长。因此,可根据实际应用中对口令信息加固的强度和加固时间的需求,灵活设置数据片段的个数。
[0032] 在基于原始口令信息生成多个数据片段之后,计算机设备10a对获得的多个数据片段分别进行哈希处理,进而获得多个哈希结果。其中,对获得的多个数据片段分别进行哈希处理是指采用哈希函数对获得的多个数据片段分别进行哈希计算,从而获得相应个数的哈希结果。也就是说,计算机设备10a将多个数据片段分别作为哈希函数的输入,并通过散列算法变换成哈希函数的输出,即多个哈希结果,可实现对多个数据片段的加密,也就意味着对原始口令信息进行了加密。
[0033] 在获得多个哈希结果之后,计算机设备10a对多个哈希结果进行融合处理以得到目标口令信息,目标口令信息与原始口令信息相对应,是原始口令信息经过加固后的口令信息。然后,计算机设备10a用目标口令信息代替原始口令信息,将目标口令信息发送给网站服务器10b进行认证处理。
[0034] 相应地,网站服务器10b接收计算机设备10a发送的目标口令信息,根据接收到的目标口令信息进行认证处理。其中,网站服务器10b上维护有各用户对应的经过加固的口令信息。当网站服务器10b接收到目标口令信息时,可以将目标口令信息在所维护的经过加固的口令信息中进行匹配;若在所维护的经过加固后的口令信息中匹配到目标口令信息,则说明该认证请求合法,允许用户进行登录或允许用户对预先注册的口令信息、地址、联系方式等注册信息进行修改并向用户返回相应网页;若在所维护的经过加固后的口令信息中未匹配到目标口令信息,则说明该认证请求不合法,可以拒绝用户登录网站或拒绝用户修改注册信息等,可选地,可以返回认证失败,或者口令信息错误等提示信息。
[0035] 在本实施例提供的网站系统中,计算机设备10a和网站服务器10b采用经过加固的口令信息,而不是直接使用原始口令信息,即使因为网站服务器10b被攻击导致目标口令信息被泄露或者因为在传输过程中被拦截导致目标口令信息被泄露,由于目标口令信息是经过加固处理的,即是经过对多个数据片段进行哈希处理得到的,期间经过了大量的计算工作,这就意味着目标口令信息的复杂度比较高,如果攻击者要暴力破解目标口令信息,每次破解都需要执行与加固处理等量的计算工作,这无疑提高了破解难度,降低了口令被破解的概率,提高口令安全性,进而可保证用户财产、信息的安全。
[0036] 可选地,在以原始口令信息为数据基础,生成多个数据片段时,可以将原始口令信息以预设切分长度进行切分,生成多个数据片段;或者,可以将原始口令信息以随机切分长度进行切分,生成多个数据片段。其中,根据对口令安全度的需求,可灵活设定预设切分长度。
[0037] 另外,在实际应用中,不同用户的原始口令信息的长度可能不同,而且一般较短。针对该情况,在一些可选实施方式中,计算机设备10a可以将原始口令信息扩展为第一固定长度的数据串;对第一固定长度的数据串进行切分以获得多个数据片段。可选地,可以以预设切分长度对第一固定长度的数据串进行切分,也可以以随机切分长度对第一固定长度的数据串进行切分。通过对原始口令信息进行扩展,一方面可以增加口令信息的长度,以增加长度后的口令信息作为数据基础来获得多个数据片段,有利于进一步加强加固后口令信息被破解的难度;另一方面将不同用户的原始口令信息扩展为统一长度,有利于提高本实施例提供的口令信息加固方案的通用性,降低实施难度。在一种可选的扩展方案中,可选地,第一固定长度可以设置的长一些,例如50字符、100字符、200字符,以求尽量大于大部分原始口令信息的长度,但并不限于此。
[0038] 进一步,由于哈希函数可把任意长度的输入通过散列算法,变换成固定长度的输出,因此在本实施例中,可以采用哈希函数对原始口令信息进行哈希处理,以获得第一固定长度的数据串。
[0039] 对于哈希函数,当其输入相同时,所得到的哈希结果相同。这意味着,对于相同的原始口令信息来说,无论是登录哪个网站,还是在哪个网站进行注册信息的修改,其经过加固后的目标口令信息都相同。攻击者往往会利用这一特性,收集某一网站上的目标口令信息并进行破解,根据破解结果制作彩虹表,之后可以根据该彩虹表对其它网站上的目标口令信息进行破解。其中,彩虹表是一个用于加密哈希函数逆运算的预先计算好的表,主要思想为预计算密码字典中的每个密码,然后把哈希值和对应的密码储存到一个用于快速查询的数据结构中,为破解密码的散列值(或称哈希值、微缩图、摘要、指纹、哈希密文)而准备。
[0040] 但是,彩虹表只针对原始口令信息相同,且以相同的方式进行哈希加密得到的目标口令信息才有效。为了进一步加大攻击者的破解难度,在一些可选实施方式中,计算机设备10a通过“随机化”哈希来阻止这类攻击,也就是在原始口令信息中混入一段“随机”的字符串再进行哈希处理,这个字符串可称作盐值(Salt值)或盐参数(Salt参数),这样由于盐值不同,相同原始口令信息被哈希后的结果就会不同。可选地,计算机设备10a可以为各网站设置站点ID,并将各网站的站点ID作为盐值加入到对原始口令信息的哈希处理中,即可以对原始口令信息与网站的站点ID进行哈希处理,以获得第一固定长度的数据串。由于各网站的站点ID不同,即便是相同的原始口令信息,其哈希结果也不会相同。可选地,站点ID可以是一串没有实际意义的字符串,可以唯一标识一个网站。若想攻击加盐哈希的处理结果,攻击者需要知道盐值,且需要针对每个网站分别制作彩虹表,这增大了攻击的难度和成本。
[0041] 值得说明的是,密码学哈希函数有很多种,不同哈希函数的运算量,内存消耗量、复杂度等会有所不同。在本实施例中,可以将哈希函数拆分为内存困难型函数(Memory-Hard Function)和非内存困难型函数(Non-Memory-HardFunction)。其中,内存困难型函数(也可以称为内存困难型哈希函数)是指重度依赖内存性能和容量的函数,例如scrypt、argon2等;其它的可以视为非内存困难型函数(也可以称为非内存困难型哈希函数),例如PBKDF2_SHA256等。在本实施例中,不对“重度”做限定,可以根据应用需求和场景,适应性定义“重度”。例如,可以设定内存成本阈值,通过该内存成本阈值判断哈希函数是否为内存困难型函数。若在某次计算过程中,哈希函数的内存消耗成本(内存消耗总量)超过内存成本阈值,则该哈希函数为内存困难型函数;反之,为非内存困难型函数。对同一哈希函数来说,其参数值不同,内存消耗成本也会有所不同。其中,可以通过配置哈希函数的参数,来调整哈希函数的内存消耗成本。影响哈希函数内存消耗成本的参数可以包括内存访问频率以及单次访问内存的消耗量,但不限于此。
[0042] 基于上述,计算机设备10a可以采用非内存困难型哈希函数,对原始口令信息与站点ID进行哈希处理,以获得第一固定长度的数据串。例如,可以采用PBKDF2_SHA256函数对原始口令信息进行加盐哈希处理,并将站点ID作为PBKDF2_SHA256的盐值,这不仅可生成第一固定长度的数据串,还可增加基于彩虹表攻击的难度。其中,非内存困难型函数的计算量相对较小,内存消耗较少,因此,采用非内存困难型函数对原始口令信息与站点ID进行扩展,一方面可以提高计算效率,另一方面可以节约内存资源。当然,计算机设备10a也可以采用内存困难型哈希函数对原始口令信息与站点ID进行哈希处理,这种哈希算法复杂度更高,计算量更大,但有利于进一步增加口令破解难度。
[0043] 进一步,
[0044] 值得说明的是,本实施例的计算机设备10a可以具有内存资源丰富且处理能力强大的中央处理器(Central Processing Unit,CPU),或者具有计算处理能力强大的图形处理器(Graphics Processing Unit,GPU),或者同时具有CPU和GPU。
[0045] 其中,CPU为一块超大规模的集成电路,是一台计算机设备的运算核心和控制核心。它的功能主要是解释计算机指令以及处理计算机软件中的数据。CPU又分为单核CPU和多核CPU。其中,CPU的核数是指物理上,也就是硬件上存在着几个核心。比如,双核CPU就是包括2个相对独立的CPU核心单元组,四核CPU就包含4个相对独立的CPU核心单元组。对于每一个独立的CPU核心单元又可以分为一个或多个处理线程。其中,线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。一个CPU核心单元最少对应一个线程,但也可以采用超线程技术把一个物理线程模拟出两个或两个以上的多个线程来用,充分发挥CPU性能,即一个核心可以有两个到多个线程。
[0046] 对于GPU,又称为显示核心、视觉处理器、显示芯片,是一种专门在电脑、工作站、游戏机和一些移动设备(如平板电脑、智能手机等)上图像运算工作的微处理器。GPU的主要用途是处理数据量庞大但计算简单的运算,例如3D渲染等。其中,渲染管线是GPU内部处理图形信号相互独立的并行处理单元。GPU具有大量的渲染管线。每个渲染管线拥有的缓存大小相对小,数字逻辑运算单元也少而且简单,并且大量渲染管线共享同一个显卡内存,使得每个渲染管线不适合频繁访问内存,也不适合占用大量内存。但对于内存依赖较小的算法,大量渲染管线进行并行计算,可同时处理海量的运算。
[0047] 在本实施例中,计算机设备10a可单独利用其CPU或GPU资源对原始口令信息进行加固,或者,也可以结合使用其CPU和GPU对原始口令信息进行加固。下面分别对这几种情况进行说明:
[0048] 在实施方式A中,计算机设备10a同时具有CPU和GPU,并同时利用其CPU和GPU资源进行口令信息加固。在实施方式A中,计算机设备10a的某个CPU(例如第一CPU)负责整个口令信息加固过程的控制逻辑,而GPU辅助CPU完成口令信息加固。可选地,GPU主要在对多个数据片段进行哈希处理时,辅助CPU对其中部分数据片段进行哈希处理。
[0049] 其中,实施方式A的执行过程包括:计算机设备10a的第一CPU响应于用户通过浏览器输入口令信息的操作,获取用户输入的原始口令信息,采用非内存困难型哈希函数,对原始口令信息与用户请求访问的网站的站点ID进行哈希处理,以获得第一固定长度的数据串;将第一固定长度的数据串切分为多个数据片段,将多个数据片段拆分成L1和L2个数据片段,其中L1+L2的值与多个数据片段的数量相等,且L1、L2是大于或等于1的整数;之后,一方面利用CPU线程对L1个数据片段进行哈希处理,另一方面利用GPU渲染管线对L2个数据片段进行哈希处理;最后根据CPU线程计算得到的L1个哈希结果与GPU渲染管线得到的L2个哈希结果得到目标口令信息。
[0050] 考虑到CPU拥有丰富的内存资源,可选地,CPU线程可以采用较为复杂的内存困难型哈希函数对L1个数据片段进行哈希处理。例如,可采用scrypt、argon2等内存困难型哈希函数对L1个数据片段进行哈希处理。其中,内存困难型哈希函数算法较为复杂,经其加固后的目标口令信息的复杂度较高,破解难度较大。
[0051] 可选地,为了进一步增加加固后口令的破解难度,提高口令信息加固效率,可以利用多个CPU线程,采用内存困难型哈希函数对L1个数据片段分别进行哈希处理,以获得相应的L1个哈希结果。为便于区分和描述,将用于口令信息加固的CPU线程数记为K,K≥2,且为正整数。K的取值与计算机设备10a的CPU核数相关。例如,在进行哈希处理之前,计算机设备10a中的某个CPU(例如第一CPU)可以获取计算机设备10a的CPU核数,并根据CPU核数创建K个CPU线程。
[0052] 可选地,2≤K≤CPU核数。例如,若CPU的核数为4个,则可以创建2个线程,3个线程,也可以创建4个线程。优选地,K=CPU核数。在计算机设备10a具有多个CPU核的情况下,可由操作系统指定其中某个CPU核负责口令信息加固过程的控制逻辑,由操作系统指定的CPU即为上述第一CPU。
[0053] 进一步,第一CPU可以创建一个CPU任务队列,将L1个数据片段送入CPU任务队列中。当上述K个CPU线程中有空闲CPU线程时,从CPU任务队列中读取一个数据片段送给该空闲的CPU线程,由该CPU线程对该数据片段进行内存困难型哈希处理,依次类推,直到CPU任务队列中的数据片段均被处理为止。
[0054] 对于计算机设备10a中的CPU来说,无法获取GPU中当前空闲的渲染管线的数量。因此,在利用GPU的渲染管线对L2个数据片段进行哈希处理之前,可以先获取计算机设备10a的GPU资源(可简称为GPU),并在获取GPU资源时初始化GPU渲染管线的个数为M,并尝试利用M个GPU渲染管线对L2个数据片段进行哈希处理。
[0055] 在本申请实施例中,不限定M的取值,但是为了加快对L2个数据片段进行哈希处理的进度,M可以取大于或等于2的正整数。其中,计算机设备10a可以包含多个GPU,则CPU可以获取全部GPU,也可以获取部分相对空闲的GPU辅助完成口令信息加固。无论是获取全部GPU,还是获取部分GPU,对每个GPU的使用过程相同,在下面实施例中,以一个GPU为例进行描述。
[0056] 对某个GPU而言,基于初始化的GPU渲染管线数M,第一CPU可利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对L2个数据片段分别进行哈希处理,以获得L2个哈希结果。
[0057] 进一步,考虑到渲染管线的数量M可能小于L2,所以可以每次从L2个数据片段中提取尚未处理的M个数据片段,将M个数据片段转换为M张图形并分别送入GPU,以便于GPU利用其M个GPU渲染管线进行哈希处理,这样经过多次处理可以最终得到L2个数据片段分别对应的哈希结果。
[0058] 其中,在利用M个GPU渲染管线对L2个数据片段分别进行哈希处理时,考虑到每个渲染管线的缓存较小,不适合采用占用内存较多的内存困难型函数对数据片段进行哈希处理,则可以选用非内存困难型哈希函数对L2个数据片段进行哈希处理。
[0059] 可选地,为了进一步增加加固后口令的破解难度,在每个GPU渲染管线内部,可以采用非内存困难型哈希函数对送入该渲染管线内的图形循环执行N次哈希处理,以获得一个哈希结果;N是大于或等于2的整数。循环执行N次哈希处理是指将当前哈希处理结果作为下一次哈希处理的输入循环执行N次哈希处理最终得到一个哈希结果的过程。
[0060] 进一步,由于初始化的利用GPU渲染管线的数量M有可能小于GPU中空闲的渲染管线总数。为了加快对上述多个数据片段进行哈希处理的速度,即加快本次口令信息加固的速度,可充分利用GPU渲染管线资源。相应地,计算机设备10a在每次利用M个GPU渲染管线对M张图像进行哈希处理结束后,可判断本次的处理耗时与上一次的处理耗时是否在设定误差范围内;若本次处理耗时与上一次的处理耗时在设定误差范围内,则说明当前GPU的空闲渲染管线数大于或等于M个。为了进一步加快处理速率,则可进一步探测当前GPU的空闲渲染管线数,即增加渲染管线的数量M,进一步可根据管线数调整步长更新当前管线数M,例如M=M+△,△表示管线数调整步长;将更新后的管线数M作为下一次哈希处理使用的管线数,直至本次哈希处理耗时大于上次哈希处理耗时,且二者的差值不在预设的误差范围内为止。
[0061] 可选地,若本次处理耗时与上一次的处理耗时不在设定误差范围内,则说明当前GPU的空闲渲染管线数小于本次利用的M个渲染管线数,当本次对M个数据片段进行哈希处理时,有的渲染管线需要依次至少处理2个数据片段,无疑延长了进行哈希处理的时间。基于此,若本次处理耗时与上一次的处理耗时不在设定误差范围内,一般为大于设定的误差范围,则可将上一次利用的GPU渲染管线数M作为下一次哈希处理使用的渲染管线数。其中,管线数调整步长是指每次需要增加的GPU渲染管线的数量,其取值可根据对口令信息加固速度的实际应用需要进行灵活设置,在本申请实施例中不做限定。例如,可以每次增加或减少1个、2个、10个、20个等数量的GPU渲染管线。
[0062] 值得说明的是,为了描述方便,将每次利用的渲染管线数统一定义为M,实际上M是一个可变量,在不同处理过程中其取值可能会有所不同,直到最终趋于一稳定值。
[0063] 下面以初始化的渲染管线数M为100,管线数调整步长为5个对上述进行哈希处理的过程进行示例性说明。首先,计算机设备10a获取自身的GPU资源,并在获取到GPU资源时初始化GPU渲染管线数M为100。其次,从L2个数据片段中提取尚未处理的100个数据片段,将100个数据片段转换为100张图形并分别送入100个GPU渲染管线进行哈希处理;并在利用
100个GPU渲染管线对100张图形进行哈希处理结束后,记录本次对该100个数据片段进行哈希处理的时间t1。接着,从L2个数据片段中剩余的尚未处理的数据片段中再取出105个数据片段,并将该105个数据片段转换为105张图形并分别送入105个GPU渲染管线进行哈希处理,并在利用105个GPU渲染管线对105张图形进行哈希处理结束后,记录本次对该105个数据片段进行哈希处理的时间t2。最后,比较对100个数据片段进行哈希处理的时间t1和对
105个数据片段进行哈希处理的时间t2。若二者的差值在设定误差范围内,则说明GPU当前空闲的GPU管线大于或等于105个,因此下次可按照预设的管线数调整步长进一步增加利用的GPU渲染管线数,并对相同数量的数据片段进行哈希处理,直至本次进行哈希处理的时间与上次进行哈希处理的时间的差值不在设定的误差范围内。若t2>t1,且二者的差值不在设定误差范围内,则说明GPU当前空闲的渲染管线数不足105个,若每次对105个数据片段进行哈希处理,每次进行处理的时间会延长,因此下次仍利用100个GPU渲染管线对100个数据片段进行哈希处理。
[0064] 值得说明的是,在本实施例中,利用K个CPU线程处理完L1个数据片段的时间可能与利用M个GPU渲染管线处理完L2个数据片段的时间不同步。为了进一步加快对上述多个数据片段进行哈希处理的速度,CPU和GPU之间可以相互协助。例如,当K个CPU线程处理完L1个数据片段,而M个GPU渲染管线还未处理完L2个数据片段时,CPU可以利用K个CPU线程采用内存困难型哈希函数继续对L2个数据片段中某个或某些尚未处理的数据片段进行哈希处理,同时M个GPU渲染管线仍按照之前的方式继续对L2个数据片段中其它尚未处理的数据片段进行哈希处理。又例如,若M个GPU渲染管线处理完L2个数据片段,而K个CPU线程还未处理完L1个数据片段,则CPU可以将L1个数据片段中尚未处理的部分数据片段分配给M个GPU渲染管线,利用M个GPU渲染管线继续对新分配的数据片段进行哈希处理。当然,M个GPU渲染管线也可以不分担K个CPU线程的任务,等待K个CPU线程将L1个数据片段处理完成。
[0065] 在实施方式B中,计算机设备10a同时具有CPU和GPU,或者只具有CPU。计算机设备10a单独利用CPU资源进行口令信息加固。在实施方式B中,CPU负责整个口令信息加固过程的控制逻辑并单独完成口令信息加固。
[0066] 其中,实施方式B的执行过程包括:计算机设备10a的某个CPU(例如第一CPU)可响应于用户输入口令信息的操作,获取用户输入的原始口令信息,采用非内存困难型哈希函数,对原始口令信息与站点ID进行哈希处理,以获得第一固定长度的数据串;将第一固定长度的数据串切分为多个数据片段;之后,利用CPU线程对获得的多个数据片段分别进行哈希处理;最后根据CPU线程计算得到的多个哈希结果得到目标口令信息。
[0067] 考虑到CPU拥有丰富的内存资源,可选地,CPU线程可以采用较为复杂的内存困难型哈希函数对多个数据片段进行哈希处理,以获得多个哈希结果。例如,可采用scrypt、argon2等内存困难型哈希函数对多个数据片段进行哈希处理。其中,内存困难型哈希函数算法较为复杂,经其加固后的目标口令信息的复杂度较高,破解难度较大。
[0068] 可选地,为了进一步增加加固后口令的破解难度,提高口令信息加固效率,可以利用多个CPU线程,采用内存困难型哈希函数对多个数据片段分别进行哈希处理,以获得相应的多个哈希结果。其中,哈希结果的个数与数据片段个数相等。为便于描述,将用于口令信息加固的多个CPU线程的数量记为K,K≥2,且为正整数。其中,对于利用K个CPU线程并采用内存困难型哈希函数对多个数据片段分别进行哈希处理的具体过程可参见上述实施方式A中对L1个数据片段进行哈希处理的相关描述,此处不再赘述。
[0069] 在实施方式C中,计算机设备10a同时具有CPU和GPU。在实施方式C中,计算机设备10a的CPU负责整个口令信息加固过程的控制逻辑,并利用GPU完成对口令的加固。可选地,GPU主要在对多个数据片段进行哈希处理时,在CPU的控制下对多个数据片段进行哈希处理。
[0070] 其中,实施方式C的执行过程包括:计算机设备10a的某个CPU(例如第一CPU)可响应于用户输入口令信息的操作,获取用户输入的原始口令信息,采用非内存困难型哈希函数,对原始口令信息与站点ID进行哈希处理,以获得第一固定长度的数据串;将第一固定长度的数据串切分为多个数据片段;之后,利用GPU的渲染管线对多个数据片段分别进行哈希处理。可选地,可以利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对多个数据片段分别进行哈希处理,以获得多个哈希结果。其中,利用用于本次口令信息加固操作的M个GPU渲染管线进行哈希处理的具体过程可参见上述实施方式A中对L2个数据片段进行哈希处理的相关描述,此处不再赘述。
[0071] 在本实施例中,对于上述实施方式A、B、C对多个片段进行哈希处理所得到的多个哈希结果,计算机设备10a可采用相同的处理方式以得到目标口令信息。可选地,可将上述多个哈希结果按序进行合并,并获得合并结果;之后,采用非内存困难型哈希函数,对合并结果进行哈希处理,进而获得第二固定长度的数据串作为目标口令信息。之后,将目标口令信息上报给对应的网站服务器进行认证处理。这里的“按序”是指按照多个数据片段之间的先后顺序,将多个哈希结果串接在一起。
[0072] 可选地,此处对合并结果进行哈希处理所采用的非内存困难型哈希函数与上述对原始口令信息进行扩展所采用的非内存困难型哈希函数可以为相同的哈希函数,也可采用不同的哈希函数。当采用相同的哈希函数时,对原始口令信息进行扩展所得到的数据串的长度与此次对合并结果进行哈希处理得到的数据串的长度相同,即第一固定长度等于固定长度;反之,则第一固定长度不等于第二固定长度。之后,可以将目标口令信息发送给网站服务器10b。
[0073] 对网站服务器10b而言,可接收计算机设备10a发送的目标口令信息,根据接收到的目标口令信息进行认证处理。值得说明的是,本实施例并不限定网站服务器10b根据目标口令信息进行认证处理的具体实施方式。可选地,网站服务器10b上维护有各用户对应的经过加固的口令信息。当网站服务器10b接收到目标口令信息时,可以将目标口令信息在所维护的经过加固的口令信息中进行匹配;若在所维护的经过加固后的口令信息中匹配到目标口令信息,则说明该认证请求合法,允许用户进行下一步操作并向用户返回相应网页,例如,当用户利用预先注册的原始口令信息进行网站登录时,需要用户输入预先注册的原始口令信息进行身份认证,只有身份认证请求合法,网站服务器10b才允许用户进行登录;又例如,当用户对预先注册的信息(密码、地址、联系方式等)进行修改时,需要用户输入预先注册的原始口令信息进行身份认证,只有身份认证请求合法,网站服务器10b才允许用户修改注册信息。若在所维护的经过加固后的口令信息中未匹配到目标口令信息,则说明该认证请求不合法,可以拒绝用户登录或修改并返回认证失败等提示信息。
[0074] 值得说明的是,本实施例网站系统中用于对口令进行加固的方案还可以应用到其它具有口令信息加固需求的应用场景中。例如,在客户端/服务器架构下,用户需要预先向服务器注册口令信息,每当通过客户端访问服务器时需要输入预先注册的口令信息进行身份认证等。对于采用客户端/服务器架构的各种应用系统,例如即时通讯系统,云存储系统,游戏系统,邮箱系统等,均可采用本实施例网站系统中用于对口令进行加固的方案,即这些系统中的服务器上维护经过加固的口令信息,客户端也采用经过加固的口令信息与服务器进行交互。其中,客户端在采用经过加固的口令信息与服务器进行交互时,对原始口令信息进行加固的过程可参见上述网站系统实施例中的描述,或者可参见下述方法实施例中的描述,在此不再赘述。
[0075] 除上述提供的网站系统之外,本申请一些实施例还提供一种口令信息加固方法。下面将从计算机设备的角度,对本申请所提供的口令信息加固方法进行说明。
[0076] 图2a为本申请一示例性实施例提供的一种口令信息加固方法的流程示意图。如图2a所示,该方法包括:
[0077] 201、获取用户输入的原始口令信息。
[0078] 202、以该原始口令信息为数据基础,生成多个数据片段。
[0079] 203、对获得的多个数据片段分别进行哈希处理,以获得多个哈希结果。
[0080] 204、对多个哈希结果进行融合处理以得到目标口令信息,且目标口令信息被上报给服务器进行认证处理。
[0081] 在实际应用中,当用户访问网站提供的特定网页时,需要用户输入预先注册的口令信息进行登录,以进行身份认证。例如,当用户需要在社交类网站上发表评论、文章等内容时,需要用户输入预先注册的口令信息进行身份认证,只有身份合法,该用户才能登录该网站。又例如,当用户在购物类网站上进行购物时,在加购物车或者提交订单时也需要用户输入预先注册的口令信息进行身份认证。或者当客户端设备需要接入服务器时,同样也需要输入预先注册的口令信息进行身份认证。例如,在用户进行即时通讯时,在客户端设备上输入预先注册的口令信息以访问相应的服务器,进而进行即时通讯等。在本实施例中,用户注册的口令信息可以包括账号和/或密码,即原始口令信息可以包括账号和/或密码。
[0082] 除了上述用户进行网站登录时需要进行身份认证之外,在用户进行修改密码、地址、银行卡号、联系方式等注册信息时,也可能需要输入原始的口令信息进行身份认证,以防止非法用户恶意篡改注册信息。
[0083] 为了保证用户的口令信息的安全性,可以对用户的口令信息进行加固。在步骤201中,可在用户输入注册口令信息时,获取用户输入的口令信息。为便于区分,在本实施例中,将用户输入的口令信息称为原始口令信息。接着,进入步骤202,以该原始口令信息为数据基础,生成多个数据片段。其中,针对不同原始口令信息得到的数据片段的个数可以相同,也可以不相同。在本实施例中,数据片段的个数大于等于2个,但不限于此。理论上,数据片段个数越多,其后续计算结果越复杂,口令信息加固的强度越大,当然,后续处理计算量也就越大,相应的处理时间也就越长。因此,可根据实际应用中对口令信息加固的强度和加固时间的需求,灵活设置数据片段的个数。
[0084] 在基于原始口令信息得到多个数据片段之后,可进入步骤203,对获得的多个数据片段分别进行哈希处理,进而获得多个哈希结果。其中,对获得的多个数据片段分别进行哈希处理是指采用哈希函数对获得的多个数据片段分别进行哈希计算,从而获得相应个数的哈希结果。也就是说,在步骤203中,将多个数据片段分别作为哈希函数的输入,并通过散列算法变换成哈希函数的输出,即多个哈希结果,可实现对多个数据片段的加密,也就意味着对原始口令信息进行了加密。
[0085] 在获得多个哈希结果之后,进入步骤204,对多个哈希结果进行融合处理以得到目标口令信息,目标口令信息与原始口令信息相对应,是原始口令信息经过加固后的口令信息。然后用目标口令信息代替原始口令信息,将目标口令信息发送给服务器进行认证处理。
[0086] 对服务器来说,其接收上述目标口令信息,并根据接收到的目标口令信息进行认证处理。当服务器接收到目标口令信息时,可以将目标口令信息在所维护的经过加固的口令信息中进行匹配;若在所维护的经过加固后的口令信息中匹配到目标口令信息,则说明该认证请求合法,允许用户进行登录或修改注册信息等,并向用户返回相应的内容。例如,对于当用户访问网站时,向用户返回相应的网页。若在所维护的经过加固后的口令信息中未匹配到目标口令信息,则说明该认证请求不合法,可以拒绝用户登录或修改注册信息等,可选地,可以返回认证失败,或者口令信息错误等提示信息。
[0087] 在本实施例中,向服务器发送的和服务器进行身份认证的都是加固的口令信息,而不是原始口令信息。即使服务器被攻击导致目标口令信息被泄露或者在传输过程中被拦截导致目标口令信息被泄漏,由于目标口令信息是经过加固处理的,即是经过对多个数据片段进行哈希处理得到的,期间经过了大量的计算工作,这就意味着目标口令信息的复杂度比较高,如果攻击者要暴力破解目标口令信息,则每次破解都需要执行与加固口令处理等量的计算工作,这无疑提高了破解难度,降低了口令被破解的概率,提高口令安全性,进而可保证用户财产、信息的安全。
[0088] 在实际应用中,不同用户的原始口令信息的长度可能不同,而且一般较短。针对该情况,步骤201的一种可选实施方式为:将原始口令信息扩展为第一固定长度的数据串;对第一固定长度的数据串进行切分以获得多个数据片段。可通过对原始口令信息扩展,一方面可以增加口令信息的长度,以增加长度后的口令信息作为数据基础来获得多个数据片段,有利于进一步加强加固后口令信息被破解的难度;另一方面将不同用户的原始口令信息扩展为统一长度,有利于提高本实施例提供的口令信息加固方案的通用性,降低实施难度。优选地,第一固定长度可以设置的长一些,例如50字符、100字符、200字符,以求尽量大于大部分原始口令信息的长度,但并不限于此。
[0089] 进一步,由于哈希函数可把任意长度的输入通过散列算法,变换成固定长度的输出,因此在本实施例中,可以采用哈希函数对原始口令信息进行哈希处理,以获得第一固定长度的数据串。
[0090] 对于哈希函数,当其输入相同时,所得到的哈希结果相同。这也就意味着,对于相同的原始口令信息,无论是访问(例如登录、请求修改注册信息等)哪个网站或访问哪个服务器,其经过加固后的目标口令信息都相同。攻击者往往会利用这一特性,收集某一网站或某一服务器上的目标口令信息并进行破解,根据破解结果制作彩虹表,之后可以根据该彩虹表对其它网站或服务器上的目标口令信息进行破解。其中,对于彩虹表的解释可参见上述系统实施例的相关描述,在此不再赘述。
[0091] 但是,彩虹表只针对原始口令信息相同且以相同的方式进行哈希加密得到的目标口令信息才有效。基于此,在本实施例中通过“随机化”哈希来阻止这类攻击,也就是在原始口令信息中混入一段“随机”的字符串再进行哈希处理,这个字符串被称作盐值(Salt值)或盐参数(Salt参数),这样由于盐值不同,相同原始口令信息被哈希后的结果就会不同。对于不同的具有口令信息加固需求的应用场景,可采用的盐值不同。例如,对于用户输入预先注册的口令信息访问网站的情况,可将各网站的站点ID作为盐值。下面以用户通过输入预先注册的口令信息访问网站为例,对原始口令信息进行加盐哈希处理进行示例性说明。
[0092] 可选地,在用户通过输入预先注册的口令信息访问网站时,可为各网站设置站点ID,并将各网站的站点ID作为盐值加入到对原始口令信息的哈希处理中,即可以对原始口令信息与网站的站点ID进行哈希处理,以获得第一固定长度的数据串。由于各网站的站点ID不同,即便是相同的原始口令信息,其哈希结果也不会相同。可选地,站点ID是一串没有实际意义的字符串,可以唯一标识一个网站。若想攻击加盐哈希的处理结果,攻击者需要知道盐值,且需要针对每个网站分别制作彩虹表,这增大了攻击的难度和成本。
[0093] 基于上述分析,在步骤201中,可以对原始口令信息与网站的站点ID进行哈希处理,以获得第一固定长度的数据串。可选地,站点ID作为盐值加入到原始口令中形成加盐后的原始口令信息,之后再对加盐后的原始口令信息进行加盐哈希处理,可获得一个固定长度的数据串。
[0094] 值得说明的是,哈希函数有很多种,不同哈希函数的运算量,内存消耗量、复杂度等会有所不同。在本实施例中,可以将哈希函数拆分为内存困难型函数和非内存困难型函数。其中,对于内存困难型函数和非内存困难型函数的描述可参见上述系统实施例的相关描述,在此不再赘述。
[0095] 可选地,可采用非内存困难型哈希函数,对原始口令信息与站点ID进行哈希处理,以获得第一固定长度的数据串。例如,可以采用PBKDF2_SHA256函数对原始口令信息进行加盐哈希处理,并将站点ID作为PBKDF2_SHA256的盐值,这不仅可生成第一固定长度的数据串,还可增加基于彩虹表攻击的难度。其中,非内存困难型函数的计算量相对较小,内存消耗较少,因此,采用非内存困难型函数对原始口令信息与站点ID进行扩展,一方面可以提高计算效率,另一方面可以节约内存资源。当然,在获得第一固定长度的数据串时,也可以采用内存困难型哈希函数对原始口令信息与站点ID进行哈希处理,这种哈希算法复杂度更高,计算量更大,但有利于进一步增加口令破解难度。
[0096] 值得说明的是,用户的计算机设备可以具有内存资源丰富且处理能力强大的CPU,或者具有计算处理能力强大的GPU,或者同时具有CPU和GPU。其中,对于CPU和GPU的说明可参见上述系统实施例的相关描述,此处不再赘述。
[0097] 在本实施例中,可单独利用其CPU或GPU资源对原始口令信息进行加固,或者,也可以结合使用其CPU和GPU对原始口令信息进行加固。下面分别对这几种情况进行说明:
[0098] 在实施方式A中,可同时利用计算机设备的CPU和GPU资源进行口令信息加固。基于此,步骤103的一种可选实施方式为:利用CPU线程和GPU渲染管线对获得的多个数据片段分别进行哈希处理。可选地,将多个数据片段拆分成L1和L2个数据片段,其中L1+L2的值与多个数据片段的数量相等,且L1、L2是大于或等于1的整数。之后利用CPU线程对L1个数据片段进行哈希处理;并GPU渲染管线对L2个数据片段进行哈希处理。
[0099] 考虑到CPU拥有丰富的内存资源,可选地,可以采用较为复杂的内存困难型哈希函数对L1个数据片段进行哈希处理。例如,可采用scrypt、argon2等内存困难型哈希函数对L1个数据片段进行哈希处理。其中,内存困难型哈希函数算法较为复杂,经其加固后的目标口令信息的复杂度较高,破解难度较大。
[0100] 可选地,为了进一步增加加固后口令的破解难度,提高口令信息加固效率,可以利用K个CPU线程,采用内存困难型哈希函数对L1个数据片段分别进行哈希处理,以获得相应的L1个哈希结果。其中,K≥2,且为正整数。K的取值与当前CPU核数相关。例如,在进行哈希处理之前,可获取计算机设备的CPU核数,并根据CPU核数创建K个CPU线程。其中对于CPU线程的解释以及对L1个数据片段进行哈希处理的过程可参见上述系统实施例中实施方式A中的相关描述,在此不再赘述。
[0101] 对计算机设备的CPU来说,无法获取当前空闲的渲染管线的数量。因此,在利用GPU的渲染管线对L2个数据片段进行哈希处理之前,可以先获取计算机设备的GPU资源,并在获取GPU资源时初始化将要利用的GPU渲染管线的个数为M,并尝试利用M个GPU渲染管线进行哈希处理。在本申请实施例中,不限定M的取值,但是为了加快对多个数据片段进行哈希处理的进度,M可以取大于或等于2的正整数。其中,计算机设备可以包含多个GPU,则CPU可以获取全部GPU,也可以获取部分相对空闲的GPU辅助完成口令信息加固。无论是获取全部GPU,还是获取部分GPU,对每个GPU的使用过程相同,在下面实施例中,以一个GPU为例进行描述。
[0102] 基于初始化的GPU渲染管线数M,计算机设备10a可利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对L2个数据片段分别进行哈希处理,以获得L2个哈希结果。
[0103] 进一步,考虑到渲染管线的数量M可能小于上述多个数据片段的数量,所以可以每次从上述多个数据片段中提取尚未处理的M个数据片段,将M个数据片段转换为M张图形并分别送入M个GPU渲染管线进行哈希处理,这样经过多次处理可以最终得到多个数据片段分别对应的哈希结果。
[0104] 其中,在利用M个GPU渲染管线对L2个数据片段分别进行哈希处理时,考虑到每个渲染管线的缓存较小,不适合采用占用内存较多的内存困难型函数对数据片段进行哈希处理,则可以选用非内存困难型哈希函数对L2个数据片段进行哈希处理。
[0105] 可选地,为了进一步增加加固后口令的破解难度,在每个GPU渲染管线内部,可以采用非内存困难型哈希函数对送入该渲染管线内的图形循环执行N次哈希处理,以获得一个哈希结果;N是大于或等于2的整数。循环执行N次哈希处理是指将当前哈希处理结果作为下一次哈希处理的输入循环执行N次哈希处理最终得到一个哈希结果的过程。
[0106] 进一步,由于初始化的GPU渲染管线的数量M有可能小于GPU的渲染管线总数。为了加快对上述多个数据片段进行哈希处理的速度,即加快本次口令信息加固的速度,可充分利用GPU渲染管线资源。相应地,在每次利用M个GPU渲染管线对M张图像进行哈希处理结束后,可判断本次的处理耗时与上一次的处理耗时是否在设定误差范围内;若本次处理耗时与上一次的处理耗时在设定误差范围内,则说明当前GPU的空闲渲染管线数大于或等于M个。为了进一步加快处理速率,则可进一步探测当前GPU的空闲渲染管线数,即增加利用的渲染管线的数量M,进一步可根据管线数调整步长更新当前管线数M,例如M=M+△,△表示管线数调整步长;将更新后的管线数M作为下一次哈希处理使用的管线数,直至本次哈希处理耗时大于上次哈希处理耗时,且二者的差值不在预设的误差范围内。若本次处理耗时与上一次的处理耗时不在设定误差范围内,则说明当前GPU的空闲渲染管线数小于本次利用的M个渲染管线数,当本次对M个数据片段进行哈希处理时,有的渲染管线需要依次至少处理2个数据片段,无疑延长了进行哈希处理的时间。
[0107] 可选地,若本次处理耗时与上一次的处理耗时不在设定误差范围内,一般为大于设定的误差范围,则可将上一次利用的GPU渲染管线数M作为下一次哈希处理使用的渲染管线数。其中,管线数调整步长是指每次需要增加的GPU渲染管线的数量,其取值可根据对口令信息加固速度的实际应用需要进行灵活设置,在本申请实施例中不做限定。例如,可以每次增加或减少1个、2个、10个、20个等数量的GPU渲染管线。
[0108] 值得说明的是,为了描述方便,将每次利用的渲染管线数统一定义为M,实际上M是一个可变量,在不同处理过程中其取值可能会有所不同,直到最终趋于一稳定值。
[0109] 在实施方式B中,可单独利用计算机设备的CPU资源进行口令信息加固。基于此,在步骤203中,可利用CPU线程对获得的多个数据片段分别进行哈希处理。
[0110] 考虑到CPU拥有丰富的内存资源,可选地,可以采用较为复杂的内存困难型哈希函数对多个数据片段进行哈希处理。例如,可采用scrypt、argon2等内存困难型哈希函数对多个数据片段进行哈希处理。其中,内存困难型哈希函数算法较为复杂,进行哈希处理时需要占用较多的内存资源。经其加固后的目标口令信息的复杂度较高,破解难度较大。
[0111] 可选地,为了进一步增加加固后口令的破解难度,提高口令信息加固效率,可以利用K个CPU线程,采用内存困难型哈希函数对多个数据片段分别进行哈希处理,以获得相应的多个哈希结果。其中,哈希结果的个数与数据片段个数相等。对于利用K个CPU线程并采用内存困难型哈希函数对多个数据片段分别进行哈希处理的具体过程可参见上述实施方式A中对L1个数据片段进行哈希处理的相关描述,此处不再赘述。
[0112] 在实施方式C中,可单独利用计算机设备的GPU资源进行口令信息加固。基于此,在步骤203中,可利用GPU的渲染管线对多个数据片段分别进行哈希处理。
[0113] 对于GPU所依附的计算机设备中的CPU来说,无法获取GPU中当前空闲的渲染管线的数量。因此,在利用GPU的渲染管线对上述多个数据片段进行哈希处理之前,可以先获取计算机设备的GPU资源,并在获取GPU资源时初始化将要利用的GPU渲染管线的个数为M,并尝试利用M个GPU渲染管线对多个数据片段进行哈希处理。在本申请实施例中,不限定M的取值,但是为了加快对多个数据片段进行哈希处理的进度,M可以取大于或等于2的正整数。
[0114] 基于上述初始化的GPU渲染管线数M,步骤203的一种可选实施方式为:利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述多个数据片段分别进行哈希处理,以获得多个哈希结果。
[0115] 进一步,考虑到渲染管线的数量M可能小于上述多个数据片段的数量,所以可以每次从上述多个数据片段中提取尚未处理的M个数据片段,将M个数据片段转换为M张图形并分别送入M个GPU渲染管线进行哈希处理,这样经过多次处理可以最终得到多个数据片段分别对应的哈希结果。其中,利用用于本次口令信息加固操作的M个GPU渲染管线进行哈希处理的具体过程可参见上述实施方式A中对L2个数据片段进行哈希处理的相关描述,此处不再赘述。
[0116] 在本实施例中,对于上述实施方式A、B、C对多个片段进行哈希处理所得到的多个哈希结果,在步骤204中都可采用相同的处理方式以得到目标口令信息。可选地,可将上述多个哈希结果进行合并,并获得合并结果;之后,采用非内存困难型哈希函数,对合并结果进行哈希处理,进而获得第二固定长度的数据串作为目标口令信息。之后,将目标口令信息上报给对应的服务器进行认证处理。
[0117] 可选地,此处对合并结果进行哈希处理所采用的非内存困难型哈希函数与上述对原始口令信息进行扩展所采用的非内存困难型哈希函数可以为相同的哈希函数,也可采用不同的哈希函数。当采用相同的哈希函数时,对原始口令信息进行扩展所得到的数据串的长度与此次对合并结果进行哈希处理得到的数据串的长度相同,即第一固定长度等于固定长度;反之,则第一固定长度不等于第二固定长度。
[0118] 相应地,服务器根据该目标口令信息对用户进行认证处理。以用户登录某网站为例,则当网站服务器接收到目标口令信息时,可以将目标口令信息在所维护的经过加固的口令信息中进行匹配;若在所维护的经过加固后的口令信息中匹配到目标口令信息,则说明该登录请求合法,允许用户进行登录并向用户返回相应的网页;若在所维护的经过加固后的口令信息中未匹配到目标口令信息,则说明该登录请求不合法,可以拒绝用户登录,可选地,可以返回认证失败,或者口令信息错误等提示信息。
[0119] 除了上述系统实施例和方法实施例之外,本申请还提供一些数据处理方法,该数据处理方法主要用于对两台计算机设备进行交互使用的口令信息进行加固,以提升口令信息的安全性。下面从第一计算机设备的角度出发,对该数据处理方法的流程进行描述。其中,第一计算机设备可以是两台计算机设备中的任意一台计算机设备。如图2b所示,该数据处理方法包括以下步骤:
[0120] 301、第一计算设备获取第一密码口令信息,其中,第一密码口令信息与第一账户对应;
[0121] 302、第一计算设备基于第一口令信息,生成多个数据片段;
[0122] 303、第一计算设备基于多个数据片段,生成第二口令信息,其中,第二口令信息与第一账户对应;
[0123] 304、第一计算设备将第二口令信息发送给第二计算设备。
[0124] 在本实施例中,第一口令信息包括第一账户。或者,第一口令信息包括与第一账户对应的第一密码。或者,第一口令信息同时包括第一账户和与第一账户对应的第一密码。
[0125] 可选地,上述步骤302可以采用但不限于下述方式:
[0126] 方式1:将第一口令信息以预设切分长度进行切分,生成多个数据片段。根据对口令安全度的需求,可灵活设定预设切分长度。理论上,切分长度越短,生成的数据片段的数量越多,计算越复杂,则基于多个数据片段生成的第二口令信息的复杂度就越高,相应的被破解的难度就越大,安全性就越高;但是,数据片段的数量越多,计算量也会越大,所以数据片段的数量并非越多越好,需要根据需求适应性设置。
[0127] 方式2:将第一口令信息扩展为第一固定长度的数据串,对第一固定长度的数据串以预设切分长度进行切分,获得多个数据片段。通过对第一口令信息进行扩展,一方面可以增加口令信息的长度,以增加长度后的口令信息作为数据基础来获得多个数据片段,有利于进一步加强加固后口令信息被破解的难度。
[0128] 方式3:将第一口令信息以随机切分长度进行切分,生成多个数据片段。
[0129] 可选地,上述步骤303可以采用但不限于下述方式:
[0130] 方式a:对多个数据片段分别进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息。
[0131] 方式b:对多个数据片段进行随机分组,得到多个分组;将每个分组内的数据片段作为一个整体进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息。
[0132] 方式c:按照设定的分组规则对多个数据片段进行分组,得到多个分组;将每个分组内的数据片段作为一个整体进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息。
[0133] 在上述方式b和c中,对数据片段分组后再进行哈希,有利于进一步提高第二口令信息的复杂度,增加破解难度,提高安全性。
[0134] 进一步,根据第一计算机设备包含的计算资源的情况,上述步骤303可以有不同的实施方式。例如,第一计算机设备可以具有CPU,或者具有GPU,或者同时具有CPU和GPU。基于此,上述步骤303可单独由CPU或GPU完成,或者结合使用CPU或GPU完成。
[0135] 其中,上述步骤303与前述实施例中“对多个数据片段进行哈希处理,以获得多个哈希结果;对多个哈希结果进行融合处理以得到目标口令信息”的操作类似,步骤303的详细实施方式可参见前述实施例中的相应描述并对部分描述做适应性调整即可,在此不再赘述。
[0136] 进一步,本申请实施例还提供一种数据处理方法,该数据处理方法是从服务器或第二计算机设备一端进行考虑的。口令信息加固方案越来越多样化,为了满足不同用户的需求,服务器或第二计算机可以支持多种口令信息加固方式,这要求服务器或第二计算机设备能够维护和管理以不同加固方式进行加固得到的口令信息或数据记录。则从服务器或第二计算机设备的角度来看,可以接收第一记录,并将第一记录存储至数据库中,该第一记录包括第一口令信息,第一口令信息以第一加密方式被加密;并会接收第二记录,并将第二记录存储至数据库中;其中,第二记录包括第二口令信息,第二口令信息以第二加密方式被加密;其中,第一加密方式不同于第二加密方式。
[0137] 除此之外,本申请实施例中的数据库可以存储多种类型的记录,例如,可以存储第一记录和第二记录,第一记录第一口令信息,第一口令信息以第一加密方式保持;第二记录包括第二口令信息,第二口令信息以第二加密方式保持;其中,第二加密方式与第一加密方式不同。
[0138] 值得说明的是,上述第一记录和第二记录仅用于说明本实施例的服务器或第二计算机设备可以接收以不同加密方式加密得到记录,或者仅用于说明本实施例的数据库中可以存储以不同加密方式加密得到记录,并不限于这两个记录。例如,服务器或第二计算机设备还可以接收以第三加密方式加密得到的第三记录,以第四加密方式加密得到的第四记录,等等。同理,数据库中还可以存储以第三加密方式加密得到的第三记录,以第四加密方式加密得到的第四记录,等等。
[0139] 其中,上述第一口令信息可以包括账户和/或密码;相应地,第二口令信息可以包括账户和/或密码。
[0140] 除上述数据处理方法之外,本申请实施例还可以提供可执行该数据处理方法的计算机设备。该计算机设备可以包括:存储器、处理器以及通信组件。存储器,用于存储计算机程序;处理器与存储器耦合,用于执行该计算机程序,以用于:获取第一密码口令信息,其中,第一密码口令信息与第一账户对应;基于第一口令信息,生成多个数据片段;基于多个数据片段,生成第二口令信息,其中,第二口令信息与第一账户对应;并通过通信组件将第二口令信息发送给第二计算设备。
[0141] 其中,第一口令信息包括第一账户。或者,第一口令信息包括与第一账户对应的第一密码。或者,第一口令信息同时包括第一账户和与第一账户对应的第一密码。
[0142] 可选地,处理器在生成多个数据片段时,具体用于:将第一口令信息以预设切分长度进行切分,生成多个数据片段;或者,将第一口令信息扩展为第一固定长度的数据串,对第一固定长度的数据串以预设切分长度进行切分,获得多个数据片段;或者,将第一口令信息以随机切分长度进行切分,生成多个数据片段。
[0143] 可选地,处理器在生成第二口令信息时,具体用于:对多个数据片段分别进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息;或者,对多个数据片段进行随机分组,得到多个分组;将每个分组内的数据片段作为一个整体进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息;或者,按照设定的分组规则对多个数据片段进行分组,得到多个分组;将每个分组内的数据片段作为一个整体进行哈希处理,得到多个哈希结果;对多个哈希结果进行融合处理,得到第二口令信息。
[0144] 本实施例提供的另一计算机设备包括:存储器、处理器以及通信组件。存储器,用于存储计算机程序;处理器与存储器耦合,用于执行该计算机程序,以用于:通过通信组件接收第一记录,并将第一记录存储至数据库中,该第一记录包括第一口令信息,第一口令信息以第一加密方式被加密;并会通过通信组件接收第二记录,并将第二记录存储至数据库中;其中,第二记录包括第二口令信息,第二口令信息以第二加密方式被加密;其中,第一加密方式不同于第二加密方式。
[0145] 需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤201至步骤204的执行主体可以为设备A;又比如,步骤201和202的执行主体可以为设备A,步骤203的执行主体可以为设备B;等等。
[0146] 另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如201、202等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0147] 图3为本申请一示例性实施例提供的一种计算机设备的结构示意图。如图3所示,该计算机设备包括:存储器30a和处理器30b。
[0148] 存储器30a,用于存储计算机程序,并可被配置为存储其它各种数据以支持在计算平台上的操作。这些数据的示例包括用于在计算平台上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
[0149] 存储器30a可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
[0150] 处理器30b,与存储器30a耦合,用于执行存储器30a中的计算机程序,以用于:获取用户输入的原始口令信息;以原始口令信息为数据基础,生成多个数据片段;对多个数据片段分别进行哈希处理,以获得多个哈希结果;对多个哈希结果进行融合处理以得到目标口令信息,该目标口令信息被上报给服务器进行认证处理。
[0151] 相应地,计算机设备还包括通信组件30c。通信组件30c在处理器30b的控制下将目标口令信息上报给服务器进行登录。
[0152] 在一可选实施例中,处理器30b在获得多个数据片段时,具体用于:将原始口令信息扩展为第一固定长度的数据串;对第一固定长度的数据串进行切分以获得多个数据片段。
[0153] 进一步,处理器30b在将原始口令信息扩展为第一固定长度的数据串时,具体用于:采用非内存困难型哈希函数,对原始口令信息与站点ID进行哈希处理,以获得第一固定长度的数据串。
[0154] 在另一可选实施例中,计算机设备还包括GPU 30g。基于此,处理器30b在获得多个数据片段时,具体用于:将多个数据片段拆分为L1和L2个数据片段;利用用于本次口令信息加固操作的K个CPU线程,采用内存困难型哈希函数对L1个数据片段分别进行哈希处理,以获得L1个哈希结果;利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对L2个数据片段分别进行哈希处理,以获得L2个哈希结果;其中,L1、L2是大于或等于1的整数,M、K是大于或等于2的整数。
[0155] 进一步,处理器30b在采用非内存困难型哈希函数对L2个数据片段分别进行哈希处理时,具体用于:每次从L2个数据片段中提取尚未处理的M个数据片段,将提取的M个数据片段转换为M张图形并分别送入M个GPU渲染管线进行哈希处理;
[0156] 相应地,在每个GPU渲染管线内部,采用非内存困难型哈希函数对相应图形循环执行N次哈希处理,以获得一个哈希结果;N是大于或等于2的整数。
[0157] 可选地,处理器30b在每次利用M个GPU渲染管线对M张图像进行哈希处理结束后,具体用于:判断本次的处理耗时与上一次的处理耗时是否在设定误差范围内;若是,则根据管线数调整步长更新当前管线数M,将更新后的管线数M作为下一次哈希处理使用的管线数;若否,将上一次哈希处理使用的管线数作为下一次哈希处理使用的管线数。
[0158] 在又一可选实施例中,处理器30b在对多个数据片段分别进行哈希处理时,具体用于:利用用于本次口令信息加固操作的K个CPU线程,采用内存困难型哈希函数对多个数据片段分别进行哈希处理,以获得多个哈希结果,K是大于或等于2的整数。
[0159] 在再一可选实施例中,处理器30b在对多个数据片段分别进行哈希处理时,具体用于:利用用于本次口令信息加固操作的M个GPU渲染管线,采用非内存困难型哈希函数对所述多个数据片段分别进行哈希处理,以获得多个哈希结果,M是大于或等于2的整数。
[0160] 可选地,处理器30b在对每个数据片段分别进行哈希处理之前,具体用于:获取计算机设备的CPU核数,并根据CPU核数创建K个CPU线程;并获取计算机设备的GPU资源,并在获取到GPU资源时初始化GPU渲染管线数M。
[0161] 基于上述获得的多个哈希结果,处理器30b在根据多个哈希结果得到目标口令信息,具体用于:将多个哈希结果进行合并,以获得合并结果;采用非内存困难型哈希函数,对合并结果进行哈希处理,以获得第二固定长度的数据串作为目标口令信息。
[0162] 进一步,如图3所示,该计算机设备还包括:显示器30d、电源组件30e、音频组件30f等其它组件。图3中仅示意性给出部分组件,并不意味着计算机设备只包括图3所示组件。
[0163] 上述图3中的通信组件被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
[0164] 上述图3中的显示器包括屏幕,其屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
[0165] 上述图3中的电源组件,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
[0166] 上述图3中的音频组件,可被配置为输出和/或输入音频信号。例如,音频组件包括一个麦克风(MIC),当音频组件所在设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器或经由通信组件发送。在一些实施例中,音频组件还包括一个扬声器,用于输出音频信号。
[0167] 本实施例所提供的计算机设备,首先获取用户输入的原始口令信息,并以该原始口令信息为数据基础,生成多个数据片段,并对多个数据片段进行哈希处理,进而获得多个哈希结果;之后对多个哈希结果进行融合处理以得到目标口令信息,并将其上报给服务器进行认证处理。其中,得到目标口令信息需要经过对多个数据片段进行哈希处理的过程,需要经过大量的计算工作,这就意味着加固后的目标口令信息的复杂度比较高,如果攻击者要暴力破解目标口令信息,每次破解都需要执行与加固口令信息处理等量的计算工作,这无疑提高了破解难度,降低了口令被破解的概率,提高口令安全性。
[0168] 相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由计算机设备执行的各步骤。
[0169] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0170] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0171] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0172] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0173] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
[0174] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
[0175] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
[0176] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0177] 以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。