生成验证码的方法及装置的制造方法

文档序号:9376107阅读:154来源:国知局
生成验证码的方法及装置的制造方法
【技术领域】
[0001]本申请涉及网络技术领域,尤其涉及一种生成验证码的方法及装置。
【背景技术】
[0002]互联网已经深入到人们生活的各个领域。网络在为人们提供便利的同时,也带来了各种风险。一些恶意使用者利用机器人程序大量不当使用网络资源,如使用自动注册工具批量注册网站账号并灌水、向服务器提交垃圾数据等等,浪费服务器资源,影响合法用户的正常使用。还有一些恶意使用者不断访问服务器,尝试破解合法用户账号的密码,使合法用户的隐私和利益面临威胁。因此,服务器上通常部署能够自动分辨合法与恶意使用者的技术,来降低被恶意使用的风险。
[0003]验证码就是一种被广泛采用的区分合法与恶意使用者的技术。现有技术中有多种验证码的生成方式,如字符类、问答类、语音类等,在服务器上选择使用其中的一种来生成验证码。但是,随着光学字符识别技术、自动应答技术、语音识别技术等的发展,通过程序自动提交正确的验证码变得越来越容易,现有的验证方式也越来越难以阻挡恶意使用者。

【发明内容】

[0004]有鉴于此,本申请提供一种生成验证码的方法,包括:
[0005]在验证码生成器集合中选择至少两个验证码生成器,组成当前使用集;
[0006]运行所述当前使用集中的每个验证码生成器,得到对应的部分验证码;
[0007]将所述部分验证码组合成为当前的验证码。
[0008]本申请还提供了一种生成验证码的装置,包括:
[0009]当前使用集单元,用于在验证码生成器集合中选择至少两个验证码生成器,组成当前使用集;
[0010]生成器运行单元,用于运行所述当前使用集中的每个验证码生成器,得到对应的部分验证码;
[0011]验证码生成单元,用于将所述部分验证码组合成为当前的验证码。
[0012]由以上技术方案可见,本申请的实施例不仅通过同时应用两种以上的验证码生成器提高了破解难度,并且在绝大多数情况下所使用的验证码生成器是不断变化的,延长了破解耗时且进一步降低了破解成功率,提高了网络的安全性。
【附图说明】
[0013]图I是本申请实施例中一种生成验证码的方法的流程图;
[0014]图2是本申请应用示例中一种生成验证码的方法的流程图;
[0015]图3是本申请应用示例中混合字符验证码生成器生成的部分验证码的示例图;
[0016]图4是本申请应用示例中问答验证码生成器生成的部分验证码的示例图;
[0017]图5是本申请应用示例中拍摄图片验证码生成器生成的部分验证码的示例图;
[0018]图6是本申请应用示例中当前的验证码的示例图;
[0019]图7是服务器或其他计算设备的一种硬件结构图;
[0020]图8是本申请实施例中的一种生成验证码的装置的逻辑结构图。
【具体实施方式】
[0021]现有技术中存在各种验证码生成器,如数字类、字符类、汉字类、问答类验证码生成器是将按照一定算法生成的几个数字、几个字符、几个汉字、一个问题以图片的形式显示给用户,用户需要输入与验证码校验值相同的数字、相同的字符、相同的答案才能通过验证;再如语音类验证码生成器是将按一定算法生成的一段语音播放给用户,用户根据语音输入同样的字符或正确的答复才能通过验证。对应的,各种技术也用来破解这些验证码,例
OCR (Optical Character Recognition,光学字符识别)技术可以识别出图片上的数字、字符和汉字;自动应答技术可以根据识别出文字,读懂问题并给出答案;而语音识别技术、或者语音识别技术与自动应答技术相结合可以用来破解语音类验证码。根据所需的破解技术不同,可以将验证码生成器的算法分为不同的验证模式。
[0022]虽然验证码生成器都采取多项措施来提高破解的难度,但是对一个特定的验证码生成器而言,将破解算法进行有针对性的优化后,还是能够达到相当高的破解成功率。而这样的破解算法对另一个验证码生成器则往往效果不好,即使这两个验证码生成器采用的是同一个验证模式。例如,破解算法I对验证码生成器I的成功率为O. 8,对验证码生成器2的成功率为O. 7 ;如果将验证码生成器I和验证码生成器2组合使用,则破解算法I的成功率将下降为O. 56。假设针对验证码生成器2的破解算法2成功率为O. 8,即使结合使用破解算法I和破解算法2,能达到的最高成功率也会下降为O. 64。
[0023]利用这一思路,本申请的实施例提出一种新的生成验证码的方法来提高验证码的破解难度,该方法可以应用在需要通过验证码防止恶意使用的服务器上,也可以应用在与该服务器连接、并能将生成的验证码发送给该服务器的其他计算设备上,其流程如图I所
/Jn ο
[0024]本申请的实施例所应用的服务器或其他计算设备上存有验证码生成器集合,其中包括至少两个验证码生成器。验证码生成器通常是一段可执行的程序,在验证码生成器集合中可以采用编号、标识等代表对应的验证码生成器,本实施例对具体的实现不作限定。各种验证码生成器都可以纳入集合中,包括采用同种验证模式、不同算法的验证码生成器,采用不同验证模式的验证码生成器,还可以随着验证技术的发展将新出现的验证码生成器陆续收入集合中。当然,也可以根据对验证码的种类、属性的要求来选择相应的验证码生成器组成验证码生成器集合。
[0025]在步骤S110,在验证码生成器集合中选择至少两个验证码生成器,组成当前使用集。
[0026]本申请的实施例对在验证码生成器集合中选择验证码生成器的具体方式没有限制。可以根据服务器上具体的安全性需求、使用者的偏好等因素,来采用某种筛选算法或者是确定筛选算法的方式。
[0027]例如,对包括N (N为大于等于2的自然数)个验证码生成器的集合,可以采用随机选取M(M为大于等于2、小于等于N的自然数)个验证码生成器、按照其在出现集合中的次序组成当前使用集的筛选算法,这样当前使用集将有种可能性;如果采用随机选取M个验证码生成器、按照其被选择的次序组成当前使用集的筛选算法,则当前使用的序列将有种可能性,在这种情况下,当前使用集实际上表示一个验证码生成器序列。
[0028]再如,假设验证码生成器集合中包括7种验证码生成器,其中3种采用字符验证模式,2种采用语音验证模式,2种采用问答验证模式,则可以任选2种验证模式,每种验证模式中任选一种验证码生成器来组成当前使用集;或者分别在3种验证模式中任选一个验证码生成器,随机排列来组成当前使用集。
[0029]以上两个例子可以看做采用固定的筛选算法的情形,本申请的实施例中也可以采用变化的筛选算法来产生当前使用集。如,轮询使用任选2个、任选3个、任选4个验证码生成器的方式,当前使用集将包括2个、3个或4个验证码生成器,并且每次所包含的验证码生成器个数都与上次不同。
[0030]在一种实施方式中,可以先预置若干种筛选算法,在集合中选择验证码生成器时,在预置的若干筛选算法中确定一种筛选算法,按照所确定的筛选算法在验证码生成器集合中选择至少两个验证码生成器。本实施方式中可以预置任意一种筛选算法,对在若干种筛选算法中确定其中一种来产生当前使用集的具体方式也不作限定。
[0031]例如,在预置的若干筛选算法中随机选择一种筛选算法,或者,轮询使用预置的多个筛选算法。再如,对同一地址的客户端,选择与上次使用的筛选算法不同的其他筛选算法。
[0032]可以根据用户的行为记录来选择所使用的筛选算法。对预置的筛选算法具有不同的复杂程度等级(如将部分筛选算法标记为高复杂程度)的情形,则可根据用户的历史行为记录选择某个复杂程度等级的筛选算法。
[0033]例如,记录固定时间段内用户登录失败的次数,如果失败次数为0,则采用组合两个数字类验证码生成器的筛选算法;如果失败次数为1,则采用组合一个数字类验证码生成器和一个问答类验证码生成器的筛选算法;如果失败次数大于等于2,则采用组合4个多种验证模式的验证码生成器的筛选算法。再如,如果某个用户曾经有过疑似使用机器人程序自动登录的行为,则对该用户采用复杂程度最高的筛选算法。
[0034]过于复杂的验证码能够增加安全性,但是会给用户带来一定程度的不便,根据历史行为记录来估计用户的主观意图,适用对应复杂程度的验证码,可以在安全性和用户便捷性之间达到更好的平衡。
[0035]需要说明的是,本实施例中,当前使用集可以是当前使用的验证码生成器的集合,也可以是当前使用的验证码生成器的序列,换言之,当前使用集可以是元素次序无关的,也可以是元素次序相关的。
[0036]在步骤S120,运行当前使用集中的每个验证码生成器,得到对应的部分验证码。
[0037]在产生当前使用集后,分别运行其中的每个验证码生成器,每个验证码生成器按照自身的算法生成对应的部分验证码,同时还会生成对应的部分验证码校验值。
[0038]在步骤S130,将部分验证码组合成为当前的验证码。
[0039]对当前使用集中每个验证码生成器产生的部分验证码,将这些部分验证码组合后成为当前的验证码。对每个验证码生成器产生的部分验证码校验值,也将其组合后成为当前的验证码校验值。要采用相同的顺序来组合验证码和对应的验证码校验值,以便能够正确利用验证码校验值检验客户端是否通过验证。
[0040]如果某个具体应用场景中的当期使用集是元素顺序相关的,则要根据当前使用集中验证码生成器的排列顺序,来将对应的部分验证码组合为当前的验证码,同样也要按照这一排列顺序来讲对应的验证码校验值组合为当前的验证码校验值。
[0041]可见,在本申请的实施例中,同时应用至少两种的验证码生成器,并且绝大多数情况下所使用的验证码生成器在不断变化,恶意使用者不仅需要知道有多少种验证码生成器,还需要知道这些验证码生成器有多少种组合或排列方式。即使掌握了这些,有针对性的进行破解算法的优化也极其困难,破解耗时会很长,难以达到可接受的成功率。
[0042]假设破解单个验证码生成器的平均耗时是IOms (毫秒),破解成功率是80 %,对一个包括10种验证码生成器的集合,采用每次最多选择其中的4个进行组合的筛选算法,那么当前使用集可能出现约10000种可能性,平均的破解耗时是(10X4(1?10000))=40ms?400s (秒),其破解成功率为:0. 8 X O. 8 X O. 8 X O. 8 ^ O. 4,基于这样的破解速度和成功率,实际上早已失去了破解的意
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1