大数据、机器学习推动下的验证码技术发展:网易易盾验证码评测与解读

小龙 2017-6-22 信息安全 0 0

恶意登录、撞库、恶意注册、羊毛党、垃圾广告、爬虫、活动作弊、灌水、垃圾注册、刷票……解决这些业务安全威胁的办法之一就是验证码。然而,验证码真的可靠吗?易盾是网易在云安全方面的产品体系,其中易盾验证码最新推出,这次我们期望借由评测网易易盾验证码产品的机会,一探验证码的攻防现状。

上述安全威胁就是由于网络上存在大量的计算机通过自动化操作伪装成人类,而验证码的出现就是期望解决这些问题。验证码全称“全自动区分计算机和人类的公开图灵测试”(英语:Completely Automated Public Turing test to tell Computers and Humans Apart,简称CAPTCHA)。这个概念在2002年由卡内基梅隆大学的路易斯·冯·安、Manuel Blum、Nicholas J.Hopper以及IBM的John Langford所提出。在CAPTCHA测试中,作为服务器的计算机会自动生成一个问题由用户来解答。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。

由于网络中存在大量用户利用自动化程序发布各种垃圾信息的行为,因此验证码被广泛使用在论坛。除此之外,为了防止撞库,网站通常会在收到多次登陆请求后显示验证码。

验证码的变迁

看起来,市面上的验证码层出不穷,有字符型验证码,有游戏式的验证码等,但主流的验证码从验证的思路上说有两种:

第一类是基于知识的验证码,验证码本质上是一个问题,而这个问题对机器来说难以处理,可能是视觉问题或语音识别问题, 而对人类来说非常简单。

比如最早的验证码一般就是一些字母或数字的图片。

1418719022-2238644537.gif

第二类是基于行为检测的验证码。这些验证码需要访客完成一个简单的操作,以采集访客的行为信息,之后再通过进一步分析判断是否对该访客放行。

常见的验证码如Google的新版ReCaptcha的第一步认证,以及淘宝网的滑动验证都是基于这种思路的验证码:

google-recaptcha.jpg

big.jpg.png

下图展示的是全球Top 10万网站应用最为广泛的一些验证码技术,数据来自SimilarTech。抛开ReCaptcha不谈,如果从整个互联网来看,General Captcha,也就是更为通常的验证码方案仍旧排在第一,比如排名靠前的NuCaptcha采用的也是字符验证的解决方案。值得一提的是,排名第四的KeyCAPTCHA所采用的就是滑动式验证码解决方案,排名第六(整个互联网排名第五)的Sweet Captcha也较为类似,可见滑动式验证码解决方案时下还是比较流行的。

captchagraph.png

用户体验vs安全

事实证明仅靠验证码进行的防御是无法完全防止恶意行为的。自验证码出现以来,针对验证码的攻防形式也不断提升。

最初的验证码,要求用户根据图片输入相应的字母或数字,然而随着OCR技术的发展,这种简单的图片验证码已经无法区分机器与人类——通过识别技术,机器能够轻易识别出文字。早年识别的主要原理是通过算法预先建立验证码的字体特征库,再将要识别的验证码通过该算法生成特征,与之前保存的特征库进行比较得到图片验证码的值。

其流程通常包括:去噪处理,主要是去掉图像里的所有干扰信息;图像二值化,也就是将整个图像呈现出黑白效果;切片处理,将每个字符所在区域分离成一个个图片,确保图片内只有一个文字;还有文字图片标准化、字符模板识别等。

因此出现了各种技术防止机器识别出验证码,常见的手段包括:

字体扭曲

字体粘连

字体镂空

字体混用

主体干扰线

背景色干扰

背景字母干扰

不过这些方案始终并非长久之计,所以还衍生出了一些其他的验证方式,比如一些算数验证码。随着计算机对于这些干扰的处理能力不断提升,能够破解的验证码的难度也不断加大。最终引发验证码平台与攻击者的“军备竞赛”,比如一些网站上的“高难度验证码”。

0076.jpg

Google ReCaptcha 1.0版本的验证码就存在难以识别的情况,比如下图中左边的单词一般人是无法识别的。不过,很多人不知道的是这串验证码只需要右边的”was”正确输入即可。左边经过扫描之后的词会根据大部分人类输入的答案进行识别。还是相当智能的,虽然用户体验可能并不好。

icon-position-before.png

之前被大家诟病的12306也是其中之一。

tt2.jpg

这样的“军备竞赛”非但降低了用户体验,而且并不一定能够防止破解。比如之前有黑客就是使用百度识图API对12306的验证码进行破解。

12306.PNG

除此之外,网上还有一些人工打码平台,它们通过组织真实的人来进行识别,并提交验证结果。这使得验证码更难甄别机器和人类。

为此,各家厂商纷纷尝试寻找解决方法,从某种程度上说,只有当攻击成本过高甚至远大于攻击成功带来的收益,黑客才会对破解验证码这种事儿完全失去兴趣。

网易作为国内最大的互联网服务运营商之一,领先的业务横跨搜索、新闻、游戏等行业,其对于安全的重视自然不在话下。这次我们测评的易盾验证码就是网易在人机对抗领域交出的考卷。

易盾验证码面面观

易盾验证码隶属网易易盾,是网易旗下安全云服务产品。网易易盾主打反垃圾云服务,提供反垃圾、验证码、注册保护、登录保护、活动反作弊、应用加固等安全解决方案。

产品体验

网易易盾验证码和前文提到的KeyCaptcha和Sweet Captcha采用了类似的方案,是一款基于行为的验证码,有两款产品供开发者选择。一是滑动拼图式的验证码,用户滑动拼图进行安全验证;二是点按式的验证码,用户按照顺序点击图中出现的文字完成验证。从安全的角度上说,后者的安全性更高。对用户而言,这两种验证方式与传统的识别文字的验证码相比体验都更加流畅。验证过程只是将滑块拖动到相应位置,实际上很多论坛已经广泛应用这类解决方案。

hua.PNG2.png

除此之外,易盾验证码还提供了三种前端接入方式,适应不同应用场景,并对移动端的验证做了相应优化。

触发式:鼠标移入验证条后显示验证拼图,轻松接入,不影响网页原有的排版和美观

嵌入式:拼图验证区域直接完整嵌入网页,清晰直观,便于用户使用和广告宣传

弹出式:基于移动端特点,跳转验证,为移动端客户提供更好的用户体验

3z.jpg

对于开发者而言,首先,这类验证码的部署比较简单。在易盾官网进行注册后我们能够得到两个ID,分别是secretID和secretKey,我们根据开发文档先在前端页面插入两条JavaScript:

<script src="http://captcha.dun.163.com/js/c.js"></script>

再插入初始化验证码的组件:

<script>
    var opts = {
      "captchaId": "YOUR_CAPTCHA_ID",
      "width": 320
    }
    NCaptchaInit(document.getElementById('ncaptcha_id'), opts);
</script>

各参数的具体说明如下:

captchaId:验证码id

width:验证码组件显示宽度

initCallback:验证码组件初始化完成回调函数

verifyCallback:验证码验证结束回调函数

用户每完成一次验证码验证,后台会记录该次验证相关的验证信息,并且会对这些验证信息做衰减失效处理(目前默认为10分钟),二次校验是为了确保这次验证是最近10分钟内完成的。校验的目的是为了防止攻击者预先人工完成大量验证码校验并集中一次提交,进一步提高安全性。

process.png

在易盾的验证码的后台页面,除了我们的secretID和secretKey以外,还有验证数据的统计,我们能够选择按小时或者按日进行统计,自定义时间跨度,从而清晰地看到验证次数。另外,统计数据支持一键excel导出。不过,我们在后台没有找到更详细的配置界面,当我们需要手动切换安全难度时,登陆后台的方式更加方便快捷。

sta.png

除此之外,传统的验证码厂商往往没有自己的云服务,而易盾验证码基于网易云服务器,根据网易官方的介绍,能够做到“毫秒级响应”,并且能够依托云平台优势进行弹性动态扩容,保证服务的稳定性,并且对性能的损耗较低。

我们还拿到了一份来自网易的《易盾验证码v1.0性能测试报告》,报告对易盾验证码在合理响应时间下的业务支持上限及其他相关性能数据进行了测试。测试分为单台服务器和多台服务器,测试的方式是使用Jmeter 2.13分别对单台、多台环境进行压测,不断增加并发压力,寻找性能拐点,分析拐点处相关性能数据和机器参数。测试结果表明:

对于单个服务器:

1)100 并发时,服务器 cpu 约 90%,内存约 35%,达到硬件性能瓶颈,此时吞吐量约 2000、90%响应时间约 50ms;

2)100 并发后,吞吐下降、响应增加,拐点出现。

对于多个服务器:

1)400 并发时,吞吐拐点出现,达到程序性能瓶颈,此时吞吐量约 6300、90%响应时 间约 110ms,单台 cpu 负载约 45%;

2)400 并发后,吞吐下降、相应增加,拐点出现。

captcha.png

通过压力测试表明,易盾验证码的服务上限比较高,并且在多台服务器环境下的抗压能力更强。因此,通过网易云的优势,能够弹性分配服务器性能,确保服务的稳定性。

产品特色

一个好的验证码,应该在保证用户交互体验基础上提高安全性。滑动式的验证方式也有方法进行破解,比如使用虚拟浏览器模拟人的操作,截取验证码滑动之前和之后的图片,计算滑块的偏移量,然后拖动到相应位置;再比如分析滑动验证码的ajax请求,并伪造请求。然而这些破解方法的难度都比较大。

有的验证码甚至只检测前端是否拼接,留下了更大的攻击面。不过很多滑动式验证码都开始采用行为分析,因为拼图行为构建起了行为特征,鼠标拖动滑块的动作就成为滑动式验证码的依据之一,通过机器学习建模来甄别用户行为特征。易盾验证码也是其中之一。除了最基本的检查图片是否正确拼接之外,易盾验证码还会检查拖动轨迹和拖动速率,用以区分是人还是机器。此外,易盾还会同步采集浏览器设备指纹信息,用以监控来自同一个用户的攻击行为。

之前无数验证码被破解的案例表明,要想真正提高安全性,必须摒弃提升验证码复杂度的思路。因此,除了上面提到的用户行为分析以外,易盾验证码还引入了另外两种校验过程。

yanz.PNG

在验证码展示前的阶段,易盾的“智能感知引擎”能够切换验证难度,而无需人工干预——这也在一定程度上提升了用户体验。前面我们提到,易盾提供了拖动验证与点选验证的两种验证方式,而“感知引擎”能够根据访客的信息将拖动验证升级到点选验证,最高难度的验证方案是终极短信上行验证,通过切换难度的方式,过滤大量可疑用户。尤其短信验证方案,也起到了双重身份认证的作用,虽然运营商本身并不是高可信任的认证载体,不过这个世界原本就没有绝对的安全。

在对用户进行行为分析之后,易盾验证码则会通过“机器学习建模”对访客的其他信息进行验证,这些信息包括:访客的访问频率、地理位置以及历史记录等。这些信息的处理都以网易的数据分析能力做支撑,共享大数据分析成果。与此同时,易盾也会对恶意用户的特征模型实时更新,以便对新的威胁做出响应。

网易“有态度”的企业市场布局

滑动式验证码在用户体验方面相较传统字符验证更好,网易易盾验证码也继承了这一特点;而在安全性上,则是放弃了以提高验证码复杂性提高安全的思路,通过大数据分析能力和在验证过程中的信息采集对恶意行为进行分析甄别,以此在保证用户体验的同时确保安全性。

而相比其他新一代“验证码”产品,易盾的更多优势来自于网易云计算平台的大数据支撑和对于游戏等行业场景的理解。从网易近期的产品动态可以看到其在企业服务市场的布局,反垃圾、IM、云客服等都有,易盾验证码是其中之一,切入这块的优势是网易本身的用户、技术能力和大数据壁垒。

新技术的出现为许多安全产品提供了新的思路,大数据与机器学习的发展就是其中的表率。云计算平台搭建得越大,数据的体量越大,对此类安全技术的帮助也越大,网易易盾滑动拼图验证码大约就是利用网易云的资源诞生的产品。而滑动式验证码对这些新技术的应用只是安全产品发展的冰山一角,未来我们应该还能看到更多受惠于此类技术的产品出现。

*本文作者:부평오언조2017,转载请注明来自FreeBuf.COM

转载请注明来自华盟网,本文标题:《大数据、机器学习推动下的验证码技术发展:网易易盾验证码评测与解读》

喜欢 (0) 发布评论