掌桥专利:专业的专利平台
掌桥专利
首页

弱密码检测方法、装置、电子设备及可读存储介质

文献发布时间:2023-06-19 10:29:05


弱密码检测方法、装置、电子设备及可读存储介质

技术领域

本申请涉及安全技术领域,具体而言,涉及一种弱密码检测方法、装置、电子设备及可读存储介质。

背景技术

现已步入信息化时代,人们的生活数据、资产数据已经被信息化。因此企业及个人的信息数据已成为最具有价值的资产。这些信息资产关系到企业发展,关系到个人生命财产安全。在信息化设备建设中,信息系统数据会被保存在数据库中,所以,用户密码的强弱直接关系到企业及用户信息的安全。

因此,鉴于信息安全及用户和企业信息不被窃取,一般需要对用户密码进行安全检测。现有的弱密码检测,是使用常见弱密码,利用穷举法模拟登录的方法检查用户密码是否为弱密码,这种检测方式检测时间长且检测效率低。

发明内容

本申请实施例的目的在于提供一种弱密码检测方法、装置、电子设备及可读存储介质,用以改善现有技术中检测时间长且检测效率低的问题。

第一方面,本申请实施例提供了一种弱密码检测方法,所述方法包括:

获取待检测数据库中用户密码对应的加密方式,其中,所述用户密码为采用所述加密方式加密后的密码;

根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码;

将所述待检测数据库中的各个用户密码与所述多个加密弱密码进行比对,获得比对结果;

根据所述比对结果检测所述待检测数据库中的用户密码是否为弱密码。

在上述实现过程中,通过获取用户密码的加密方式,利用该加密方式对弱密码进行加密,然后将用户密码与加密弱密码进行比对,根据比对结果来对用户密码进行弱密码检测,相比于现有技术中使用弱密码,利用穷举法来模拟登录数据库进行弱密码检测的方式,本申请可以省略复杂的登录过程,使得检测效率更高。

可选地,所述加密方式包括加密算法以及加密所需的目标信息,所述根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码,包括:

利用所述目标信息以及所述加密算法对弱密码表中的弱密码进行加密,获得多个加密弱密码。

在上述实现过程中,通过获取用户密码加密过程中所需的目标信息和加密算法,从而在对弱密码进行加密时,可以实现用户密码的加密过程的还原,使得可以准确对弱密码进行加密,进而提高弱密码检测的精度。

可选地,所述目标信息包括随机数和/或用户账户名;通过以下方式获取所述目标信息:

获取所述待检测数据库中每个用户的用户信息,所述用户信息包括用户账户名和用户密码;

提取所述用户信息中的用户账户名;和/或根据所述用户账户名以及对应的用户密码获取所述用户密码加密所用的随机数。

在上述实现过程中,通过获取用户密码加密过程中所使用的随机数和/或用户账户名,从而可将随机数和/或用户账户名加入弱密码的加密过程中,以实现对弱密码的准确加密。

可选地,所述获取待检测数据库中用户密码对应的加密方式,包括:

获取登录所述待检测数据库的用户账户;

对所述用户账户进行验证,确定所述用户账户是否为授权账户;

若是,则获取所述待检测数据库中用户密码对应的加密方式。

在上述实现过程中,通过授权账户来获得用户密码对应的加密方式,从而可以避免加密方式被非法盗取后造成用户信息泄露的问题。

可选地,不同数据库的类型或版本对应的加密方式不同,所述获取待检测数据库中用户密码对应的加密方式,包括:

确定待检测数据库的类型或版本;

根据所述类型或版本获取所述待检测数据库中用户密码对应的加密方式。

在上述实现过程中,针对不同类型或版本的数据库设置对应的加密方式,这样可以直接根据数据库的类型或版本来获取加密方式,更加便捷。

可选地,所述获取待检测数据库中用户密码对应的加密方式之前,还包括:

根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;

其中,所述弱密码表包括所述第一弱密码集和所述第二弱密码集。

在上述实现过程中,通过弱密码生成规则和密码限定规则来生成弱密码集,这样除了普通的常见弱密码外,可针对待检测数据库生成另外的弱密码,实现了弱密码的扩展,从而能够更准确地实现弱密码的检测,提高用户密码的安全性。

可选地,所述获取待检测数据库中用户密码对应的加密方式之前,还包括:

根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;

获取所述第一弱密码集与所述第二弱密码集的并集;

获取预先创建的低复杂弱密码库;

从所述低复杂弱密码库中筛选出与所述并集中的弱密码相同的低复杂弱密码,所述弱密码表包括所述低复杂弱密码。

在上述实现过程中,通过获取低复杂弱密码库中与并集的交集作为弱密码表,从而可筛选出符合要求的弱密码表,实现对弱密码的准确检测。

可选地,所述获取待检测数据库中用户密码对应的加密方式之前,还包括:

根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;

根据获取的历史弱密码生成正则表达式;

根据所述正则表达式从所述第一弱密码集和所述第二弱密码集中筛选出与所述正则表达式匹配的弱密码,所述弱密码表包括筛选出的弱密码。

在上述实现过程中,通过正则表达式来进行弱密码的筛选,从而可以快速筛选出符合要求的弱密码。

可选地,所述获取待检测数据库中用户密码对应的加密方式之前,还包括:

获取所述待检测数据库中的多个用户信息;

根据所述多个用户信息构建弱密码表。

在上述实现过程中,通过用户信息来构建弱密码表,以此可获得更多的弱密码,实现弱密码的扩展。

可选地,所述方法还包括:

获取待检测数据库中的多个用户密码;

将所述多个用户密码进行比对;

若检测到存在相同的目标用户密码达到预设数量时,则确定所述目标用户密码为弱密码。

在上述实现过程中,通过将多个用户密码进行比对来实现弱密码的检测,从而可无需预先构建弱密码表,即无需依赖对弱密码进行加密的方式来实现弱密码检测,基于用户密码自身来检测的方式则更加便捷简单。

可选地,在所述待检测数据库中未存储目标用户密码对应的加密方式时,所述方法还包括:

获取目标用户账户;

在利用所述目标用户账户与弱密码表中的目标弱密码创建所述目标用户账户时,调用所述待检测数据库的加密函数,对所述目标弱密码进行加密,获得加密目标弱密码。

在上述实现过程中,通过还原用户账户创建的过程来实现弱密码的加密,这样即可无需将待检测数据库的加密方式暴露,也可实现按照对用户密码相同的加密方式对弱密码进行加密,确保了数据库的安全。

第二方面,本申请实施例提供了一种弱密码检测装置,所述装置包括:

加密方式获取模块,用于获取待检测数据库中用户密码对应的加密方式,其中,所述用户密码为采用所述加密方式加密后的密码;

弱密码加密模块,用于根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码;

比对模块,用于将所述待检测数据库中的各个用户密码与所述多个加密弱密码进行比对,获得比对结果;

检测模块,用于根据所述比对结果检测所述待检测数据库中的用户密码是否为弱密码。

可选地,所述加密方式包括加密算法以及加密所需的目标信息,所述弱密码加密模块,用于利用所述目标信息以及所述加密算法对弱密码表中的弱密码进行加密,获得多个加密弱密码。

可选地,所述目标信息包括随机数和/或用户账户名;通过以下方式获取所述目标信息:

获取所述待检测数据库中每个用户的用户信息,所述用户信息包括用户账户名和用户密码;

提取所述用户信息中的用户账户名;和/或根据所述用户账户名以及对应的用户密码获取所述用户密码加密所用的随机数。

可选地,所述加密方式获取模块,用于获取登录所述待检测数据库的用户账户;对所述用户账户进行验证,确定所述用户账户是否为授权账户;若是,则获取所述待检测数据库中用户密码对应的加密方式。

可选地,不同数据库的类型或版本对应的加密方式不同,所述加密方式获取模块,用于确定待检测数据库的类型或版本;根据所述类型或版本获取所述待检测数据库中用户密码对应的加密方式。

可选地,所述装置还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;其中,所述弱密码表包括所述第一弱密码集和所述第二弱密码集。

可选地,所述装置还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;获取所述第一弱密码集与所述第二弱密码集的并集;获取预先创建的低复杂弱密码库;从所述低复杂弱密码库中筛选出与所述并集中的弱密码相同的低复杂弱密码,所述弱密码表包括所述低复杂弱密码。

可选地,所述装置还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;根据获取的历史弱密码生成正则表达式;根据所述正则表达式从所述第一弱密码集和所述第二弱密码集中筛选出与所述正则表达式匹配的弱密码,所述弱密码表包括筛选出的弱密码。

可选地,所述装置还包括:

弱密码表构建模块,用于获取所述待检测数据库中的多个用户信息;根据所述多个用户信息构建弱密码表。

可选地,所述检测模块,还用于获取待检测数据库中的多个用户密码;将所述多个用户密码进行比对;若检测到存在相同的目标用户密码达到预设数量时,则确定所述目标用户密码为弱密码。

可选地,在所述待检测数据库中未存储目标用户密码对应的加密方式时,所述弱密码加密模块,还用于获取目标用户账户;在利用所述目标用户账户与弱密码表中的目标弱密码创建所述目标用户账户时,调用所述待检测数据库的加密函数,对所述目标弱密码进行加密,获得加密目标弱密码。

第三方面,本申请实施例提供一种电子设备,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如上述第一方面提供的所述方法中的步骤。

第四方面,本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时运行如上述第一方面提供的所述方法中的步骤。

本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本申请实施例提供的一种用于执行弱密码检测方法的电子设备的结构示意图;

图2为本申请实施例提供的一种弱密码检测方法的流程图;

图3为本申请实施例提供的一种弱密码检测装置的结构框图。

具体实施方式

下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述。

本申请实施例提供一种弱密码检测方法,通过获取用户密码的加密方式,利用该加密方式对弱密码进行加密,然后将用户密码与加密弱密码进行比对,根据比对结果来对用户密码进行弱密码检测,这样无需利用弱密码来登录数据库,本申请的弱密码检测方法效率更高。

请参照图1,图1为本申请实施例提供的一种用于执行弱密码检测方法的电子设备的结构示意图,所述电子设备可以包括:至少一个处理器110,例如CPU,至少一个通信接口120,至少一个存储器130和至少一个通信总线140。其中,通信总线140用于实现这些组件直接的连接通信。其中,本申请实施例中设备的通信接口120用于与其他节点设备进行信令或数据的通信。存储器130可以是高速RAM存储器,也可以是非易失性的存储器(non-volatilememory),例如至少一个磁盘存储器。存储器130可选的还可以是至少一个位于远离前述处理器的存储装置。存储器130中存储有计算机可读取指令,当所述计算机可读取指令由所述处理器110执行时,电子设备执行下述图2所示方法过程,例如,存储器130可用于存储数据库中的用户密码以及对应的加密方式,还可以存储弱密码,处理器110可用于在进行弱密码检测时,从存储器130中获取加密方式,并对弱密码进行加密,然后再进行比对,以此来进行弱密码检测。

可以理解,图1所示的结构仅为示意,所述电子设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。

请参照图2,图2为本申请实施例提供的一种弱密码检测方法的流程图,该方法包括如下步骤:

步骤S110:获取待检测数据库中用户密码对应的加密方式。

其中,待检测数据库可以是指用于存储用户密码的数据库,用户密码是指数据库本身的账户密码。当然,该用户密码还可以包括第三方系统的密码,例如,企业中某个员工在登录其企业内部所提供的内部系统时,可以使用用户账户名和密码的形式登录系统,后台管理终端可以对企业中各个员工登录各个系统的账户和密码进行存储,如存储在相应的数据库中。而为了确保用户密码不被泄露,以保护用户隐私,在进行存储时,可以先对用户密码进行加密后再存储,即数据库中存储的用户密码是采用加密方式加密后的密码。在对用户密码进行加密后,由于加密不可逆,使得非法人员很难对用户密码进行破解以获得原始的明文密码,所以,可有效确保用户密码的安全性。

需要说明的是,第三方系统的用户密码在存储到数据库时也采用加密的方式进行存储,在获得第三方系统授权的情况下,可以获得第三方系统的用户密码的加密方式。

其中,加密方式可以是第三方系统或数据库根据需求所选择的加密方式,如哈希算法、MD5算法等。

步骤S120:根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码。

在获得加密方式后,可根据加密方式对弱密码表中的弱密码进行加密。弱密码表可以是预先建立的,其中包括多个弱密码,弱密码可以是管理员设置的一些安全性较低的密码,其一般可以包括一些常用密码,常用密码是指在用户环境中为了方便、历史习惯等因素而形成的一些口令,弱密码表中还可以包括一些熟知密码,熟知密码是指一些知名厂商的产品设置的默认用户、默认密码等,这些熟知密码可以从网络资源中获取,然后存储到弱密码表中。

在对弱密码进行加密时,是将弱密码表中的所有弱密码提取出来,对每个弱密码进行加密,从而获得多个加密弱密码。

步骤S130:将所述待检测数据库中的各个用户密码与所述多个加密弱密码进行比对,获得比对结果。

在获得多个加密弱密码后,可将每个加密弱密码与每个用户密码进行一一比对,获得相应的比对结果。

步骤S140:根据所述比对结果检测所述待检测数据库中的用户密码是否为弱密码。

若比对结果中某个加密弱密码与某个用户密码相同,则认为该用户密码是弱密码,并且,还可以将未加密前的弱密码作为该用户密码的明文密码输出,使得管理人员可以知晓用户密码的设置情况。

当然在检测到某个用户密码为弱密码时,可以对该用户账户进行标记,使得在检测到该用户账户下次登录时,可以根据标记知晓该用户的用户密码为弱密码,从而可以提醒用户对用户密码进行更改,其中在获得第三方系统授权的情况下可以实现对第三方系统的用户账户进行标记。或者在检测到某个用户密码为弱密码时,对该用户账户进行禁用标记(某些情况下可以在禁用之前向用户确认,在用户确认后再标注禁用标记),使得利用该用户账户和用户密码无法登录系统,只有用户在更改为符合要求的用户密码后,才可登录系统,从而可避免非法人员利用该用户账户和用户密码登录系统,造成隐私泄露的问题。

在上述实现过程中,通过获取用户密码的加密方式,利用该加密方式对弱密码进行加密,然后将用户密码与加密弱密码进行比对,根据比对结果来对用户密码进行弱密码检测,相比于现有技术中使用弱密码,利用穷举法来模拟登录数据库进行弱密码检测的方式,本申请可以省略复杂的登录过程,使得检测效率更高。

在一些实施方式中,为了提高用户密码的安全性,有的数据库在对用户密码进行加密的过程中,会使用更复杂的加密方法,如引入变化因素如(salt等),使得相同的明文密码进行加密后,获得的用户密码依然不相同。所以,为了对弱密码进行加密,还可以对用户密码的加密过程进行分析,获得用户密码加密时的加密信息。即,用户密码的加密方式包括加密算法以及加密所需的目标信息,在对弱密码进行加密时,可以利用目标信息以及加密算法对弱密码表中的弱密码进行加密,获得多个加密弱密码。

其中,目标信息可以是指上述的随机数等信息,或者在用户密码进行加密时,是将明文密码与用户账户名进行拼接后加密的,则目标信息还可包括用户账户名等信息。也就是说,目标信息可以理解为是在用户密码的加密过程中除明文密码外其他所结合的信息,如明文密码与其他信息进行结合后再进行加密,该其他信息即为目标信息。所以,在实际应用中,其他信息不同,其对应的目标信息也不同。

在一些实施方式中,目标信息包括随机数和/或用户账户名,在获取目标信息的方式可以为:获取待检测数据库中每个用户的用户信息,该用户信息包括用户账户名和用户密码,然后提取用户信息中的用户账户名,和/或根据用户账户名以及对应的用户密码获取所述用户密码加密所用的随机数。

其中,随机数可以是指一些可变因素,如随机因素、跟时间相关的可变因素等,其可以包括利用一些随机数生成的salt、跟时间相关的salt等。

为了便于获取目标信息,待检测数据库中可以存储有各个用户信息以及各个用户密码对应的目标信息,这样可以直接从待检测数据库中获取用户信息,并获得用户账户名。待检测数据库可以将用户账户名、用户密码以及目标信息按照对应关系进行存储,或者为了确保安全性,可以进行加密存储,这样在获取目标信息时,可先对其进行解密,然后获得其中的目标信息。

这样在对弱密码进行加密时,也可以加入用户密码加密时所使用的目标信息,从而可还原用户密码加密的过程,对弱密码也按照同样的方式进行加密,这样可使得同样的密码加密后获得的加密密码也是一样的,可便于准确检测出用户密码中的弱密码。

另外,随机数为上述的salt时,由于Salt通常是和密码散列在一个字段存储,所以可以直接从存储字段提取获得对应的salt,用于后续对弱密码进行加密使用。

在上述实现过程中,通过获取用户密码加密过程中所使用的随机数和/或用户账户名,从而可将随机数和/或用户账户名加入弱密码的加密过程中,以实现对弱密码的准确加密。

在一些实施方式中,为了确保待检测数据库中的信息不容易被泄露,在获取待检测数据库中的信息时,需要获得相应的授权,如在获取用户密码对应的加密方式时,可以先获取登录待检测数据库的用户账户,然后对该用户账户进行验证,确定该用户账户是否为授权账户,若是,则获取待检测数据库中用户密码对应的加密方式。

例如,在进行检测时,检测用户可先获得待检测数据库授权的用户账户,然后利用用户账户登录待检测数据库,在获得授权的情况下,则可获取待检测数据库中的信息。

为了进一步确保待检测数据库的安全,可以针对不同的用户账户设置不同的信息获取权限,如若只是为了获取用户账户名,则可以配置一个权限较低的用户账户,若是需要获取全部的用户信息,则可以配置一个权限较高的用户账户,例如,利用上述的授权账户可以获取用户密码以及用户密码的加密方式,这样可以根据需求为检测用户提供相应的用户账户,从而利用不同权限的用户账户登录待检测数据库时,可以访问获得不同的信息。

在上述实现过程中,通过授权账户来获得用户密码对应的加密方式,从而可以避免加密方式被非法盗取后造成用户信息泄露的问题。

在一些实施方式中,不同类型或版本的数据库可能配置了对应的加密方式,所以,可以通过配置文件或登录数据库后查询获得对应的加密方式。或者也可以预先建立不同类型或版本的数据库与加密方式的对应关系,这样在获得待检测数据库中用户密码对应的加密方式时,可以先确定待检测数据库的类型或版本,然后根据类型或版本获取待检测数据库中用户密码对应的加密方式。

其中,有的数据库可以通过版本或者类型来直接确定加密方式,而有的数据库可能提供了多种加密方式,但是其具体采用哪种加密方式进行加密可以从数据库的配置信息中获取。

例如,对于数据库从Oracle7到Oracle 10gR2,其使用DES算法对密码进行加密;数据库Oracle 11g到19C中的“S:”部分的密文引入了随机salt,使用SHA1算法对密码进行加密。

下面针对一些数据库的弱密码检测过程进行举例说明。

1、如对数据库Oracle 11g进行弱密码检测的过程可以如下所示:

利用授权账户登录数据库,获得用户密码以及加密方式中的目标信息,其目标信息包括随机数salt;

利用salt以及SHA1算法对弱密码表中的弱密码进行加密,获得加密弱密码;

将加密弱密码与用户密码进行一一比对。

2、对数据库Oracle 10g进行弱密码检测的过程可以如下所示:

利用授权账户登录数据库,从dba_users或user$表中查询获得用户密码以及目标信息,其目标信息包括用户账户名;

利用用户账户名和DES算法对弱密码表中的弱密码进行加密,获得加密弱密码;

将加密弱密码与获得的用户密码进行比对。

3、对于数据库Sql server,其使用了一个没有公开的函数pwdencrypt()对用户密码产生一个hash,经过分析发现Sql server2005、Sql server2008与Sql server2012-2016版本对应的加密方式不同。无论哪个版本,针对同一密码,两次调用pwdencrypt()生成的密码hash都不相同。Sql server2005、Sql server2008的加密算法原理是首先生成一个跟时间相关的salt值,然后将密码与salt连接,使用SHA1计算散列;再将密码转成大写后与salt连接,使用SHA1计算散列。最终的密码由0x0100、salt、两个SHA1散列拼接而成。Sqlserver2012与Sql server2008、Sql server2005版本类似,区别是只计算一次散列。Sqlserver2012及以后版本的加密算法原理是首先生成一个跟时间相关的salt值,然后将密码与salt连接,使用SHA512计算散列,最后的密码由0x0200、salt、SHA512散列构成。用户密码存储在master库的sys.sql_logins表中。

所以,对于Sql server数据库的弱密码检测过程如下所示:

利用授权账户登录数据库,通过查询语句:select name,password_hash fromsys.sql_logins where is_disabled=0,查询获得用户密码;

从用户密码的开始6个字符判断该用户密码加密所使用的是SHA1或SHA51函数;

从用户密码中提取salt值,并提取password-hash;

根据所确定的加密函数、salt值,对弱密码表中的弱密码进行加密,获得加密弱密码;

将加密弱密码与上面提取的password-hash进行比对。

5、对于金仓数据库,其一共有7种加密方式,其中,Password加密方式中信息以明文的方式存储,md5认证方式中密码以md5散列的方式传存储,相对于Password安全一些,也是金仓数据库默认的加密方式。

对金仓数据库的弱密码检测过程如下所示:

利用授权账户登录数据库,获取数据库的加密方式;

如果加密方式为Password或md5,则继续下一步,否则结束;

从sys_authid表中查询获得用户密码;

在Password加密方式时,无需对弱密码表进行加密,在md5加密方式下,利用用户账户名和md5算法对弱密码进行加密;

将加密后的弱密码与用户密码进行比对,弱密码不需要加密时,则直接将弱密码与用户密码进行比对。

6、对于数据库Mysql的加密方式有三种:Mysql 4.1版本之前是Mysql323加密的,Mysql 4.1和之后的版本都是Mysql SHA1加密的,直到Mysql8使用的是SHA2算法加密的。采用Mysql323加密后是16位的密文,Mysql SHA1加密后是40位的密文,在Mysql8中使用SHA2加密后是140位的密文。Mysql数据库中自带Old_Password(str)和Password(str)函数,其均可以在Mysql数据库中查询获得,前者是Mysql323加密的,后者是Mysql SHA1加密的,而Mysql8使用SHA2加密不再使用Old_Password(str)和Password(str)函数。

其Mysql数据库的弱密码检测过程如下所示:

利用授权账户登录数据库,从mysql.user表中查询获得用户密码,并判断用户密码的加密方式是Mysql323还是Mysql SHA1或者SHA2;

利用对应的加密方式对弱密码表中的弱密码进行加密,获得加密弱密码;

将加密弱密码与用户秘密进行比对。

7、数据库PostgreSQL可以有13种加密方式,包括:"trust"、"reject"、"md5"、"password"、"scram-sha-256"、"gss"、"sspi"、"ident"、"peer"、"pam"、"ldap"、"radius"or"cert"。而PostgreSQL10版本之前使用md5算法进行加密,PostgreSQL10版本及之后使用scram-sha-256进行加密,PostgreSQL10-12版本仍然默认使用MD5加密,PostgreSQL13和之后的版本默认使用scram-sha-256加密。

对于PostgreSQL数据库的弱密码检测过程如下所示:

利用授权账户登录数据库,从pg_shadow表中查询获得用户密码,并判断加密方式是否是md5或scram-sha-256,并提取password-hash;

如果是md5加密,则使用用户账户名作为salt,如果是scram-sha-256加密,则从用户密码中提取salt;

根据提取出来的salt,利用对应的加密方式对弱密码表中的弱密码进行加密,获得加密弱密码;

将加密弱密码与password-hash进行比对。

在上述实现过程中,利用授权账户登录不同类型或版本的数据库,可分析获得该数据库的加密方式,然后通过少量查询即可获得所需的信息,而对于弱密码的检测在数据库外执行,对数据库自身的业务运行不会产生影响,从而可实现快速、低干扰的弱密码检测。并且,针对不同的数据库的加密方式可采用插件化配置,这样比较灵活,易于扩展,例如,对于新数据库类型的扩展,只需要新增数据检测配置的插件以及对应的加密方式即可快速支持新的数据库类型。

在一些实施方式中,为了扩展获得更多的弱密码,还可以根据设定的弱密码生成规则获取第一弱密码集以及根据创建账户时设定的密码限定规则,获取第二弱密码集,其中,弱密码表包括第一弱密码集和第二弱密码集。

其中,设定的弱密码生成规则可以是指一些弱密码的生成策略,如其策略包括:最短密码长度为8个字符,密码至少包括以下四种类别的字符中的2种:

(1)英语大写字母;(2)英语小写字母;(3)西方阿拉伯数字;(4)非字母数字符合,如:@、#、$、%、&、*等。

上述的弱密码生成规则即为上述所示的规则,或者是上述所示的规则的反面,如弱密码生成规则包括:最短密码长度小于8个字符的,或者密码没有包括上面四种类别的字符中的2种。所以,可以根据该弱密码生成规则,随机生成一些弱密码,组成第一弱密码集。

而创建账户时设定的密码限定规则可以是指数据库在用户注册账户过程中对密码设置的限定规则,如限定用户设置的密码的长度不小于8个字符,必须包含数字、英文字母大小写等,而密码限定规则即可以为:密码长度不小于8个字符,必须包含数字、英文字母大小写等,根据这个密码限定规则生成的第二弱密码集中的弱密码可以是一些相对复杂度较低的密码,虽然用户创建账户时输入的密码符合前端设置的密码限定规则,但是该密码限定规则只是密码的最低要求,所以很多密码也很可能容易被破解。

上述的弱密码生成规则可以是各个数据库设定的规则,每个不同数据库设定的弱密码生成规则可以不相同,这样生成的第一弱密码集也不相同,而每个数据库对应的前端的密码限定规则可能也不同,所以根据前端的密码限定规则生成的第二弱密码集也不相同,所以,将第一弱密码集与第二弱密集组成弱密码表,除了常用密码、熟知密码外,还可以包括第一弱密码集和第二弱密码集,实现了弱密码的扩展。

并且,在对待检测数据库进行弱密码检测时,则可先获取待检测数据库对应的弱密码生成规则和对应的密码限定规则,然后来动态生成对应的弱密码表,也就是说,针对不同数据库,其弱密码表可以不同。

另外,上述的弱密码生成规则和密码限定规则可以是根据数据库的安全级别来设定的,也就说,弱密码表是根据数据库的安全级别来生成的,对于安全级别高的数据库,其弱密码表中的弱密码可以相对复杂一些,这样匹配到某些用户密码时,也认为该用户密码为弱密码,其安全性不高。

在上述实现过程中,通过弱密码生成规则和密码限定规则来生成弱密码集,这样除了普通的常见弱密码外,可针对待检测数据库生成另外的弱密码,实现了弱密码的扩展,从而能够更准确地实现弱密码的检测,提高用户密码的安全性。

在一些实施方式中,若将第一弱密码集与第二弱密码集组成弱密码表可能会使得弱密码数量过多,从而导致密码比对时信息处理负担较大,所以,还可以获取第一弱密码集与第二弱密码集的并集,获取预先创建的低复杂弱密码库,再从低复杂弱密码库中筛选出与并集中的弱密码相同的低复杂弱密码,低复杂弱密码组成弱密码表。

其中,低复杂弱密码库是指经过不断积累,形成的一个低复杂口令的库,或者是根据策略通过程序自动生成的密码库。低复杂弱密码库可以是预先建立的,由于上述的第一弱密码集和第二弱密码集是指一些相对比较简单的密码,所以,可以获取低复杂弱密码库与并集之间的交集,获得的交集中的弱密码即可作为弱密码表,从而可以筛选出一些相对简单容易破解的密码作为弱密码表中的弱密码。

在上述实现过程中,通过获取低复杂弱密码库中与并集的交集作为弱密码表,从而可筛选出符合要求的弱密码表,实现对弱密码的准确检测。

在一些实施方式中,为了对第一弱密码集和第二弱密码集进行筛选,还可以根据获取的历史弱密码生成正则表达式,然后根据正则表达式从第一弱密码集和第二弱密码集中筛选出与该正则表达式匹配的弱密码,该弱密码即可作为弱密码表中的弱密码。

其中,正则表达式可以是根据常用密码、熟知密码或低复杂弱密码库中的弱密码来确定的,如电子设备可以根据常用密码、熟知密码或低复杂弱密码库中的弱密码的组成规律来生成相应的正则表达式。在实际应用中,其正则表达式可以为一个或多个,从而可以利用正则表达式快速从第一弱密码集和第二弱密码集中筛选出符合要求的弱密码。

在上述实现过程中,通过正则表达式来进行弱密码的筛选,从而可以快速筛选出符合要求的弱密码。

在一些实施方式中,对于获取弱密码表的方式,还可以是获取待检测数据库中的多个用户账户,根据多个用户账户来构建弱密码表。

其中,用户信息可以包括用户在进行账户注册(包括数据库的账户注册或第三方系统的账户注册)时所输入的个人信息,如可以包括用户姓名、用户账户名、生日、年龄等信息,则在构建弱密码表时,可以将用户信息与上述的常用密码、熟知密码进行组合,如用户账户名+弱密码,用户账户名缩写+弱密码,用户姓名缩写+弱密码,用户姓名缩写+生日+弱密码等,也就是将用户信息与预先设定的一些弱密码进行各种组合,从而构建弱密码表,以获得更多的弱密码。

可以理解地,由于常用密码、熟知密码和低复杂弱密码库,这些弱密码可能对于每个数据库都是通用的,所以可以提前生成,并存储在数据库中,这样可以提高弱密码检测效率,而由于每个数据库中的用户信息不同,所以对于上述根据用户信息构建弱密码,可以在进行弱密码检测时才生成,这样可针对每个数据库动态生成一些不同的弱密码,使得可以针对每个数据库存储的信息的特点实现弱密码的扩展。

在一些实施方式中,为了确保数据库的安全性,避免非法人员在获得数据库授权后获取用户密码的加密方式而对用户密码进行破解的问题,所以,数据库还可以不公开对应的加密方式,而是只公开相应的用户信息,这样在待检测数据库中未存储目标用户密码对应的加密方式,且该数据库对用户密码的加密方式中未引入可变因素时,为了实现对弱密码的加密,可以获取目标用户账户,然后在利用目标用户账户与弱密码表中的目标弱密码创建目标用户账户时,调用待检测数据库的加密函数,对目标弱密码进行加密,获得加密目标弱密码。

其中,在创建用户账户时需要用户账户和用户密码,然后将创建过程的用户账户和用户密码存储在待检测数据库中,当然待检测数据库中可以存储多个系统的用户信息。所以,此时若不知道待检测数据库的加密方式时,可以利用账户的创建过程中待检测数据库的加密方式实现对弱密码的加密。

上述的目标用户账户是指其中一个账户,然后利用目标用户账户与弱密码表中的其中一个弱密码,实现目标用户账户的创建(当然若是创建第三方系统的账户时,也需要获得第三方系统的授权),在创建成功后,待检测数据库会将用户输入的密码进行加密后存储,也就是上述实施例中对用户密码进行加密存储的方式,只是此时的用户密码是指弱密码表中的弱密码。数据库在进行加密时,会提供相应的加密函数进行加密,所以可以调用待检测数据库的加密函数对弱密码进行加密,按照该方式可通过创建多个用户账户来实现对多个弱密码的加密,也就是说,通过还原用户账户创建的过程来实现弱密码的加密,这样即可无需将待检测数据库的加密方式暴露,也可实现按照对用户密码相同的加密方式对弱密码进行加密,确保了数据库的安全。

在一些实施方式中,由于一些用户在创建账户时,可能直接使用了企业或数据库为其分配的默认密码,而并没有更改,而数据库在加密时没有加入可变因素,可能使得加密后的多个用户的密码相同,而这些默认密码可能安全性也比较低,所以,为了更加精确检测用户密码中是否存在弱密码,除了上述采用将加密弱密码与用户密码进行比对的方式外,还可以判断用户密码的相似性,其实现过程为:获取待检测数据库中的多个用户密码,将多个用户密码分别进行比对,若检测到存在相同的目标用户密码达到预设数量时,则确定该目标用户密码为弱密码。

其中,目标用户密码是指存在相同的用户密码达到预设数量的用户密码,例如,若多个用户密码中的某个用户密码x,经过比对,在多个用户密码中存在有3个相同的用户密码x,即有三个用户的用户密码相同,若预设数量设置为2,此时,该用户密码x即称为目标用户密码,从而确定该用户密码x为弱密码,这样也可实现对数据库的弱密码检测。

当然,在没有获得对弱密码进行加密的加密方式时,这种情况下可以直接利用用户密码来进行弱密码检测,即可以直接按照上述实施例中将多个用户密码进行比对来实现弱密码的检测,从而可无需预先构建弱密码表,即无需依赖对弱密码进行加密的方式来实现弱密码检测,基于用户密码自身来检测的方式则更加便捷简单。

请参照图3,图3为本申请实施例提供的一种弱密码检测装置200的结构框图,该装置200可以是电子设备上的模块、程序段或代码。应理解,该装置200与上述图2方法实施例对应,能够执行图2方法实施例涉及的各个步骤,该装置200具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。

可选地,所述装置200包括:

加密方式获取模块210,用于获取待检测数据库中用户密码对应的加密方式,其中,所述用户密码为采用所述加密方式加密后的密码;

弱密码加密模块220,用于根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码;

比对模块230,用于将所述待检测数据库中的各个用户密码与所述多个加密弱密码进行比对,获得比对结果;

检测模块240,用于根据所述比对结果检测所述待检测数据库中的用户密码是否为弱密码。

可选地,所述加密方式包括加密算法以及加密所需的目标信息,所述弱密码加密模块220,用于利用所述目标信息以及所述加密算法对弱密码表中的弱密码进行加密,获得多个加密弱密码。

可选地,所述目标信息包括随机数和/或用户账户名;通过以下方式获取所述目标信息:

获取所述待检测数据库中每个用户的用户信息,所述用户信息包括用户账户名和用户密码;

提取所述用户信息中的用户账户名;和/或根据所述用户账户名以及对应的用户密码获取所述用户密码加密所用的随机数。

可选地,所述加密方式获取模块210,用于获取登录所述待检测数据库的用户账户;对所述用户账户进行验证,确定所述用户账户是否为授权账户;若是,则获取所述待检测数据库中用户密码对应的加密方式。

可选地,不同数据库的类型或版本对应的加密方式不同,所述加密方式获取模块210,用于确定待检测数据库的类型或版本;根据所述类型或版本获取所述待检测数据库中用户密码对应的加密方式。

可选地,所述装置200还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;其中,所述弱密码表包括所述第一弱密码集和所述第二弱密码集。

可选地,所述装置200还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;获取所述第一弱密码集与所述第二弱密码集的并集;获取预先创建的低复杂弱密码库;从所述低复杂弱密码库中筛选出与所述并集中的弱密码相同的低复杂弱密码,所述弱密码表包括所述低复杂弱密码。

可选地,所述装置200还包括:

弱密码表构建模块,用于根据设定的弱密码生成规则获取第一弱密码集;以及根据创建账户时设定的密码限定规则,获取第二弱密码集;根据获取的历史弱密码生成正则表达式;根据所述正则表达式从所述第一弱密码集和所述第二弱密码集中筛选出与所述正则表达式匹配的弱密码,所述弱密码表包括筛选出的弱密码。

可选地,所述装置200还包括:

弱密码表构建模块,用于获取所述待检测数据库中的多个用户信息;根据所述多个用户信息构建弱密码表。

可选地,所述检测模块240,还用于获取待检测数据库中的多个用户密码;将所述多个用户密码进行比对;若检测到存在相同的目标用户密码达到预设数量时,则确定所述目标用户密码为弱密码。

可选地,在所述待检测数据库中未存储目标用户密码对应的加密方式时,所述弱密码加密模块220,还用于获取目标用户账户;在利用所述目标用户账户与弱密码表中的目标弱密码创建所述目标用户账户时,调用所述待检测数据库的加密函数,对所述目标弱密码进行加密,获得加密目标弱密码。

需要说明的是,本领域技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再重复描述。

本申请实施例提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,执行如图2所示方法实施例中电子设备所执行的方法过程。

本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如,包括:获取待检测数据库中用户密码对应的加密方式,其中,所述用户密码为采用所述加密方式加密后的密码;根据所述加密方式对弱密码表中的弱密码进行加密,获得多个加密弱密码;将所述待检测数据库中的各个用户密码与所述多个加密弱密码进行比对,获得比对结果;根据所述比对结果检测所述待检测数据库中的用户密码是否为弱密码。

综上所述,本申请实施例提供一种弱密码检测方法、装置、电子设备及可读存储介质,通过获取用户密码的加密方式,利用该加密方式对弱密码进行加密,然后将用户密码与加密弱密码进行比对,根据比对结果来对用户密码进行弱密码检测,相比于现有技术中使用弱密码,利用穷举法来模拟登录数据库进行弱密码检测的方式,本申请可以省略复杂的登录过程,使得检测效率更高。

在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。

以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

相关技术
  • 弱密码检测方法、装置、电子设备及可读存储介质
  • 弱密码生成方法、密码检测方法、装置及电子设备
技术分类

06120112568277