Profile picture
gfwrev (1) @gfwrev
, 10 tweets, 1 min read Read on Twitter
下面评价几个今天的翻墙协议。不过首先声明,今天能用的协议就是好协议;但是今天能用不等于明天能用,因此这仅限于理论讨论。
Shadowsocks首先开启了易用的用户态加密TCP代理的模范。但是很快就出了好几个密码工程的错误,这提醒我们没事不要重新发明密码协议,为何不用TLS呢?V2Ray的一部分也在多少重新发明密码协议。
Shadowsocks目前没有包长度混淆,要检测它并不需要机器学习,手动写一个代码都可以做到。原因是它运载的流量一大部分是TLS,而TLS握手有固定的包长度,SS又再额外添加了一些包头,形成了独特的包长分布,因此运载TLS流量的SS是极易检测的。当然,今天裸奔暂时还没什么问题。
ShadowsocksR在这基础上添加了包长度混淆。一个明显的反驳是,如果包长度的随机分布呈现一个明显的均匀分布,那一个简单的熵就可以检测出来。对此,不如直接从运载流量中提取分布,就没有内生熵特征的问题了。包长度混淆这个技术依然是合理的。
ShadowsocksRR之后试图实现若干“高级”的伪装协议。网络安全界早有结论:鹦鹉已死。模仿协议反而会暴露出更多可以检测的特征。例如SSR里面歪用TLS的技巧,和V2ray里面的http伪装,本身都暴露更大的特征。
在反主动指纹识别上,Shadowsocks也出过错,解决方法是尽量减少用户认证前透露的信息。但根本问题不在于能少透露多少信息,问题在于这几个代理工作在传输层上,但传输层上的常见实现及其特征是很少的。唯一彻底避免主动指纹识别的方法是用一个真的常见应用(例:nginx)作为前端。
TLS的确比自行发明密码协议好一些,但是TLS协议栈的被动指纹特征又非常明显,go有它的指纹特征,openssl等等特征都不同。Tor之前被查封就是因为使用了固定的特征,后来用了Firefox的特征依然被一款防火墙查封,原因是:没人用(该版本)的Firefox。这里唯一的办法是跟进主流浏览器的特征。
SS等等不使用TLS的根源来自性能架构:如果用户每一个TCP连接翻译成往外的一个连接,如果用TLS连接发起时间会很高。这反映出常见代理在架构设计上缺乏大规模生产环境的经验指导。SS/V2ray还在努力实现Fast Open的时候,Chrome已经把Fast Open的代码删除了,因为现实世界这个功能不工作。
高性能TLS的方法是连接池复用,长连接,预连接,多路复用,最终TLS握手的成本被均摊掉了。见Chrome网络栈的经验 web.archive.org/web/2016030500…
取代TLS/HTTP/2的下一代协议QUIC看目前的进度希望在一两年内能完成标准化。Chrome早就内置了QUIC代理,但现在市面上还没有公开的QUIC代理服务器,Caddy有望,不过它暂时还不工作。至于KCP也号称是UDP上的高性能协议,但它连协议定义都没有,于是无法评价。
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to gfwrev (1)
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!