VPN WireGuard は net-next ブランチに受け入れられ、Linux 5.6 カーネルに組み込まれる予定です。

デビッド・ミラー(デビッド・S・ミラー)、Linux カーネルのネットワーク サブシステムを担当し、 受け入れた ネット次の支店へ パッチ プロジェクトからの VPN インターフェースの実装 ワイヤガード。 来年初め、net-next ブランチに蓄積された変更は、Linux カーネル 5.6 のリリースの基礎を形成します。

WireGuard コードをメイン カーネルにプッシュする試みは過去数年間にわたって行われてきましたが、パフォーマンスを向上させるために使用される暗号化関数の独自の実装に関連付けられていたため、依然として成功していませんでした。 当初、これらの関数は 提案 追加の低レベル Zinc API としてカーネルに提供され、最終的には標準の Crypto API を置き換える可能性があります。

Kernel Recipes カンファレンスでの議論を受けて、WireGuard の作成者は XNUMX 月に 妥協の決断をした コアで利用可能な Crypto API を使用するようにパッチを転送します。これに対して、WireGuard 開発者はパフォーマンスと一般的なセキュリティの分野で不満を抱いています。 Zinc API の開発は別のプロジェクトとして継続することが決定されました。

XNUMX 月、カーネル開発者は 行こう 妥協に応じて、コードの一部を Zinc からメイン カーネルに転送することに同意しました。 基本的に、一部の Zinc コンポーネントはコアに移動されますが、別個の API としてではなく、Crypto API サブシステムの一部として移動されます。 たとえば、Crypto API はすでに 含まれた WireGuard で準備された ChaCha20 および Poly1305 アルゴリズムの高速実装。

メインコアでの WireGuard の今後の提供に関連して、プロジェクトの創設者 объявил リポジトリの再構築について。 開発を簡素化するために、分離して存在するように設計されたモノリシックな「WireGuard.git」リポジトリは、メイン カーネル内のコードの作業を整理するのに適した XNUMX つの別個のリポジトリに置き換えられます。

  • ワイヤーガード-linux.git - Wireguard プロジェクトからの変更を含む完全なカーネル ツリー。そこからのパッチはカーネルに含めるためにレビューされ、定期的に net/net-next ブランチに転送されます。
  • Wireguard-tools.git - ユーザー空間で実行されるユーティリティとスクリプト (wg や wg-quick など) のリポジトリ。 リポジトリを使用して、ディストリビューション用のパッケージを作成できます。
  • ワイヤーガード-linux-compat.git - モジュールのバリアントを含むリポジトリ。カーネルとは別に提供され、古いカーネルとの互換性を確保するために compat.h 層が含まれます。 主な開発は Wireguard-linux.git リポジトリで実行されますが、ユーザーに機会とニーズがある限り、別のバージョンのパッチも実用的な形式でサポートされます。

VPN WireGuard は最新の暗号化方式に基づいて実装されており、非常に高いパフォーマンスを提供し、使いやすく、複雑さがなく、大量のトラフィックを処理する多数の大規模導入で実証されているということを思い出してください。 このプロジェクトは 2015 年から開発が進められており、監査を受けており、 正式な検証 使用される暗号化方式。 WireGuard のサポートはすでに NetworkManager と systemd に統合されており、カーネル パッチは基本ディストリビューションに含まれています Debianが不安定、Mageia、Alpine、Arch、Gentoo、OpenWrt、NixOS、 サブグラフ и 頭の中.

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).

テスト パフォーマンス WireGuard は、OpenVPN (HMAC-SHA3.9-3.8 を使用した 256 ビット AES) と比較して、2 倍高いスループットと 256 倍高い応答性を実証しました。 IPsec (256 ビット ChaCha20+Poly1305 および AES-256-GCM-128) と比較して、WireGuard はパフォーマンスがわずかに向上し (13 ~ 18%)、遅延が低くなりました (21 ~ 23%)。 テストは、プロジェクトによって開発された暗号化アルゴリズムの高速実装を使用して実行されました。カーネルの標準暗号化 API に転送すると、パフォーマンスの低下につながる可能性があります。

VPN WireGuard は net-next ブランチに受け入れられ、Linux 5.6 カーネルに組み込まれる予定です。

出所: オープンネット.ru

コメントを追加します