wCaptcha, 一个基于工作量证明的 CAPTCHA

2023-01-20 14:39:06 +08:00
 greensea

CAPTCHA 就是所谓的验证码,不过这个基于工作量证明的验证码可以不要求用户进行操作,在后台就可以默默地完成。

这个验证码的核心在于,用工作量证明的方式取代了要求用户进行一些操作,来证明客户端是一个人类。不过这个验证码其实并不能区分客户端是不是人类,它的主要目的是防止大量的恶意请求,比如爆破用户名密码、爬虫之类。

对于一个普通用户来说,花几秒钟的时间做一个计算,然后再提交表单,这是完全可以接受的,可是对于爬虫或者登录接口爆破之类的机器人来说,如果每发一个请求就要花两三秒的 CPU 时间,这就完全不可接受了。

工作量证明算法使用了不可并行加速的算法,也就是说,显卡加速是废的,多核计算也是废的(除非同时对一个接口发送多个请求,但这样的请求是非正常的,很容易过滤掉)。

网站在这里: https://wcaptcha.pingflash.com 如果担心数据安全,可以直接用源码私有化部署。

至于算法细节之类的东西,都可以在网站上找到,我就不在这里废话了。

5825 次点击
所在节点    分享创造
46 条回复
iqoo
2023-01-22 15:01:50 +08:00
@greensea PoW 有很多方案,直接用浏览器原生的 Crypto API 也可以。
devliu1
2023-01-23 21:54:44 +08:00
https://github.com/mCaptcha/mCaptcha 另一个开源的 PoW Captcha 方案
greensea
2023-01-24 11:05:42 +08:00
@iqoo 新年好。我看了一下 Crypto API ,它提供的主要是密码学相关的高级函数,而这个验证码的计算只是简单的乘法取模,没法使用 Crypto API 进行加速。
PoW 是有很多方案,但是这里需要选择一个可以抵抗并行加速的方案,否则攻击者用显卡就可以轻松绕过了。

@devliu1 新年快乐。实际上我就是受 mCaptcha 的启发,wCaptcha 和它的思路是一样的。区别在于,mCaptcha 的方案是普通的连续哈希,这就给显卡加速留下了可乘之机。
不知道它现在有没有更新算法,现在 mCaptcha 的网站似乎挂了,回头我再去看看它有没有更新。
Thiece
2023-01-28 03:52:29 +08:00
@greensea
「工作量证明算法使用了不可并行加速的算法」是指 SIMD 或者 MIMD 吗?
greensea
2023-01-28 14:13:19 +08:00
@Thiece 不是,具体算法就是计算连续平方取模,因为后面的计算依赖前面的结果,所以没法并行加速。类似连续哈希
RadishWind
2023-02-20 16:07:28 +08:00
赞, 最近在学习 web3, 发现之前 coinhive 的验证码用的好像就是类似的技术 刚好找到了楼主的帖子

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/910042

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX