Sunday, May 21, 2017

协议auth_chain_a是啥

最近SSR弄了一个新协议auth_chain_a,很多人还不知道这个是什么鬼,这里我来简单介绍一下。

介绍分为两部分,给普通用户的介绍,及给开发者的介绍。多数人只要关注第一部分的介绍就好了。

首先,是给普通用户的介绍,因为这个协议和auth_aes128_md5(auth_aes128_sha1被代表了)有点像,我们就直接用这个协议做对比。不同点有:

1 统计客户端数量是实时的。这意味着如果服务端限制为只能1个客户端使用,那么你只要把A客户端关闭,B客户端就可以立即连上,而auth_aes128_md5协议需要等待3分钟。

2 UDP部分也带了长度混淆。避免了经常使用UDP查询DNS时,数据包大小高度集中的问题。但缺点是导致UDP转发效率降低。

3 协议自身就会在数据部分做RC4加密。不同用户不同的连接使用的加密密钥都不一样,所以可以安全地使用none不需要额外的加密。 而在auth_aes128_md5里面,使用单端口多用户时都是使用公共的加密方式,会导致如果有人要刻意捕捉数据,那么是可以用公共的密钥解密的(但之后还依然需要去猜测每个数据包里有效数据的起始位置,因为偏移量是用用户自己的KEY加密的,所以即使不加密很多人用auth_aes128_md5也是用得好好的)。而在auth_chain_a协议里,为什么叫做chain呢,因为后一块数据的处理是依赖它上一块的哈希信息,每块数据里的中间是加密过的有效数据,两边是混淆数据,其长度基于上一块数据的哈希信息的计算。于是尽管使用的加密算法是RC4,但安全性也比RC4本身要高(因为最终会依赖于破解AES-128以及MD5来确定有效数据的位置)。具体见第二部分。

其它优点:这个设计用于预防恶意客户端。例如如果在auth_aes128_md5协议下,如果有人刻意修改客户端实现,让混淆用的随机长度固定为一个常数,这样会导致很容易被统计分析,而部分不明真相的用户使用了修改过的客户端,这给这些用户带来了风险。而在auth_chain_a下,这个长度是协议算法决定的,没法修改。另外一点就是这个协议的实现为低延时设计,使用TCP时往往会得到比其它协议有稍低的延迟,基于TCP的游戏下表现理论上会稍好。但大流量下载时CPU占用可能会比其它协议稍高。

但这个协议的缺点也明显,主要是两点,第一是不能自己改加密方式,不过这点亦可算作优点吧,避免选择困难,乖乖用none就好了。第二是UDP效率问题,不过如果只是查询DNS那肯定没有问题的。要是打游戏或者P2P之类的,有可能会遇到速度瓶颈,遇到的话你就切换为auth_aes128_md5甚至origin玩吧(但要是说速度远远不及其它协议那是不可能的),因为这个协议主要在TCP上花了功夫,UDP的问题还没解决好,而且我也说过这个是实验性的协议。

面向普通用户的介绍就到这里。接下来是面向开发者的介绍,说明文档:
https://github.com/breakwa11/shadowsocks-rss/blob/master/doc/auth_chain_a.md

好了,面向开发者的介绍就说明到这里了(滑稽),有什么疑问就留言吧。

作者 twitter @breakwa11

30 comments:

  1. Anonymous21/5/17 19:49

    https://github.com/breakwa11/shadowsocks-rss/blob/master/doc/auth_chain_a.md

    ReplyDelete
  2. 正在使用确实快了

    ReplyDelete
  3. This comment has been removed by the author.

    ReplyDelete
  4. 有没有SSR订阅地址的教程,我想自己做个更新节点的订阅地址。

    ReplyDelete
  5. Anonymous13/6/17 12:58

    听说rc4的计算量比chacha20大,我想咨询一下有没有改进。

    ReplyDelete
    Replies
    1. Anonymous13/6/17 13:11

      算了言都发了,我愿意捐助比特币。求比特币地址

      Delete
    2. 请通过twitter/telegram/email联系我

      Delete
  6. Anonymous30/6/17 23:23

    你好,我想问下,UDP over TCP,是否会增加UDP连接的延迟?
    是这样的,服务器开启了UDP转发,客户端用原生UDP玩游戏延迟正常,在60ms左右,可是一旦打开了UDP over TCP,游戏延迟瞬间去到了900+ms,不知道为什么会增加这么大的延迟,因为我朋友的医院网络,貌似是白名单端口,只能网页QQ之类的,连ICMP也封了,所以搭的SSR都是用的80端口才能正常访问其他服务,但是游戏类遇到用UDP的,都访问失败了,所以打算用UDP over TCP,连通是连通,不知道为何延迟会这么巨大,两台电脑不同地区,打开了这个选项就会延迟飙升,请问是什么问题导致的呢?谢谢

    ReplyDelete
    Replies
    1. Anonymous30/6/17 23:31

      啊对了,协议用的原版,origin,混淆是plain,加密是rc4-md5,不知道这些会不会影响UDP over TCP的转换效率还是怎么的

      Delete
  7. Anonymous5/7/17 13:53

    Thank you for being a beacon in the darkness!

    ReplyDelete
  8. Anonymous19/7/17 01:38

    默默的用了那么久,却不不知道该说点什么,所以还是....谢谢啦,注意安全 ;-)

    ReplyDelete
  9. 谢谢你开发这么好的软件,继续努力 感谢

    ReplyDelete
  10. 谢谢你开发这么好的软件,继续努力 感谢

    ReplyDelete
  11. 感谢你的努力 请注意安全

    ReplyDelete
  12. 喝了点酒,忘了要说什么了。
    有了你-我才有安全感。

    ReplyDelete
  13. Anonymous21/7/17 15:42

    破娃酱我爱你!

    ReplyDelete
  14. 谢谢你!请务必注意安全!

    ReplyDelete
  15. Anonymous24/7/17 21:09

    大小姐务必注意安全!么么哒

    ReplyDelete
  16. efbbbf最近不太平,技术的事还是别折腾,找个男朋友算了。
    说句不好听的
    人家玩黑产的把技术拿来变现,锦衣玉食;
    你技术绝不逊色于玩黑产的,不知在财力上你是否能放肆买买买……但是最近这几天你折腾得不累么;
    玩黑产的面对的虽然是赤裸裸的金钱关系,但是最起码没人跟你撕逼说怪话让你受气;
    现在撸ssr看起来几乎是纯公益性质,但是这几天的事闹得呜呼哀哉,应该也不是你所希望的,吧?
    虽说中国大陆打击这方面的力度有所加强,但是……还是会有机会的。

    ReplyDelete
  17. 最近形势严峻,还有你这样的优秀开发者在不屈不挠的带领我们抵抗,有点感动……有捐助渠道吗?

    ReplyDelete
  18. 告诉破娃,我支持她。

    ReplyDelete
  19. 感谢破娃的努力,大小姐务必注意安全!QWQ

    ReplyDelete
  20. 破娃酱,你还好吗?SSR的GitHub项目怎么没有了?最近形势严峻,务必注意安全!

    ReplyDelete
  21. 谢谢你开发这么好的软件

    ReplyDelete
  22. Anonymous7/8/17 13:32

    小姐姐求撩prprprpr

    ReplyDelete
  23. 小姐姐 不要停更啊啊啊啊

    ReplyDelete