WireGuard 與 OpenVPN:VPN 通訊協定比較
WireGuard 與 OpenVPN 是消費級 VPN 服務中最常見的兩種通訊協定。本文從加密設計、效能表現、程式碼體量、平台相容性與維運特性等面向對兩者進行比較——這些面向直接決定了一項服務在正式環境中的實際行為。
兩種協定的背景
OpenVPN 發布於 2001 年,已成為商業 VPN 部署的事實標準。它是一個以 C 語言編寫的開源專案,執行於使用者空間,使用 OpenSSL 或 mbedTLS 函式庫處理加密運算。其悠久的歷史與彈性帶來了豐富的功能集以及廣泛的設定支援。
WireGuard 則相對較新。該協定於 2016 年首次發布,並於 2020 年合併進 Linux 核心。它的設計目標明確——比前輩更精簡:更小的程式碼體量、精簡的現代加密原語集,以及在支援的平台上駐留核心的實作。協定作者 Jason A. Donenfeld 將設計目標定位於可驗證性與效能,而非可設定性。
加密設計
兩種協定在加密方式上存在顯著差異。WireGuard 內建固定的演算法套件;OpenVPN 則允許維運者從眾多選項中自行選擇。
WireGuard 的固定套件
WireGuard 使用一套以現代原語為基礎的固定密碼套件。各元件分別為:ChaCha20 負責加密,Poly1305 負責認證,Curve25519 負責金鑰交換,BLAKE2s 負責雜湊,SipHash24 負責負載平衡。握手過程由 Noise 協定框架提供。
固定套件帶來兩個結果。其一,消除了協定協商過程——歷史上,以 TLS 為基礎的協定在這個環節曾多次遭受降級攻擊。其二,升級加密演算法需要協定版本更新,而非僅修改設定。
OpenVPN 的可設定性
OpenVPN 透過底層 TLS 函式庫支援多種密碼選擇。常見設定包括:AES-256-GCM 負責加密,SHA256 負責認證,ECDH 負責金鑰交換。較舊的 OpenVPN 部署可能使用 BF-CBC 或帶 HMAC 的 AES-CBC,以現代標準來看安全性明顯偏弱。
這種彈性使 OpenVPN 能相容舊版用戶端,但同時也意味著需要進行設定稽核,才能確認某個部署確實採用了強安全設定。
效能表現
在相同硬體上,WireGuard 的效能通常優於 OpenVPN。兩個因素解釋了大部分差距。
首先,WireGuard 在 Linux、macOS 與 Windows 上執行於核心,避免了每個封包在核心空間與使用者空間之間切換的開銷。OpenVPN 的使用者空間實作可移植性佳,但每個封包都會產生上下文切換成本。
其次,ChaCha20-Poly1305 非常適合缺乏專用 AES 指令的處理器,而這在以 ARM 為基礎的行動裝置上十分常見。OpenVPN 通常使用 AES——在具備 AES-NI 的硬體上速度更快,但在其他硬體上則較慢。
從實際效果來看,與 OpenVPN 相比,WireGuard 在消費級裝置上通常能達到更高的吞吐量、更低的延遲與更少的 CPU 佔用。在行動裝置上對電池的影響也通常更小。
程式碼體量與稽核面
程式碼庫的規模與安全稽核所需工作量大致成正比。WireGuard 的參考實作約有四千行程式碼,Linux 核心實作與此相當。
相較之下,OpenVPN 包含約七萬行程式碼,並依賴 OpenSSL 或 mbedTLS 等 TLS 函式庫——這些函式庫又額外增加了數十萬行程式碼進入信任邊界。程式碼量的差異本身並不說明 WireGuard 更安全,但確實影響實作程式碼被徹底審查的可行性。
平台相容性
兩種協定均獲得廣泛支援。WireGuard 擁有適用於 Linux(核心及使用者空間)、Windows、macOS、iOS、Android、FreeBSD 與 OpenBSD 的官方實作。iOS 支援尤為完善,透過 iOS Network Extension 框架深度整合。
OpenVPN 幾乎可在所有平台上使用,包括 WireGuard 尚未移植的舊版系統。許多企業網路使用 OpenVPN 以相容既有基礎架構。
對於在現代作業系統上的新部署,WireGuard 是更直接的選擇。而對於需要廣泛相容性的環境——包括舊版系統、嵌入式裝置或某些企業產品——OpenVPN 仍具有其價值。
設定模型
WireGuard 的設定模型刻意保持精簡。每個對等節點擁有一個公鑰身分與一份允許的 IP 清單。協定不涉及使用者層級認證,伺服器端無工作階段狀態,也無需協商 keepalive。協定依賴加密身分,而非使用者名稱與密碼。
OpenVPN 支援更有彈性的認證模型,包括以憑證為基礎的認證、使用者名稱與密碼認證,以及雙因素認證。這種彈性在需要與目錄服務整合認證的企業環境中十分有用。
對於消費級 VPN 服務而言,使用者之間無需相互識別,WireGuard 更精簡的模型通常已完全足夠。
如何選擇
協定的選擇取決於部署的具體限制條件。
- 優先選擇 WireGuard 的情境:以效能、程式碼精簡性與現代加密為優先;目標平台具備原生支援;且部署可以接受固定密碼套件。
- 優先選擇 OpenVPN 的情境:需要相容舊版系統;需要與企業認證系統整合;或部署環境所在網路限制 UDP 流量(OpenVPN 支援 TCP 回退,WireGuard 不支援)。
許多現代消費級 VPN 服務同時提供兩種協定供使用者選擇。Snap VPN 則不同,它 專用 WireGuard,並透過 iOS Network Extension 框架整合。這個決定體現了將實作面收窄至目標平台所需最小化的設計原則。
如需了解 VPN 的整體運作原理,請參閱 VPN 入門介紹。如需在 iPhone 上進行實際設定,請參閱 iOS 設定指南。