5

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

 3 years ago
source link: https://www.v2ex.com/t/786865
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  信息安全

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

  xieqiqiang00 · 1 天前 · 1112 次点击
昨天脑子里冒出来一个想法,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

但这种看起来复杂又先进的防火墙技术似乎并没有被哪个商业产品应用,这是为什么?
26 条回复    2021-07-02 11:56:15 +08:00

SaltyLeo

SaltyLeo   1 天前 via iPhone

原因大概是用户体验差,各端的性能不一样,如果运行一样的代码,pc 可能 200ms,移动端可能 1000ms 甚至超时。

DeWjjj

DeWjjj   23 小时 32 分钟前 via Android

浏览器暴力破解就离谱了。。。
那他同时发起访问你还是得崩。

xieqiqiang00

xieqiqiang00   23 小时 12 分钟前

@SaltyLeo 只要访问者付出的算力大于服务器的算力就可以防滥用 /攻击了,也不用算很久的吧。

xieqiqiang00

xieqiqiang00   23 小时 12 分钟前

@DeWjjj 防火墙层面的,不碰到业务逻辑,服务器的工作量应该都很小。

xieqiqiang00

xieqiqiang00   23 小时 10 分钟前

@SaltyLeo 单说时间的话,Cloudflare 的五秒盾的等待时间经常都超过 5 秒,但也铺开并大面积应用了

Aruforce

Aruforce   22 小时 28 分钟前   ❤️ 1

只攻击你工作任务下发的接口就行啊。。。也就是你的第一步
反正占着你的 connection 不释放....
你拿我怎么办?

xieqiqiang00

xieqiqiang00   21 小时 16 分钟前

@Aruforce 我针对的是 CF5 秒盾的改进想法,cf 本来就是抗攻击的,你又不可能打死 cf,cf 保护的是后面的网站和业务不受影响

FS1P7dJz

FS1P7dJz   21 小时 4 分钟前

在第一个阶段用大量肉鸡冲垮你就行了
谁说我非要正常访问你了?

攻击防御永远都是资源力量的比拼
套 CF 只是借用 CF 强大的力量而已

xieqiqiang00

xieqiqiang00   20 小时 48 分钟前

@FS1P7dJz 我问的就是 CF 这种防御商为什么都没有用 PoW 防火墙

chenluo0429

chenluo0429   20 小时 20 分钟前

简直就像银行怕排队的人太多,要求大家一起在大厅做俯卧撑,先做完 1000 个才能办理业务?

xieqiqiang00

xieqiqiang00   19 小时 41 分钟前

@chenluo0429 类似吧,如果你真的要攻击的话,得伤敌 800 自损 1000 或者更多

Aruforce

Aruforce   19 小时 34 分钟前

@xieqiqiang00 你非要这么说的话...
那就是
下发工作任务比给个 5 秒盾页面的占用的网络资源多...
除此之外
正常的请求

要改造代码支持每个请求返回数据不一致,浪费 CPU 而且降低 CDN 的性能。。
改造业务方代码或者改造浏览器 支持静态资源自动解密。。浪费客户端计算资源。。。

xieqiqiang00

xieqiqiang00   19 小时 25 分钟前

@Aruforce 虽然不能接受,但成本原因是我觉得唯一的可能性,现在的攻击源可能连简单的 JS 验证都绕不过,现有的方案绰绰有余了。
但未来的话 emmm,比如说控制了物联网设备或者边缘计算设备进行 CC 攻击,攻击源有能力执行 JS 代码的话,现有的 5 秒盾可以说不堪一击吧。

Aruforce

Aruforce   19 小时 1 分钟前

@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

xieqiqiang00   18 小时 52 分钟前

@Aruforce
1.cloudflare 这种流量不计费,cf 像是保姆式的保护,开启之后一切都是自动完成,我最上面的那种模式理论上也可以自动嵌入已有网站
2.不断地有请求发出,等 5 秒以后抵达应用服务器,cf 的 5 秒盾只有首次请求验证,后面就放行,最后还是能达到正在的服务器上,如果用我的这种工作量证明进行验证,攻击源就要花费大量的 CPU 来计算,一台电脑同一时间发不出太多有效请求,大大降低攻击力度了

no1xsyzy

no1xsyzy   17 小时 41 分钟前

一方面体验不均衡
二来容易被人造谣说你在盗用用户 CPU 挖矿,回头你还是只能把这个技术给打入冷宫
三是不环保

@Aruforce 你好像理解错了,主题说的是由 CDN 的末端节点来作 PoW 验证,去占任务下发 connection 就是等于 CDN 完全抗下来了,源服务器一点没影响。

wdlth

wdlth   14 小时 41 分钟前

有吧,我见过用 Canvas 指纹做的。

ihipop

ihipop   14 小时 4 分钟前 via Android

@chenluo0429 然后大家都进大厅不做俯卧撑,把大厅沾满。。。

jim9606

jim9606   13 小时 12 分钟前

类似技术在电子邮件反垃圾有应用。Web 网站搞这个的麻烦在于你不知道 PoW 难度要怎么定,PC 和手机算力差好远的。

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

还有 API 网关咋办?你的客户端能接受 CDN 给你返回一个带 js 的网页?

msg7086

msg7086   8 小时 20 分钟前

有一些 captcha 就属于 PoW 。比如著名的看图识物就是一种 PoW,这里的 Work 是人脑 Work 。

yefee

yefee   4 小时 13 分钟前

赞同 @msg7086 的说法。
不管是短信验证码也好、拼图也好、旋转也好、点击也好也好,全都是工作量证明。而且是很典型的:电脑需要很高成本,而人脑需要极低成本的工作量证明。

xieqiqiang00

xieqiqiang00   3 小时 58 分钟前 via Android

@jim9606 请求资源是 html 的话就插入一段 js,然后把结果记在 cookie 里,api 接口的话的确不太好自动防护

xieqiqiang00

xieqiqiang00   3 小时 53 分钟前 via Android

@msg7086 思路新奇
那有些要半个小时才能通过的验证码就是拿人脑挖矿呢😂

ykrank

ykrank   2 小时 32 分钟前

一开网页就 CPU 100%,风扇狂赚,你网站只会被立刻投诉挂马和挖矿

xieqiqiang00

xieqiqiang00   1 小时 10 分钟前 via Android

@ykrank js 是单线程的

xieqiqiang00

xieqiqiang00   1 小时 7 分钟前 via Android

@ykrank 而且事实告诉我们,喂用户吃屎用户也是反抗不了的

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK