关于BREACH/CRIME的一些思考

最近很火的一个问题就是暴破TLS/SSL的 BREACH 攻击。我觉得有一些解决办法:

  1. hack一种兼容gzip,但是能对内容进行adaptive compression的技术。比如把用户输入不纳入Huffman coding范围,只压缩页面的其他部分。这样无论你在user input 做什么花样也不能影响最终conten length

  2. csrf上做文章。由于大多数场景下,web framework是需要保证 csrf 是 per session的。目前基本都是服务器生成什么csrf,客户端下一次就需要传入一模一样的。我们可以发明一种聪明的技术,给客户端的csrf加入一些per request的变长noise,需要通过特定算法,最简单的比如XOR,才能还原csrf。其中这个变长的noise不是随机生成,因为随机生成可能被概率统计出noise level然后过滤掉,而是根据用户输入用一种变长散列生成的。比如用户输入为空,csrf为e0bc6e08a2fda853eef,用户输入为 user@gmail.com,csrf为 b594e902c7fe6b1748d13aefaf63a ,但是实际服务器端的csrf都一直是 04b58236f5 。

目前业界的mitigation我觉得比较搓:

  1. 禁用gzip。这个没意思了。
  2. 给html添加一些随机padding垃圾数据。这个不是等于禁用了gzip么。浪费空间浪费传输
  3. 在http头做文章。因为gzip只影响http body。这个缺点是需要js。兼容性不好
  4. 禁止频繁请求。这个最直接。哈哈。

Comments