今天 Linus 將帶有 VPN 介面的 net-next 分支移給了自己
目前,新 Linux 5.6 核心的程式碼收集仍在繼續。 WireGuard 是一款實現現代加密技術的快速下一代 VPN。 它最初是作為現有 VPN 的更簡單、更方便的替代方案而開發的。 作者是加拿大資訊安全專家 Jason A. Donenfeld。 2018年XNUMX月,WireGuard
「我看到 Jason 提出了將 WireGuard 納入核心的 Pull 請求,」Linus 在 2 年 2018 月 XNUMX 日寫道。 — 我可以再次表達我對這個 VPN 的喜愛並希望盡快合併嗎? 程式碼可能並不完美,但我看了它,與 OpenVPN 和 IPSec 的恐怖相比,它是一件真正的藝術品。”
儘管萊納斯有意願,合併還是拖延了一年半。 事實證明,主要問題與加密函數的專有實作有關,這些函數用於提高效能。 經過 2019 年 XNUMX 月的漫長談判,
最後,9 年 2019 月 XNUMX 日,負責 Linux 核心網路子系統的 David S. Miller,
今天,即 29 年 2020 月 XNUMX 日,這些變更已提交給 Linus 並包含在內核中。
WireGuard 聲稱相對於其他 VPN 解決方案的優勢:
- Простой в использовании。
- 採用現代密碼學:Noise協議框架、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF等。
- 緊湊可讀的代碼,更容易調查漏洞。
- 高性能。
- 清晰且詳盡
規格 .
WireGuard 的所有核心邏輯僅佔用不到 4000 行程式碼,而 OpenVPN 和 IPSec 則需要數十萬行程式碼。
「WireGuard 使用加密金鑰路由的概念,其中涉及將私鑰附加到每個網路介面並使用公鑰對其進行綁定。 以與 SSH 類似的方式交換公鑰以建立連線。 為了協商金鑰並連接而無需在用戶空間中運行單獨的守護進程,來自的 Noise_IK 機制
噪音協定框架 類似於在 SSH 中維護authorized_keys。 資料傳輸是透過封裝在UDP資料包中進行的。 它支援在不斷開連接的情況下更改 VPN 伺服器的 IP 位址(漫遊),並自動重新配置客戶端,-пишет 開放網。用於加密
使用 流密碼茶茶20 和訊息認證演算法(MAC)Poly1305 ,由丹尼爾·伯恩斯坦設計(丹尼爾·伯恩斯坦 )、塔妮亞·蘭格和彼得·施瓦貝。 ChaCha20 和 Poly1305 被定位為 AES-256-CTR 和 HMAC 的更快、更安全的類似物,其軟體實現允許在不使用特殊硬體支援的情況下實現固定的執行時間。 為了產生共享金鑰,實作中使用了橢圓曲線 Diffie-Hellman 協定曲線25519 ,也是由丹尼爾·伯恩斯坦提出的。 用於散列的演算法是BLAKE2 (RFC7693) “。
Результаты
頻寬(兆位元/秒)
平(毫秒)
測試配置:
- 英特爾酷睿 i7-3820QM 與英特爾酷睿 i7-5200U
- 千兆位元卡 Intel 82579LM 和 Intel I218LM
- Linux 4.6.1
- WireGuard 設定:256 位元 ChaCha20 與適用於 MAC 的 Poly1305
- 第一個 IPsec 設定:256 位元 ChaCha20 和用於 MAC 的 Poly1305
- 第二個 IPsec 設定:AES-256-GCM-128(使用 AES-NI)
- OpenVPN 設定:AES 256 位元等效密碼套件,附 HMAC-SHA2-256,UDP 模式
- 性能測量使用
iperf3
,顯示 30 分鐘內的平均結果。
理論上,一旦整合到網路堆疊中,WireGuard 的工作速度應該會更快。 但實際上,由於向內核內建的 Crypto API 加密函數的過渡,情況不一定如此。 也許並非所有這些都已優化到本機 WireGuard 的效能等級。
「從我的角度來看,WireGuard 通常是用戶的理想選擇。 所有低階決策均在規格中做出,因此準備典型 VPN 基礎架構的流程只需幾分鐘。 搞亂配置幾乎是不可能的 -
писали 2018 年關於哈布雷。 — 安裝過程詳細描述 在官方網站上,我想單獨指出優秀的OpenWRT 支持 。 程式碼庫的易用性和緊湊性是透過消除金鑰分發來實現的。 沒有複雜的證書系統和所有這些企業恐怖;短加密金鑰的分發方式很像 SSH 金鑰。”
WireGuard專案自2015年開始開發,已審核並通過
來源: www.habr.com