滑块验证码(滑动验证码)相比图形验证码,破解难度如何?


勿忘初心提问于 2018-11-22 13:21
1 个回答
  • 猪小花1号2018-11-22 18:41

    首先给出观点:前沿的基于机器学习建模、多维判断的拖动滑块验证,不是简单计算滑块偏移量和按键精灵所能应付的,而图形验证码在当前不断发展的OCR、神经网络面前却越来越容易失守。

    图形验证码的原理和识别,在三四年前就已经有深刻的分析,利用机器学习和机器视觉,把验证码的文字和背景分离,去除干扰线,分割字符,扭曲还原,机器就可以做到自动识别。K-Means、SVM(支持向量机)的分类效果就不错,对于扭曲,神经网络方法更是提供了很高的成功率。不过那时候节点多的大型网络,运算是比较慢的。但现在,数据量积累越来越丰富,深度神经网络模型越来越好,计算能力越来越强,最重要的是机器学习算法的从业者越来越多,不管是重叠粘连的字符,或者是物体识别,识别率的提升是自然的。

    参考:
    常用验证码的识别方法

    https://sq.163yun.com/blog/article/214098648308854784

    机器自动识别验证码的原理是怎么样的?

    https://www.zhihu.com/question/22479139/answer/532124964


    据说,有了深度学习,传统字符型验证码被破解的最大概率已经达到98%。

    参考:
    网易云安全(易盾)推"新一代行为式验证码"
    http://news.yesky.com/hotnews/205/115428705.shtml

    拖动滑块分两种情况。其余答案说的前端拼接,就不用说了,确实不容易防不住有心人。新的滑块验证码方案,验证码后台针对用户产生的行为轨迹数据进行机器学习建模,结合访问频率、地理位置、历史记录等多个维度信息,快速、准确的返回人机判定结果。针对这种方式,单纯分析调用JS是破解无效的。原因如同 
    @闫先森 
    所说,深度学习判别策略是黑盒。当然,理论上行为轨迹也可以用深度学习破解,不过还是要积累足够多的训练样本,和足够多的训练时间。

    题外话,攻与防技术都是在对抗中不断升级的,无解的验证码还不存在,但防的一方可以不断提升破解成本。应用选择滑块验证,也有部分因素是因为竞争激烈的互联网很看重用户体验,拖动毕竟是趣味性交互且容易完成,而图形验证码既容易被黑客攻破,对用户也并没有那么友好——肉眼识别无趣(可能还很艰难),键盘手动输入更浪费时间,体验比较大。


    这里分享网易云安全(易盾)的验证码方案:

    参考网址:云安全(网易易盾)_内容安全_业务安全_网络安全云服务-网易云

    易盾验证码抛弃了传统字符型验证码展示-填写字符-比对答案的流程,采用验证码展示-采集用户行为-分析用户行为流程,用户只需要产生指定的行为轨迹,不需要键盘手动输入,极大优化了传统验证码用户体验不佳的问题;


    同时验证码后台针对用户产生的行为轨迹数据进行机器学习建模,结合访问频率、地理位置、历史记录等多个维度信息,快速、准确的返回人机判定结果,优化了传统验证码基于单一字符维度容易被暴力破解的问题。后台会检测破解攻击,如果有破解的情况,会自动切换到更高难度的点选式验证码;除此之外网易云还提供终极验证上行短信验证,确保验证码的安全性。