APP下载

隐式验证码的设计与实现

2016-11-16张华

电信工程技术与标准化 2016年10期
关键词:库中加密算法页面

张华

(中国移动(深圳)有限公司,深圳 518000)

隐式验证码的设计与实现

张华

(中国移动(深圳)有限公司,深圳 518000)

随着互联网行业的蓬勃发展以及对信息安全重视程度的提高,文本、图像、声音等验证码已应用到我们生活的各个角落。其中,文本验证码以其简洁、不依赖第三方辅助设备得到最广泛应用。为增加机器识别难度,文本验证码设计越发趋于复杂,影响了使用便捷性,导致用户对其存在褒贬不一。本文在回顾验证码发展及现状的基础上,结合文本验证码设计原理,转换思路,给出一种隐式验证码的设计方法,在确保机器识别难度基础上,有效降低用户登录复杂性。实践表明,该方法实用性强,在实际使用中取得了良好效果。

验证码;OCR识别;安全

为保障信息安全,减少被暴力破解带来的信息泄露、金钱损失等风险,验证码的使用已经深入到我们生活的方方面面,新闻网站、证券软件、聊天论坛,甚至于日常生活中的水电煤气缴费,使得网络账户的安全越来越重要。出于被机器识别后严重后果的担忧,验证码有越来越复杂的趋势,人眼识别也越来越困难,对日常使用带来不小影响。基于此种情况,本文结合文本验证码设计原理,转换思路,实现了一种新型验证码,采用隐式参数方式,将人眼识别过程替换为隐式的自动化交互,不需要用户输入任何验证码信息,在不减少暴力破解难度的同时,有效降低用户验证复杂度。

1 验证码起源

验证码的起源和互联网的发展密切相关,互联网早期,应用最广的是免费网络邮箱,通过注册一个邮箱地址,可以方便的进行人与人之间的沟通。但随着网络营销的兴盛,垃圾邮件大量出现,给免费邮件运营商带来不小的困扰,且因为自动注册计算机程序的存在,为从源头上封堵垃圾邮件的泛滥带来非常大的麻烦,如何区分正常用户和自动注册计算机程序迫在眉睫。2002年卡内基梅隆大学的Luis von Ahn、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford提出了验证码(CAPTCHA)的概念,验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序,在验证码测试中,作为服务器的计算机会自动生成一个问题由用户来解答,这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答验证码的问题,所以回答出问题的用户就可以被认为是人类。验证码在网络上的大规模使用起源于 1999~2000年间Yahoo网站的账号注册,目前大多数网站都采用验证码机制来加强其安全性,使用场景主要为注册以及登陆,有效防止暴力破解、刷票、论坛灌水等非正常使用行为。

2 验证码发展

随着人们对网络安全的日益重视,验证码技术的发展越来越迅速,从验证码的特点看,大致可分为文本、图像及话音3类。其中,文本验证码以其实现简单,无需辅助设备等优点,是目前使用的主流方式。

第1类是文本验证码,示例如图1所示。主要以动态或静态图片形式存在,在图片上看到的信息即为验证结果,通常采用图像变形、添加噪声等方式增加机器识别难度。依据内容构成、表现形式的不同可分为3种:数字和字母组合、人类语言以及动态图片。

图1 文本验证码示例

数字和字母的组合验证码由数字0~9、字母a~z及其它特殊字符随机混合构成,长度通常在4~6之间,因其简洁且生成难度小,最为常见;人类语言验证码由随机选择的一个单词构成;动态图片验证码,本身为一张动画图片,其在变形、噪声基础上增加了动态变换,增加了破解难度,受限于纸质媒介的展现形式,本文无法直观表现。

另外,短信也是文本验证码形式之一。通过将验证信息发送到用户手机,再让用户人工回填的方式,可以保证安全性,是目前最安全有效的验证方式之一。但因涉及到第三方产品手机,仅在少量重要场合使用,如密码找回、银行卡绑定、费用支付等。

第2类是图像验证码,示例如图2所示。在图片上看到的内容仅为判断得到验证结果的来源,需要经过人类思维判断后才能得到验证结果。依据内容构成的不同可分为3种:提问式验证码、科学验证码、广告验证码。此种验证方式近年来有增加趋势,如火车票预订网站12306,但因其涉及到人文、社科等多方面内容,目前仍然不是验证主流。

图2 图像验证码示例

第3类是语音验证码。将验证信息自动转化为一段录音,通过3种方式(电脑直接播放、录音发送到手机、语音电话直接呼到手机)知会用户,用户将录音中提示的验证信息进行回填,从而保证安全。考虑到方言差异、用户接收设备等问题,此种验证方式应用较少,主要作为短信验证码的辅助手段使用。

3 隐式验证码实现

3.1验证码原理

验证码实现原理大致如下:选择一个服务器(或模块)用于生成验证码图像及比对用户输入验证信息,用户按照要求人工识别并输入验证信息。以Web网站为例,详细介绍文本验证码的实现原理,原理如图3所示。

步骤1:用户发送请求访问特定网页,如登录请求、未登陆状态下访问安全性较高网页请求。

步骤2:网站判定用户需要进行权限验证后,在服务器端动态生成验证信息字符串(如2F3A),并将其转换为图片格式。

步骤3:网站将登陆页面返回给用户,其中包含验证图片。

步骤4:用户客户端展示登录页面信息,验证信息以图片形式显示。

步骤5:用户人为识别验证信息后,将用户名、密码及验证信息按要求回填到登录页面并提交给网站。

图3 文本验证码生成原理示意图

步骤6:网站接收到用户提交信息后,将此信息和保存的验证信息进行比对。

步骤7:如比对通过,即可将登录成功页面返回给用户。

步骤7’:如比对失败,在登录页面上提示失败原因。

上文中提到的文本验证码及图像验证码均采用此原理实现,仅在步骤3、4略有差异,但本质上没有太大区别。

文本验证码可有效对真实用户和机器进行区分,优点明显。然而 OCR技术也在不断发展中,通过格式转换、去噪、灰度化、二值化、定位并分离字符、字符与模式库中模式匹配等一系列自动化识别步骤后,文本验证码可被识别率较高。出于被识别的担忧,文本验证码越来越复杂,机器识别难度提高的同时,用户识别难度也在同步提高。

3.2隐式验证码原理

隐式验证码和目前验证码在原理上类似,均是采用动态验证信息增加机器暴力破解难度,差别在于验证信息的识别与回填均自动完成,用户无感知。如图4所示,隐式验证码和当前主流验证码的差别主要在如下几个步骤。

步骤3:网站在生成验证信息(步骤2)的同时,还在加密库中随机筛选出了加密算法,在混淆库中随机筛选出混淆算法,然后对加密算法进行混淆。

步骤5:网站在将验证信息返回给用户(步骤4)的同时,还将混淆后的加密算法一起返回给了用户。

步骤7:客户端展示的登陆页面上不显示任何形式的验证信息,而是仅将验证信息及加密算法驻留在用户客户端,且用户不可见。

步骤8:本步骤为隐式验证码的设计核心。当用户提交登录信息给网站时,自动采用加密算法将验证信息加密并一起提交,因为加密及自动提交过程和用户无关,故此用户无感知。

步骤9:网站收到加密后的验证信息后,采用对应的解密算法进行解密,然后和网站保留的验证信息进行比对。

步骤10’:当验证信息比对失败时,网站下发新的混淆后的加密算法及验证信息。

当网站被暴力破解时,机器(或破解者)需要识别混淆后的加密算法及验证信息,且因为每次用户提交均会导致算法更新,故此安全性较高。缺点是算法及验证信息均驻留在用户客户端,存在被识别的可能。故此,为增加暴力破解难度,通过扩充加密算法库、混淆算法库,及多样化验证信息位置的方式,可达到增加破解难度的目的。

图4 隐式验证码生成原理示意图

本方法在确保暴力破解难度的同时,和用户无交互,且通用性较强,适用于各种场景,优势明显;缺点一是对破解者的尝试性登陆无法识别,即破解者采用正常登陆流程访问时,该方法无法区分。二是复杂程度依赖于加密算法,而生产库中导入的加密算法一般是有限的。

4 实际应用

某科技公司在建设新一代网站系统时实现了该新型验证码,其开发语言为Java,JS加密库中已导入了50种左右的加密算法,如位移、HASH等,混淆库中已导入了10种左右的混淆算法或产品。如下以网站登录为例,就简述下登录流程。

(1)当网站接收到访问登录页面请求后,自动生成验证信息、混淆过的加密算法,然后返回登录页面给用户。

加密算法均采用JavaScript语言实现,以确保可在客户端执行。因加密算法文件是可见的,采用混淆算法可增加识别难度。

以图层<DIV>方式保存验证信息,图层名称、位置动态变化。验证信息在网站随机生成。

假设JS加密算法选择位移,混淆选择YUI Compressor产品(免费软件,但功能相对较弱)。

(2)用户点击登录时,通过JavaScript语言的onClick方法直接调用加密算法,算法获取验证信息并加密后,和账号、密码等信息一起提交给网站。

(3)网站解密验证信息并和网站预留信息比对,如果一致即表明用户认证通过。如果比对失败,推送错误提示信息及新的验证信息、混淆后的加密算法给客户端。

5 结束语

当前验证码发展趋向复杂化,人眼识别越来越困难,影响了用户正常使用。本文提出一种隐式验证码的设计思路,保障暴力破解难度的同时,还不影响用户使用便捷性。另外,再复杂的验证码也抵挡不住针对性的识别,从2008年Gmail邮箱被破解到2015年12306新款验证码被破解已证明了识别能力的强大,故此,复杂化不是验证码的发展方向,建议通过多种手段结合方式,在确保用户良好感知的同时,有效区分用户行为和机器破解行为。

Design and implementation of implicit CAPTCHA

ZHANG Hua
(China Mobile (Shenzhen) Co., Ltd., Shenzhen 518000, China)

With the rapid development of the Internet industry and the improvement of the emphasis on the information security, the CAPTCHA such as text, images and sound has been applied to every corner of our lives. Among of these CAPTCHA, text CAPTCHA are becoming most widely used for its simplicity and not relying on third-party ancillary equipment. To increase the diffi culty of identifying for the machine, the design of text CAPTCHA become more complex affecting the ease of use and causing the users dissatisfi ed.This paper reviews the development and research status of the CAPTCHA, based on the design principles of the text CAPTCHA and converting designing ideas,an implicit CAPTCHA is given in this paper ensuring the diffi culty of recognition for the machine and effectively reducing the complexity of the user login. Practice shows that this method is practical and can achieve good results in actual use.

implicit CAPTCHA; OCR identifying; security

TN929.5

A

1008-5599(2016)10-0054-04

2016-07-26

猜你喜欢

库中加密算法页面
英语专业学士学位论文摘要的元话语特征研究
刷新生活的页面
街头的人
基于整数矩阵乘法的图像加密算法
混沌参数调制下RSA数据加密算法研究
从今天开始
智能盘库在自动化立体库中的探索和应用
移动页面设计:为老人做设计
基于小波变换和混沌映射的图像加密算法
对称加密算法RC5的架构设计与电路实现