A few ideas for your Proxy 2.0

 比特客栈的文艺复兴 

有鉴于Proxy将成为贫苦大众(特指“没能力购买网络服务”的网民)今后数年的必备用品,Proxy 1.0的原始框架已无法承载这种压力。最近不少Proxy 2.0的设计蓝图浮出水面,本人亦有一些考量,这里简单小结一下。

Security or Obscurity ?

Build your dam for reasonable tsunami, not 2012. Lay your tarmac for reasonable vehicles, not Transformers.

2.0的其中一种思维是增强Proxy Security,强制HTTPS协议是首选的方式。我觉得还可以换个角度看,很多时候用户需要的并不是安全性,或者说使用Proxy的网民大多数并不清 楚如何增强安全性。这时我们需要的是增加Obscurity,当然不是指降低用户界面的易用性,而是增加生成HTML代码的委婉性

搞过计算机安全的人都知道Security through Obscurity是没戏的,那为什么放弃Security选择Obscurity呢?理由简单,基于使用Proxy的初衷。若我们希望完全防止MITM, 那Security是必须的;但“窃听者是全能的”的假设是否适合一个Public Proxy?我认为值得商榷。如今用户期待的是“能正常浏览网页”,而不是“安全匿名的浏览网页”。再者,安全匿名不仅必须加密通信,还需要用户完全信任 服务器运营者才行,验证后者比技术上保证前者更加困难。

降低安全假设的好处在于它能大幅度延展Proxy的设计选择。说得很玄乎,实际操作很简单。举个例:关键词破坏是国内网站常用的手段,为什么我们不能挪为己用?当然,实际运行时我们可以稍微修改一下“破坏”的方式。

正太什么的最讨厌了,萝莉万岁!

以上句子在客户端上看没有任何问题,但对于机器来说,它是——

<p>正太<span style=”display:none;”>什么的最讨厌了,萝莉</span>万岁!</p>

如此一来,正太控的内容被正常浏览了,而机器还以为我们是不懂网页标准的萝莉控。这种设计有数条好处——

  • 这种模式可以有无数种变形,大幅度增加了Keyword Matching的难度。
  • 既然有机器喜欢读我们的HTML,那就让他们去读好了,避免额外加密
  • 它比客户端解RSA靠谱。运行速度和浏览体验都更胜一筹。

牺牲复制粘贴(插入文字也会被复制)换来的是运行效率与更新速度。Proxy服务器用display:none和eval等方式处理文字与链接 (Pattern Matching)比加密整个页面便宜得多。更可以在站外维护一个Keyword List,允许用户提交反馈,定时更新,照顾最新的指示。

A Hell for Computation Overlord.

智能系统最喜欢的东西:可预测的环境。不要给它们任何机会,尽可能破坏所有既定的网络规定。假如对方熟悉Base64与ROT13,我们就把URL换成用户可自定义的同样快速的Substitution Cipher,把随机的Client Key藏在Cookie里。若Client Key对不上,相同的请求服务器只会返回错误。我们甚至可以进一步混合时间限制,以免Client Key被重复利用。

破解Substitution Cipher需要26!个单位时间,已经大幅度超出智能系统可承受的范围。若尝试截取Client Key,则陷入Uncertainty的游击战。Obscurity再次立功。

Where is my invisible coat ?

等你成功穿越Overlord,它的手下就要来找你了,于是谈到Proxy 2.0真正的瓶颈所在——假如IP或域名下水了,Proxy的命运也到此为止。在IPv6和TLD大开放的时代(又称“网络廉价化”的时代)还没到来之前,这些东西都是非常珍贵的资源。

为此,所谓Proxy Chain需要与时代并进,履行Behavioral Separation,设置一个Reverse Proxy在Web前端,将后端服务器处理过的内容传送至客户端。不少简单的Proxy都可以改造为Reverse Proxy,放置在可爱的免费空间上,即便Reverse Proxy不幸意外,主服务器还是安全的。

与此同时,一个只处理数据的服务器也比一个拥有华丽前端的服务器隐蔽,降低被当成炮灰的风险。

回应小标题的提问——你不用的时候往invisible coat上贴个标签不就好了。别让问题卡在找invisible coat,将它转变成找标签的问题。Reverse Proxy就是这个标签,水下的冰山却是invisible coat。

Suggestions ?

除此之外,还有什么旁门左道可以使用?欢迎分享。

Secrecy is over-rated, when Google is your proxy.

更新:WordPress的Feed把span标签去掉了,订阅器里无法看到测试效果,请直接访问文章页面。

没有评论: