WireGuard®是一種相對較新的VPN協議,與已有數十年的OpenVPN相比,其開發理念截然不同——簡單且有效率地完成一項任務。這種理念稱為UNIX哲學。 WireGuard在多個開源許可證下獲得許可,例如GPLv2,這與Linux核心使用的開源許可證相同。因此,WireGuard最終將被添加到Linux核心中,這意味著WireGuard將來會在所有Linux發行版上「預先安裝」。 Linus Torvalds對WireGuard未來普及的評論更是驗證了這一點。他在2018年8月給Linux內核郵件列表發了一封郵件,表示:
「我可以再次表達我對它[WireGuard]的熱愛,並希望它盡快合併嗎?也許程式碼並不完美,但我已經瀏覽過,與OpenVPN和IPSec的恐怖相比,這是一件藝術作品。”
WireGuard的崛起標誌著VPN時代的變革
Jason Donenfeld在2016年左右首次開始研究WireGuard,首次發佈於2016年12月9日。 WireGuard的核心是一種Linux核心虛擬網路接口,旨在取代Linux上的用戶空間網路(如tun設備和IPSec)。實際上,IPSec在很大程度上已被當前行業標準OpenVPN所取代,而後者在用戶空間中使用tun設備。 WireGuard也可以作為OpenVPN的替代品。正如Jason所說,WireGuard是一個「實用且安全的工程解決方案」。值得注意的是,WireGuard最近才以穩定版本v1.0發布。
WireGuard的獨特之處
在第3層的VPN提高了效率
WireGuard與其他VPN協定(如OpenVPN、IPSEC、L2TP和PPTP)最大的差異在於其運作的層級。大多數人熟悉的傳統VPN協定在使用者層級使用TLS。而WireGuard則在基於Linux的VPN伺服器中運行在內核的網路堆疊中,這帶來了許多好處。主要有兩個:WireGuard更容易實現,同時資料包的真實性和可歸屬性得到了更好的保障。 WireGuard支援IPv4和IPv6位址,並且能夠將IPv4封包封裝在IPv6中,反之亦然。此外,WireGuard採用“加密金鑰路由”,因此每個在VPN上允許的IP位址都有相關的公鑰。 WireGuard也提供了完美的前向保密性。
更少的程式碼使WireGuard更易於審計
WireGuard的設計理念導致其程式碼庫中的程式碼行數遠少於OpenVPN。具體來說,WireGuard的程式碼行數約為4,000行,而OpenVPN或IPSec則需要超過400,000行程式碼來充分利用。這意味著WireGuard的程式碼庫出錯的可能性更小。此外,WireGuard沒有OpenVPN所期望的許多附加功能,例如密碼協商,但這是設計選擇。許多VPN用戶習慣的附加功能可以在WireGuard之上添加。開源程式碼的目的是為了建構在其上。總而言之,WireGuard提供了一種更簡單、更清晰和更現代的方式,透過虛擬專用隧道將電腦連接到虛擬私人網路。
更好的加密演算法和版本控制降低了漏洞影響
WireGuard使用一系列新演算法進行加密,而不是使用AES或SHA。具體演算法包括:
- ChaCha20用於對稱加密,使用Poly1305進行認證,採用RFC7539的AEAD結構
- Curve25519用於ECDH
- BLAKE2s用於哈希和密鑰哈希,詳見RFC7693
- SipHash24用於哈希表鍵
- HKDF用於密鑰派生,詳見RFC5869
WireGuard的一個優點是缺乏加密彈性。加密靈活性是指協議在某個加密演算法過時時能夠更換的能力;然而,這種靈活性可能導致降級攻擊或中間人攻擊。 WireGuard選擇了加密版本控制-如果上述演算法中的某一個過時,只需發布新版本來升級,從而消除漏洞的可能性。正如Jason在介紹WireGuard的論文中所說:
“它[WireGuard]故意缺乏密碼和協定靈活性。如果發現基礎原語中存在漏洞,所有端點都需要更新。正如SSL/TLS漏洞持續湧現所示,密碼靈活性極大地增加了複雜性。”
如何設定使用Private Internet Access的WireGuard
當PIA首次發布WireGuard時,您需要加入PIA測試計劃才能使用WireGuard。現在,WireGuard功能已不再處於測試階段,所有PIA用戶端和應用程式都可以使用這項新VPN協定。更新用戶端或應用程式後,只需在Private Internet Access桌面用戶端的設定視窗中導覽至連線選項卡,或在Private Internet Access行動應用程式的VPN設定中切換協議,從OpenVPN切換至WireGuard。您會注意到可選擇的VPN選項減少了。使用WireGuard而不是OpenVPN的簡單性大大減少了選擇上的困擾。 WireGuard就是這麼簡單有效率。
「WireGuard」是Jason A. Donenfeld的註冊商標。