開示されている Linuxネットワークサブシステムを担当するDavidS。Millerは、 パッチ net-nextブランチでのWireGuardプロジェクトのVPNインターフェースの実装。 来年の初めに、ネットネクストブランチの累積変化 これらは、Linux5.6リリースの基礎を形成します。
知らない人のために ワイヤガード 彼らはこれを知っている必要があります それはVPNです 最新の暗号化方式に基づいて実装されている、 非常に高いパフォーマンスを提供し、使いやすく、 複雑ではなく、大量のトラフィックを処理する多数の大規模な展開で実証されています。
WireGuardについて
このプロジェクトは2015年から開発されており、使用されている暗号化方式の正式な監査と検証に合格しています。 のサポート WireGuardはすでにNetworkManagerとsystemdに統合されています。 カーネルパッチは、Debian Unstable、Mageia、Alpine、Arch、Gentoo、OpenWrt、NixOS、Subgraph、およびALTの基本ディストリビューションの一部です。
WireGuardは、暗号化キールーティングの概念を使用しています。 これには、秘密鍵を各ネットワークインターフェイスにバインドし、それを使用して公開鍵をバインドすることが含まれます。 接続を確立するための公開鍵の交換は、SSHとの類推によって行われます。
ユーザースペースで別のデーモンを起動せずにキーをネゴシエートして接続するには、 Noise ProtocolFrameworkのNoise_IKメカニズムが使用されます、SSHでの許可されたキーの保守と同様です。 データは、UDPパケットのカプセル化によって送信されます。 VPNサーバーのIPアドレス変更のサポート (ローミング)接続を中断せずに、クライアントを自動的に再構成します。
暗号化には、ChaCha20ストリーム暗号化が使用されます また、Poly1305(MAC)メッセージ認証アルゴリズムは、AES-256-CTRおよびHMACのより高速で安全な類似物として位置付けられており、そのソフトウェア実装により、特別なハードウェアサポートを必要とせずに固定実行時間を実現できます。
久しぶりにWireGuardがついにLinuxに組み込まれるようになります
促進するために様々な試みがなされてきた のコード Linux内のWireGuard、 しかし、生産性を向上させるために使用された暗号化関数の独自の実装がバインドされているため、成功していません。
これらの関数は当初、追加の低レベルAPIとしてカーネルに提案され、最終的には通常のCryptoAPIに置き換わる可能性があります。
カーネルレシピ会議での交渉後、 WireGuardの作成者 XNUMX月に彼らはパッチを変更するという妥協の決定をしました 暗号コアAPIを使用するため。WireGuard開発者はパフォーマンスと一般的なセキュリティに関して不満を持っています。
APIは引き続き開発することが決定されましたが、別のプロジェクトとしてです。
XNUMX月の後半、カーネル開発者はコミットメントを行いました そして、コードの一部をメインカーネルに転送することに同意しました。 実際、一部のコンポーネントはカーネルに転送されますが、個別のAPIとしてではなく、CryptoAPIサブシステムの一部として転送されます。
たとえば、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リポジトリで行われますが、これまでユーザーには機会があり、パッチの別のバージョンの必要性も作業フォームでサポートされます。