在深度学习的加持下,再复杂的验证码也只是徒增烦恼

验证码越变花样越多,也越来越复杂,除了让用户反感烦人,对于账号的保护又如何呢?身份认证有效安全保护又有那些措施呢?谷歌为什么要默认启用多步认证

基于OCR识别来解析图片型验证码

上图中的验证码为扭曲字符而后生成图片展示出来,对于那种直接展示字符的验证码直接略过。

扭曲字符通过图片展示的验证码看似不能直接让机器人工具直接复制粘贴,可在MuggleOCR识别下也只是沦为增添用户操作的一个烦人步骤。

MuggleOCR是一款开源通用的OCR识别模块,而且整个模块大小不超过10MB,OCR模型仅为4MB,验证码模型仅为2MB。如此小的模块足矣让上图的验证码无处遁形。

直接上识别结果吧,调用MuggleOCR:

import time
import muggle_ocr
import os

sdk = muggle_ocr.SDK(model_type=muggle_ocr.ModelType.OCR)
root_dir = r"./imgs"
for i in os.listdir(root_dir):
    n = os.path.join(root_dir, i)
    with open(n, "rb") as f:
        b = f.read()
    st = time.time()
    text = sdk.predict(image_bytes=b)
    print(i, text, time.time() - st)

输出结果:

MuggleOCR Session [captcha] Loaded.
1a2v1_444cbc94c5a3bf1682ab71cc1e5319c0.jpg 1a2v1 0.009941816329956055
1a2yc_1534434561732.jpg 1a2yc 0.009974956512451172
2a3ka_1d94eaff16ab6612fc6445c6b5d56684.jpg 2a3ka 0.009972333908081055
2a3w_900a9e3672ded254e63ef4cba6e1f465.jpg 2a3w 0.009982109069824219
dU5g_c406889e89ca47e5a2d632798baead21.jpg du5g 0.010939359664916992
LGKX_85bbfbe824074944bd4529b61f8ccb75.png lgkx 0.011968135833740234
mhhm_3085e25cd1ee6b062d02522bb1133257.bmp mhhm 0.011968612670898438
Q8U7_4fab05a68b694d54842e1165d0539ce4.jpg q8u7 0.011966943740844727

完全识别出来了,而且都是在0.01s(10ms)内完成。其实不难想象为什么MuggleOCR如此高效且精准,这是因为它是基于深度学习 captcha_trainer 训练出来

验证码的升级之路

如此验证码如何,够高大上够复杂了吧。相信不少人也已经见识到了上图类似的验证码了,包括京东、58在内都在用这种手势描画路径的验证码了。即便如此在深度学习的模型训练下也难逃被解析,终究只是对于用户来说只是变了花样烦人,并未真正的保护用户账户安全

训练模型的基本思路:

  • 采集样本
  • 使用Labelme类工具来标注样本
  • 使用tensorflow的object_detection来训练
  • 使用opencv imshow处理训练结果
  • 使用skimage获取轨迹,至此验证码自动识别工具也就有了雏形

成果展示

有效的账号安全保护

验证码越变花样越多,也越来越复杂,却仍旧不是安全的方式。那么如何有效的保护账号信息安全呢?

其实简单有效的方式就是做到验证信息与登录界面完全分离,乃至物理隔离。让那些窥探账号信息的不轨之徒无从获取验证信息。

短信验证码

短信验证码,如此朴素的一种形式为什么能有效保护账号信息呢。其实它就实现了上诉的简单原则:验证信息与登录界面做了完全隔离,加之在国内手机号码实名制的环境下是一种有效的账户保护方式。这种情况下想要盗用你的账号登录成功,即便拿到你的手机号码也无济于事。除非你善良到把短信内容告知对方。

当然短信验证码的缺点也很明显,对于平台或公司来说就是账号保护的经济成本在不断累积

双因素(动态密码)保护

双因素认证(Two-factor authentication,简称 2FA)也称之为双重验证、多步验证,简单来说就是通过你所知道再加上你所能拥有的这两个要素组合到一起才能发挥作用的身份认证。通常常用的双因素认证采用密码+动态口令(OTP)实现。Google近日宣布将为其用户账户默认开启多步验证就是采用基于时间、密钥而生成的动态口令。

双因素认证产品在国内较为有影响力的可以参考北京中科恒伦科技有限公司的CKEY DAS系统。CKEY DAS产品在企业级应用内几乎实现凡需要账户登录的地方均可使用,包括系统登录、桌面登录、web应用、网络设备等等。其软件架构如图所示:

CKEY DAS是一款注重身份认证安全的产品,并不断在动态口令展现介质(又称为令牌)安全级别上投入研发能力。其令牌形式包揽了:APP形式的软件令牌、桌面应用的PC令牌、硬件动态口令令牌、指纹令牌等等,当然还包括扫码登录、消息推送、短信验证码。其短信验证相对互联网应用的短信验证可以实现登录界面只需输入用户名而不必输入手机号码获取。

上图即为CKEY DAS在Windows桌面登录时的应用,在登录界面输入用户名、密码,并从物理隔离的令牌上获取动态口令提交登录。更多信息可访问中科恒伦官网。

未经允许随便转载:看过够 » 在深度学习的加持下,再复杂的验证码也只是徒增烦恼

赞 (4) 打赏

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏