VPNの著者、ジェイソン・A・ドネンフェルド WireGuard初の重要なクライアントソフトウェアのリリースを発表 WireGuard のために Windows 1.0、およびドライバー WireGuardポート付きNT 1.0 VPN WireGuard コアのために Windows 10 11は、AMD64、x86、およびARM64アーキテクチャをサポートしています。カーネルのコンポーネントコード Windows 本ソフトウェアはGPLv2ライセンスの下で配布され、クライアントソフトウェアはMITライセンスの下で配布されます。
この移植版は、メイン実装のコードベースに基づいています。 WireGuard コアのために Linuxコアエンティティを使用するように変換されました Windows そしてNDISネットワークスタック。実装と比較すると wireguard-goはユーザー空間で実行され、Wintunネットワークインターフェースを使用します。 WireGuardNT は、コンテキスト スイッチを排除し、カーネルからユーザー スペースにパケット コンテンツをコピーすることで、大幅なパフォーマンス向上を実現しています。 LinuxOpenBSDと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
