一种仅利用缓存资源进行人机验证的手势验证码实现方法与流程

文档序号:16578988发布日期:2019-01-14 17:48阅读:549来源:国知局
一种仅利用缓存资源进行人机验证的手势验证码实现方法与流程

本发明涉及人机验证领域,具体涉及一种仅利用缓存资源进行人机验证的手势验证码实现方法。



背景技术:

传统的人机验证方式多为字符码验证,采用字符码进行人机验证的格式单一,抗干扰能力低,并且字符码的验证方式容易被穷举识别,导致其安全性极大的降低;再者,当多个网站接入第三方验证服务提供者时,第三方的服务器稳定可用性就显得极为重要,一旦被攻击就会对所有接入的网站产生系统性的影响。



技术实现要素:

本发明的目的在于针对上述问题,提供一种仅利用缓存资源进行人机验证的手势验证码实现方法,将内网服务器与外网隔绝,只要缓存资源存在,就能实现人机验证,由于资源以物理文件的形式存放在多个cdn节点,安全性得到极大保障。

为此,本发明公布了一种仅利用缓存资源进行人机验证的手势验证码实现方法,包括以下步骤:

a.内网服务器生成v-key和验证图,并将生成的v-key和验证图存放到缓存资源;

b.当客户端发起验证请求时,验证服务器生成4位16进制随机字符串,并将所述随机字符串与v-key通过hash加密得出v-pic,即验证图的文件名,通过指定路径获取验证图发送给客户端;同时,将发起请求的时间request-time用预设的client-key通过hash加密后得到signature,client-key为用于签名的随机字符串,由验证服务器自行设置,signature为利用client-key签名后的结果,将request-time和signature一并发送给客户端;并且,将当前验证的v-pic以及signature以键值对形式存储到验证服务器内存或数据库;

c.客户端根据要求在需要进行人机验证的页面上绘制接收到的验证图,然后由客户端将用户绘制的验证图转化为4位16进制字符串,其具体处理方式如下:

采集用户绘制轨迹得到包含时间的坐标序列(x-1,y-1,t-1)(x-2,y-2,t-2)……(x-n,y-n,t-n),其起点为(x-1,y-1,t-1),结束点为(x-n,y-n,t-n),并以下列方法求取中间2个特征点:

c1:选取起点start-point、结束点end-point和中间任意一个轨迹点构成三角形,其中构成三角形面积最大的点为feature-point1;

c2:选取起点start-point、feature-point1和中间的点构造成三角形,找出构成的三角形面积最大的极值点p1,并计算出极值点p1与起点start-point和feature-point1所连接的直线距离,即三角形的高h1;同样,找出feature-point1、结束点end-point和其中间的点构成的三角形的最大面积的极值点p2,并计算出极值点p2与feature-point1和结束点end-point所连接的直线距离,即三角形的高h2,并比较h1与h2的大小,较大的则为feature-point2;

c3:根据已经得到的start-point、feature-point1、feature-point2和end-point计算出所对应的字符方格,然后根据时间先后顺序得到一个4位16进制的用户验证字符user-code,将user-code提交到验证服务器client-server;

c4:将request-time和signature一起提交到验证服务器client-server;

d.首先,验证服务器验证request-time是否真实,否则返回验证失败;是则判断验证时间是否在30s或更短时间内,否则返回验证失败;是则通过客户端提交的signature查询到对应的v-pic,并在服务器键值对查询到对应的v-pic后删除此价值对,目的是让每个签名只能被验证一次以防止重复验证。然后将客户端提交的user-code与v-pic通过hash计算出v-result,并访问v-result资源是否存在,若存在则验证通过。

本发明中,内网服务器在客户端发起验证请求前便将验证图和v-key生成并存放到缓存资源,生成验证图的流程如下:

step1:内网服务器生成包含v-code的验证图,其中,v-code由4位16进制字符转化而来,且没有相同字符出现;

step2:将验证图按4位16进制字符加上v-key通过hash加密算出一个字符串作为每个验证图的v-pic,所述4位16进制字符不能与对应验证图的v-code相同;

step3:v-pic加上所对应的v-code通过hash加密计算得到v-result,并发布到缓存资源。

本发明中,内网服务器inner-server会定时更新v-key,然后计算出对应的v-pic以及v-result,以上所述的v-result为验证结果。

本发明的有益效果是:将内网服务器与外网彻底隔绝,只利用缓存资源进行人机验证,适用于大量网站接入,并将传统的字符验证码转化成验证图,可以将图形风格化,并增加背景干扰等处理方法来大幅提高验证图的程序是被难度,提高了安全性的同时优化了用户体验。

附图说明

图1是实施例的任意图片等距离成4*4方格的示意图;

图2是实施例的验证图轨迹示意图。

具体实施方式

下面结合具体实施方式对本发明作进一步说明。

本发明目的在于提供了一种仅利用缓存资源进行人机验证的手势验证码实现方法,可大幅降低被撞库的风险,具体包括以下步骤:

内网服务器的准备工作,内网服务器在客户端发起验证请求前便将验证图和v-key生成并存放到缓存资源,生成验证图的流程如下:

step1:内网服务器生成包含v-code的验证图,其中,v-code由4位16进制字符转化而来,且不能有相同字符出现;那么总共有16*15*14*13=43680种组合,具体转化方式参考图1所示,图1中等距离成4*4的16个方格,每个方格代表一位字符,在第一行取字符1,第二行取字符6,第三行取字符9,第四行取字符f,按照先后顺序组成169f的验证图;取169f中每个字符所对应的方格的中心点,根据先后顺序,将4个中心点连接起来,组成如图2的图形,其中,字符1对应的方格的中心点为start-point,字符6对应的方格的中心点为feature-point1,字符9对应的方格的中心点为feature-point2,字符f对应的方格的中心点为end-point。

step2:将验证图按4位16进制字符加上v-key通过hash加密算出一个字符串作为每个验证图的v-pic,所述4位16进制字符不能与对应验证图的v-code相同。

step3:v-pic加上所对应的v-code通过hash加密计算得到v-result,并发布到缓存资源。

以上内网服务器的准备工作完成,并且内网服务器inner-server会定时更新v-key,然后计算出对应的v-pic以及v-result。

按照以下验证流程进行验证图的验证:

a.内网服务器生成v-key和验证图,并将生成的v-key和验证图存放到缓存资源。

b.当客户端发起验证请求时,验证服务器生成4位16进制随机字符串,并将所述随机字符串与v-key通过hash加密得出v-pic,v-pic为验证图的文件名。将v-pic存放到缓存资源,通过指定路径获取验证图发送给客户端,所述指定路径为验证服务器算出v-pic后对v-pic的地址进行补全后的完整地址路径,并且v-pic为32位随机字符;同时,将发起请求的时间request-time用预设的client-key通过hash加密后得到signature,client-key为用于签名的随机字符串,其由验证服务器自行设置,signature为利用client-key签名后的结果;将request-time和signature一并发送给客户端;并且,将当前验证的v-pic以及signature以键值对形式存储到验证服务器内存或数据库。

c.客户端根据要求在需要进行人机验证的页面上绘制接收到的验证图,然后由客户端将用户绘制的验证图转化为4位16进制字符串,其具体处理方式如下:

采集用户绘制轨迹得到包含时间的坐标序列(x-1,y-1,t-1)(x-2,y-2,t-2)……(x-n,y-n,t-n),其起点为(x-1,y-1,t-1),结束点为(x-n,y-n,t-n),并以下列方法求取中间2个特征点:

c1:选取起点start-point、结束点end-point和中间任意一个轨迹点构成三角形,其中构成三角形面积最大的点为feature-point1;

c2:选取起点start-point、feature-point1和中间的点构造成三角形,找出构成的三角形面积最大的极值点p1,并计算出极值点p1与起点start-point和feature-point1所连接的直线距离,即三角形的高h1;同样,找出feature-point1、结束点end-point和其中间的点构成的三角形的最大面积的极值点p2,并计算出极值点p2与feature-point1和结束点end-point所连接的直线距离,即三角形的高h2,并比较h1与h2的大小,较大的则为feature-point2;

c3:根据已经得到的start-point、feature-point1、feature-point2和end-point计算出所对应的字符方格,然后根据时间先后顺序得到一个4为16进制数值的用户验证字符user-code,将user-code提交到验证服务器client-server;

c4:将request-time和signature一起提交到验证服务器client-server;

d.首先,验证服务器验证request-time是否真实,否则返回验证失败;是则判断验证时间是否在20s时间内,否则返回验证失败;是则通过客户端提交的signature查询到对应的v-pic,并在服务器键值对查询到对应的v-pic后删除此价值对,目的是让每个签名只能被验证一次以防止重复验证。然后将客户端提交的user-code与v-pic通过hash计算出v-result,并访问v-result资源是否存在,若存在则验证通过。

以上所述的v-result为验证结果。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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