FreeBSD 程式碼庫中新增了新的 VPN 實作 WireGuard。

FreeBSD 原始碼樹已更新為 VPN WireGuard 的新實現,該實現基於由核心 FreeBSD 和 WireGuard 開發團隊聯合製作的內核模組代碼,並獲得 VPN WireGuard 的作者 Jason A. Donenfeld 和 John H. Baldwin 的貢獻),著名的GDB 和FreeBSD 開發者,2000 年代初在FreeBSD 核心中實現了對SMP 和NUMA 的支援。 驅動程式被 FreeBSD (sys/dev/wg) 接受後,其開發和維護將在 FreeBSD 儲存庫中進行。

在程式碼被接受之前,在 FreeBSD 基金會的支持下對更改進行了全面審查,在此期間還分析了驅動程式與其餘內核子系統的交互以及使用內核提供的加密原語的可能性被評估。

為了使用驅動程式所需的加密演算法,擴展了 FreeBSD 內核加密子系統的 API,其中添加了一個工具,允許透過標準加密 API 使用 FreeBSD 不支援的演算法,使用libsodium 庫中的必要演算法。 在驅動程式內建的演算法中,只留下了計算 Blake2 雜湊值的程式碼,因為 FreeBSD 中提供的演算法的實作與固定雜湊值大小相關。

另外,在審核過程中,也進行了程式碼最佳化,提高了多核心CPU的負載分配效率(確保了封包加解密任務向CPU核分配的均勻平衡)。 因此,處理資料包時的開銷接近 Linux 驅動程式實作的開銷。 該程式碼還提供了使用 ossl 驅動程式來加速加密操作的能力。

與先前將 WireGuard 整合到 FreeBSD 的嘗試不同,新的實作使用標準的 wg 實用程序,而不是 ifconfig 的修改版本,這使得統一 Linux 和 FreeBSD 上的配置成為可能。 wg 實用程式以及驅動程式包含在 FreeBSD 原始程式碼中,這是透過更改 wg 程式碼的許可證來實現的(該程式碼現在可以在 MIT 和 GPL 許可證下使用)。 最後一次嘗試將 WireGuard 納入 FreeBSD 是在 2020 年,但以醜聞告終,由於品質低下、對緩衝區的粗心工作、使用存根而不是檢查、實施不完整,已添加的程式碼被刪除協議和違反GPL 許可證。

讓我們提醒您,VPN WireGuard 是在現代加密方法的基礎上實現的,提供非常高的性能,易於使用,沒有複雜性,並且已經在處理大量流量的大量大型部署中證明了自己。 該專案自 2015 年開始開發,並對所使用的加密方法進行了審核和形式驗證。 WireGuard 使用加密金鑰路由的概念,其中涉及將私鑰附加到每個網路介面並使用它來綁定公鑰。

以與 SSH 類似的方式交換公鑰以建立連線。 為了在使用者空間中不執行單獨的守護程序的情況下協商金鑰和連接,使用雜訊協定框架的 Noise_IK 機制,類似於在 SSH 中維護authorized_keys。 資料傳輸是透過封裝在UDP資料包中進行的。 它支援在不斷開連接的情況下更改 VPN 伺服器的 IP 位址(漫遊)並自動進行用戶端重新配置。

加密使用由 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

添加評論