交流評論、關注點贊

  • Facebook Icon臉書專頁
  • telegram Icon翻牆交流電報群
  • telegram Icon電報頻道
  • RSS訂閱禁聞RSS/FEED訂閱

V2Ray / SSR 加密方式哪個好? (加密演算法對比)

2019年12月13日 7:42 PDF版 分享轉發

作者: 潘羿

相信有很多小夥伴在使用v2ray或者的時候都這樣的疑問,究竟哪種加密方式是最好的呢?要回答這個問題,就需要先知道什麼是最好。對於加密方式/演算法來說,一般安全性與性能呈負相關,越是安全越是對性能要求高,這應該是大家的常識。由於現在大部分給出的加密協議的安全性均能達到標準,因此這裏主要討論的最好便是加密性能的優良。

SSR與其實加密方式是大同小異的,原因很簡單,加密方式就那些,區別在於使用的方式並不一致。這篇文章而言主要討論的是加密方式,因此筆者不打算將SSR/V2Ray分的很清楚。再者對於SSR來說,筆者不是很想多談了,筆者再次建議各位趕緊將SSR轉向V2Ray。這裡有搭建V2Ray的教程:V2Ray完全使用教程

對於V2Ray而言,有三種加密方式:AES-128-CFB、AES-128-GCM、ChaCha20-Poly1305(當然還有不加密)。單看這三種加密方式,是非常具有代表性,可以說每種都有優缺點。若要討論哪個更好,是需要逐個了解其原理是什麼的。

搬瓦工翻牆 Just My Socks

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或者直接選擇不加密獲得最佳性能。

搬瓦工翻牆 Just My Socks

對於使用電腦和近兩年新手機的用戶而言,選擇AES-128-GCM效果最佳。

對於在乎自己數據安全的用戶來說,選擇AES-128-CFB理論上能更加安全。

來源: 無主界

搬瓦工翻牆 Just My Socks

推薦安卓翻牆APP:SpeedUp VPN

Android版SpeedUp ,基於ShadowsocksRb,與SSR和Shadowsocks協議兼容,內置免費SSR伺服器。 如果您對內置SSR VPN伺服器不滿意,則可以自行添加或導入任何SSR和Shadowsocks伺服器使用。

喜歡、支持,請轉發分享↓Follow Us 責任編輯:唐明