今日、Linus は VPN インターフェイスを備えた net-next ブランチを自分自身に移動しました
新しい Linux 5.6 カーネルのコード収集は現在進行中です。 WireGuard は、最新の暗号化を実装した高速な次世代 VPN です。 これは元々、既存の VPN のよりシンプルで便利な代替手段として開発されました。 著者はカナダの情報セキュリティ専門家ジェイソン・A・ドネンフェルド氏。 2018 年 XNUMX 月、WireGuard
「Jason が WireGuard をカーネルに含めるプル リクエストを行ったようです」と Linus は 2 年 2018 月 XNUMX 日に書いています。 — この VPN に対する愛をもう一度宣言し、近いうちに合併することを願ってもいいですか? コードは完璧ではないかもしれませんが、私がそれを見たところ、OpenVPN や IPSec の恐ろしさに比べれば、これは本物の芸術作品です。」
ライナスの希望にもかかわらず、合併は2019年半も続いた。 主な問題は、パフォーマンスを向上させるために使用された独自の暗号化機能の実装に関係していることが判明しました。 XNUMX年XNUMX月に長い交渉を経て、
最後に、9 年 2019 月 XNUMX 日、Linux カーネルのネットワーク サブシステム責任者である David S. Miller 氏は次のように述べました。
そして今日、29 年 2020 月 XNUMX 日、変更はカーネルに含めるために Linus に送られました。
他の VPN ソリューションに対する WireGuard の利点は次のとおりです。
- 使いやすい。
- 最新の暗号化を使用: ノイズ プロトコル フレームワーク、Curve25519、ChaCha20、Poly1305、BLAKE2、SipHash24、HKDF など。
- コンパクトで読みやすいコードなので、脆弱性の調査が容易です。
- ハイパフォーマンス。
- 明確で精緻な
仕様 .
WireGuard のコア ロジックはすべて 4000 行未満のコードを必要としますが、OpenVPN と IPSec には数十万行が必要です。
「WireGuard は、暗号化キー ルーティングの概念を使用しています。これには、各ネットワーク インターフェイスに秘密キーを添付し、公開キーを使用してそれをバインドすることが含まれます。 SSH と同様の方法で接続を確立するために公開キーが交換されます。 ユーザー空間で別のデーモンを実行せずにキーをネゴシエートして接続するには、Noise_IK メカニズムを使用します。
ノイズプロトコルフレームワーク SSHでauthorized_keysを維持するのと似ています。 データ送信は、UDP パケットのカプセル化によって実行されます。 クライアントの自動再構成により、接続を切断せずに VPN サーバーの IP アドレスの変更 (ローミング) をサポートします。пишет オープンネット。暗号化用
中古 ストリーム暗号ChaCha20 およびメッセージ認証アルゴリズム (MAC)Poly1305 、ダニエル・バーンスタインによってデザインされました (ダニエル・J・バーンスタイン )、ターニャ・ランゲ、ピーター・シュワーベ。 ChaCha20 と Poly1305 は、AES-256-CTR と HMAC のより高速で安全な類似物として位置付けられており、そのソフトウェア実装により、特別なハードウェア サポートを使用せずに固定実行時間を達成できます。 共有秘密鍵を生成するために、実装では楕円曲線 Diffie-Hellman プロトコルが使用されます。カーブ25519 、これもダニエル・バーンスタインによって提案されました。 ハッシュ化に使用されるアルゴリズムは、BLAKE2 (RFC7693) '。
結果
帯域幅 (メガビット/秒)
ピン (ミリ秒)
テスト構成:
- インテル Core i7-3820QM およびインテル Core i7-5200U
- ギガビット カード Intel 82579LM および Intel I218LM
- Linux 4.6.1
- WireGuard 構成: MAC 用 Poly256 を備えた 20 ビット ChaCha1305
- 最初の IPsec 構成: MAC 用 Poly256 を使用した 20 ビット ChaCha1305
- 256 番目の IPsec 構成: AES-128-GCM-XNUMX (AES-NI を使用)
- OpenVPN 構成: HMAC-SHA256-2、UDP モードを使用した AES 256 ビット同等の暗号スイート
- パフォーマンスは以下を使用して測定されました
iperf3
、30 分間の平均結果を示します。
理論上、WireGuard はネットワーク スタックに統合されるとさらに高速に動作するはずです。 しかし実際には、カーネルに組み込まれている Crypto API 暗号化機能への移行により、これは必ずしも当てはまりません。 おそらく、それらのすべてがまだネイティブ WireGuard のパフォーマンス レベルに最適化されていない可能性があります。
「私の観点からすると、WireGuard は一般的にユーザーにとって理想的です。 すべての下位レベルの決定は仕様内で行われるため、一般的な VPN インフラストラクチャの準備プロセスには数分しかかかりません。 設定を台無しにすることはほぼ不可能です -
писали 2018年のハブレで。 — インストールプロセス詳細に説明されている 公式サイトでは、優れた点を別途記載したいと思います。OpenWRTのサポート 。 この使いやすさとコード ベースのコンパクトさは、キーの配布を排除することによって実現されました。 複雑な証明書システムや企業の恐怖は一切なく、SSH キーと同じように短い暗号化キーが配布されます。」
WireGuard プロジェクトは 2015 年から開発されており、監査を受けており、
出所: habr.com