WireGuard: 実際に状況を変えた最新の VPN プロトコル
WireGuard は、5 年連続でデフォルトになった珍しいオープンソース ソフトウェアです。 2020 年以降の Linux カーネル メインライン、NordLynx と Mullvad の背後にあるエンジン、および 1 人が午後に監査できるほど十分に小さいコードベース。これは、それが何であるか、どのように機能するか、なぜ誰もが切り替えたのか、そしてまだ不十分な点はどこにあるのかを詳細に説明するものです。
記事全文は以下に英語で記載されています。
WireGuard の実際とは
WireGuard は、Jason A. Donenfeld によって設計され、2015 年に初めてリリースされたレイヤー 3 VPN プロトコルです。決定的な設計選択はミニマリズムでした。カーネル C コードの行数は約 4,000 行で、これに対し、OpenVPN では約 70,000 行、さまざまな IPsec 実装では 400,000 行以上でした。コードが少ないということは、攻撃対象領域が小さくなり、エンジニアが頭の中に保持できるコードベースが少なくなるということです。その両方が、監査の容易化とセキュリティ バグの減少に直接つながります。
プロトコルは 1 つの仕事を実行し、必要がない限り機能を追加することを拒否します。フィンガープリントを行うための TLS ネゴシエーション フェーズはなく、実行時の暗号スイートの選択も、賢いフォールバック チェーンもありません。モダンなプリミティブのセットが 1 つ得られます。それらを使用するか、別のプロトコルを使用します。
暗号スタック
WireGuard は、ユーザーに選択させる代わりに、小規模で独自の最新プリミティブのセットを使用します。
- Curve25519 楕円曲線 Diffie–Hellman 鍵交換 (一時的および一時的の両方)対称暗号化の場合は
- ChaCha20。メッセージ認証の場合は
- Poly1305。ハッシュの場合は
- BLAKE2s (SHA-3 より高速で軽量) SHA-2).
- HKDF (キー導出用)。
- SipHash24 (アルゴリズムの複雑さによるサービス妨害攻撃に抵抗する内部ハッシュ テーブル用)。
ハンドシェイクは、 ノイズ プロトコル フレームワーク。これは 2 つのメッセージで完了し、対称保護の追加レイヤーのためのオプションの事前共有キーを使用します。これは、Curve25519 に対する将来の量子コンピューティング攻撃に対するヘッジとして役立ちます。これは意図的なものです。 TCP over TCP を伝送する (OpenVPN-TCP の仕組み) と、よく知られた TCP メルトダウン問題が発生します。つまり、内側の TCP 接続が再送信すると、外側の TCP 接続も再送信され、2 つのタイマーがお互いを踏みつけます。 UDP はそれを完全に回避します。
トレードオフは現実的です。TCP/443 のみが許可されている制限的なネットワークでは、WireGuard はまったく機能しません。 HTTPS トラフィックを偽装する OpenVPN-over-TCP-443 に相当するものはありません。グレート ファイアウォール スタイルのネットワークの内側にいる場合は、別のプロトコルか、WireGuard ハンドシェイクを難読化する AmneziaWG のようなラッパーが必要です。
Linux カーネルの採用
WireGuard が OpenVPN のようなユーザースペース デーモンではなく、カーネル モジュールとしての地位にあることが、これが高速である最大の理由です。パケットはホット パス上のカーネル/ユーザー空間の境界を越えることはありません。
- 9 2019 年 12 月: David Miller が Linux net-next ツリーに WireGuard パッチを受け入れました。
- 28 2020 年 1 月 : Linus Torvalds は net-next を統合し、WireGuard をメインラインに導入しました。
- 20 2020 年 3 月: Linux 5.6 に WireGuard が組み込まれて出荷されました。
- 30 2020 年 3 月: Android がジェネリック カーネルにネイティブ カーネル サポートを追加しました。画像.
- 22 2020年6月: OpenBSDがインポートしました。
- 29 2020年11月: FreeBSD 13が続きました。
お世辞にケチで有名なトルヴァルズ氏は、このコードを呼び出しました「芸術作品」 を OpenVPN および IPsec と比較。
独立したセキュリティ分析
2019 年 5 月、INRIA の研究者は、CryptoVerif ツールを使用して WireGuard のハンドシェイクの機械検査された証拠を公開しました。彼らは、このプロトコルが、たとえ長期キーが漏洩したとしても、無制限の並列セッションにわたって、相互認証、IND-CCA セッション キーの機密性、前方機密性、および侵害後のセキュリティを保証することを実証しました。これは、VPN プロトコルとしては非常に強力な正式な結果です。
OpenVPN および IPsec との比較
最寄りの出口までの遅延が 50 ミリ秒の一般的な 1 Gbps 有線接続の場合:
- 直接 (VPN なし): フル ライン レート、最大 5 ミリ秒の追加latency.
- WireGuard: 800 ~ 950 Mbps、+10 ~ 25 ms.
- IKEv2/IPsec: 600 ~ 800 Mbps、同様レイテンシー.
- OpenVPN UDP: 250 ~ 400 Mbps、+30 ~ 60 ミリ秒。
- OpenVPN TCP: 100 ~ 250 Mbps、+50 ~ 100 ms.
VPN をオフにして スピード テスト を実行し、プロバイダーがサポートする各プロトコルで再実行することで、ギャップをご自身で確認できます。
WireGuard が弱い
- 接続状態なし。 WireGuard はピアを静的 IP 割り当てに結び付けます。助けがなければ、ログサーフェスが作成されます。接続しているすべてのクライアントの IP は、サーバー上の公開キーに関連付けられます。商用 VPN は内部 IP をローテーションすることでこれを解決しますが、プロトコル自体が提供しない追加の配管が必要です。
- UDP のみ。 TCP/443 のみが許可されている場所では機能しません。
- 組み込みの NAT トラバーサルはありません。 対称 NAT の背後にあるピアには外部の接続が必要です。 coordinator.
- フィンガープリントが簡単。 ハンドシェイクは独特の形状をしており、ディープ パケット インスペクションによって簡単に識別できます。これが、中国、イラン、ロシアでブロックされる理由の 1 つです。
への実装know
- wireguard-go: Go の公式クロスプラットフォーム ユーザー空間実装。
- BoringTun: Cloudflare の Rust ユーザー空間実装。大規模な本番環境で使用されます。
- wireguard-nt: Windows カーネル ドライバー。2021 年 8 月から利用可能。
- AmneziaWG: ディープ パケット インスペクションをすり抜けるプロトコル難読化を追加するフォーク。
商業的に使用しているのは誰か
Mullvad は、ほぼ誰よりも早く WireGuard サポートを出荷しました。 NordVPN は、静的 IP 割り当ての問題に対処するために、カスタム NAT レイヤーを使用して NordLynx としてラップします。 ProtonVPN はプラン全体でこれをサポートしています。 IVPN と TunnelBear がそれを出荷します。 Tailscale と Cloudflare WARP は両方とも内部で使用します。最新のプロバイダーであれば、ほぼ確実に WireGuard を使用できます。
WireGuard を選択する必要がありますか?
95% のユーザーにとって、「はい」です。以前のバージョンよりも高速で、モバイルバッテリーの使用効率が高く、セットアップが簡単で、正式なセキュリティストーリーがはるかに強力になっています。別の方法を選択する唯一の理由は次のとおりです。
- DPI 経由の WireGuard ハンドシェイクをブロックしている国にいるため、TLS 難読化を備えた TCP/443 経由の OpenVPN または AmneziaWG を選択してください。
- 従来の IPsec コンセントレータへの常時オンのエンタープライズ トンネルが必要です。そのままにしておくIKEv2.
- WireGuard がまだ出荷されていないサービスを使用しています (2026 年には珍しい)。
接続したら、VPN リーク テスト でトンネルが実際に機能していることを確認します。クライアントが正しく構成されていない状態でプロトコルが動作しても、VPN がまったくないのと同じです。
よくある質問
- WireGuard は OpenVPN よりも安全ですか?
- 正しく構成されていれば、どちらも安全です。 WireGuard のコードベースははるかに小さいため、監査が容易になり、攻撃対象領域が減少します。また、OpenVPN にはない正式な機械チェックによるセキュリティ証明の恩恵を受けます。 OpenVPN は、20 年以上にわたる実際の調査と成熟した TLS エコシステムの恩恵を受けています。どちらのプロトコルの最新の構成でも、既知の暗号解読はありません。
- WireGuard が UDP のみを使用するのはなぜですか?
- TCP オーバー TCP トンネリングはよく知られた TCP メルトダウン問題を引き起こすため、内部接続が再送信すると、外部接続も再送信され、2 つの再試行タイマーがお互いを踏みつけます。 UDP はそれを完全に回避します。トレードオフは、WireGuard が TCP/443 上で自身を HTTPS として偽装できないことです。これが、OpenVPN-TCP が厳重にフィルタリングされたネットワークで依然として有用である理由です。
- WireGuard は私の IP を記録しますか?
- ベア プロトコルは、接続ピアをその公開キー (ログの一種) に関連付けます。評判の良い商用 VPN プロバイダーは、WireGuard をローテーション内部 IP と RAM 専用サーバーでラップして、この表面を削除します。独自の WireGuard サーバーを実行している場合、責任はあなたにあります。
- WireGuard は中国やイランでも機能しますか?
- 標準の WireGuard ハンドシェイクは独特の形状をしており、ディープ パケット インスペクションによって簡単にフィンガープリントされるため、厳重にフィルタリングされている国では日常的にブロックされます。 AmneziaWG のようなフォークは、ハンドシェイクを偽装する難読化を追加します。 TLS 難読化を使用した OpenVPN-over-TCP/443 は、もう 1 つの信頼できる代替手段です。
- WireGuard はモバイルバッテリーを消耗させますか?
- いいえ、通常は OpenVPN よりも優れています。 WireGuard のコードベースは小さく、一定のキープアライブ ループがないため、CPU と無線アクティビティが低下します。カーネル実装を備えた IKEv2 は、モバイルでも同様に効率的です。