WireGuard VPN 的作者 Jason A. Donenfeld 發布了適用於 Windows 的 WireGuard 用戶端軟體的首個主要版本 1.0,以及帶有連接埠的 WireGuardNT 1.0 驅動程式。 VPN 適用於 Windows 10 和 11 核心的 WireGuard,支援 AMD64、x86 和 ARM64 架構。 Windows 核心元件程式碼採用 GPLv2 許可,用戶端軟體採用 MIT 許可。
此移植版本基於Linux核心主WireGuard實作的程式碼庫,並已轉換為使用Windows核心實體和NDIS網路協定堆疊。與運行在用戶空間並使用Wintun網路介面的wireguard-go實作相比,WireGuardNT透過消除上下文切換並將封包內容從核心複製到用戶空間,顯著提升了效能。與Linux、OpenBSD和FreeBSD的實作類似,WireGuardNT中的所有協定處理邏輯都直接在網路協定堆疊層運作。
版本 1.0 被視為一個里程碑,標誌著許多問題的解決和預期任務的完成,例如:使用 NdisWdfGetAdapterContextFromAdapterHandle() 函數代替將驅動程序狀態存儲在 Reserved 字段中不太安全的方式以及使用未記錄的偏移量;通過攔截系統調用來正確、及時地跟踪 MTU(最大標準代碼)在 MTU(最大標準中使用單元);
我們提醒您,VPN WireGuard 是基於現代加密方法實現的,提供非常高的效能,易於使用,沒有複雜性,並且已經在處理大量流量的大量實施中證明了其良好的效能。該專案自 2015 年開始開發,並對所使用的加密方法進行了審計和形式驗證。 WireGuard 使用基於金鑰的加密路由的概念,其中涉及將私鑰與每個網路介面關聯並使用公鑰進行綁定。
建立連線所需的公鑰交換與 SSH 類似。為了在使用者空間不運行單獨的守護程序的情況下協商金鑰並建立連接,使用了 Noise 協定框架中的 Noise_IK 機制,類似於 SSH 中 authorized_keys 的維護。資料傳輸透過封裝在 UDP 資料包中進行。支援密鑰修改。 IP 地址 VPN 伺服器(漫遊)連線不會中斷,客戶端自動重新設定。
加密使用由 Daniel J. Bernstein、Tanja Lange 和 Peter Schwabe 開發的 ChaCha20 流密碼和 Poly1305 訊息認證演算法 (MAC)。 ChaCha20 和 Poly1305 被定位為 AES-256-CTR 和 HMAC 的更快、更安全的類似物,其軟體實現允許在不使用特殊硬體支援的情況下實現固定的執行時間。為了產生共享金鑰,在 Curve25519 實作中使用了橢圓曲線 Diffie-Hellman 協議,該協議也是由 Daniel Bernstein 提出的。 BLAKE2s(RFC7693)演算法用於雜湊。
來源: opennet.ru
