本文作者: 潘羿 来源: 无主界
相信有很多小伙伴在使用V2Ray或者SSR的时候都这样的疑问,究竟哪种加密方式是最好的呢?要回答这个问题,就需要先知道什么是最好。对于加密方式/算法来说,一般安全性与性能呈负相关,越是安全越是对性能要求高,这应该是大家的常识。由于现在大部分给出的加密协议的安全性均能达到标准,因此这里主要讨论的最好便是加密性能的优良。
SSR与V2Ray其实加密方式是大同小异的,原因很简单,加密方式就那些,区别在于使用的方式并不一致。这篇文章而言主要讨论的是加密方式,因此笔者不打算将SSR/V2Ray分的很清楚。再者对于SSR来说,笔者不是很想多谈了,笔者再次建议各位赶紧将SSR转向V2Ray。这里有搭建V2Ray的教程:2019 搭建 V2Ray 最新教程
对于V2Ray而言,有三种加密方式:AES-128-CFB、AES-128-GCM、ChaCha20-Poly1305(当然还有不加密)。单看这三种加密方式,是非常具有代表性,可以说每种都有优缺点。若要讨论哪个更好,是需要逐个了解其原理是什么的。
AES加密方式
大家不难发现AES-128-CFB、AES-128-GCM均是AES-128-开头,很明显他们有着相似的特性。
AES(Advanced Encryption Standard)高级加密标准,这类加密标准是十分常见的对称加密算法。所谓的对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:
具体的加密细节由于篇幅加之文章目的不再展示了。这里的AES-128就是密钥的长度为128位,加密轮数为10轮。此种方式在日常生活中应用极广,你现在看到了这篇文章,你就有可能在应用这类加密,因为无主界网站的HTTPS也是基于这种加密方式的。
AES-128-CFB
在知道了AES大概是什么后,相信大家就能猜到了AES-128-CFB、AES-128-GCM都是在AES加密方式下的不同的加密模式。那么两者又有怎样的差别呢?
对于CFB模式来说,其全称为Cipher FeedBack模式(密文反馈模式)。在CFB模式中,前一个密文分组会被送回到密码算法的输入端。而所谓反馈,这里指的就是返回输入端的意思。以下是其示意图:
从上图中可以发现,对于AES-128-CFB而言其优点在于它隐藏了明文模式,同时它可以及时加密传送小于分组的数据。但它也有缺点,CFB并不利于并行计算、一个明文单元损坏影响多个单元。
AES-128-GCM
对于GCM 模式来说,其全称为Galois/Counter Mode,也就是该对称加密采用Counter模式,并带有GMAC消息认证码。
其工作原理是相对较为复杂的,与CFB不同,它可以提供对消息的加密和完整性校验,另外,它还可以提供附加消息的完整性校验。以下是其粗略的示意图:
同样的笔者也不展开讨论了。这里依然说一下GCM的优缺点。对于GCM而言其最大的优势便是有利于并行计算,并且有消息的完整性校验。缺点自然是要考虑运行加密时硬件的支持程度。
ChaCha20-Poly1305
对于ChaCha20-Poly1305,其全称就是ChaCha20-Poly1305,它是由ChaCha20流密码和Poly1305消息认证码(MAC)结合的一种加密算法。
ChaCha20-Poly1305是基于RC4流加密的一种加密方式,它与AES有本质的区别,对于RC4而言,已经被证实并不安全,那么为什么还要发展ChaCha20-Poly1305呢?原因很简单,兼容性。
对于精简指令集的ARM平台,由于没有AES-NI指令集,ChaCha20-Poly1305在同等配置的手机中表现是AES的4倍(ARM v8之后加入了AES指令,所以在ARM v8平台上的设备,AES方式反而比chacha20-Poly1305方式更快,性能更好),这样可减少加密解密所产生的数据量,使得性能更好。
看到这里相信读者你似乎有了些眉目,对于加密方式的选择,与其讨论加密方式的优良,不如好好考虑你所在的实际应用场景是什么。
实际应用场景
对于V2Ray而言,由于其客户端受众甚广,因此在加密方式的选择中需要了解自身的实际需求。
对于普通用户而言,若V2Ray客户端运行在普通电脑上,很明显AES方式更加的高效。
若V2Ray客户端运行在手机或者软路由上,从上述描述中能很好的看到,AES和ChaCha20-Poly1305的选择需要依据实际情况。一般在近几年的手机/软路由CPU中都内置了AES-NI指令集,因此使用ChaCha20-Poly1305是没有必要的。但对于老手机而言,ChaCha20-Poly1305则快于AES,是你的最佳选择。
现在对于ChaCha20-Poly1305与AES的讨论告一段落了。那么对于AES-128-CFB与AES-128-GCM究竟哪个更好呢?这里就需要提到一个刚刚忽视了的细节:加密方式在V2Ray中是怎么运作的?
加密方式在V2Ray中的运作
在V2Ray的官网上的部分技术细节中有这样的描述:
从官方文档中可以发现,V2Ray尽可能的利用了加密方式的最大特点。这点很好,保证了加密方式得到合理的应用。在V2Ray文档也可以发现,所谓加密方式的选择其实是数据部分加密的选择,对于指令部分的加密(AES-128-CFB)是没法选择的。而文档的重点在于,在通讯过程中V2Ray会将数据分割为若干个小块,并逐一加密后发出。这便很好的为AES-128-CFB、AES-128-GCM该如何选择提供了依据。
对于安全来说,AES-128-CFB的数据完全加密更加有保证,但是就如上述所说,CFB本身并不适合并发,而V2Ray又会分割数据,这便牺牲了CFB的性能,导致连接速度下降。而对于AES-128-GCM而言,虽然没有也不可能加密整个数据部分,但由于其特点适合并发,因此反而能使得性能提升。
最后结论
这里笔者就根据上述的描述做一个小结。
对于服务端,一般选择Auto并且部分一键脚本没有给用户更改的机会,笔者也推荐在服务端直接使用Auto,在客户端中的选择需要慎重。
对于使用老旧手机的用户而言,毫无疑问,你需要选择ChaCha20-Poly1305或者直接选择不加密获得最佳性能。
对于使用电脑和近两年新手机的用户而言,选择AES-128-GCM效果最佳。
对于在乎自己数据安全的用户来说,选择AES-128-CFB理论上能更加安全。
2 条评论:
速度 GCM > Chacha > None > CFB;
At Miracle, Digital Marketing and Transformation Agency in Hong Kong, we help our clients improve digital services to make them simple, clear and fast. We help our client transform, create and improve their product in a digital way such as branding, web & app design, e-commerce solution, Digital Marketing strategy, Virtual Reality (VR) and Augmented Reality(AR).
Financial Press IPO HK
Miracle Digital Hong Kong | Digital Marketing
Miracle Digital Hong Kong | SEO Hong Kong
Financial Press
財經印刷
IPO HK
Financial Documentation
发表评论