为什么没有基于工作量证明机制的防火墙应用?

2021-07-01 11:19:29 +08:00
 xieqiqiang00
昨天脑子里冒出来一个想法,Cloudflare 有一个 5 秒盾防火墙,我想着能不能增加他的复杂度或者安全性。
我设想的是这样的:
1.浏览器向服务器发起请求,服务器生成一个一次性私钥,然后用私钥加密一段文本,把加密后的内容发送给浏览器
2.浏览器收到密文后进行暴力破解,把破解后的私钥再发回服务器
3.服务器验证通过,生成新的密钥,加密文本后把加密后的密文和内容一起发回浏览器,
4.浏览器展示内容,并同时破解新的密文,在下次请求时发回服务器
...循环

后面和朋友讨论了一下之后发现这个和比特币的 PoW 机制非常像,并且我搜索了一下,用这种工作量证明来做防火墙居然就写在维基百科的头部:
“工作量证明( Proof-of-Work,PoW )是一种对应服务与资源滥用、或是拒绝服务攻击的经济对策。 一般要求用户进行一些耗时适当的复杂运算,并且答案能被服务方快速验算,以此耗用的时间、设备与能源做为担保成本,以确保服务与资源是被真正的需求所使用。”
https://zh.wikipedia.org/wiki/%E5%B7%A5%E4%BD%9C%E9%87%8F%E8%AD%89%E6%98%8E

但这种看起来复杂又先进的防火墙技术似乎并没有被哪个商业产品应用,这是为什么?
3000 次点击
所在节点    信息安全
32 条回复
SaltyLeo
2021-07-01 12:03:02 +08:00
原因大概是用户体验差,各端的性能不一样,如果运行一样的代码,pc 可能 200ms,移动端可能 1000ms 甚至超时。
DeWjjj
2021-07-01 13:31:16 +08:00
浏览器暴力破解就离谱了。。。
那他同时发起访问你还是得崩。
xieqiqiang00
2021-07-01 13:51:09 +08:00
@SaltyLeo 只要访问者付出的算力大于服务器的算力就可以防滥用 /攻击了,也不用算很久的吧。
xieqiqiang00
2021-07-01 13:51:47 +08:00
@DeWjjj 防火墙层面的,不碰到业务逻辑,服务器的工作量应该都很小。
xieqiqiang00
2021-07-01 13:53:15 +08:00
@SaltyLeo 单说时间的话,Cloudflare 的五秒盾的等待时间经常都超过 5 秒,但也铺开并大面积应用了
Aruforce
2021-07-01 14:35:32 +08:00
只攻击你工作任务下发的接口就行啊。。。也就是你的第一步
反正占着你的 connection 不释放....
你拿我怎么办?
xieqiqiang00
2021-07-01 15:47:45 +08:00
@Aruforce 我针对的是 CF5 秒盾的改进想法,cf 本来就是抗攻击的,你又不可能打死 cf,cf 保护的是后面的网站和业务不受影响
FS1P7dJz
2021-07-01 15:59:25 +08:00
在第一个阶段用大量肉鸡冲垮你就行了
谁说我非要正常访问你了?

攻击防御永远都是资源力量的比拼
套 CF 只是借用 CF 强大的力量而已
xieqiqiang00
2021-07-01 16:15:19 +08:00
@FS1P7dJz 我问的就是 CF 这种防御商为什么都没有用 PoW 防火墙
chenluo0429
2021-07-01 16:44:01 +08:00
简直就像银行怕排队的人太多,要求大家一起在大厅做俯卧撑,先做完 1000 个才能办理业务?
xieqiqiang00
2021-07-01 17:22:31 +08:00
@chenluo0429 类似吧,如果你真的要攻击的话,得伤敌 800 自损 1000 或者更多
Aruforce
2021-07-01 17:29:27 +08:00
@xieqiqiang00 你非要这么说的话...
那就是
下发工作任务比给个 5 秒盾页面的占用的网络资源多...
除此之外
正常的请求

要改造代码支持每个请求返回数据不一致,浪费 CPU 而且降低 CDN 的性能。。
改造业务方代码或者改造浏览器 支持静态资源自动解密。。浪费客户端计算资源。。。
xieqiqiang00
2021-07-01 17:38:44 +08:00
@Aruforce 虽然不能接受,但成本原因是我觉得唯一的可能性,现在的攻击源可能连简单的 JS 验证都绕不过,现有的方案绰绰有余了。
但未来的话 emmm,比如说控制了物联网设备或者边缘计算设备进行 CC 攻击,攻击源有能力执行 JS 代码的话,现有的 5 秒盾可以说不堪一击吧。
Aruforce
2021-07-01 18:02:48 +08:00
@xieqiqiang00
现在:
5 秒盾 对于正常用户来说就算是一种工作量证明,但是现在 DDOS 的人家才不管你这套 ...
一方面 CDN 判断失误的....导致 请求漏到后端网站 直接占的你的 connection 不释放...影响正常用户使用
另一方面 即使 CDN 没判断失误... CDN 抗 DDOS 的流量也是要买的而肉鸡流量不要钱的....


攻击源有能力算 js 之后:
1. CDN 判断正确 你是 DDOS
1.1 你想打到后端网站的话 你得遵从 CF 规则假装成正常请求 等 5 秒之后 CF 才会放过你 替你去后端网站拉数据过来...
这样就拉长了时间 降低了后端网站流量负载....所以不能说 5 秒盾不堪一击...
1.2. 如果 你不等 5 秒 那就是 CF 就拦截了你的请求 ...
2. CDN 判断失误
你就流量打到了后端网站.. 这种没办法只能后端网站硬抗。。
xieqiqiang00
2021-07-01 18:11:20 +08:00
@Aruforce
1.cloudflare 这种流量不计费,cf 像是保姆式的保护,开启之后一切都是自动完成,我最上面的那种模式理论上也可以自动嵌入已有网站
2.不断地有请求发出,等 5 秒以后抵达应用服务器,cf 的 5 秒盾只有首次请求验证,后面就放行,最后还是能达到正在的服务器上,如果用我的这种工作量证明进行验证,攻击源就要花费大量的 CPU 来计算,一台电脑同一时间发不出太多有效请求,大大降低攻击力度了
no1xsyzy
2021-07-01 19:22:37 +08:00
一方面体验不均衡
二来容易被人造谣说你在盗用用户 CPU 挖矿,回头你还是只能把这个技术给打入冷宫
三是不环保

@Aruforce 你好像理解错了,主题说的是由 CDN 的末端节点来作 PoW 验证,去占任务下发 connection 就是等于 CDN 完全抗下来了,源服务器一点没影响。
wdlth
2021-07-01 22:22:14 +08:00
有吧,我见过用 Canvas 指纹做的。
ihipop
2021-07-01 22:59:42 +08:00
@chenluo0429 然后大家都进大厅不做俯卧撑,把大厅沾满。。。
jim9606
2021-07-01 23:51:50 +08:00
类似技术在电子邮件反垃圾有应用。Web 网站搞这个的麻烦在于你不知道 PoW 难度要怎么定,PC 和手机算力差好远的。

另外 PoW 挑战和验证要占额外资源,如果 CDN 连静态 GET flooding 或者 SYN flooding 都扛不住,那 PoW 更没戏。

还有 API 网关咋办?你的客户端能接受 CDN 给你返回一个带 js 的网页?
msg7086
2021-07-02 04:43:32 +08:00
有一些 captcha 就属于 PoW 。比如著名的看图识物就是一种 PoW,这里的 Work 是人脑 Work 。

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

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

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

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

© 2021 V2EX