科技

什麼是WireGuard? StageVPN 應用程式使用的 VPN 協定 8 個問題和 8 個答案

WireGuard 透過一次性往返握手創建一個會話金鑰,並大約每兩分鐘更改一次,並透過公鑰而不是 IP 來識別設備,以便即使在從 Wi-Fi 切換到 LTE 時也能保持連線。透過表格和圖表解釋了加密技術、金鑰輪換、加密金鑰路由和 StageVPN 應用程式配置。

StageVPN團隊閱讀時間 23 分鐘

描繪資料流穿過發光藍色隧道的 3D 插圖

WireGuard是一種 VPN 協議,可在使用公鑰相互識別的兩個裝置之間建立加密的虛擬網路連線(隧道)。

StageVPN 應用程式 (iPhone·iPad·Android) 使用此 WireGuard 將整個裝置的 IPv4/IPv6 通訊和 DNS 查詢傳送至 VPN 伺服器。本文提出了八個問題來解釋為什麼 WireGuard 被評為快速且易於審查。對於每個問題,我先寫下兩句話的答案,然後用下面的表格和圖來解釋原理。數據基於 WireGuard 白皮書和官方協議文件。

約 4,000 行
2017 年白皮書發佈時 Linux 核心實作的程式碼大小
1 次往返
握手建立會話金鑰所需的訊息往返次數
120秒
何時開始透過新的握手更改會話密鑰
1 件事
無需協商即可使用的固定密碼組合數量

下圖將本文中最重要的三個屬性集中到一頁。設備和伺服器在一次往返中就會話金鑰達成一致。密鑰大約每兩分鐘刷新一次。伺服器透過其公鑰而不是其 IP 位址來識別另一台設備。請繼續閱讀,了解這三個屬性分別回答了哪些問題。

會話密鑰在一次往返中創建,並且大約每兩分鐘更改一次。
會話密鑰在一次往返中創建,並且大約每兩分鐘更改一次。

Q:什麼是 WireGuard,它是誰創建的以及為什麼?

WireGuard 是 Jason A. Donenfeld 設計的 VPN 協定和實現,於 2017 年發布。目標是減少配置項的數量,將加密方法固定為一種,並使其達到專家可以閱讀和審查整個程式碼的大小。

VPN協定是設備和伺服器相互識別、共享加密金鑰、打包和交換資料的一組規則。現有協議有很多選項和協商步驟以適應各種環境。更多選項會導致更大的程式碼。由於配置錯誤而創建弱配置的可能性也增加了。 WireGuard採取了相反的方法。我們減少了選擇的數量並縮短了程式碼。

表 1. WireGuard 的主要歷史(截至 2026 年 9 月)
觀點看法案件意義
2017年NDSS 會議上發布的白皮書公用文件中概述的設計目標、握手和加密金鑰路由
2020年3月預設包含在 Linux 5.6 核心中可以在Linux伺服器上使用,無需安裝單獨的模組
白皮書發布後針對 Windows、macOS、iOS 和 Android 發布的官方實現智慧型手機應用程式使用相同的協定連接到伺服器
今天Tamarin、CryptoVerif等格式驗證研究積累協議設計的安全性已經過學術審查

程式碼大小取決於實作和時間安排。因此,「大約 4,000 行」不應被解讀為確切的當前值,而應被解讀為「比其他 VPN 實作小一個數量級」。 StageVPN 應用程式在 iPhone、iPad 和 Android 上使用此 WireGuard 實作。 StageVPN for Chrome 是 Chrome 擴充程序,是 HTTPS 代理程式而不是 WireGuard。兩種方法的差別在於 瀏覽器 VPN 與應用程式 VPN它被覆蓋在

Q:WireGuard 連線的順序是什麼?

連接是透過兩個訊息的握手(一次往返)創建的。當發起方發送開始訊息,回應方傳回回應訊息時,雙方立即計算相同的會話金鑰並交換資料。

  1. 啟動訊息發起者(裝置)發送臨時公鑰、加密的自公鑰和加密的時間戳記。
  2. 回覆訊息響應者(伺服器)發送其臨時公鑰並驗證發起者。
  3. 會話密鑰計算根據密鑰交換結果,雙方得出一對用於發送和接收的對稱密鑰。
  4. 資料傳輸每個資料包均使用 ChaCha20-Poly1305 加密並分配一個序號(計數器)。
圖 1. WireGuard 握手和資料傳輸序列(一輪)

握手是兩方在開始通訊之前相互識別並就加密金鑰達成協議的過程。 WireGuard 的握手遵循 Noise 框架的 IK 模式。 IK模式要求發起者事先知道回應者的公鑰。 StageVPN 應用程式滿足此條件,因為它接收要在 VPN 設定中連接的伺服器的公鑰。

表2. 四種WireGuard訊息類型(基於官方協議文件)
資訊尺寸包含內容角色
發起握手(類型 1)148字節臨時公鑰、加密靜態公鑰、加密時間戳記、2 個 MAC發動者身分證明,阻止重播攻擊
握手響應(類型 2)92字節回應者臨時公鑰,用於驗證的空密文,2 個 MAC關鍵協議已完成
Cookie 回應(類型 3)64字節加密cookie伺服器過載時檢查出發地址
數據(類型 4)標頭16位元組和密文收件人號碼、計數器、加密 IP 封包和身份驗證標籤實際通信傳遞

啟動訊息中的時間戳可防止重播攻擊。重播攻擊是攻擊者記錄正常訊息並稍後重新發送的攻擊。如果時間戳早於同一裝置上一次發送的訊息,則伺服器會丟棄該訊息。

第一個 MAC 可以透過知道伺服器的公鑰來建立。因此,伺服器不會回應不知道伺服器公鑰的掃描器所發送的資料包。從外部看,甚至很難判斷該連接埠上是否有 VPN 伺服器。當伺服器過載時,會先發送 cookie 回應,然後再執行繁重的計算。它是一種僅處理來源位址被確認為真實的請求的設備,可防止因偽造位址而導致伺服器繁忙的攻擊。

Q:WireGuard 使用什麼加密技術?

為每個角色僅設定一種加密方法並無需協商即可使用。如果發現某項技術有問題,我們不會新增選項,而是更改協定版本,以便所有實作一起移動。

官方文件中所寫的握手的全名為Noise_IKpsk2_25519_ChaChaPoly_BLAKE2s。名稱就是方案。 IK 代表握手模式,psk2 代表可選預共用金鑰,25519 代表金鑰交換曲線,ChaChaPoly 代表資料密碼,BLAKE2s 代表雜湊。

表 3. WireGuard 修復的加密技術和支援文檔
角色技巧支援文件特徵
握手設計Noise_IKpsk2 模式噪音協定框架雙向認證、金鑰協商、發起者身分保護
密鑰交換曲線25519(X25519)RFC 774832位元組公鑰,橢圓曲線設計,減少實施錯誤
資料加密和完整性ChaCha20-Poly1305RFC 8439即使沒有硬體加速,也能快速處理加密和篡改檢查
Cookie 加密XChaCha20-Poly1305WireGuard 協定文檔安全寫入長隨機值的修改
哈希值和MAC布萊克2sRFC 7693快速哈希,也用於密鑰 MAC 計算
金鑰派生香港發展基金會RFC 5869從密鑰交換結果中提取會話密鑰
內部哈希表SipHash24奧馬森·伯恩斯坦紙防止針對哈希表的操縱攻擊

值得注意的是,沒有談判階段。在交換密碼清單的協定(例如 TLS 或 IKEv2)中,已經研究了降級攻擊來誘騙攻擊者選擇較弱的密碼。 WireGuard 沒有自己的清單可供選擇。因此,建立這樣的攻擊是沒有意義的。

psk2 或預共用金鑰是一項選用功能。透過在公鑰加密之上添加一層對稱金鑰,即使未來的量子電腦破解了 Curve25519,也可以提供額外的防禦來保護通訊內容。這是一項可選功能,因此可用性因服務而異。 StageVPN 不提供抗量子加密作為所提供的功能。

該設計的安全性已多次經過學術審查。 WireGuard 專案在其官方網站上收集了正式的驗證研究,包括使用 Tamarin 證明器的符號驗證和使用 CryptoVerif 的計算證明。然而,形式驗證是協議設計的證明。我們不保證每個應用程式的實施品質或伺服器運行。因此,仍然有必要保持應用程式處於最新狀態並檢查運營商的日誌記錄政策。

Q:會話密鑰多久更改一次?

會話鑰匙大約每兩分鐘更換一次新的握手。替換是在與現有密鑰通訊時進行的,因此用戶不會注意到任何中斷。

  1. 0秒握手完成

    使用新的會話金鑰開始資料傳輸。

  2. 120秒開始新的握手

    當您有資料要傳送時,請建立一個新密鑰 (REKEY_AFTER_TIME)。如果訊息傳送到 2 60 次方,金鑰也會被取代。

  3. 180秒拒絕舊鑰匙

    密鑰早於此時間的資料包將不會被接收 (REJECT_AFTER_TIME)。

  4. 540秒空閒清理

    在 3 次 180 秒內沒有新的握手後,清除所有臨時金鑰和會話狀態。

圖 2. WireGuard 會話金鑰的生命週期(基於官方協定文件中的計時器)

頻繁更改金鑰的原因是出於前向安全性的考量。前向安全性是一種屬性,即使設備的長期私鑰後來暴露,也可以防止已結束會話的通訊內容被釋放。 WireGuard 為每次握手創建一個新的臨時密鑰,並從記憶體中清除所有使用過的密鑰。即使單一會話金鑰被洩露,影響範圍也將僅限於該金鑰被使用的幾分鐘內。

握手嘗試也有規則。如果沒有回應,它會每 5 秒重試一次 (REKEY_TIMEOUT)。如果 90 秒 (REKEY_ATTEMPT_TIME) 沒有回應,嘗試將停止。如果接收資料後10秒(KEEPALIVE_TIMEOUT)內沒有資料發送,則發送一個空的keepalive資料包,​​以便對方確認回應。

WireGuard 設計為如果沒有資料要傳送,則不執行握手。然而,路由器或電信商裝置 (NAT) 後面的裝置通常使用一種設定 (PersistentKeepalive),定期發送空白資料包,以防止連線資訊被刪除。官方指導建議間隔時間為 25 秒。 StageVPN 應用程式的 VPN 設定預設情況下也使用 25 秒(截至 2026 年 9 月)。

程式碼大小和密碼協商方法之間的差異
程式碼大小和密碼協商方法之間的差異

Q:WireGuard 與 OpenVPN 和 IKEv2/IPsec 有何不同?

WireGuard 是一種減少選項並減少程式碼的協定。 OpenVPN 和 IKEv2/IPsec 是具有許多協商和選項的協議,以適應各種環境。

上圖展示了程式碼大小、傳輸方式、密碼協商方式的差異。下表總結了圖中未顯示的其餘差異。這三種目前都被廣泛使用,但它們的設計理念不同,而不是一種絕對優越。

表 4. 三個協議之間的設計差異(基於每個項目的官方文件和 RFC)
物品WireGuard開放VPNIKEv2/IPsec
開放/標準2017年白皮書,包括2020年Linux內核2001年首次發布,自己的開源協議IETF 標準(IKEv2 是 RFC 7296)
合作夥伴確認方式32位元組公鑰主要是X.509證書,使用者名稱和密碼可以組合憑證、預共享金鑰、EAP 等
關鍵協議往返1 次往返(2 則訊息)多次,包括 TLS 握手。至少 2 次交換(4 則訊息)
網路變化由預設行為(漫遊)導致大部分是重新連接,一些支援取決於設置繼續支援 MOBIKE (RFC 4555)
設定項目幾行:金鑰、位址、允許的 IP 等。許多證書和選項認證方式和策略項目很多
內建作業系統內建Linux內核,其他作為應用程式提供安裝單獨的程式內建適用於 Windows、iOS、Android 等。

速度不僅由協議決定。到伺服器的距離、本地線路品質、伺服器擁塞和設備效能都會產生影響。 WireGuard 程式簡單,加密操作輕,因此在相同條件下往往速度很快。這並不是說它總是很快。如果感知到速度較低,首先要做的就是切換到附近的伺服器進行比較。

Q:什麼是公鑰成為位址的「加密金鑰路由」?

加密金鑰路由是一種將對方的公鑰與對方可以使用的IP位址範圍(AllowedIPs)進行捆綁的方法,並在發送和接收資料包時使用這個捆綁來確定兩者。發送時判斷用目的位址用哪個公鑰加密,接收時檢查解密成功的公鑰是否有資格使用來源位址。

這種結構有兩個優點:首先,只有當來自隧道 IP 的封包使用與該 IP 綁定的公鑰解密時,伺服器才會將其識別為真實封包。即使其他裝置模仿隧道IP,也無法解密,資料包將被丟棄。其次,防火牆規則和密碼規則合而為一。管理員只需要維護一行:“這個公鑰就是這個位址範圍。”

如果您在使用者裝置上將AllowedIPs 設定為0.0.0.0/0 和::/0,則所有IPv4 和IPv6 通訊將成為到一台伺服器的完整隧道。 StageVPN 應用程式使用此方法。下面列出了應用程式從伺服器接收的 WireGuard 配置的主要項目。

表 5. StageVPN 應用程式的 WireGuard 設定項(截至 2026 年 9 月)
配置項StageVPN 應用程式設定對使用者的意義
允許的IP0.0.0.0/0, ::/0保護所有 IPv4/IPv6 通訊都經過隧道的所有設備
域名系統VPN 設定中指定的 DNS 伺服器和查詢也會轉送到隧道中。難以查看電信業者或 Wi-Fi 業者所尋找的網域
隧道IP(位址)將伺服器內的內部位址分配給每個帳戶伺服器使用公鑰和內部位址來識別設備。
最大傳輸單元預設 1280,可能因伺服器設定而異減少行動網路和雙重封裝中的資料包截斷問題
持久保活預設 25 秒即使在路由器或運營商設備後面也能維護連接訊息
連接位置從營運商管理的伺服器國家/地區中選擇或自動選擇所選伺服器的 IP 顯示在造訪的網站上。

MTU 是一次可以發送的資料包的最大大小。 WireGuard 加密原始資料包並將其放回 UDP 資料包中,透過標頭增加大小。因此,隧道中的MTU必須設定得小於線路中的MTU,以防止封包分片或丟棄。保留什麼以及多少存取記錄? 存取記錄儲存通知它向公眾開放。

Q:如果 WireGuard 很強大,我的整個網路使用是否安全?

不。 WireGuard 保護的部分是從您的裝置到 VPN 伺服器,除此之外的安全性由網站的 HTTPS 和電信業者的日誌記錄原則決定。

  1. 我的設備StageVPN 應用程式
  2. 公共 Wi-Fi/通訊網絡咖啡廳·LTE
  3. VPN伺服器StageVPN
  4. 網站/應用程式伺服器銀行/郵寄
  • VPN加密
  • 網站 HTTPS
  • 可能暴露的區域
圖 3. 開啟 StageVPN 應用程式時資料所採用的路徑以及每個部分的保護方式。

在圖中的左側兩部分中,公共Wi-Fi的其他使用者、Wi-Fi營運商和營運商很難看到通訊的內容和目的地。離開 VPN 伺服器後,它就像普通互聯網一樣。因此,該位址是否是以 https:// 開頭的網站變得非常重要。協議之外的風險必須單獨準備。

  • VPN 伺服器之後的部分:不使用 HTTPS 的網站不會從 VPN 伺服器到網站加密。
  • 對營運商的信任:由於其結構,WireGuard 伺服器知道每個裝置的公鑰、隧道 IP 和上次存取位址。您也可以在此處查看連接的目標 IP。根據通訊秘密保護法規定,StageVPN會在93天後自動刪除存取記錄,且不記錄通訊內容。原因是 我們為什麼要揭露我們的訪問記錄保留政策?解釋道。
  • 您的裝置內部的威脅:惡意應用程式或網路釣魚頁面是隧道內部(即您的裝置上)發生的問題。協議並沒有阻止它。劃分是 VPN 能阻止什麼、不能阻止什麼請參考。
  • 連接斷開的那一刻:隧道斷開時,可透過正常路由進行通訊。在執行任何敏感操作之前,請檢查應用程式的連線狀態。使用公共網路的習慣 公共Wi-Fi安全規則我把它組織在 .
  • DNS 和 IPv6:如果另一個 VPN 應用程式或您裝置的單獨 DNS 設定更改了路由,查詢可能會超出隧道。如何檢查 DNS 外洩與 WebRTC 外洩指南它是在

當您首次連線時,iPhone 會要求您新增 VPN 配置,Android 會要求您允許 VPN 連線請求。您必須允許此操作,應用程式才能建立 WireGuard 隧道。按設備訂購 iPhone/iPad 使用入門和 Android 入門提供的範圍是 產品特點和範圍您可以在這裡查看。

Q:為什麼從 Wi-Fi 更改為 LTE 後連線仍然保持?

這是因為 WireGuard 透過公鑰而不是 IP 位址來識別裝置。即使網路發生變化並且 IP 發生變化,伺服器也會記住解密封包最後到達的位址並使用該位址進行回應。

如何透過IP位址區分連接

  • 網路變更時現有連線會遺失
  • 需要再次進行身份驗證並就金鑰達成一致
  • 應用程式通訊可能會在過渡時停止

WireGuard(透過公鑰區分)

  • 如果來自新地址的資料包使用相同的公鑰解密,則它們也被識別為同一方。
  • 更新伺服器回應的位址為新位址
  • 如果鑰匙仍然有效,則無需握手即可立即繼續。
圖 4. 從 Wi-Fi 改為 LTE 時連接方法的差異

這種行為稱為漫遊。智慧型手機每天在行動過程中多次在家庭 Wi-Fi、咖啡館 Wi-Fi 和 LTE/5G 之間切換。如果每次都從頭重新連接 VPN,那麼訊息傳遞和串流媒體將會有一段時間停止。 WireGuard 將此轉換作為協定預設行為來處理。無需單獨設定。

WireGuard 僅使用 UDP。 UDP 是一種輕量級傳輸方法,不需要連接建立過程。它與隧道內來回 TCP 通訊的重傳控制不重疊。有一個已知的問題,當 TCP 分層在 TCP 之上時,當發生遺失時,兩層同時重傳,速度會顯著下降。 WireGuard 在架構上避免了這個問題。

同時,StageVPN會在裝置存取VPN伺服器的IP位址變更時,依法記錄該位址,作為連線記錄之一。漫遊發生的事實意味著它保留在伺服器上。

請知道 僅使用 UDP 的設計有其限制。一些飯店、公司和學校網路會阻止 Web 存取以外的 UDP 通訊。 WireGuard 連線可能無法在這些地方運作。在這種情況下,請嘗試切換到其他 Wi-Fi 或行動數據。如果仍然不起作用,請列出裝置型號、作業系統和應用程式版本以及發生時間。 客戶支援請聯絡我們。

即使 IP 發生變化,裝置也會使用公鑰進行識別,因此不會重新建立連線。
即使 IP 發生變化,裝置也會使用公鑰進行識別,因此不會重新建立連線。

術語表

我一次一句話地組織了本文中的術語。閱讀其他 VPN 文件時也使用相同的含義。

握手
這是兩個裝置在開始通訊之前相互識別並就加密金鑰達成一致的過程。
1-RTT(1 個往返)
這意味著只需發送一次訊息並返回一次即可完成該過程。
靜態金鑰(公鑰/私鑰)
長期保存在您的裝置上並用於驗證您的身分的金鑰對。公鑰是對方已知的,私鑰不會送到裝置外。
臨時鑰匙
該密鑰會在每次握手時重新創建,並在會話結束時刪除。
會話金鑰
作為加密實際資料的握手結果而建立的對稱金鑰。
前向安全
即使長期私鑰後來暴露,此屬性也可以防止已結束會話的內容被釋放。
AEAD
ChaCha20-Poly1305是一種同時處理加密和篡改偵測的密碼方法。
蘋果
這是一個經過計算並附加到密鑰的短值,以確保訊息未被偽造。
重播攻擊
這是一種透過記錄正常訊息並稍後再次發送來欺騙系統的攻擊。
加密金鑰路由
WireGuard 綁定公鑰並允許 IP 範圍確定要加密哪些金鑰以及要接受哪些資料包的方法。
允許的IP
這是特定公鑰的對應方可以發送和接收的 IP 位址範圍。 0.0.0.0/0 和 ::/0 指的是所有位址。
終點
這是對方的實際互聯網地址和UDP端口,伺服器在漫遊時會更新這些值。
漫遊
即使設備的 IP 位址發生變化,相同的隧道也會繼續存在。
網路位址轉換
這是一種路由器或電信公司設備將多個設備的位址轉換為一個公共位址的方法。
保活
這是定期發送的無內容資料包,以防止連接資訊被刪除。
最大傳輸單元
這是一次可以發送的資料包的最大大小。
UDP協定
它是一種輕量級的傳輸方法,發送資料包時無需建立連接過程,也無需重傳。

參考資料

  1. 協議與密碼學 — 訊息格式和大小、密碼學、計時器值(WireGuard 項目)
  2. WireGuard:下一代核心網路隧道 — 設計目標、程式碼大小、加密金鑰路由、漫遊(Jason A. Donenfeld,NDSS 2017 白皮書)
  3. 形式驗證 — 正式驗證研究列表,包括 Tamarin、CryptoVerif 等(WireGuard 專案)
  4. 快速入門 — PersistentKeepalive 設定和建議的間隔(WireGuard 專案)
  5. 噪音協定框架 — IK 握手模式的定義(Noise 專案)
  6. RFC 8439:IETF 協議的 ChaCha20 和 Poly1305 — 資料加密方法(IETF)
  7. RFC 7748:橢圓曲線的安全性 — Curve25519 金鑰交換 (IETF)
  8. RFC 7693:BLAKE2 加密雜湊和 MAC — 哈希和 MAC 計算 (IETF)
  9. RFC 7296:網際網路金鑰交換協定版本 2 (IKEv2) — IKEv2 交換過程 (IETF)
  10. RFC 4555:IKEv2 移動性和多宿主協定 (MOBIKE) — IKEv2 (IETF) 中的網路變更處理
  • #WireGuard
  • #VPN協議
  • #加密
  • #OpenVPN 比較
  • #前向安全