发明内容
本发明的目的在于提供一种动态验证方法和系统,用以解决现有技术中的验证方法难以规避机器操作的技术问题。
为了实现上述目的,本发明采用以下的技术方案:
一种动态验证方法,所述方法包括:
接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码;
接收用户在输入界面中输入的第一待验码并进行验证;
若所述第一待验码验证失败,则结束当前流程;若验证成功,则获取用户在第一验证过程中产生的用户行为信息;其中,用户行为信息包含用户账户信息;
调用数据库并根据所述用户行为信息判断用户的风险等级;
若用户为低危用户则提示验证通过,若用户为高危用户则提示验证失败,若用户为中危用户则进行二次验证。
进一步的,所述中危用户进行二次验证的过程包括:
接收所述中危用户的第二验证请求,响应所述第二验证请求并随机生成第二动态验证码;
接收所述中危用户在输入界面中输入的第二待验码并获取所述第二待验码输入的平均时间间隔;
判断所述第二待验码是否输入正确,若错误则提示验证失败;若正确则进一步判断所述平均时间间隔是否大于系统平均时间间隔阈值,若是则提示验证成功,否则验证失败。
进一步的,所述第一动态验证码和所述第二动态验证码的生成过程均包括:
使用随机字符生成验证码;
根据所述验证码生成基础静态图层;
使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧;
为得到的多个复合帧预设帧速以生成所述第一动态验证码或第二动态验证码。
进一步的,所述基础静态图层中字符与背景使用对比色,所述验证码的各个字符相互分离。
进一步的,所述数据库的构建过程包括:
分别选取一定数量的真实用户第一样本数据和机器第一样本数据;其中,两种第一样本数据均包括鼠标悬停时间、输入字符时间间隔、响应时间单一用户访问频率以及用户客户端环境信息个数;
其中,客户端环境信息包括:浏览器版本、操作系统版本、屏幕分辨率、I P地址;
将所述真实用户第一样本数据和所述机器第一样本数据作为训练样本,通过决策树算法分别建立真实用户和机器的决策树分类模型;
将所述决策树分类模型存储在所述数据库中。
进一步的,基于所述决策树算法识别为是否为真实用户的过程包括:
采集当前用户的用户行为信息;
调用所述决策树分类模型对所述用户行为信息进行分类,并获得分类结果;
其中,所述分类结果为真实用户或机器。
进一步的,所述数据库的构建过程还包括:
分别选取一定数量的真实用户第二样本数据和机器第二样本数据;其中,两种所述第二样本数据均为鼠标轨迹;
将所述真实用户第二样本数据和所述机器第二样本数据作为训练样本,通过余弦相似度算法分别对第二样本数据进行训练,以获得第一余弦相似度阈值α和第二余弦相似度阈值β;
将所述第一余弦相似度阈值和第二余弦相似度阈值存储在所述数据库中;
其中,余弦相似度的计算公示为:
其中,(x1,y1)为鼠标轨迹上的第一向量坐标点;(x1,y1)为鼠标轨迹上的第二向量坐标点;cosθ为第一向量坐标点和第二向量坐标点的相似度值。
进一步的,基于所述余弦相似度算法计算是否为真实用户的过程包括:
采集用户移动鼠标时鼠标轨迹上各点的横坐标x和纵坐标y;
将采集到的多个鼠标轨迹坐标点进行多项式拟合;
通过最高幂次判断多项式是否为一次型多项式,若为一次型,则判定为机器操作;其中,判定为一次型多项式的情形包括:
a)若多项式最高幂次为1,则为一次型多项式,则判定为机器操作;
b)若多项式最高幂次大于1,但大于1的幂次系数之和小于第一余弦相似度阈值α,则表示高幂次系数很小,此时也认为该多项式为一次型多项式,判定为机器操作;
若拟合的多项式不为一次型,则进行余弦相似度判定,判定过程包括:
将采集的坐标点与系统中保存的同一用户的坐标点进行余弦相似度计算,当余弦相似度大于第一余弦相似度阈值β时,则判定该用户为机器模拟的用户,否则为真实用户。
进一步的,所述调用数据库并根据所述用户行为信息判断用户的风险等级包括:
当基于所述决策树分类模型和所述余弦相似度算法对该用户的判定均为真实用户时,认为该用户为低危用户;
当基于所述决策树分类模型和所述余弦相似度算法对该用户的判定不同时,则认为该用户为中危用户;
当基于所述当所述决策树分类模型和所述余弦相似度算法对该用户的判定均为机器操作时,则认为该用户为高危用户。
第二方面,本发明还提供一种动态验证系统,所述系统包括:
一次验证模块,用于接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码对用户进行第一次验证;
用户行为信息采集模块,用于采集用户在第一次验证过程中产生的用户行为信息;
用户风险等级判断模块,用于调用数据库并根据用户行为信息对用户的风险等级进行判断;
二次验证模块,用户根据用户风险等级的判定结果,对中危用户进行二次验证。
本发明的有益效果为:
1、本发明通过接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码对用户进行第一次验证;并通过获取用户行为信息,调用数据库并根据所述用户行为信息判断用户的风险等级;若用户为低危用户则提示验证通过,若用户为高危用户则提示验证失败,若用户为中危用户则进行二次验证,能够形成一个区分度高的人机识别系统,最终保障用户用网安全。
2、本发明基于决策树分类模型和余弦相似度算法分别进行真实用户还是机器用户的识别计算,并在两种方式判定均为机器用户时提示验证失败;在两种方式判定均为真实用户时则验证成功,不再二次验证;在两种方式判定结果不同时,判定为中危用户并进行二次验证,能够准确识别真实用户和机器用户,进而有效规避机器扒取用户信息的风险。
3、本发明生成的动态验证码动态变化时,视觉上,验证码精致不动可清楚辨认,干扰图层中的随机字符则不断闪现,干扰图层中的随机字符能够干扰机器破解程序,增加验证码的安全性,同时验证码本身不需要进行干扰处理,验证码辨识度高,方便用户快速识别验证码,提高验证码输入的正确性。
具体实施方式
为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明保护的范围。
应当理解,尽管本文可能使用术语第一、第二等等来描述各种单元,但是这些单元不应当受到这些术语的限制。这些术语仅用于区分一个单元和另一个单元。例如可以将第一单元称作第二单元,并且类似地可以将第二单元称作第一单元,同时不脱离本发明的示例实施例的范围。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B三种情况;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A,单独存在A和B两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
应当理解,在本文中若将单元称作与另一个单元“连接”、“相连”或“耦合”时,它可以与另一个单元直相连接或耦合,或中间单元可以存在。相対地,在本文中若将单元称作与另一个单元“直接相连”或“直接耦合”时,表示不存在中间单元。另外,应当以类似方式来解释用于描述单元之间的关系的其他单词(例如,“在……之间”对“直接在……之间”,“相邻”对“直接相邻”等等)。
应当理解,本文使用的术语仅用于描述特定实施例,并不意在限制本发明的示例实施例。若本文所使用的,单数形式“一”、“一个”以及“该”意在包括复数形式,除非上下文明确指示相反意思。还应当理解,若术语“包括”、“包括了”、“包含”和/或“包含了”在本文中被使用时,指定所声明的特征、整数、步骤、操作、单元和/或组件的存在性,并且不排除一个或多个其他特征、数量、步骤、操作、单元、组件和/或他们的组合存在性或增加。
应当理解,还应当注意到在一些备选实施例中,所出现的功能/动作可能与附图出现的顺序不同。例如,取决于所涉及的功能/动作,实际上可以实质上并发地执行,或者有时可以以相反的顺序来执行连续示出的两个图。
应当理解,在下面的描述中提供了特定的细节,以便于对示例实施例的完全理解。然而,本领域普通技术人员应当理解可以在没有这些特定细节的情况下实现示例实施例。例如可以在框图中示出系统,以避免用不必要的细节来使得示例不清楚。在其他实例中,可以不以不必要的细节来示出众所周知的过程、结构和技术,以避免使得示例实施例不清。
实施例一
参见图1,示出了一种动态验证方法的流程示意图,所述方法包括:
步骤S1:接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码;
在本发明实施例中,用户通过登入网页,输入用户账户信息,然后进一步点击的网页按钮,系统通过接收用户点击网页按钮生成的第一验证请求,生成第一动态验证码。
步骤S2:接收用户在输入界面中输入的第一待验码并进行验证;
步骤S3:若所述第一待验码验证失败,则结束当前流程;若验证成功,则获取用户在第一验证过程中产生的用户行为信息;其中,用户行为信息包含用户账户信息;
步骤S4:调用数据库并根据所述用户行为信息判断用户的风险等级;
步骤S5:若用户为低危用户则提示验证通过,若用户为高危用户则提示验证失败,若用户为中危用户则进行二次验证。
进一步的,所述中危用户进行二次验证的过程包括:
步骤S51:接收所述中危用户的第二验证请求,响应所述第二验证请求并随机生成第二动态验证码;
步骤S52:接收所述中危用户在输入界面中输入的第二待验码并获取所述第二待验码输入的平均时间间隔;
步骤S53:判断所述第二待验码是否输入正确,若错误则提示验证失败;若正确则进一步判断所述平均时间间隔是否大于系统平均时间间隔阈值,若是则提示验证成功,否则验证失败。
参见图2,所述第一动态验证码和所述第二动态验证码的生成过程均包括:
步骤A:使用随机字符生成验证码;
步骤B:根据所述验证码生成基础静态图层;
步骤C:使用随机字符生成多个干扰图层,将所述多个干扰图层分别与所述基础静态图层合并为多个复合帧;
步骤D:为得到的多个复合帧预设帧速以生成所述第一动态验证码或第二动态验证码。
进一步的,所述基础静态图层中字符与背景使用对比色,所述验证码的各个字符相互分离。
参见图3,所述数据库的构建过程包括:
步骤a:分别选取一定数量的真实用户第一样本数据和机器第一样本数据;其中,两种第一样本数据均包括鼠标悬停时间、输入字符时间间隔、响应时间单一用户访问频率以及用户客户端环境信息个数;
其中,客户端环境信息包括:浏览器版本、操作系统版本、屏幕分辨率、I P地址;
其中,需要说明的是,所述鼠标悬停时间的获取方式为:将鼠标进入“获取验证”按钮的触发区域的时刻记录为t1,将用户点击按钮的时间记录为t2,则鼠标悬停时间=t2-t1。
其中,需要说明的是,输入字符时间间隔的获取方式为:用户输入第一待验码或第二待验码时,将第一次按下键盘的时刻记录为t3,将松开键盘的时刻记录为t4,叠加所有字符的输入时间间隔记录为总时间,由此计算平均输入一个字符的时间间隔t5,作为输入字符时间间隔。
其中,需要说明的是,所述响应时间的获取方式为:响应时间是指浏览器页面加载完成时刻t6到用户作出响应时刻t6间所使用的时间,为t7与t6的差值。
其中,需要说明的是,所述单一用户访问频率的获取方式为:单一用户访问频率为单一用户单位时间内(例如以小时为单位)的登录次数。
步骤b:将所述真实用户第一样本数据和所述机器第一样本数据作为训练样本,通过决策树算法分别建立真实用户和机器的决策树分类模型;
步骤c:将所述决策树分类模型存储在所述数据库中。
进一步的,由于在二维空间,通过测量两个向量夹角的余弦值来度量向量间的相似性可以得出两个向量的位置关系,因此,基于余弦相似度算法来构建数据库,所述数据库的构建过程还包括:
步骤d:分别选取一定数量的真实用户第二样本数据和机器第二样本数据;其中,两种所述第二样本数据均为鼠标轨迹;
步骤e:将所述真实用户第二样本数据和所述机器第二样本数据作为训练样本,通过余弦相似度算法分别对第二样本数据进行训练,以获得第一余弦相似度阈值α和第二余弦相似度阈值β;
步骤f:将所述第一余弦相似度阈值和第二余弦相似度阈值存储在所述数据库中;
其中,余弦相似度的计算公示为:
其中,(x1,y1)为鼠标轨迹上的第一向量坐标点;(x1,y1)为鼠标轨迹上的第二向量坐标点;cosθ为第一向量坐标点和第二向量坐标点的相似度值。
参见图4,基于所述决策树算法识别为是否为真实用户的过程包括:
步骤(1):采集当前用户的用户行为信息;
步骤(2):调用所述决策树分类模型对所述用户行为信息进行分类,并获得分类结果;
其中,所述分类结果为真实用户或机器。
进一步的,由于真实登录的用户,鼠标轨迹一般不为直线,且两次鼠标轨迹不完全相同,因此基于所述余弦相似度算法计算是否为真实用户的过程包括:
步骤(3):采集用户移动鼠标时鼠标轨迹上各点的横坐标x和纵坐标y;
步骤(4):将采集到的多个鼠标轨迹坐标点进行多项式拟合;
步骤(5):通过最高幂次判断多项式是否为一次型多项式,若为一次型,则判定为机器操作;其中,判定为一次型多项式的情形包括:
a)若多项式最高幂次为1,则为一次型多项式,则判定为机器操作;
b)若多项式最高幂次大于1,但大于1的幂次系数之和小于第一余弦相似度阈值α,则表示高幂次系数很小,此时也认为该多项式为一次型多项式,判定为机器操作;
步骤(6):若拟合的多项式不为一次型,则进行余弦相似度判定,判定过程包括:
将采集的坐标点与系统中保存的同一用户的坐标点进行余弦相似度计算,当余弦相似度大于第一余弦相似度阈值β时,则判定该用户为机器模拟的用户,否则为真实用户。
在本发明实施例中,基于上述,所述调用数据库并根据所述用户行为信息判断用户的风险等级包括:
当基于所述决策树分类模型和所述余弦相似度算法对该用户的判定均为真实用户时,认为该用户为低危用户;
当基于所述决策树分类模型和所述余弦相似度算法对该用户的判定不同时,则认为该用户为中危用户;
当基于所述当所述决策树分类模型和所述余弦相似度算法对该用户的判定均为机器操作时,则认为该用户为高危用户。
实施例二
第二方面,本发明还提供一种动态验证系统100,所述系统包括:
一次验证模块1,用于接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码对用户进行第一次验证;
用户行为信息采集模块2,用于采集用户在第一次验证过程中产生的用户行为信息;
用户风险等级判断模块3,用于调用数据库并根据用户行为信息对用户的风险等级进行判断;
二次验证模块4,用户根据用户风险等级的判定结果,对中危用户进行二次验证。
本发明实施例的有益效果为:
1、本发明实施例通过接收用户的第一验证请求,响应所述第一验证请求并随机生成第一动态验证码对用户进行第一次验证;并通过获取用户行为信息,调用数据库并根据所述用户行为信息判断用户的风险等级;若用户为低危用户则提示验证通过,若用户为高危用户则提示验证失败,若用户为中危用户则进行二次验证,能够形成一个区分度高的人机识别系统,最终保障用户用网安全。
2、本发明实施例基于决策树分类模型和余弦相似度算法分别进行真实用户还是机器用户的识别计算,并在两种方式判定均为机器用户时提示验证失败;在两种方式判定均为真实用户时则验证成功,不再二次验证;在两种方式判定结果不同时,判定为中危用户并进行二次验证,能够准确识别真实用户和机器用户,进而有效规避机器扒取用户信息的风险。
3、本发明实施例生成的动态验证码动态变化时,视觉上,验证码精致不动可清楚辨认,干扰图层中的随机字符则不断闪现,干扰图层中的随机字符能够干扰机器破解程序,增加验证码的安全性,同时验证码本身不需要进行干扰处理,验证码辨识度高,方便用户快速识别验证码,提高验证码输入的正确性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型。