xieqiqiang00

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

  •  3
     
  •   xieqiqiang00 · Jul 1, 2021 · 4611 views
    This topic created in 1955 days ago, the information mentioned may be changed or developed.
    昨天脑子里冒出来一个想法,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

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

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

    要改造代码支持每个请求返回数据不一致,浪费 CPU 而且降低 CDN 的性能。。
    改造业务方代码或者改造浏览器 支持静态资源自动解密。。浪费客户端计算资源。。。
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 1, 2021
    13
    @Aruforce 虽然不能接受,但成本原因是我觉得唯一的可能性,现在的攻击源可能连简单的 JS 验证都绕不过,现有的方案绰绰有余了。
    但未来的话 emmm,比如说控制了物联网设备或者边缘计算设备进行 CC 攻击,攻击源有能力执行 JS 代码的话,现有的 5 秒盾可以说不堪一击吧。
    Aruforce
    Aruforce
    Jul 1, 2021
    14
    @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
    OP
    Jul 1, 2021
    15
    @Aruforce
    1.cloudflare 这种流量不计费,cf 像是保姆式的保护,开启之后一切都是自动完成,我最上面的那种模式理论上也可以自动嵌入已有网站
    2.不断地有请求发出,等 5 秒以后抵达应用服务器,cf 的 5 秒盾只有首次请求验证,后面就放行,最后还是能达到正在的服务器上,如果用我的这种工作量证明进行验证,攻击源就要花费大量的 CPU 来计算,一台电脑同一时间发不出太多有效请求,大大降低攻击力度了
    no1xsyzy
    no1xsyzy
    Jul 1, 2021
    16
    一方面体验不均衡
    二来容易被人造谣说你在盗用用户 CPU 挖矿,回头你还是只能把这个技术给打入冷宫
    三是不环保

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

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

    还有 API 网关咋办?你的客户端能接受 CDN 给你返回一个带 js 的网页?
    msg7086
    msg7086
    Jul 2, 2021
    20
    有一些 captcha 就属于 PoW 。比如著名的看图识物就是一种 PoW,这里的 Work 是人脑 Work 。
    yefee
    yefee
    Jul 2, 2021
    21
    赞同 @msg7086 的说法。
    不管是短信验证码也好、拼图也好、旋转也好、点击也好也好,全都是工作量证明。而且是很典型的:电脑需要很高成本,而人脑需要极低成本的工作量证明。
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 2, 2021 via Android
    22
    @jim9606 请求资源是 html 的话就插入一段 js,然后把结果记在 cookie 里,api 接口的话的确不太好自动防护
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 2, 2021 via Android
    23
    @msg7086 思路新奇
    那有些要半个小时才能通过的验证码就是拿人脑挖矿呢😂
    ykrank
    ykrank
    Jul 2, 2021
    24
    一开网页就 CPU 100%,风扇狂赚,你网站只会被立刻投诉挂马和挖矿
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 2, 2021 via Android
    25
    @ykrank js 是单线程的
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 2, 2021 via Android
    26
    @ykrank 而且事实告诉我们,喂用户吃屎用户也是反抗不了的
    Aoang
    Aoang
    Jul 2, 2021 via Android
    27
    PoW 只适用于验证,例如区块链是验证是不是进行计算了,传统的验证码是用来验证是不是机器人。
    对于攻击而言…它可不会管验证不验证的。

    #10 说的例子就是一个典型,别人压根本就不做俯卧撑,只是把你大厅占满。
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 2, 2021
    28
    @Aoang 对于抗攻击服务的提供商,他们的大厅可以认为是无限大的(尤其是 cloudflare 这种),服务商把他们拦住不让进业务就是他们的使命
    cwyalpha
    cwyalpha
    Jul 3, 2021
    29
    不如改成访问前必须挖个 b 挖到才让你上
    xieqiqiang00
    xieqiqiang00
    OP
    Jul 3, 2021 via Android
    30
    @cwyalpha 技术上是差不多的
    qbqbqbqb
    qbqbqbqb
    Jul 7, 2021
    31
    以前是有的。臭名昭著的挖矿脚本提供商 CoinHive (现在已经倒闭),以前就提供过一款 PoW 挖矿验证码,UI 很像 reCaptcha,但它不区分人类和机器人,而是要求客户端的浏览器给站长挖几秒钟矿才能放行,不是直接阻挡而是通过消耗爬虫的计算资源来阻止爬虫,同时站长还能获得挖矿收益。这款产品后来与恶意挖矿脚本一样被一并封杀了。
    xcstream
    xcstream
    Jul 19, 2021
    32
    其实那东西就叫验证码
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1395 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 63ms · UTC 01:10 · PVG 09:10 · LAX 17:10 · JFK 20:10
    ♥ Do have faith in what you're doing.