WireGuard
WireGuard とは何ですか?
WireGuard最新の暗号プリミティブを固定的に採用し、Linux カーネルの一部として動作するシンプルでモダンな VPN プロトコル。
WireGuard は Jason Donenfeld が開発した、単純さと性能を狙う VPN で、コード量(約 4,000 行)は IPsec や OpenVPN より桁違いに小さく、攻撃対象領域が小さいため監査がはるかに容易です。固定かつ交渉不可の暗号スイート(鍵交換に Curve25519、RFC 8439 準拠の認証付き暗号に ChaCha20-Poly1305、ハッシュに BLAKE2s、HKDF、1-RTT の Noise IK ハンドシェイク)を採用し、IPsec/IKE や TLS を悩ませてきた暗号ダウングレードや交渉の複雑さに起因する欠陥を排除しています。相手は静的公開鍵で識別され、Donenfeld はこれを「cryptokey routing(鍵ルーティング)」と呼びます。ハンドシェイクは一時鍵をローテーションすることで前方秘匿性を提供します。
本プロトコルのセキュリティは形式的に検証されています。Donenfeld と Kevin Milner が Tamarin プローバーでハンドシェイクをモデル化し、後続の研究が CryptoVerif で機械化された計算量的証明を与えました。WireGuard は 2020 年のバージョン 5.6 で Linux カーネルにマージされ、他 OS 向けにはユーザー空間実装と wireguard-go があります。UDP/51820 上で動作し、要求のないパケットには沈黙を保ち、IP ローミングを途切れなく乗り越え、Tailscale や Netmaker のようなメッシュオーバーレイを支えます。設計上のトレードオフとして、WireGuard は相手の状態と最後に判明したエンドポイントを保持するため、大規模環境では運用者が動的なアドレス管理と組み合わせて使います。
flowchart LR
A[ピア A<br/>静的公開鍵] -->|Noise IK ハンドシェイク<br/>UDP/51820 上で 1-RTT| B[ピア B<br/>静的公開鍵]
B -->|一時鍵を導出| C[Curve25519 共有秘密]
C --> D[ChaCha20-Poly1305<br/>暗号化トンネル]
D --> E{cryptokey routing}
E -->|AllowedIPs に一致| F[ピアへ配送]
E -->|一致なし| G[パケット破棄]● 例
- 01
Tailscale のメッシュネットワークが内部で WireGuard を用い、ノート PC・サーバー・クラウドインスタンスを接続する。
- 02
自前運用の WireGuard コンセントレーターを UDP/51820 で公開し、リモート社員のアクセスを提供する。
● よくある質問
WireGuard とは何ですか?
最新の暗号プリミティブを固定的に採用し、Linux カーネルの一部として動作するシンプルでモダンな VPN プロトコル。 サイバーセキュリティの ネットワークセキュリティ カテゴリに属します。
WireGuard とはどういう意味ですか?
最新の暗号プリミティブを固定的に採用し、Linux カーネルの一部として動作するシンプルでモダンな VPN プロトコル。
WireGuard からどのように防御しますか?
WireGuard に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
WireGuard の別名は何ですか?
一般的な別名: WireGuard プロトコル。