三维模型验证码的实现方法及其装置转让专利

申请号 : CN201610697070.6

文献号 : CN106355072B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沈建国许秋儿袁楠

申请人 : 沈建国许秋儿袁楠

摘要 :

一种三维模型验证码的实现方法及其装置,包括1)从模型库中随机选取一个三维模型作为原始模型,并且生成两组随机变换量;2)将目标变换量应用于原始模型形成目标模型,并将目标模型渲染成目标图片;3)将初始变换量应用于原始模型形成操作模型,并且客户端在两个区域内进行展示;4)用户通过交互操作改变操作模型的属性,使得操作模型的状态与目标图片一致,并且同时初始变换量通过交互操作生成最终变换量;5)将最终变换量与目标变换量进行比较。本发明的优点在于利用人类相比计算机在三维空间感知方面的优势,实现人与计算机的自动快速区分,规避或极大降低计算机通过图像识别技术与人工智能技术进行验证码破解的可能性。

权利要求 :

1.一种三维模型验证码的实现方法,其特征在于:包括以下步骤:

1)从模型库中随机选取一个三维模型作为原始模型,并且生成两组随机变换量,即一组初始变换量和一组目标变换量;

2)将目标变换量应用于原始模型形成目标模型,并将目标模型渲染成目标图片;

3)将初始变换量应用于原始模型形成操作模型,并且客户端在两个区域内进行展示,其中一个区域展示供客户操作的操作模型,另一个区域展示目标图片;

4)用户通过交互操作改变操作模型的属性,使得操作模型的状态与目标图片一致,并且同时初始变换量通过交互操作生成最终变换量;

5)将最终变换量与目标变换量进行比较,如果两者的差异在预定的目标差异阈值内,则返回验证通过,否则返回验证不通过。

2.如权利要求1所述的三维模型验证码的实现方法,其特征在于:所述模型库中包括多种三维模型,在上述步骤1)前,还包括对模型库中的三维模型进行预处理的步骤,该步骤为将模型库中的所有三维模型中心分别平移至世界坐标原点并且保存回模型库。

3.如权利要求1所述的三维模型验证码的实现方法,其特征在于:所述一组初始变换量和一组目标变换量均包含至少一种变换量,每一组所含的变换量的个数相同并且对应,所述变换量为旋转变换量、缩放变换量、平移变换量、材质变换量或颜色变换量。

4.如权利要求1所述的三维模型验证码的实现方法,其特征在于:所述步骤1)中生成两组随机变换量的步骤包括以下步骤:1.1)生成一组初始变换量和一组初始目标变换量;

1.2)生成随机数;1.3)根据初始变换量、初始目标变换量和随机数生成目标变换量。

5.如权利要求1所述的三维模型验证码的实现方法,其特征在于:上述步骤1)中生成初始变换量和目标变换量后,判断两者之间的差异是否在预定的初始差异阈值内,如果是则重新生成。

6.如权利要求4所述的三维模型验证码的实现方法,其特征在于:上述步骤1.1)中,还需要判断生成的初始变换量和初始目标变换量之间的差异是否在预定的中间差异阈值内,如果是则重新生成。

7.实现权利要求1-6中任一项所述的三维模型验证码的实现方法的装置,其特征在于:包括变换量生成模块(302,602),用于生成一组初始变换量和一组目标变换量;

渲染模块(303,603),用于将目标变换量应用于原始模型并且形成目标模型,并且渲染形成目标图片;

渲染交互模块(304,604),将初始变换量应用于原始模型形成操作模型,并且将操作模型和目标图片显示在客户端,实现人机交互功能并且计算用户操作所产生的最终变换量;

变换量比对模块(305,605),用于比较最终变换量与目标变换量的差异,如果差异在预定的目标差异阈值内,则返回验证通过,否则返回验证不通过。

8.如权利要求7所述的装置,其特征在于:还包括用于存储三维模型的模型库,以及用于对模型库中的所有三维模型进行预处理步骤的模型初始化模块(301,601)。

9.如权利要求7所述的装置,其特征在于:所述变换量生成模块(602)还包括用于产生随机数的随机数生成模块(6021),和用于生成目标变换量的变换量插值模块(6022)。

10.如权利要求7所述的装置,其特征在于:所述变换量生成模块(302,602)、渲染模块(303,603)和变换量比对模块(305,605)位于服务端,渲染交互模块(304,604)位于客户端。

说明书 :

三维模型验证码的实现方法及其装置

技术领域

[0001] 本发明涉及一种验证码领域,特别是涉及一种三维模型验证码的实现方法及其装置。

背景技术

[0002] 验证码作为一种人机自动区分技术,已成为互联网领域应用最广泛的安全技术之一。通过验证码可规避或降低一般的安全风险,如批量注册、自动发贴、暴力破解、恶意刷单、短信轰炸等。现有的验证码大致可分为三类:
[0003] (1)图片验证码,图片验证码根据图片内容可分为字符型图片验证码和非字符型图片验证码。字符型图片验证码是一种最为常见的验证码,它以随机符号作为图片内容。该种验证码优点是简单直观,实施难度低。但是随着图像识别技术与人工智能技术的发展,字符型图片验证码破解率越来越高。如中国专利CN104283682A所公开的,即使通过添加干扰元素的方式加大破解难度,但依然难以兼顾安全性与用户体验,因此字符型图片验证码正在逐渐被其他验证码所替代。非字符型图片验证码一般选取已有图片作为验证码内容,因其图片内容各异,所以很难用图像识别技术进行破解。但非字符型图片验证码也存在一些缺陷,比如选取图片时需要借助人工筛选和处理,成本较高;图片数量有限,容易通过穷举遍历的方式进行破解,虽然可通过不断更新图片库的方式增强安全性,但同时也会增加人工成本。
[0004] (2)语音验证码,语音验证码基本原理与字符型图片验证码相似,只是将信息的载体由图片替换成了语音,同样可通过语音识别技术或穷举法进行破解。
[0005] (3)行为验证码,行为验证码是一种新型的验证码,根据复杂程度可分为简单行为验证码和复杂行为验证码。简单行为验证码主要通过点击和拖动方式完成验证,比如通过采集滑动滚动条或点选复选框时鼠标轨迹信息完成验证。简单行为验证码很容易通过程序模拟方式破解,所以安全性一般。复杂行为验证码通过用户网站访问时大量行为特征分析进行验证,虽然安全性较好,但因其需要根据系统自身业务特点建立完备的验证模型,实施复杂度较高。

发明内容

[0006] 本发明所要解决的技术问题是提供一种实施简单,能够在提高验证码的抗破解能力的同时又能保证用户体验、并且不增加人工成本的三维模型验证码的实现方法和装置。
[0007] 本发明解决上述技术问题所采用的技术方案为:一种三维模型验证码的实现方法,其特征在于:包括以下步骤:
[0008] 1)从模型库中随机选取一个三维模型作为原始模型,并且生成两组随机变换量,即一组初始变换量和一组目标变换量;
[0009] 2)将目标变换量应用于原始模型形成目标模型,并将目标模型渲染成目标图片;
[0010] 3)将初始变换量应用于原始模型形成操作模型,并且客户端在两个区域内进行展示,其中一个区域展示供客户操作的操作模型,另一个区域展示目标图片;
[0011] 4)用户通过交互操作改变操作模型的属性,使得操作模型的状态与目标图片一致,并且同时初始变换量通过交互操作生成最终变换量;
[0012] 5)将最终变换量与目标变换量进行比较,如果两者的差异在预定的目标差异阈值内,则返回验证通过,否则返回验证不通过。
[0013] 为了便于旋转操作,所述模型库中包括多种不同样式的三维模型,在上述步骤1)前,还包括对模型库中的三维模型进行预处理的步骤,该步骤为将模型库中的所有三维模型中心分别平移至世界坐标原点并且保存回模型库。
[0014] 优选地,所述一组初始变换量和一组目标变换量均包含至少一种变换量,每一组所含的变换量的个数相同并且对应,所述变换量为旋转变换量、缩放变换量、平移变换量、材质变换量或颜色变换量。
[0015] 为了通过滑动条便于用户操作,所述步骤1)中生成两组随机变换量的步骤包括以下步骤:1.1)生成一组初始变换量和一组初始目标变换量;1.2)生成随机数;1.3)根据初始变换量、初始目标变换量和随机数生成目标变换量。
[0016] 为了防止操作模型与目标图片过于类似,上述步骤1)中生成初始变换量和目标变换量后,判断两者之间的差异是否在预定的初始差异阈值内,如果是则重新生成。
[0017] 为了防止操作模型与目标图片过于类似,上述步骤1.1)中,还需要判断生成的初始变换量和初始目标变换量之间的差异是否在预定的中间差异阈值内,如果是则重新生成。
[0018] 实现上述三维模型验证码的实现方法的装置,包括变换量生成模块,用于生成一组初始变换量和一组目标变换量;
[0019] 渲染模块,用于将目标变换量应用于原始模型并且形成目标模型,并且渲染形成目标图片;
[0020] 渲染交互模块,将初始变换量应用于原始模型形成操作模型,并且将操作模型和目标图片显示在客户端,实现人机交互功能并且计算用户操作所产生的最终变换量;
[0021] 变换量比对模块,用于比较最终变换量与目标变换量的差异,如果差异在预定的目标差异阈值内,则返回验证通过,否则返回验证不通过。
[0022] 优选地,还包括用于存储三维模型的模型库,以及用于对模型库中的所有三维模型进行预处理步骤的模型初始化模块。
[0023] 优选地,所述变换量生成模块还包括用于产生随机数的随机数生成模块,和用于生成目标变换量的变换量插值模块。
[0024] 为了防止客户端能够截获目标变换量信息而破解验证码,所述变换量生成模块、渲染模块和变换量比对模块位于服务端,渲染交互模块位于客户端。
[0025] 与现有技术相比,本发明的优点在于利用人类相比计算机在三维空间感知方面的优势,实现人与计算机的自动快速区分,规避或极大降低计算机通过图像识别技术与人工智能技术进行验证码破解的可能性;利用随机变换量生成不同的模型初始状态和目标状态图片,实现验证码的自动生成与更新,规避或极大降低计算机通过穷举遍历方法进行破解的可能性,进而有效降低人工筛选的处理成本;并且还可以通过滑动操作而不是键盘操作完成验证码输入,降低用户误操作的可能性,提升交互效率和用户体验。

附图说明

[0026] 图1为本发明第一实施例的三维模型验证码实现方法的流程示意图。
[0027] 图2a、2b为本发明第一实施例的三维模型验证码实现方法在客户端显示区域中的显示示意图,其中图2a为初始页面示意图、图2b为通过滑动操作旋转操作模型至正确位置的示意图。
[0028] 图3为本发明第一实施例的三维模型验证码实现装置的结构示意图。
[0029] 图4为本发明第二实施例的三维模型验证码实现方法的流程示意图。
[0030] 图5a、5b为本发明第二实施的三维模型验证码实现方法在客户端显示区域中显示示意图,其中图5a为初始页面示意图,图5b为通过移动滑动条旋转操作模型至正确位置的示意图。
[0031] 图6为本发明第二实施例的三维模型验证码实现装置的结构示意图。
[0032] 图7为本发明第三实施例的三维模型验证码实现方法的流程示意图。

具体实施方式

[0033] 以下结合附图实施例对本发明作进一步详细描述。
[0034] 如图1、2a、2b、3所示,为本发明第一实施例的三维模型验证码的实现方法的流程图以及显示示意图和装置的结构示意图。
[0035] 该实施例中的三维模型验证码的实现方法,需要预先形成一个模型库,用于存储多个不同样式的三维模型,该三维模型验证码的实现方法包括以下步骤:
[0036] 步骤101,对模型库中的所有三维模型进行预处理,将三维模型中心平移至世界坐标原点,以便用户操作旋转时围绕模型中心旋转,将平移后的三维模型保存至模型库。
[0037] 步骤102,服务端在收到客户端验证码请求后,从模型库中随机选取一个三维模型作为原始模型,并生成两组不同的随机初始变换量和目标变换量,本实施例为旋转变换量Q1和Q2,其中Q1为初始旋转变换量,Q2为目标旋转变换量。旋转变换量可通过3阶正交矩阵、单位四元数或欧拉角等方式表示,本实施例采用单位四元数的表示方式,即Q1和Q2分别为初始旋转四元数和目标旋转四元数。为避免随机的初始变换量和目标变换量相似,生成的Q1和Q2应满足以下条件,否则重新生成:
[0038] FAbs(Dot(Q1,Q2)-1.0)>ε1;
[0039] 其中ε1为预定义的初始旋转变换量Q1与目标旋转变换量Q2之间的初始差异阈值,取值范围为(0,1)。初始差异阈值ε1可根据实际需要设定,数值越大则初始状态与目标状态差异越显著,用户操作难度也越高,本实施例中设置为0.1。FAbs为绝对值函数,Dot为四元数的点积函数。本领域技术人员可以了解到,该初始变换量和目标变换量中所述的变换量是改变三维模型的某种属性的变量,可以改变三维模型的朝向、大小、位置、材质、颜色等等各种属性;相应地,该变换量可以为旋转变换量、缩放变换量、平移变换量、材质变换量或颜色变换量等等,或者也可以是其他变换量。
[0040] 步骤103,服务端将目标旋转变换量Q2应用于原始模型生成目标模型,并将其渲染成目标图片,渲染时应合理设置视锥体(Frustum)与视口(Viewport),保证整个目标模型在图片区域内并位于图片中心,目标图片大小设定为150px*100px,其中px表示像素。
[0041] 步骤104,服务端将初始旋转变换量Q1,原始模型与目标图片发送至客户端,客户端接受数据后在两个区域内进行展示,其中一个区域采用三维渲染技术展示应用了初始旋转变换量Q1后的原始模型,即操作模型,另一个区域展示目标图片,参见图2a。
[0042] 步骤105,用户通过鼠标或手指的滑动旋转操作模型,即在一个区域中操作该操作模型,使得该区域中的操作模型的状态与目标图片中展示的目标模型的状态相同,该操作过程中将初始旋转变换量Q1变换为最终旋转变换量Q3。
[0043] 旋转采用常用的轨迹球(Track Ball)方法实现,即先将屏幕上滑动产生的二维坐标映射到球体表面生成三维坐标,设某一段滑动起始点的三维坐标为P1,终止点的三维坐标P2,坐标原点为P0,向量V1=P1-P0,向量V2=P2-P0,则滑动产生的旋转变换量Qt为:
[0044] Qt=([sin(θ/2)*(Norm(Cross(V1,V2)),cos(θ/2)]);
[0045] 其中θ表示V1于V2之间的夹角,Cross为向量的叉积函数,Norm为向量的单位化函数。在渲染时应用Qt即可实现实时旋转。
[0046] 用户是连续的滑动操作会产生多个Qt,而四元数乘法的含义为旋转的合并,即Qt2*Qt1的结果表示先应用旋转Qt1,再应用旋转Qt2,因此最终客户端的最终旋转变换量为Q3=Qtn*Qtn-1…Qt2*Qt1*Q1,其中*为四元数乘法符号,tn表示第n次完成的旋转操作。Qtn为每一次旋转操作所产生的中间旋转变换量,n为操作的次数,为自然数。
[0047] 用户通过旋转操作使得操作模型朝向与目标图片基本一致,参见图2b。操作完成后,客户端将最终旋转变换量Q3发送至服务端。
[0048] 步骤106,服务端收到客户端的反馈数据后,判断最终旋转变换量Q3与目标旋转变换量Q2之间的误差是否在预定义的目标差异阈值内,即计算以下公式是否成立:
[0049] FAbs(Dot(Q2,Q3)-1.0)<ε2;
[0050] 其中ε2为预定义的最终旋转变换量与目标旋转变换量的目标差异阈值,取值范围为(0,1)。目标差异阈值ε2可根据实际需要设定,数值越小则最终朝向与目标朝向差异越小,验证通过难度也越高,本实施例中设置为0.1。FAbs为绝对值函数,Dot为四元数的点积函数。如果公式成立则返回验证通过,否则返回验证不通过。
[0051] 图3为本发明第一实施例提供的三维模型验证码实现装置的结构示意图,该实施例的验证码实现装置包括:
[0052] 模型初始化模块301,对模型库中的所有三维模型进行预处理,将三维模型中心平移至世界坐标原点,以便用户操作旋转时围绕模型中心旋转,将平移后的模型保存至模型库。
[0053] 变换量生成模块302,用于生成改变三维模型状态的随机变换量,包括初始变换量和目标变换量,该实施例中为改变三维模型朝向的随机旋转变换量,包括初始旋转变换量Q1和目标旋转变换量Q2,旋转变换量通过单位四元数表示。
[0054] 渲染模块303,用于将目标变换量应用于原始模型生成目标模型,并且目标模型渲染形成目标图片,该实施例中即将目标旋转变换量Q2应用于原始模型形成目标模型,并渲染成目标图片。
[0055] 渲染交互模块304,用于将接收到的应用了初始变换量的原始模型即操作模型和目标图片显示在客户端,然后利用各种方法实现人机交互功能并且计算用户操作所产生的最终变换量,将其发回服务端,例如该实施例中采用轨迹球方法实现旋转交互功能。累积记录用户鼠标或手指滑动所产生变换量,生成最终旋转变换量Q3,将其发送至服务端。
[0056] 变换量比对模块305,用于比较客户端发送的最终变换量与随机生成的目标变换量的差异,如果相近,则返回验证通过,否则返回验证不通过。该实施例中,是比较最终旋转变换量Q3与目标旋转变换量Q2的差异。
[0057] 上述模型初始化模块301、变换量生成模块302、渲染模块303和变换量比对模块305位于服务端,渲染交互模块304位于客户端,当然,本领域技术人员也可以了解到,变换量生成模块302、渲染模块303和变换量比对模块305优选地位于服务端,仅仅只有渲染交互模块在客户端,可以防止客户端能够拦截到目标变换量的信息以用于破解。
[0058] 上述渲染模块303、变换量比对模块305也可以位于客户端,可以在服务端生成变换量然后传送给客户端,再客户端生成目标图片和操作模型,并且将最终变换量与目标变换量比较的结果返回给服务端即可。或者变换量生成模块也可以位于客户端,或者也可以根据需要省略服务端,即该装置的模块所处的位置可以任意设置。只是上述各种实施方式中,要防止客户端通过获取目标变换量破解验证码,就需要附加加密程序。
[0059] 图4为本发明第二实例的三维模型验证码实现方法的流程图,该实施例也需要预先形成一个模型库,用于存储多个不同样式的三维模型。该实施例的实现方法包括如下步骤:
[0060] 步骤401,对模型库中的所有三维模型进行预处理,将三维模型中心平移至世界坐标原点,以便用户操作旋转时围绕模型中心旋转,将平移后的三维模型保存至模型库。
[0061] 步骤402,服务端在收到客户端验证码请求后,从模型库中随机选取一个三维模型作为原始模型,并生成两个不同的随机初始旋转变换量Q1和Q1’,其中Q1为初始旋转变换量,Q1’为初始目标旋转变换量。该初始旋转变换量Q1和初始目标旋转变换量Q1’通过单位四元数表示。为避免两个随机变换量相似,生成的Q1和Q1’应满足以下条件,否则重新生成:
[0062] FAbs(Dot(Q1,Q1’)-1.0)>ε3;
[0063] 其中ε3为预定义的初始旋转变换量与初始目标旋转变换量的中间差异阈值,取值范围为(0,1)。ε3可根据实际需要设定,数值越大则初始状态与初始目标状态差异越显著,用户操作难度也越高,本实施例中设置为0.1。FAbs为绝对值函数,Dot为四元数的点积函数。
[0064] 步骤403,生成一个随机数t,取值范围为(0,1),计算目标旋转变换量Q2=Slerp(Q1,Q1’,t),其中Slerp为两四元数球面插值函数,返回值为单位四元数。
[0065] 步骤404,渲染模块将目标旋转变换量Q2应用于原始模型生成目标模型,并将该目标模型渲染成目标图片,渲染时应合理设置视锥体与视口,保证整个模型在图片区域内并位于图片中心,目标图片大小设定为150px*100px,其中px表示像素。
[0066] 步骤405,服务端将原始模型、初始旋转变换量Q1、初始目标旋转变换量Q1’、以及目标图片发送至客户端,客户端接受数据后在两区域内进行展示,其中一个区域采用三维渲染技术展示应用了初始旋转变换量Q1的模型,即操作模型,另一区域展示目标图片,参见图5a。
[0067] 步骤406,客户端用户通过鼠标或手指移动滑动条,设滑动条长度为200px,其中px表示像素,对应的数值范围为[0.0,1.0],即每移动一个像素,数值增减0.005,则移动滑动条产生的最终旋转变换量为:
[0068] Q3=Slerp(Q1,Q1’,s),其中s为用户移动滑动条产生的对应数值,Slerp为两四元数球面插值函数。客户端将最终旋转变换量Q3应用于操作模型渲染,实现操作模型旋转,即随着滑动条的移动,操作模型在三维空间中进行旋转。
[0069] 用户通过移动滑动条操作使得三维模型朝向与目标图片所示基本一致,参见图5b。操作完成后客户端将最终旋转变换量Q3发送至服务端。
[0070] 步骤407服务端收到客户端的反馈数据后,计算以下公式是否成立:
[0071] FAbs(Dot(Q2,Q3)-1.0)<ε2;
[0072] 其中ε2为预定义的最终旋转变换量与目标旋转变换量的目标差异阈值,取值范围为(0,1)。ε2可根据实际需要设定,数值越小则最终朝向与目标朝向差异越小,验证通过难度也越高,本实施例中设置为0.1。FAbs为绝对值函数,Dot为四元数的点积函数。如果公式成立则返回验证通过,否则返回验证不通过。
[0073] 该实施例与第一实施例不同的是,采用滑动条方式进行旋转的操作,因此需要中间产生随机值t来进行控制。因此,说明该变换量的表示方式可以有多种,可用不同的算法来表示和判断。
[0074] 图6为本发明第二实施例提供的三维模型验证码实现装置的结构示意图。该实施例的验证码实现装置包括:
[0075] 模型初始化模块601,对所有模型库中的三维模型进行预处理,将三维模型平移至世界坐标原点,以便用户操作旋转时围绕模型中心旋转,将平移后的模型保存至模型库。
[0076] 变换量生成模块602,用于生成改变朝向的随机旋转变换量,旋转变换量通过单位四元数表示。该实施例中用于产生初始旋转变换量Q1,初始目标旋转变换量Q1’。
[0077] 该变换量生成模块602中还包括随机数生成模块6021和变换量插值模块6022,该随机数生成模块6021用于生成(0,1)范围内的随机数t;变换量插值模块6022,用于计算两个旋转变换量的球面插值,生成目标旋转变换量Q2。
[0078] 渲染模块603,用于将目标变换量应用于三维模型生成目标模型,并将目标模型渲染成目标图片。该实施例中,将目标旋转变换量Q2应用于三维模型形成目标模型,并将目标模型渲染成目标图片。
[0079] 渲染交互模块604,用于将接收到的初始变换量应用于原始模型形成操作模型,并将操作模型和目标图片显示在客户端,并利用移动滑动条产生的数值和接收到的两旋转变换量插值生成新的旋转变换量,实现模型的旋转。将操作完成时的最终旋转变换量发送至服务端,即最终旋转变换量Q3发送至服务端。
[0080] 变换量比对模块605,用于比较客户端发送的最终变换量与随机生成的目标变换量的差异,如果相近,则返回验证通过,否则返回验证不通过。该实施例中,即判断最终旋转变换量Q3与目标旋转变换量Q2的差异。
[0081] 上述模型初始化模块601、变换量生成模块602、渲染模块603和变换量对比模块605可以位于服务端,渲染交互模块604可以位于客户端,这样可以防止客户端获取到目标变换量的信息,以防止批量破解验证码。
[0082] 该渲染模块603和变换量对比模块605也可以位于客户端,如果渲染模块603位于客户端,该实施例中的步骤中,服务端只要将生成的随机变换量Q1和Q1’以及原始模型发送至客户端供客户端使用即可,在客户端生成目标图片以及操作模型并且进行最终变换量与目标变换量的比较,最终返回结果给服务端即可。本领域技术人员可以根据需要做出相应的调整,并且,变换量生成模块602也可以位于客户端。只是上述各种实施方式中,要防止客户端通过获取目标变换量破解验证码,就需要附加加密程序。
[0083] 图7为本发明第三实施例的三维模型验证码的实现方法的流程示意图,同样与第一、第二实施例一样,该方法也需要先生成模型库,用于存储不同样式的三维模型,具体还包括以下步骤:
[0084] 步骤701,对模型库中的所有模型进行预处理,将三维模型中心平移至世界坐标原点,以便用户操作旋转时围绕模型中心旋转,将平移后的模型保存至模型库。
[0085] 步骤702,服务端在收到客户端验证码请求后,从模型库中随机选取一个三维模型作为原始模型,并生成两组不同的随机变换量,分别是一组初始变换量和一组目标变换量,该一组初始变换量包括为初始旋转变换量Q1和初始缩放变换量S1。另一组目标变换量包括初始目标旋转变换量Q1’和初始目标缩放变换量S1’,初始旋转变换量Q1和初始目标旋转变换量Q1’通过单位四元数表示,初始缩放变换量S1和初始目标缩放变换量S1’以实数方式表示。
[0086] 为避免两组随机变化量相似,生成的初始旋转变换量Q1和初始目标旋转变换量Q1’、初始缩放变换量S1和初始目标缩放变换量S1’应满足以下条件,否则重新生成相应的变化量:
[0087] FAbs(Dot(Q1,Q1’)-1.0)>ε3,且S1/S1’>λ1或S1’/S1>λ1;
[0088] 其中ε3为预定义的初始旋转变换量与初始目标旋转变换量的中间旋转差异阈值,取值范围为(0,1)。ε3可根据实际需要设定,数值越大则初始状态与初始目标状态差异越显著,用户操作难度也越高,本实施例中设置为0.1。FAbs为绝对值函数,Dot为四元数的点积函数。λ1为预定义的初始缩放变换量与初始目标缩放变换量的中间缩放差异阈值,λ1可根据实际需要设定,数值越大则初始状态与初始目标状态差异越显著,用户操作难度也越高,本实施例中设置为1.1,同时为避免缩放过大或过小影响用户识别,S1与S1’的取值范围可设为(0.5,2.0)。
[0089] 步骤703,生成随机数t,取值范围为(0.0,1.0),计算目标旋转变换量Q2=Slerp(Q1,Q1’,t),其中Slerp为两四元数球面插值函数,返回值为单位四元数。
[0090] 生成随机数r,取值范围为(0.0,1.0),计算目标缩放变换量S2=Lerp(S1,S1’,r),其中Lerp为两个数的线性插值函数,返回值为插值后的数值。
[0091] 步骤704,渲染模块将目标旋转变换量Q2和目标缩放变换量S2,应用于原始模型形成目标模型,并将其渲染成目标图片,渲染时应合理设置视锥体与视口,保证整个模型在图片区域内并位于图片中心,同时保证目标图片大小与客户端的模型展示区域大小一致,以便用户参照目标图片缩放模型。
[0092] 步骤705,服务端将原始模型,初始旋转变换量Q1和初始目标旋转变换量Q1’,初始缩放变换量S1和初始目标缩放变换量S1’,目标图片发送至客户端,客户端接受数据后在两区域内进行展示,其中一个区域采用三维渲染技术展示应用了初始旋转变换量Q1和初始缩放变换量S1的操作模型,另一区域展示目标图片,两个区域展示大小保持一致。
[0093] 步骤706,在客户端添加两条滑动条,分别用于控制初始旋转变换量和初始缩放变换量。用户通过鼠标或手指移动滑动条,设滑动条长度为200px,其中px表示像素,对应的数值范围为[0.0,1.0],即每移动一个像素,数值增减0.005,则移动滑动条产生的最终旋转变换量Q3和最终缩放变换量S3分别为:
[0094] Q3=Slerp(Q1,Q1’,s),其中s为用户移动一条滑动条产生的相对于旋转的对应数值,Slerp为两四元数球面插值函数。客户端将Q3应用于操作模型渲染,实现操作模型旋转,即随着一条滑动条的移动,模型在三维空间中进行旋转。
[0095] S3=Lerp(S1,S1’,p),其中p为用户移动另一条滑动条产生的相对于缩放的对应数值,Lerp为两个实数的线性插值函数。客户端将S3应用操作于模型渲染,实现操作模型缩放,即随着另一条滑动条的移动,模型在三维空间中进行缩放。
[0096] 用户通过移动滑动条操作使得操作模型朝向、大小与目标图片所示基本一致。操作完成后客户端将最终旋转变换量Q3和最终缩放变换量S3发送至服务端。
[0097] 步骤707服务端收到客户端的反馈数据后,计算以下公式是否成立:
[0098] FAbs(Dot(Q2,Q3)-1.0)<ε2,且S2/S3>λ2或S3/S2>λ2。
[0099] 其中ε2为预定义的最终旋转变换量与目标旋转变换量的目标旋转差异阈值,取值范围为(0,1)。ε2可根据实际需要设定,数值越小则最终朝向与目标朝向差异越小,验证通过难度也越高,本实施例中设置为0.1。λ2为预定义的最终缩放变换量与目标缩放变换量的目标缩放差异阈值。λ2可根据实际需要设定,数值越小则最终大小与目标大小差异越小,验证通过难度也越高,本实施例中设置为1.05。FAbs为绝对值函数,Dot为四元数的点积函数。如果公式成立则返回验证通过,否则返回验证不通过。
[0100] 该实施例中,一组初始变换量和一组初始目标变换量均包括旋转变换量和缩放变换量,即每一组变换量包括两种变换量并且个数和种类相互对应,并且随机数也为一组,随机数的个数也与每组变换量的个数相对应,因此,生成的目标变换量也为一组,个数和种类也都与初始变换量、初始目标变换量相互对应。
[0101] 该三维模型验证码的实现方法及其装置,利用人类相比计算机在三维空间感知方面的优势,实现人与计算机的自动快速区分,规避或极大降低计算机通过图像识别技术与人工智能技术进行验证码破解的可能性;利用随机变换量生成不同的模型初始状态和目标状态图片,实现验证码的自动生成与更新,规避或极大降低计算机通过穷举遍历方法进行破解的可能性,进而有效降低人工筛选的处理成本;并且还可以通过滑动操作而不是键盘操作完成验证码输入,降低用户误操作的可能性,提升交互效率和用户体验。
[0102] 以上所述实施例仅表达了本发明的较佳实施例,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的技术人员来说,凡在本发明的精神和原则之内,所做的任何修改,等同替换,改进等,均应包含在本发明的保护范围之内。