基于随机位置对象语义识别的验证码设计方法与流程

文档序号:26101709发布日期:2021-07-30 18:12阅读:200来源:国知局
基于随机位置对象语义识别的验证码设计方法与流程

技术领域:

本发明涉及一种基于语义的行为验证码生成及验证方法,应用于计算机应用与信息安全领域。



背景技术:

验证码是一种区分用户是人还是机器的公共全自动程序,可以抵御机器通过运行脚本程序模拟人类行为恶意破解密码、撞库,防范刷票、薅羊毛、恶意订购、批量注册、恶意攻击等有害操作,保护网站和各类用户的信息安全和财产安全。传统验证码包括纯字母、纯数字、字母数字组合、算术计算等多种形态,很容易被机器程序自动识别。此后,出现了图片点触式验证码,需要人工识别出图片语义后按照规则进行一次或若干次点击以完成验证。但是,随着机器视觉技术的发展,简单的图片点触式验证码仍可被机器程序快速识别,如果一味地增加图片点触次数,或者提升语义识别难度,虽然可以降低被机器程序识别的可能性,但也给用户带来了使用上的麻烦、不友好。

行为验证码是一类依赖于用户行为的验证码方案,通常采用拖动、连线或其它方式代替键盘输入与鼠标单击,增大了机器程序模拟操作的难度,并具有用户操作简单、适合手机屏幕的优势。



技术实现要素:

针对现有验证码技术仍存在的安全隐患,本发明提出一种基于随机位置对象语义识别的行为验证码设计方法。

为达到上述目的,本发明基于随机位置对象语义识别的验证码生成及验证方法,所述的方法包括下述步骤:

s1)、验证码服务端接收客户端验证码申请;

s2)、验证码服务端从对象数据库中选取任一个对象组,并从中随机取出k个对象实例;验证码服务端再从对象数据库的其它对象组中随机取出1个对象实例;

s3)、验证码服务端按下列方法生成前景图片、验证码图片;

31)制备一个具有明显预定轮廓的前景图片;

32)为每个步骤二得到的(k+1)个对象实例添加预定轮廓形成对象实例图片;

33)将对象实例图片随机叠加到背景图片上,各对象实例图片相互之间轮廓不遮挡、不相接;

34)记录下同类对象实例几何重心所在的坐标[x1,y1],[x2,y2],…,[xk,yk]和异类对象实例几何重心所在的坐标[xk+1,yk+1];

35)将背景图片和(k+1)个对象实例图片合成验证码图片;

36)服务端在背景图片范围内随机选择一个点p,用于标志前景图片叠加的位置;记录点p的坐标[xp,yp];

s4)、验证码服务端将背景图片、前景图片、坐标[xp,yp]、以及说明文字发给客户端;

s5)、验证码服务端接收客户端通过鼠标拖拽或者手指滑动形成的拖拽轨迹;

s6)、验证码服务端对用户鼠标或手指拖拽的行为进行分析判决,并将判决结果反馈给客户端。

进一步的,所述的分析判决过程为:验证码服务器判断拖拽终点是否位于[xk+1,yk+1]处;判断方法是将终点坐标[x,y]与[xk+1,yk+1]的欧式距离与预设的判决门限t进行比较,若则验证通过,反之验证不通过;

进一步的,所述的预定轮廓可以是任意折线或曲线构成的图形。

进一步的,验证码服务端进一步对拖拽轨迹的合理性进行判决,轨迹合理则验证通过,反之验证不通过。

进一步的,所述的合理性判决为:计算轨迹的实际长度l和拖拽起点到拖拽终点的直线距离d,设α为预设的某个大于1的系数,若l≤αd则判决通过,反之不通过。

为达到上述目的,本发明基于随机位置对象语义识别的验证码生成方法,包括下述步骤:

61)制备一个具有明显预定轮廓的前景图片;

62)制备对象实例图片:

从对象数据库中选取任一个对象组,并从中随机取出k个对象实例;再从对象数据库的其它对象组中随机取出1个对象实例;

用获取的(k+1)个对象实例添加预定轮廓形成对象实例图片;

63)将对象实例图片随机叠加到背景图片上,各对象实例图片相互之间轮廓不遮挡、不相接;

64)记录下同类对象实例几何重心所在的坐标[x1,y1],[x2,y2],…,[xk,yk]和异类对象实例几何重心所在的坐标[xk+1,yk+1];

65)将背景图片和(k+1)个对象实例图片合成验证码图片;

66)在背景图片范围内随机选择一个点p,用于标志前景图片叠加的位置;记录点p的坐标[xp,yp]。

本发明设计的验证码生成和验证方法,通过同时展现若干同类对象和一个异类对象,在客户端经语义判断识别出异类对象并通过拖拽行为将其标志出来,根据拖拽行为的分析判决完成验证过程。本发明有效解决了当前验证码易被机器程序破解的问题。该方法一方面继承了拖动式验证码的操作简单、体验好的优势,另一方面通过机器程序在语义识别上的劣势,抑制机器程序自动识别验证码,而且结合拖拽轨迹合理性的验证可以进一步增大机器程序自动识别验证码的难度。

附图说明

图1为本发明涉及的对象数据库的某设计例示意图。

图2为一种基于随机位置对象语义识别的验证码生成与验证过程示意图。

图3为客户端应用本验证码方法的示意图。

具体实施方式

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

实施例1

请参阅附图,本实施例的基于随机位置对象语义识别的行为验证码设计方法,具体的技术实现过程如下:

在验证码服务端按如下要求管理对象数据库。(1)该数据库设计了m组对象,m为正整数,每一组对象代表同一类型的语义。(2)每组对象都保存了不少于k个对象实例,k为正整数。即对第m组对象(m=1,2,…,m),有nm个对象实例,nm为正整数且nm≥k。(3)该数据库的维护规则有:a)经人工甄别,确保不同类对象所表达的语义具有明显的差异;b)任一对象实例在加入到数据库时,须经人工甄别以确保其高度符合所属对象的语义,不存在歧义;c)任一对象实例在数据库中只出现一次,即只归属到某一类对象。图1给出了数据库中对象及对象实例的例子,其中k=8。

验证码的生成与验证过程如图2所示,包括:

步骤一、验证码服务端接收客户端的验证码申请。

步骤二、验证码服务端从对象数据库中选取任一组对象,并从中随机取出k个对象实例(属于同类对象)。然后,服务端再从对象数据库的其它组对象中随机取出1个对象实例(属于异类对象)。

步骤三、验证码服务端按下列方法生成前景图片、验证码图片:

制备一个具有明显预定轮廓,内部透明的前景图片。预定轮廓可以是任意折线或曲线构成的图形,优选方形、矩形或圆形。

为每个步骤二得到的(k+1)个对象实例经适当缩放添预定加轮廓形成对象实例图片。再将对象实例图片随机叠加到背景图片上,各对象实例图片满足相互之间轮廓不遮挡、不相接。服务端记录下同类对象实例几何重心所在的坐标[x1,y1],[x2,y2],…,[xk,yk]和异类对象实例几何重心所在的坐标[xk+1,yk+1]。背景图片和(k+1)个对象实例图片合成验证码图片。

服务端在背景图片范围内随机选择一个点p,用于标志前景图片叠加的位置。记录点p的坐标[xp,yp]。

步骤四、验证码服务端将背景图片、前景图片及位置坐标[xp,yp]、以及说明文字发给客户端。

客户端的验证码插件将收到的验证码图片渲染出来,并以坐标[xp,yp]为几何重心把前景图片透明地显示在背景图片图层上。

图3给出了一个在客户端应用本验证码方法的例子。

用户解读背景图中(k+1)个对象实例的语义,识别出与众不同的那一个对象实例。然后用户通过鼠标拖拽或者手指滑动,把前景图片自由拖拽到该对象实例处,让两者的轮廓尽量重合。

步骤五、验证码服务端接收客户端将采集到的拖拽轨迹(拖拽经过的各点坐标,包括终点坐标[x,y])。

步骤七、验证码服务端对用户鼠标或手指拖拽的行为进行分析判决,并将判决结果反馈给客户端。判决过程中,验证码服务器判断拖拽终点是否位于[xk+1,yk+1]处,判断方法是将坐标[x,y]与[xk+1,yk+1]的欧式距离与预设的判决门限t进行比较,若则验证通过,反之验证不通过。

实施例2

本实施例的基于随机位置对象语义识别的行为验证码设计方法,实现过程如下:

在验证码服务端按如下要求管理对象数据库。(1)该数据库设计了m组对象,m为正整数,每一组对象代表同一类型的语义。(2)每组对象都保存了不少于k个对象实例,k为正整数。即对第m组对象(m=1,2,…,m),有nm个对象实例,nm为正整数且nm≥k。(3)该数据库的维护规则有:a)经人工甄别,确保不同类对象所表达的语义具有明显的差异;b)任一对象实例在加入到数据库时,须经人工甄别以确保其高度符合所属对象的语义,不存在歧义;c)任一对象实例在数据库中只出现一次,即只归属到某一类对象。图1给出了数据库中对象及对象实例的例子,其中k=8。

验证码的生成与验证过程如图2所示,包括:

步骤一、验证码服务端接收客户端的验证码申请。

步骤二、验证码服务端从对象数据库中选取任一组对象,并从中随机取出k个对象实例(属于同类对象)。然后,服务端再从对象数据库的其它组对象中随机取出1个对象实例(属于异类对象)。

步骤三、验证码服务端按下列方法生成前景图片、验证码图片:

制备一个具有明显预定轮廓,内部透明的前景图片。预定轮廓可以是任意折线或曲线构成的图形,优选方形、矩形或圆形。

为每个步骤二得到的(k+1)个对象实例经适当缩放添预定加轮廓形成对象实例图片。再将对象实例图片随机叠加到背景图片上,各对象实例图片满足相互之间轮廓不遮挡、不相接。服务端记录下同类对象实例几何重心所在的坐标[x1,y1],[x2,y2],…,[xk,yk]和异类对象实例几何重心所在的坐标[xk+1,yk+1]。背景图片和(k+1)个对象实例图片合成验证码图片。

服务端在背景图片范围内随机选择一个点p,用于标志前景图片叠加的位置。记录点p的坐标[xp,yp]。

服务端还生成一串说明文字,用于对用户进行验证操作提供必要的提示。

步骤四、验证码服务端将背景图片、前景图片及位置坐标[xp,yp]、以及说明文字发给客户端。

客户端的验证码插件将收到的验证码图片渲染出来,并以坐标[xp,yp]为几何重心把前景图片透明地显示在背景图片图层上。

客户端还把说明文字以合适的方式显示在背景图外,或直角渲染在背景图上。

图3给出了一个在客户端应用本验证码方法的例子。

用户解读背景图中(k+1)个对象实例的语义,识别出与众不同的那一个对象实例。然后用户通过鼠标拖拽或者手指滑动,把前景图片自由拖拽到该对象实例处,让两者的轮廓尽量重合。

步骤五、验证码服务端接收客户端将采集到的拖拽轨迹(拖拽经过的各点坐标,包括终点坐标[x,y])。

步骤七、验证码服务端对用户鼠标或手指拖拽的行为进行分析判决,并将判决结果反馈给客户端。判决过程中,验证码服务器判断拖拽终点是否位于[xk+1,yk+1]处,判断方法是将坐标[x,y]与[xk+1,yk+1]的欧式距离与预设的判决门限t进行比较,若则验证通过,反之验证不通过。

验证码服务端进一步对拖拽轨迹的合理性进行判决,轨迹合理则验证通过,反之验证不通过。所述的合理性判决为:计算轨迹的实际长度l和拖拽起点到拖拽终点的直线距离d,设α为预设的某个大于1的系数,若l≤αd则判决通过,反之不通过。

显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。而且,本实施例中所提供的示意图仅以示意方式说明本发明的基本构想,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件。基于实施例的各种变形,均属于本发明的保护范围。

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