5
为什么没有基于工作量证明机制的防火墙应用?
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.
昨天脑子里冒出来一个想法,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
但这种看起来复杂又先进的防火墙技术似乎并没有被哪个商业产品应用,这是为什么?
我设想的是这样的:
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
Aruforce 19 小时 34 分钟前
@xieqiqiang00 你非要这么说的话...
那就是
下发工作任务比给个 5 秒盾页面的占用的网络资源多...
除此之外
正常的请求
要改造代码支持每个请求返回数据不一致,浪费 CPU 而且降低 CDN 的性能。。
改造业务方代码或者改造浏览器 支持静态资源自动解密。。浪费客户端计算资源。。。
那就是
下发工作任务比给个 5 秒盾页面的占用的网络资源多...
除此之外
正常的请求
要改造代码支持每个请求返回数据不一致,浪费 CPU 而且降低 CDN 的性能。。
改造业务方代码或者改造浏览器 支持静态资源自动解密。。浪费客户端计算资源。。。
xieqiqiang00 19 小时 25 分钟前
@Aruforce 虽然不能接受,但成本原因是我觉得唯一的可能性,现在的攻击源可能连简单的 JS 验证都绕不过,现有的方案绰绰有余了。
但未来的话 emmm,比如说控制了物联网设备或者边缘计算设备进行 CC 攻击,攻击源有能力执行 JS 代码的话,现有的 5 秒盾可以说不堪一击吧。
但未来的话 emmm,比如说控制了物联网设备或者边缘计算设备进行 CC 攻击,攻击源有能力执行 JS 代码的话,现有的 5 秒盾可以说不堪一击吧。
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 判断失误
你就流量打到了后端网站.. 这种没办法只能后端网站硬抗。。
现在:
5 秒盾 对于正常用户来说就算是一种工作量证明,但是现在 DDOS 的人家才不管你这套 ...
一方面 CDN 判断失误的....导致 请求漏到后端网站 直接占的你的 connection 不释放...影响正常用户使用
另一方面 即使 CDN 没判断失误... CDN 抗 DDOS 的流量也是要买的而肉鸡流量不要钱的....
攻击源有能力算 js 之后:
1. CDN 判断正确 你是 DDOS
1.1 你想打到后端网站的话 你得遵从 CF 规则假装成正常请求 等 5 秒之后 CF 才会放过你 替你去后端网站拉数据过来...
这样就拉长了时间 降低了后端网站流量负载....所以不能说 5 秒盾不堪一击...
1.2. 如果 你不等 5 秒 那就是 CF 就拦截了你的请求 ...
2. CDN 判断失误
你就流量打到了后端网站.. 这种没办法只能后端网站硬抗。。
xieqiqiang00 18 小时 52 分钟前
@Aruforce
1.cloudflare 这种流量不计费,cf 像是保姆式的保护,开启之后一切都是自动完成,我最上面的那种模式理论上也可以自动嵌入已有网站
2.不断地有请求发出,等 5 秒以后抵达应用服务器,cf 的 5 秒盾只有首次请求验证,后面就放行,最后还是能达到正在的服务器上,如果用我的这种工作量证明进行验证,攻击源就要花费大量的 CPU 来计算,一台电脑同一时间发不出太多有效请求,大大降低攻击力度了
1.cloudflare 这种流量不计费,cf 像是保姆式的保护,开启之后一切都是自动完成,我最上面的那种模式理论上也可以自动嵌入已有网站
2.不断地有请求发出,等 5 秒以后抵达应用服务器,cf 的 5 秒盾只有首次请求验证,后面就放行,最后还是能达到正在的服务器上,如果用我的这种工作量证明进行验证,攻击源就要花费大量的 CPU 来计算,一台电脑同一时间发不出太多有效请求,大大降低攻击力度了
no1xsyzy 17 小时 41 分钟前
一方面体验不均衡
二来容易被人造谣说你在盗用用户 CPU 挖矿,回头你还是只能把这个技术给打入冷宫
三是不环保
@Aruforce 你好像理解错了,主题说的是由 CDN 的末端节点来作 PoW 验证,去占任务下发 connection 就是等于 CDN 完全抗下来了,源服务器一点没影响。
二来容易被人造谣说你在盗用用户 CPU 挖矿,回头你还是只能把这个技术给打入冷宫
三是不环保
@Aruforce 你好像理解错了,主题说的是由 CDN 的末端节点来作 PoW 验证,去占任务下发 connection 就是等于 CDN 完全抗下来了,源服务器一点没影响。
jim9606 13 小时 12 分钟前
类似技术在电子邮件反垃圾有应用。Web 网站搞这个的麻烦在于你不知道 PoW 难度要怎么定,PC 和手机算力差好远的。
另外 PoW 挑战和验证要占额外资源,如果 CDN 连静态 GET flooding 或者 SYN flooding 都扛不住,那 PoW 更没戏。
还有 API 网关咋办?你的客户端能接受 CDN 给你返回一个带 js 的网页?
另外 PoW 挑战和验证要占额外资源,如果 CDN 连静态 GET flooding 或者 SYN flooding 都扛不住,那 PoW 更没戏。
还有 API 网关咋办?你的客户端能接受 CDN 给你返回一个带 js 的网页?
yefee 4 小时 13 分钟前
赞同 @msg7086 的说法。
不管是短信验证码也好、拼图也好、旋转也好、点击也好也好,全都是工作量证明。而且是很典型的:电脑需要很高成本,而人脑需要极低成本的工作量证明。
不管是短信验证码也好、拼图也好、旋转也好、点击也好也好,全都是工作量证明。而且是很典型的:电脑需要很高成本,而人脑需要极低成本的工作量证明。
xieqiqiang00 3 小时 58 分钟前 via Android
@jim9606 请求资源是 html 的话就插入一段 js,然后把结果记在 cookie 里,api 接口的话的确不太好自动防护
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK