近期休闲小游戏“羊了个羊”火爆朋友圈,这款第二关难度系数极高且带有省份和个人排名的小程序游戏甚至在最高峰时段热度指数超过了和平精英和英雄联盟。但不管是MOBA手游英雄联盟还是休闲小游戏羊了个羊,在繁荣的背后游戏外挂脚本屡见不鲜。

羊了个羊游戏脚本

面对此类业务遭受计算机自动化作弊的情况,企业应该如何应对、避免损失及无效运营无疑成了当下最应该重视的问题。

目前,针对以上风控问题,极验作为负责企业业务安全的服务商已根据不同问题类型给出解决方案,即在易出现自动化作弊的场景部署验证码。极验安全专家表示:目前黑灰产利用自动化脚本作弊的技术手段不断进步和成熟,与黑产博弈最有效的办法便是提高黑灰产作弊成本。极验现行的解决方案中应用了工作量证明技术的行为验4.0就可以最大程度地提高黑灰产的攻击成本。这项技术通过加大电脑CPU的计算量、延长计算时间的方法防御高频次的交互,但对低频次且账户安全性高的正常用户则毫无影响。以下为具体详细说明:

一、工作量证明原理

工作量证明,(Proof of Work,以下简称“PoW”)顾名思义就是证明你所做过的工作。当应用在验证码中时,它指的是验证码厂商的服务端向用户的客户端调取计算机完成指定量工作的证明,该证明一般为提交了正确的哈希算法的字符串答案。在这一过程中,极验服务端除了可以迅速验证客户端的答案外,工作量证明的数量多少也有且仅有它可以规定。

因PoW的作用就是限制高频次的请求,所以通常情况下极验会通过主动监测以发现高请求量且不符合客户业务规律的流量时开启PoW共识防御机制。

二、效果显著,有效拦截97.42%异常流量

下图为某一网站开启PoW前后的数据对比情况。我们可以看到在下午14:00时该网站的验证交互量达到了历史峰值:244,785。随后验证请求量、交互量等四项数据都有所下降,但从曲线图中仍然可以看出数量远远超过该网站的正常交互量。在14:52分左右我们监测到网站的异常数据。根据以往的经验我们大体判断出这是黑灰产在使用计算机脚本大批量进入网站并进行了高频次的交互验证,随即我们开启了PoW进行防御。

下午14:00各项数据

8分钟后即15:00当我们再次查看各项数据指标时,虽然验证请求量和交互量居高不下,但通过开启PoW,验证通过量已从213,046骤降到127。再对比网站受到攻击前凌晨4:00的数据,这时的通过量已回到正常水平,通过计算我们得出PoW开启后有效阻止了约97.42%的异常流量进入,拦截效果十分显著。

下午15:00各项数据

凌晨4:00各项数据

三、高频交互成本高,低频交互零影响

极验主要采用一种 Hash 运算的方法来用作验证码的PoW工作量证明,该方法主要利用HASH运算的复杂度,通过给定的初始值,进行复杂的值递增规律,利用HASH碰撞原理,直到找到特定的碰值,可以通过调节碰撞值的长度,实现对于工作量的调节(碰撞值越长,所需要的运算量越大)。在目前的认知中,黑产除了穷举尝试,无法很快的找到满足条件的签名串。黑产在发送请求时就需要进行N次递增生成新的签名串,直到生成了符合极验服务端要求的签名串,即可完成工作量证明。

极验设计的 Hashcash 的签名串如下:

Hashcash msg: version|bits|hashfunc|datetime|id|lot_number|ext|rand

示例如下:

PoW_msg: 1|16|2021-12-14T14:15:21.167233+08:00|647f5ed2ed8acb4be36784e01556bb71|b3af6a9f47bc4e4a825715e20622a307||hijwiakgwjAIDL

PoW_sign = hashfunc(PoW_msg)

字段意思解释:

  • version: Hashcash 格式版本. 目前版本为1。

  • bits: 散列之后得到的字符串有多少bit前缀是0,代表计算的强度。0越多,代表需要计算的强度越大。

  • hashfunc: 支持的散列函数md5、sha1、sha256

  • datetime: 消息生成的时间,格式iso8601: YY-MM-DDTHH:mm:ss+08:00. (这里是使用时间字符串还是时间戳?)

  • id: 验证码服务的id

  • lot_number: 验证码服务的流水号

  • ext: 额外扩展

  • rand: 随机字符串, 使用 base-64 编码

在验证码流程中,验证码问题加载返回id、lot_number、datetime、bits、version。客户端生成随机字符串组成Hashcash msg,然后使用散列算法来来对此进行散列,直到找到符合 bits 数量前缀的 0 开头的串,即可视为完成了工作量证明。在验证码回答时,和答案一起传入PoW_msg, PoW_sign作最终校验。

对于客户端来说,需要调整随机字符串,找到 bits 位前缀为 0 的的散列串才能完成工作量证明。以bits为16来说,平均找到一个目标串需要随机生成字符串 rand 并散列二的十六次方次(65536),此过程满足几何分布。以电脑为3.6Ghz的CPU举例, 三种散列算法分别需要以下时间进行一次散列运算。

对于 md5 散列方法:

65536 * 572 ns = 37486592 ns = 37.486592 ms

因为散列算法不可逆,所以任何客户端只能进行多次尝试找到目标串。平均查找时间在数十毫秒,对正常的客户端没有太大影响,但是对于恶意的客户端端就必须多花费CPU找到相应的PoW_sign串来通过检测,这样就可以限制恶意客户端的行为。同时可以结合我们的风控体系,对异常用户提高 PoW 的强度,对正常用户降低 PoW 的强度。

四、行为验4.0给网站一个“Buff”

在与黑灰产多年博弈的过程中我们发现他们还会利用外接打码平台和秒拨IP(利用国内家用宽带拨号上网的原理,每一次断线重连就会获取一个新的IP)入侵网站、软件或是H5小程序。面对这些准备充分、资源充足的黑灰产,若是不使用应用了PoW的验证码,大概率只能束手无策。

然而PoW的好处在于它不依赖IP规则而避免误封可能性,哪怕黑灰产以上述手段破解验证码,客户端依旧需要完成由极验服务端发出的计算工作,打码平台和秒拨IP无法帮助黑灰产完成计算工作。对于黑产而言,想要抢占正常用户的业务资源,势必要发出远超正常用户的请求,堆积在黑产处的高频请求带来的就是超高的计算工作,来保障接口服务的公平性。

以下为极验目前应用了PoW的行为验4.0产品和行为验3.0的业务流程对比图,我们可以明显看出开启PoW后发生了从极验服务端返回客户端输出PoW版本、哈希方法、PoW难度;随机生成16位字符;运算源数据处理;获取签名串等7项关键步骤的变化。PoW在原有的验证码防御机制上进一步使黑灰产付出的成本高于所获利润,他们也因此放弃破解,减少攻击,从而实现了有效拦截97.42%异常流量的成绩。显然,给网站上加的这个行为验4.0“Buff”在保护业务安全中发挥了关键作用。 

行为验3.0与行为验4.0PoW业务流程对比

以电商、游戏和区块链为代表的行业最容易受到黑灰产业链中大规模薅羊毛的影响,从而造成直接且无法估量的金额损失。据不完全统计,目前已部署极验行为验4.0的用户近20万,其中包含滔博运动、TapTap、OKcoin、IBOX、金数据、微博、keep等知名企业。

行为验4.0示例

工作量证明如何拦截97.42%异常机器流量?相关推荐

  1. 06.工作量证明共识机制 pow

    什么是共识机制 区块链作为一个去中心化的分布式账本系统,然而在实际运行中,怎么解决因为去中心化后,保证整个系统能有效运行,各个节点诚实记账,在没有所谓的中心的情况下,互相不信任的个体之间就交易的合法性 ...

  2. 区块链论文8,NIPoPoWs,非交互工作量证明之证明

    本文首发于 https://zhuanlan.zhihu.com/p/93463586 本文主要内容来自论文<Non-Interactive Proofs of Proof-of-Work> ...

  3. 工作量证明 - 如何证明你的工作很卖力

    前言 什么是POW 计算机是如何实现POW POW与挖矿的关系 笔记本VS挖矿机 diffculty 前言 上一期我们讨论了哈希函数的特性,本期我们来谈一谈哈希的应用,工作量证明是哈希的典型应用,现在 ...

  4. 将工作量证明(PoW)用作信息价值信号的谬误

    发表时间:2020年6月11日 信息来源:https://coingeek.com/the-fallacy-of-proof-of-work-as-an-information-value-signa ...

  5. 区块链基础--工作量证明

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链基础(6)–工作量证明1 我认为技术和共识构建了区块链,那么就由几个问题需要去解决,第一:如果由多个打包节点,那会 ...

  6. 工作量证明的最长链原则到底说的是什么?

    前几天的一篇关于比特币的标准的文章引起了很多人的关注.在这篇文章中介绍了比特币的标准是什么以及Bitcoin Core(BCE)和Bitcoin Cash(BCH)符合哪些标准不符合哪些标准.最终经过 ...

  7. Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常

    Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并处理异常 参考文章: (1)Java继承Exception自定义异常类教程以及Javaweb中用Filter拦截并 ...

  8. 拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然

    原文:拦截PHP各种异常和错误,发生致命错误时进行报警,万事防患于未然 在日常开发中,大多数人的做法是在开发环境时开启调试模式,在产品环境关闭调试模式.在开发的时候可以查看各种错误.异常,但是在线上就 ...

  9. 链接哈希是什么_熊猫人行情:什么是工作量证明机制(POW)

    熊猫人行情:什么是工作量证明机制(POW)(视频链接) 知乎视频​ ​大家好!这里是熊猫人~ 上班打卡下班打卡,想必大家都并不陌生 总有各种方式证明你确确实实是工作过 (加油,打工人!) 区块链中也有 ...

最新文章

  1. golang hmac的sha1加密例子
  2. Android中再按一次退出实现
  3. 马斯克采访:要么死的安然,要么活得绚烂
  4. 计算机控制技术黄勤,微型计算机控制技术 教学课件 黄勤 第3章微型计算机控制系统的常用控制.ppt...
  5. URL中允许携带sessionid带来的安全隐患。
  6. Springboot基于thymeleaf的一个简单的学生管理系统
  7. vue 下载pdf文件
  8. java 定时任务 单元测试_介绍java 定时任务最简单的3种实现方法
  9. 大一计算机课如何做表格,电脑做表格的基本操作教程
  10. Python 用均匀分布验证中心极限定理
  11. 【电商】管理后台之账号管理
  12. Feign整合Sentinel实现容错
  13. “大促”背后的技术 | 当我们说促销的时候,我们在谈什么?
  14. “耳朵人艺术”敲响了中国,也叫醒了世界
  15. 消费者怎么看待 then, catch, finally
  16. 华容道(4x4)教学(最难(最后两行))
  17. 自己动手做一台linux瘦客户机
  18. java soa是什么_什么是SOA呢
  19. 统信UOS配置网络连SSH
  20. 华硕服务器 系统安装win7系统,华硕主板u盘装win7系统 华硕主板装u盘系统安装win7...

热门文章

  1. “招聘项目“总结(二)
  2. Pandas模块:表计算与数据分析
  3. 2018严峻的流量下半年,如何在裂变内容上引爆你的流量?
  4. 计算机水平考试分值,计算机等级考试评分标准
  5. hdu5115区间dp
  6. Unity 实现每隔一段时间重复执行
  7. oracle CPU 最佳型号推荐,外媒评选2020年12款最佳笔记本 CPU选择亮了
  8. Linux下查看图片中某点的像素X、Y坐标
  9. java 正方体_Java3D 正方体
  10. svn开分支合分支实例说明