WireGuard VPN for WindowsおよびWireGuardNT 1.0がリリースされました

WireGuard VPN の作者である Jason A. Donenfeld 氏は、Windows 1.0 用の WireGuard クライアント ソフトウェアの最初のメジャー リリースと、ポート付きの WireGuardNT 1.0 ドライバーをリリースしました。 VPN Windows 10および11カーネル向けのWireGuard。AMD64、x86、ARM64アーキテクチャをサポートします。WindowsカーネルコンポーネントコードはGPLv2ライセンス、クライアントソフトウェアはMITライセンスで提供されています。

この移植版は、Linuxカーネル向けのWireGuardメイン実装のコードベースをベースに、WindowsカーネルエンティティとNDISネットワークスタックを使用するように変換したものです。ユーザー空間で動作し、Wintunネットワークインターフェースを使用するwireguard-go実装と比較して、WireGuardNTはコンテキストスイッチを排除し、パケットの内容をカーネルからユーザー空間にコピーすることで、大幅なパフォーマンス向上を実現しています。Linux、OpenBSD、FreeBSD向けの実装と同様に、WireGuardNTのすべてのプロトコル処理ロジックはネットワークスタックレベルで直接実行されます。

バージョン 1.0 は、次のような多くの問題の解決と意図されたタスクの達成を示すマイルストーンとしてマークされました。 予約済みフィールドにドライバの状態を保存するセキュリティの低い方法や、文書化されていないオフセットの使用の代わりに、NdisWdfGetAdapterContextFromAdapterHandle() 関数を使用すること。 システムコールの傍受による MTU (最大伝送単位) サイズを正確かつ迅速に追跡すること。 コード内で C23 標準を使用すること。

VPN WireGuard は最新の暗号化方式に基づいて実装されており、非常に高いパフォーマンスを提供し、使いやすく、複雑さがなく、大量のトラフィックを処理する多数の大規模な実装で実証されていることを思い出してください。このプロジェクトは 2015 年から開発されており、使用されている暗号化方法の監査と正式な検証が行われています。 WireGuard は、各ネットワーク インターフェイスに秘密キーを関連付け、バインドに公開キーを使用する、キーベースの暗号化ルーティングの概念を使用します。

接続を確立するための公開鍵の交換はSSHと同様です。ユーザー空間で別のデーモンを実行せずに鍵のネゴシエーションと接続を行うために、Noise Protocol FrameworkのNoise_IKメカニズムが使用されます。これはSSHにおけるauthorized_keysの維持に似ています。データ転送はUDPパケットにカプセル化されて行われます。変更もサポートされています。 IPアドレス 接続が中断することなくVPNサーバー(ローミング)が利用でき、クライアントの自動再構成機能も備えています。

暗号化には、Daniel J. Bernstein、Tanja Lange、Peter Schwabe によって開発された ChaCha20 ストリーム暗号と Poly1305 メッセージ認証アルゴリズム (MAC) が使用されます。 ChaCha20 と Poly1305 は、AES-256-CTR と HMAC のより高速で安全な類似物として位置付けられており、ソフトウェア実装により、特別なハードウェア サポートを使用せずに固定の実行時間を実現できます。共有秘密鍵を生成するために、Daniel Bernstein によって提案された Curve25519 実装では楕円曲線 Diffie-Hellman プロトコルが使用されます。ハッシュには BLAKE2s (RFC7693) アルゴリズムが使用されます。

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