29 May, 2020
本次分享的目的让大家从本质上了解这三个软件的区别
cloud@txthinking.com https://github.com/txthinking https://www.txthinking.com
当你要向 HTTP Server 发起请求时, 大概的传输的内容是这样的:
GET / HTTP/1.1 Host: ... ...
掌管者看到你传输的数据, 便知道你正在访问一个网站
当你要向 DNS Server 发起请求时, 大概的传输内容的 16 进制是这样的:
0001010000010000000000000a74787468696e6b696e6703636f6d0000010001
掌管者看到你传输的数据, 便知道你正在查询一个域名的 IP. 因为这块数据每段都有其特定含义
没有万能, 因为水管掌管者不是你
伪装, 混淆
预设一个密钥, 然后用此密钥结合加密算法对数据进行加密,
Shadowsocks 有很多加密算法, 这里选择一个加密算法, 称其为 X, 传输的数据大概如下:
| IV | [X算法加密]加密数据 | 或 | [X算法加密]数据包长度 | [X算法加密]数据包 | ...
部分加密算法已经可以被概率性检测, 参见下面这个库: https://github.com/madeye/sssniff
预设一个 UUID, 也可以理解为密钥, 然后用此密钥结合加密算法对数据进行加密, 传输的数据大概如下:
| [Hash]认证信息 | [AES-128-CFB算法加密]指令部分 | [XOR加密]数据包长度 | [X算法加密]数据包 | ...
数据包的加密算法 X 可以是: AES-128-CFB, AES-128-GCM, ChaCha20-Poly1305
预设一个密钥, 然后用此密钥结合 AES-256-GCM 加密算法对数据进行加密, 传输的数据大概如下:
| [AES-256-GCM算法加密]数据包长度 | [AES-256-GCM算法加密]数据包 | ...
Brook 的加密算法固定为目前主流相对较强的 AES-256-GCM
无特征的本质:
这里只简单介绍了三款软件的主流协议对数据的处理, 并未展开其他功能, Brook 的其他功能会在后期逐一介绍
(提示: Youtube 频道有此幻灯片更详细的视频介绍)