一、北理工破解V2Ray的专利之乱
先说说一年前北京理工大学破解V2Ray的专利一事。2019年3月,北理工的三人(二位教师一位在读硕士生)申请了“基于长短期记忆网络的 V2Ray 流量识别方法”专利,2019年7月公布,发布一种识别V2Ray的特征信号的方法,一时引起一阵小小的骚动。这个事要真成了,中共邪党可高兴了,可是大家也没见到它表现出高兴来,倒是网友担心V2Ray步ss后尘而多了一份担忧。
美博此文讨论这一点就是要让网友放心,一是从道理上来讲,魔高一尺、道高一丈,这才是真理。相生相克,有墙,就一定有破墙的技术,这就是人世间的理。二是,中共还没有办法破解和识别V2Ray的VMess协议,至今如此,那个专利毫无技术水准(下面会分析),以后中共能不能破解VMess协议这也很难说,说不定在破解它的技术出现之前,GFW就随着中共一起下地狱了。退一万步说,即使是中共能找到V2Ray某些特称,也一定会有v3、v4……等等的其他翻墙技术出现来克制中共GFW,邪不胜正,这在封锁网络与翻墙的现实中表现的淋漓尽致,网是封不住的,中共只是领着一帮小鬼如方滨兴、江绵恒等在瞎折腾,耗费民脂民膏,它也从来没有封住过网络。
该专利申请原文在网上也可查到,有兴趣的网友可以去查看,当然是不值得一看的:https://files.catbox.moe/vmzj04.pdf
言归正传看看该专利的专业水准。专利内容是使用LSTM识别V2Ray流量,这不是具有新意或者创造力的技术,从专利本身来看,其权利要求(专利原文):
1.基于长短期记忆网络的V2Ray流量识别方法,其特征在于所述方法包括如下步骤: 步骤1,从交换机设备中获得数据链路层数据包并标注为V2Ray流量或其他流量; 步骤2,去除数据中不包含有用信息和冗余的数据包,去除TCP三次握手数据包,去除DNS域名解析数据包,保留每次通信的前16个数据包,并将这16个数据包作为数据集中的一条数据; 步骤3,对数据链路层数据包进行处理,去除数据链路层报头获得网络层数据包,对UDP报头进行填充使其长度与TCP报头保持一致,去除网络层数据报头中的表示IP地址和端口的信息,对数据包长度进行调整,使其保持一致; 步骤4,使用这些预处理过的数据训练长短期记忆网络。
从专业角度来评审,这个专利基本上就是来吓唬非专业人员的,了解中共高校运作的人就会知道,这样的专利多半是滥竽充数,一般是用来抢站研究位置并获取研究经费的手段、或者评职称需要而已,其技术水准离真正的实际应用和破解或识别还差十万八千里都不止。
既然他们申请了专利,并经过网络转载发酵,当然也引来众多专业人员的评审。我们简单摘录几条。
约翰霍普金斯大学计算机科学李博士说: 步骤1,2和3基本上是标准操作,该专业本科生就知道,没什么可以解释的。步骤四,就是把处理过的包扔进长短期记忆网络里训练,然后用模型匹配数据包。唯一的创新点可能就是V2Ray的前16个包比较有特征吧,具体什么特征还不知道。遇事不决机器学习呗。这个东西不就是把抓来的数据包修修剪剪,不做任何处理,不考虑后续数据包各种加密,然后扔到模型里训练么??坏人打不死,好人误伤一大片吧。。而且就算真的有效果,V2Ray稍微修改下特征,估计整个方法都能废了吧。
Ivlianvs对此专利的分析: 首先,技术错误: 步骤3里提到获得网络层数据包,然而后面跟的是UDP和TCP头。然而UDP和TCP头属于传输层(OSI模型第4层)而不是网络层(3层)。 其次,授权风险: A) 缺少必要技术特征:该方法是一个流量识别方法,然而最后一步只是训练记忆网络,没有识别任何流量,因此不能解决技术问题。 B)公开不充分:说明书只给了训练方法,没有详细说明如何识别流量。 第三,商业价值: A)保护范围过小,易于规避: 最明显的是“保留每次通信的前16个数据包”,任何潜在侵权者可以修改为16之外的任何数量就可以规避专利。 B)只有方法权利要求,只能针对使用者。 C)难以搜集侵权证据: 除非得到源代码,否则无法证明潜在侵权者使用了该专利。D)缺少直接侵权者:流量识别方法的使用者和模型的训练者可能不是同一主体,因此没有人直接侵权。 结论:总之:垃圾专利
V2Ray官方网站的评论:
# 关于某专利 首先,专利并不会保证方法的有效性,专利仅仅是保护方法本身。 其次,该专利的描述存在一些问题: 1. 专利中提到:“V2ray服务端与客户端进行每次通信时需要预先交换密钥,因而每次通信较为靠前的数据包具有显著特征”。 实际上,VMess 协议并不存在“预先交换密钥”这个步骤。 即使将 V2Ray 与需要进行“预先交换密钥”的协议配合使用,那么进行“预先交换密钥”时的数据包也不会有 V2Ray 的数据特征,因为此时还没有开始发送有效数据,即使有特征也是配合使用的协议的特征。 2. 专利中将 V2Ray 拼写成了 V2ray。
北京理工大学的背景
据悉,该专利于2019.07.05公布,三个专利人,依次是罗姓教授、读研一的王同学、潘姓副研究员,都来自北京理工信息与对抗技术研究所。随后这个专利申请的截图被贴在了微博上,并在一些人士的渲染、关心和转发下迅速发酵。更有消息指出,最初的这项研究来自几位本科生的毕业论文,之后再被读研究生一年级的王同学(专利申请人第二位)承袭。按照中共高校的体制,专利申请人第一位的罗姓教授应是其指导教师。
再说说北京理工大学,其前身叫做延安自然科学院。在中共阅兵的30个方阵中,北京理工大学参与了22个方阵的装备的设计和研制,参与数量和深度位居全国高校第一。由此可见,其与红魔的关系要搞出这种荒诞事,也就不奇怪了。
这个专利的最后结果:
大概是因技术含量实在low,所说方法实在太普通,被专业质疑太多,该专利已经悄悄的被撤回。并且连这位申请教授也关闭了微博评论区和私信。一场闹剧结束。
二、V2Ray 的优势与其方案的选择
V2Ray为大家提供了一个平台,支持多种协议,有强力的研发team。V2Ray有别于 trojan、NaiveProxy 的最大特点是 V2Ray有独创的VMess协议。VMess 协议是由 V2Ray 原创并使用于 V2Ray 的加密传输协议,为了对抗墙的深度包检测而研发的。VMess 是一个加密传输协议,它分为入站和出站两部分,通常作为 V2Ray 客户端和服务器之间的桥梁。VMess 依赖于系统时间,请确保使用 V2Ray 的系统 UTC 时间误差在 90 秒之内。
V2Ray的加密形式并不局限于一种协议, VMess 加密在各个传输协议中均是存在的。对于一个内容, VMess 会根据客户端支持的加密方式进行加密,在服务端进行解密,这是基础的一层加密,如果使用WS+TLS的协议进行传输这些内容时,会在内容加密的基础上再进行一次 TLS 加密,也就是说, VMess 会加密两次。因此,即便在传输过程中遭到中间人攻击,导致传输内容变成明文及 TLS 加密失效,V2Ray传输的内容依旧能一定程度保持安全。
V2Ray团队也在及时推行混淆策略,即使是上面专利谈到的”深度学习“,策略制定的复杂度和更新速度就可以克服。在反主动指纹识别上,彻底避免主动指纹识别的方法是用一个真的常见应用(例:nginx)作为前端。
独创的VMess协议优势在于此,其弱点也“可能"在于此。
优势是:独创的VMess协议,可以自行完善,V2Ray团队会想办法让其优于HTTPS,同时克服有特征被识别,也就是说,在VMess被邪党GFW破解之前,这个V2Ray就是安全最好的;
弱点是:也如上述,因使用其独特的VMess协议,这个独特也成为GFW的攻击重点,只要破解协议,或者找到其特征信号,中共GFW就有可能封杀。不过,美博认为至今这个弱点并没有显现。
V2Ray的若干代理方式简评
利用V2Ray核心程序,用户可以开发出多种翻墙方式,而这些方式也各有其特点,常见的:
1)V2Ray + mKCP
特点:连线延迟低,速度更快,但流量大,iOS不支持;有可探测特征信号;不建议使用。
2)V2Ray + TLS
特点:伪装 HTTPS 连线,仅是伪装,有可探测特征信号;不建议使用。
3)V2Ray + Caddy(NGINX等前端)+ ws + TLS
这个有美博教程:自建最强科学上网2:V2Ray+Caddy+Tls+WebSocket
特点:这种方法引入了前端处理,将代理服务器隐藏于真正的网页浏览之中,是网友期待已久的一个完美的翻墙办法,因为即使是中共发疯,也不至于疯狂到全网封杀最常用的
port 80、443 的连线。这种方式的优势就在于只要能通过 端口80, 443 的连线,就能翻墙;而理论上 GFW
要封亦极困难,基本上没可能在不杀错“良民”的情况下禁止 HTTPS
连线。ws(WebSocket)是一种在单个TCP连接上进行全双工通信的协议,解决了HTTP协议的部分问题。ws用在V2Ray上时,请求与应答的效率要远高于HTTP,而V2Ray的请求本就远高于普通的请求,ws对V2Ray就是一个很好的搭配,而且ws已经很成熟,Cloudflare等云服务商也支持基于WebSocket流量的CDN服务,进一步增进了服务器的安全性。由于WebSocket基于TCP协议,保证了链接的可靠性,但也有TCP效率和带宽较低的问题,但是,我们在建立V2Ray代理时开启了BBR加速也可弥补这方面的缺失。WebSocket还有一个缺点是明文传输,与服务器的通信内容可能被第三者探测或攻击,但我们的V2Ray开启了前端网站,也就避免了只做纯代理的这个问题。
4)V2Ray+h2+TLS
这个有美博教程:自建最强科学上网5:V2Ray + Caddy + Tls + HTTP/2
这个方法类似 3),h2本质是HTTP协议,比传统http1.1协议传输速度快,较之类似的WebSocket协议,传输效率略逊于WebSocket。h2+TLS这种协议能使V2Ray流量伪装在正常流量中更难以察觉。
从理论上讲:websocket是http1.1,HTTP/2协议包含了websocket的功能,而Caddy支持HTTP/2代理,所以,自建5略优于自建2,当然这是理论上,从实际使用上美博觉得自建2还要稳定一些,所以二者可等同使用。
5)V2Ray+QUIC/HTTP3
QUIC是谷歌制定的一种基于UDP的低时延的互联网传输层协议。QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,基于UDP传输,UDP效率更高,但可靠性比不上TCP。若作为代理,由于协议本身太新,目前这类流量在网络并不太多,若大量流量指向一个IP会不会被觉察?V2Ray的QUIC、HTTP3,有没有一些兼容问题,美博还没有测试,等测试后若真的效果好,我们再补充教程。
关于caddy
美博这几种自建教程中后来选择使用Caddy,Caddy和常用的Nginx、Apache等Web服务器相比,最大的特点就是部署简单,它拥有基本的apache或者nginx有的web server模块,同时还有一些很有特色的功能,比如: HTTP/2、Automatic HTTPS、Multi-core、Websockets、Markdown、IPv6等等。用来作为搭建代理的前端是很好的选择。
不过,Caddy正在大改版,从v1跳升到v2,但是它的糟糕之处在于v2并不兼容现在广泛使用的v1,对于正在广泛使用v1的用户,Caddy也是不太负责任的,其v2与v1路径、命令等都有差异,使v1用户原本的应用在不知道的情况下被官方改变(删除)而不能使用,这导致全网v1用户都出现问题,并非只是美博遇到,它这个实际上不是v2,是一个全新的版本。本来Caddy_v1很多人觉得好用的命令和设置,在 v2版给删除了,其配置命令更趋近于Nginx,简直是倒车、用户体验也不太好,有网友是其想可能是要靠近Nginx,争夺Nginx的前端大饼。
所以,美博的自建教程在本次修改之前出现了一个空窗期(大约一个多月),里面的配置链接被Caddy官方改变了,不能使用,导致网友建立代理出现问题。
美博这次(2020-05-18)已经修改了教程,去掉了对官方配置下载的依赖,直接在自建时设置。
尽管有上面的变故,Caddy v1 用来与这几个代理搭配仍然不失为目前的最佳选择。
我们利用Caddy只是作为前端网页反代和SSL证书申请及续签,Caddy v1已经足够,如果没有大的变动,美博不考虑升级v2。
V2Ray小结
也就是说,目前V2Ray的最好的常用稳定的方式是: V2Ray + Caddy(NGINX等前端) + ws + TLS 或 V2Ray + Caddy + h2 + TLS,也就是美博教程中介绍的方法。
使用 ws (WebSocket)或 h2 + TLS + Caddy等 伪装的好处:从外面看完全属于通过443端口访问正常的HTTPS网站,websocket、h2的path(即美博教程中的/vv22)被TLS加密不能被探测到,TLS不是伪装、也不是混淆,而是真正的HTTPS,看似浏览网站其用途合理就不会被封锁探测到。从上网记录上来看,代理流量被识别为正常的应用和通讯。
V2Ray代理的安全禁忌:一定要保密!
既然V2Ray可以把代理隐身于茫茫网络数据大海之中,而不被探测、被封锁,这是其技术优势,那么这个代理的创建者和使用者要对其保密也就是至关重要和基本前提,有网友时不时来信希望美博帮忙做一些大家都可以使用的V2Ray代理。
美博要在这里提醒大家的是:只要V2Ray代理公开,你的代理IP和域名就会被人知晓,那么这个代理通过最简单封锁ip和域名的方式就可以被封杀、或者置于不安全的被监控的境地,这对于一些安全要求高的网友要特别注意这一点,一定要保密你的V2Ray,这是基本和前提。
一旦ip和域名被人知晓,通过查询ip和域名等信息,就可能了解到代理拥有人的一些基本信息。
三、trojan的特点及与V2Ray的异同
请注意网上关于trojan搭建代理,也有不同方式,美博介绍的 trojan+caddy 这种方式是目前最好的trojan应用方式。
概括而言,trojan就是V2Ray这种方式(V2Ray+Caddy+ws+TLS)的简化版。
v2ray是一个网络框架,功能齐全;trojan是一个绕过防火墙的工具,轻量级、功能单纯;若二者都使用TLS加密,理论上trojan比V2ray性能更好,所以很多网友觉得trojan代理速度比较快。
v2ray内核用go语言开发,trojan是c++实现;v2ray和trojan都能实现https流量伪装。
详细来说,trojan 采用常见的协议HTTPS,没有使用特别的协议。trojan在建立连接的过程中考虑了现行加密协议的不足,也参考了传统网站服务器的连接过程,trojan似乎有意识的将它trojan服务器伪造成只处理 HTTPS 流量的Caddy/Nginx服务器,这很好。trojan默认监听443端口,其思路是把 trojan代理数据伪装成正常的 HTTPS 通信,对于任何其他访问数据则直接转发到80端口,通过caddy、Nginx等web服务器提供网页访问服务,其他人访问你这个443端口就会跳到你设置的网页页面。当trojan客户端连接到服务器时,首先执行真正的 TLS 握手,若握手成功,则所有后续流量都将受到保护TLS; 否则服务器就立即关闭连接,就像任何HTTPS服务器一样。这样VPS更像一个正常的web服务器,使得 GFW 认为是 正常HTTPS。trojan反侦查采用主动检测与被动检测,而不会被识别出来。caddy+trojan一起合用是很好的组合,trojan绑定在0.0.0.0:443上,转发非trojan流量到 caddy 达到掩护的目的。caddy绑定在0.0.0.0:80上,并自动重定位到https加密浏览。
trojan的方法类似于上面介绍的 V2Ray+ws+TLS,其协议差异并不大。两者建立连接的过程有区别,从流量本身是难以发现区别的。也就是说,对于第三者的监听,这两类协议与普通流量表现均一致,这是两者的共性。
V2Ray是Caddy/Nginx侦听443,数据 → Caddy/Nginx → V2Ray;trojan是自己侦听443,都是伪装成网站。准确的说,以前的ssr是伪装,而trojan和V2Ray的ws+tls其实已经不是伪装,是完整的真正的tls。
V2Ray更专业,功能全面,套两层加密更安全(前提是服务器和本地数据不泄露,使用强root密码/仅使用公钥登录),能套CDN,相对的的速度较慢;trojan更简单、少一层加密,所以理论上速度会快一些。
trojan默认使用tls1.3,V2Ray自 4.18.1版后也支持 TLS1.3 ,传输层加密都支持tls1.3,这一点二者没有区别。
trojan有多线程,V2Ray 在客户端可选择 Mux(多路复用 multiplexing)使所有流量走单线程。所以有人发现长时间的高能使用trojan,服务器的trojan线程越来越多,服务器CPU越来越高,最后可能会死掉。当然,作为代理服务器,除非是商用,个人使用很少出现这种情况。
trojan不能用CDN,不要开启CDN。V2Ray可以使用CND。
一台VPS上可以同时安装 V2Ray ws+tls 和 trojan,但要注意端口控制和传输阻塞。但美博还是不建议同时安装。现在的VPS已经很便宜,建立个人代理买最便宜的VPS都行。
理论上来说,trojan可以永久地穿越Great FireWall,而不会被识别出来。
四、NaiveProxy的独到之处
正如美博教程所述:NaiveProxy是比较新的代理项目,与trojan类似也采用HTTPS协议,但有其独到特点,NaiveProxy可减轻流量指纹识别(特征)、主动探测和数据包长度分析的GFW审查带来的风险,就是说更难被墙检测和封锁。而且,设置比v2ray、trojan还要简略一些。
据官方介绍:NaiveProxy 使用Chrome的网络堆栈来伪装流量,与自定义的网络堆栈(如:Shadowsocks、V2Ray,手工Golang堆栈)相比,具有更强的抗审查能力和更低的可检测性。复用Chrome堆栈使得NaïveProxy在(代理)性能和安全方面有最佳的表现。
NaïveProxy可缓解以下几种方式的流量攻击:
# 网站指纹识别/流量分类:通过HTTP/2中的流量复用来缓解。
# TLS参数指纹识别:因复用Chrome的网络堆栈而不能识别。
# 主动探测:被前端应用所克制,即将代理服务器隐藏在具有应用程序层路由的常用前端后面。(美博注:这应是指反向代理)
# 基于数据包长度的流量分析:通过长度充填来减免。
NaiveProxy 使用Chrome的网络堆栈,GFW墙(审查器)拦截的流量行为与Chrome和标准前端(例Caddy,HAProxy)之间的常规HTTP/2流量相同,没有特征信号。前端还会将未经身份验证的用户和活动探针重新路由到后端HTTP服务器,从而使得无法检测到代理的存在,即:探测Probe → 前端服务器 → index.html(网页)。(美博注:这个部份在v2ray、trojan也都有实现)
正因为其抗指纹识别的独到之处,有人测试比较过几种代理的TLS指纹,结果NaiveProxy独领风骚。
所以,美博教程的NaiveProxy+Caddy,我们也推荐大家与v2ray、trojan等同使用。
总之,trojan、NaiveProxy的出现,借用广泛普及使用的HTTPS协议本身来隐身翻墙,置翻墙于无形,这是重大的技术突破。
五、关于代理性能与速度
谈到这三种代理的性能和速度,网上有一些网友進行了一些零星的测试。美博认为,翻墙技术最重要的在于安全,因为现在的服务器性能提升很快,一年一个样,基本上建立的代理性能即使是比较差一点,服务器都能完全承受并良好运行,至于各个代理的速度,美博也测试过,其实差别也不大,而对于网友上网来讲的感觉并不很明显,而且各个地区也有差异。而且,这些代理与以前的很多代理方法相比,已经都算是相当快了。所以,这些方面不是我们关注的重点。建成、实用、安全,对于代理来讲才是最重要的。
六、关于机场
SS(shadowsocks)的出现是当时翻墙方法的一个突破,后因其协议和特称被识别及国内开发者被中共国安抓去喝茶而停止,后来国外网友继续开发这一项目命名为SSR。
SS/SSR的LOGO,是一个纸飞机的图案。那么建立SS/SSR代理的翻墙服务基地(网站)就被形象的称为“机场”(纸飞机落地的地方)。后来,把提供建立众多SS/SSR、V2Ray、trojan等这些代理服务的场所(网站),概括都叫做“机场”,很显然,这一新名词的流行也是要规避中共关键词的过滤,其准确的含义是“代理服务商或代理服务器提供商”,当然里面有免费的代理提供,更多的是需要付费的,对于用户来讲就是买一个代理来使用。根据“机场”的要求,购买后,填入必要的设置就可以开启代理,可以正常浏览被墙封锁的所有网站了。
对于机场,方便了不会建立代理的网友,有人帮忙建立好了,只是使用即可。
美博建议:
因你无法确认机场背后的主人是谁?在哪里?做什么的?就像是现在已经确认的事实,国外的大多数VPN实际上是中国的,很多是有中共背景的陷阱,若使用到那种代理,就会置自己的安全于危险之中。
当然,如果你能够确认机场主人是可靠的,可信的,没有安全疑虑的,当然那是可以使用的。
总之,对于安全性要求高,或者有安全隐患的网友,美博还是一贯的主张,建议自己学会搭建代理,一生只花几天的时间就学会了自建代理,一劳永逸,很值得呀。而且最重要的是安全。加上美博的代理自建教程写的很详细,一步一步按照教程去做,基本上都能成功搭建自己的代理。
七、更安全的代理使用方法
有些网友要做一些特别的事情,需要特别高的安全保障,如果你已经自建有自己的V2Ray、trojan、NaiveProxy代理,那么这就简单了,用V2Ray、trojan、NaiveProxy作为tor的前置代理,二者配合起来使用,速度虽然会慢一点,但安全、匿名度高,对于安全要求高的网友是目前最安全、稳妥的隐身方法。
当然,安全的基本要求前提是:你的电脑必须是安全的,这是大前提,如果电脑不安全,其他上网代理安全就无从谈起。
八、结论
至今,V2Ray、trojan、NaiveProxy 代理仍然是目前最好的代理,网友若有一些基本的电脑知识,美博的教程写的尽量的详细就是要适合新手操作。美博一直建议尽可能的学会自建这些代理,尽管开始学可能会多花几天时间,但学会以后就几乎是一劳永逸,邪墙再也封锁不了你上网了,而且安全、快速,这几种代理隐藏身份的效果是目前最好的,所以,建议大家都来学学自建。
每多一个人学会自建,共产党的邪墙就多一个崩溃的窟窿,千万人、亿万人都能自建,邪党墙就形同虚设了,不攻自破了。
以前一些著名代理软件,比如利用公共服务等来做代理,早被邪党识别其特征,所以只有不断更新来维持,新版一推出很快又被封杀,所以技术尚待更新。而这几种代理V2Ray、trojan、NaiveProxy 几乎趋近完美,代理服务就像是浏览真正的网站,目前都是安全可靠的,再次建议大家都来学学自建。
没有评论:
发表评论