WireGuard VPNとは?(詳細ver.)

最速のVPN暗号化プロトコルの仕組み
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/698a6c49-3e9f-c8bf-76db-d2d6a337c270.png)
バーチャルプライベートネットワーク（VPN）からプライバシーとデータセキュリティを得ることは簡単に思えるかもしれません。VPNをオンにし、接続を待つだけで数秒以内にIPアドレスが隠され、データが暗号化されます。しかし、オンライン匿名性は魔法のようなものではありません。VPNの裏で動いている技術は複雑で多段階のプロセスです。

VPNは主にネットワークですが、ユーザーデータを転送中に安全にするために複数の暗号化段階を処理する通信プロトコル（communication protocols）上で動作します。WireGuardは比較的新しいVPN暗号化プロトコルですが、現時点で最速です。

WireGuardの速度は、暗号化プロセスの各段階で慎重に選ばれた効率的なプロトコルと、その非常に簡潔なコードベースに由来します。伝統的なVPNの大多数がこのプロトコルを使用していないかもしれませんが、新しい分散型VPN（dVPN）ではこのプロトコルが選ばれることが多く、今では多くのVPNが急速に追随しています。

この記事では、WireGuardの暗号化プロセスの段階、その利点と欠点、およびdVPNの優れたプライバシー機能をどのように独自に強化するかを解説します。

# WireGuard VPNとは何か？
WireGuardは、現代の多くのVPNがユーザーのデータとプライバシーを保護するために使用する暗号化ルーティング手順を提供するオープンソースの通信プロトコルです。WireGuardは、公開鍵暗号プロセスの各段階で最新のプロトコルを使用し、現時点で最速のVPNプロトコルとなっています。

WireGuardは2015年に開始され、2020年にLinux用としてリリースされました。現在では、主要なオペレーティングシステムとデバイスすべてに対応しており、新しいVPNサービスによってますます採用されています。その高速度、オープンソースの監査可能性、低データオーバーヘッドにより、WireGuardは主流のVPNで使用されている通信プロトコルをまもなく凌駕することが期待されています。

Nymの包括的なガイドでデータ暗号化の詳細について学びましょう(https://qiita.com/pseudonym2/items/b8ad772b77ed5aaa37be)。

# WireGuard VPNの仕組み
WireGuardは、ユーザーのマシンとVPNまたはプロキシサーバーの両方で実行され、暗号化されたトラフィックが迅速かつ安全に通過できるようにします。WireGuardプロトコルを使用してVPNサーバーに接続すると、バックグラウンドで以下のようなことが行われます。![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672851/db8d6008-70e3-0f28-e0a2-8aa18a7f44b0.png)
### ハンドシェイク（handshake）
鍵やデータの交換前に、クライアントはサーバーにリクエストを送り、ハンドシェイクと呼ばれる手順を開始します。サーバーは公開鍵をクライアントに送信して応答します。WireGuardはNoiseからのNoise_IKハンドシェイクを使用し、キーコンプロマイズなりすまし攻撃やリプレイ攻撃を回避し、ハンドシェイカーのアイデンティティを隠し、完全前方秘匿性を提供するなど、いくつかのセキュリティとプライバシーの利点があります。

### 鍵交換と導出（key exchange & derivation）
次に、サーバーとクライアントはお互いのアイデンティティを確認するために公開鍵を交換します。鍵交換のために、WireGuardはCurve25519を使用します。これは、Diffie-Hellman公開暗号関数に基づいた最先端の楕円曲線暗号です。

サーバーとクライアントは交換された鍵を使用して、彼らだけが知っている一意の鍵を作成します。これはKey Derivation Function（KDF）を通じて行われます。WireGuardは鍵導出段階でHKDF（またはHMACベースのKDF）を使用し、高度に安全な二段階プロセスと鍵長に関する柔軟性のためにVPNルーティングにおいて利点があります。この導出鍵は、クライアントとVPNサーバー間の対称暗号化に使用されます。

### 暗号化と認証（encryption and authentication）
暗号化と認証の段階では、WireGuardはChaCha20-Poly1305を使用します。これは、ChaCha20ストリーム暗号とPoly1305メッセージ認証コードの組み合わせです。このアルゴリズムは非常に高性能で、一般的にAES-GCMよりも高速です。

### ハッシュ化（Hashing）
ハッシュ化（Hashing）とは、入力データを固定サイズの文字列に変換するプロセスを指します。一度変換されると、出力データ（ハッシュ値）は、データパケットが転送中に操作または変更されたかどうかを判断するために使用できます。もしそうなら、受信者にとってのハッシュ値は送信者にとってのハッシュ値とは異なるでしょう。WireGuardはハッシュ関数としてBlake2を使用し、これは以前の標準（例えばSha-1および-2）よりも高速で最適であり、Sha-3のような高度な標準と同等のセキュリティを提供します。

### トランスポート（Transport）
トランスポートレイヤーは、トラフィックのデータを暗号化されたパケットに変換し、ウェブ上で送信します。WireGuardは、ユーザーデータグラムプロトコル（UDP）を使用して暗号化データをラップします。この通信プロトコルは、データの迅速かつ安全な移動を可能にします。TCPはVPNネットワーク上で効率が悪く、データオーバーヘッドが大きく、「TCPメルトダウン」の問題があるため、使用されません。

### ルーティング（routing）
デバイス上でWireGuardを使用してVPN暗号化のこの複雑だが非常に効率的なプロセスを経た後、データパケットの受信者の認証とセキュリティが確保され、VPNサーバーにルーティングされます。そこでは、トラフィックのIPアドレスがVPNサーバーのパブリックIPアドレスに置き換えられます。

### 復号化(decription)
VPNサーバーがデータを自サーバーに暗号化するため、そこに到着するとその暗号化層が削除または復号化されます。しかし、デバイスからウェブ上の意図された受信者までの元の接続がHTTPSを通じて保護されている場合、暗号化層が1つ残り、VPNが平文データを見るのを防ぎます。VPN暗号化が削除されると、VPNはデータを送信する最終的な目的地を確認できます。デフォルトでHTTPS暗号化が施されているため、WireGuardを搭載したVPNを使用することでトラフィックはエンドツーエンドで暗号化されます。

## WireGuardの互換性
WireGuardは、他のプロトコルと比較して互換性が制限されていると批判されることがあります。しかし、これは主に特定のハードウェア互換性（ルーターなど）に関連しており、オペレーティングシステムではありません。

・オペレーティングシステム
WireGuardは、Windows、Mac OS、Linux、Android、iOS、BSDの最新バージョンなど、ほとんどの主要なオペレーティングシステムおよびデバイスに対応しています。

・ルーター
WireGuardのハードウェアの問題は、OpenVPNのように多くのVPNルーターと広く互換性がないことです。これは、WireGuardが市場に出てからわずか4年であるため予想されることです。今後数年間で新しいルーターハードウェアがリリースされると、この互換性のギャップは急速に縮小するとNymは予想しています。

# WireGuard VPNの利点
### 速度
WireGuardは、VPN通信プロトコルとしては非常に高速で、OpenVPNよりも最大50％高速です。OpenVPNは20年間業界標準とされてきました。

### ミニマルなコードベース
WireGuardのコードは非常にスリムで、わずか4,000行です。比較すると、OpenVPNのバージョンは約100,000行のコードを持っています。これにより、WireGuardのパフォーマンスは非常に効率的です。

### 高いセキュリティ
WireGuardは、鍵交換のために最先端の暗号化アルゴリズムと公開鍵暗号を使用します。これらの暗号化標準は現時点では破られていません。さらに、この簡潔で軽量なコードベースは攻撃の可能性を大幅に減少させ、複雑なOpenVPNでは見落とされる設定エラーによる漏洩や攻撃の脆弱性を軽減します。

### 迅速な再接続
WireGuardはステートレスに設計されており、ピア間の継続的な接続状態を維持する必要がありません。この設計により、中断が発生してもセッションや接続状態を再確立する必要がないため、シームレスな処理が可能です。パケットが再び流れ始めると、WireGuardは元の位置から再開できます。

### オープンソース
WireGuardのコードはオープンソースであり、誰でも監査できます。しかし、オープンソースコードが容易に監査可能かどうかは、そのコードの大きさに依存します。この点で、WireGuardはコードベースの小ささと簡潔さで注目に値します。これにより、プロトコルが非常に効率的であるだけでなく、公開監査も容易になります。


# WireGuard VPNの欠点
### 難読化の欠如
WireGuardには組み込みの難読化機能がありません。シンプルで高速かつ安全なVPNプロトコルとして設計されており、シンプlicityとパフォーマンスに焦点を当てています。しかし、VPNが使用されている事実を隠すためのトラフィック難読化機能は含まれていません。これにより、ネットワーク監視ツールやディープパケットインスペクション（DPI）を行うエンティティによってWireGuardトラフィックが識別される可能性があります。

WireGuardのルーティング手順に難読化を追加するために、Obfsproxy、Shadowsocks、またはStunnelなどの他のツールを併用することができます。

### すべてのVPNに統合されていない
市場の主流のVPNの大多数はまだWireGuardを使用しておらず、数十年間OpenVPNを使用してきました。これは、WireGuardがVPNの分野で比較的テストされていないことを意味します。しかし、これも急速に変化しており、ますます多くのVPNがWireGuardを統合しています。

### ルーターサポートの欠如
WireGuardは現在、OpenVPNのように多くのVPNルーターでサポートされていません。これは主に、これらのハードウェアがWireGuardの登場前に設計およびプログラムされていたためです。Nymは今後数年間でWireGuardのルーター互換性のシフトを予想しています。

# WireGuardプロトコル対他のVPNプロトコル
WireGuardは市場のVPNが使用する唯一の通信プロトコルではなく、プロトコル間の違いはVPNのパフォーマンスやユーザープライバシーにとって重要です。

## WireGuard対OpenVPN
OpenVPNは市場の大多数のVPNが使用する通信プロトコルです。2001年に導入され、VPN暗号化ルーティングの業界標準とされています。しかし、WireGuardとOpenVPNの間にはパフォーマンスに大きな違いがあります。Nymの詳細な比較をご覧ください。

OpenVPN: ユーザーとプログラマーに柔軟な構成を提供し、使用する暗号化暗号の幅広い選択を可能にします。また、VPNルーターとの互換性が広く、企業の設定にもよく使われます。
WireGuard: OpenVPNよりもはるかに高速で、データオーバーヘッドが大幅に小さく、セキュリティも同等です。

## WireGuard対IPSec/IKEv2
IPSec（インターネットプロトコルセキュリティ）とIKEv2（Internet Key Exchange version 2）はインターネット通信を保護するためのプロトコルです。これらはしばしば一緒に使用されます（IPSec/IKEv2）。

IPSec/IKEv2: OpenVPNのように、幅広い暗号プロトコルをサポートしていますが、非常に大きなデータオーバーヘッドがあり、コードベースが数十万行にも及びます。これにより、エラーや設定ミスが発生しやすく、監査も困難になります。
WireGuard: シンプルで効率的ですが、ユーザーに暗号化暗号の選択肢はありません。

## WireGuard対PPTP
Point-to-Point Tunneling Protocol (PPTP)は、最も古いVPN暗号化プロトコルの1つです。1990年代半ばにMicrosoftによって導入され、一部のレガシープラットフォームで現在も使用されています。

PPTP: 現代の基準では弱いとされるRC4暗号を使用したMPPE（Microsoftポイント・ツー・ポイント暗号化）を使用します。しかし、比較的高速で設定が簡単であり、速度が保護よりも優先されるコンテキストでは役立つかもしれません。
WireGuard: 非常に高速であり、最新の暗号化アルゴリズムを使用しているため、PPTPの速度とセキュリティのトレードオフが不要です。

## WireGuard対L2TP
L2TP (Layer 2 Tunneling Protocol)は、PPTPとL2F (Layer 2 Forwarding Protocol)の拡張です。

L2TP: L2TP自体は暗号化を提供せず、IPsecと組み合わせてデータを暗号化し、転送を保護するために使用されます（L2TP/IPsec）。
WireGuard: L2TPはユーザーデータを暗号化しないため、WireGuardとの比較はあまり意味がありません。

# WireGuard: 分散型ネットワークの促進
オンラインプライバシーに関して、WireGuardが非常に重要な技術である理由は、プライバシーに焦点を当てた分散型VPN（dVPN）(https://qiita.com/pseudonym2/items/9d45bf63ddfd17edd0ae )に対して高速かつ安全なルーティングを提供できることです。

一方で、伝統的なVPNの集中型およびシングルサーバーアーキテクチャは、ユーザーにとって十分なプライバシー保護を提供したことはありません。これらはデータ漏洩、大量監視要求への協力、広告主のバックドア、データブローカーへの販売に脆弱です。一方、dVPNは有望ですが、速度が問題です。トラフィックを隠す(https://qiita.com/pseudonym2/items/8bec88e3983e94c55b8f )ために通過するサーバーが増えるほど、すべてが遅くなります。機密メールを送信する場合には問題ではないかもしれませんが、包括的なネットワークルーティングでは問題となります。

WireGuardはプライバシーのための画期的なソリューションです。高速かつ効率的で、効率的なルーティングプロトコルを提供し、ユーザーが多ホップdVPNの高度なプライバシー保護の利益を享受しながら、速度をあまり妥協することなく使用できます。

NymVPNはユーザーに選択肢を提供します。非常に高速でプライベートな日常の保護のためにWireGuardによる2ホップdVPNモードを簡単に切り替えることができます。あるいは、メッセージングや暗号取引などの高度に機密性の高いユースケースの場合、Sphinxプロトコル(https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6 )によって提供される無比の5ホップミックスネットモードを選択できます。このプロトコルはミックスネットトラフィックを処理するために特別に設計されています。

プライバシーのための最適なVPNを選ぶ際には、WireGuardを使用した分散型ネットワークが、プライバシーを犠牲にすることなく、インターネットを簡単かつ迅速に体験できることを考慮してください。

# WireGuard VPN: FAQs
### WireGuardはVPNですか？
WireGuardはVPNをサポートする暗号化通信プロトコルです。VPNは、ユーザートラフィックを暗号化形式でルーティングするサーバーのネットワークです。WireGuardは、ネットワーク全体の暗号化とトランスポートの段階を処理します。

### WireGuardプロトコルは安全ですか？
WireGuardは非常に安全な通信プロトコルです。VPNルーティングプロセスの各段階で最新の最先端暗号化を使用しています。簡潔なコードベースにより、攻撃の対象が小さくなり、他のプロトコルよりも特異的に安全です。最終的に、256ビットの暗号化プロトコルは破られておらず、そのために必要な計算リソースは現在存在しません。

### WireGuardは無料ですか？
はい、これはオープンソースソフトウェアです。誰でもダウンロード、変更、使用でき、自分でVPNを設定することも可能です。しかし、ユーザーに本当のプライバシー保護を提供するWireGuardを搭載した適切に設計されたVPNは、多くの作業と保守が必要です。オンラインプライバシーを本当に守るためには、多少の費用がかかることを期待するのが合理的です。

### WindowsやMacでWireGuardを使用できますか？
はい、WireGuardはすべての主要なオペレーティングシステムおよびデバイスと互換性があります。WindowsおよびMac用のWireGuardも利用可能です。

### WireGuardをサポートするVPNはどれですか？
NymVPN、NordVPN、Surfshark、CyberGhostがWireGuardをサポートしています。また、Mullvad、StrongVPN、TorGuard、VyprVPN、Hide.Me、PIAでも利用可能です。

### WireGuardをサポートしていないVPNはどれですか？
残念ながら、まだ多くのVPNがWireGuardをサポートしていません。例としては、ExpressVPN、PrivateVPN、Hide My Assがあります。

### WireGuardを使用する無料サーバーはありますか？
まだ多くの無料VPNはWireGuardを実装していません。例外としては、WindscribeとTunnelBearがあります。しかし、プライバシーの理由から無料のVPNサービスを使用することはお勧めしません。これらのサービスは、広告の挿入やユーザーデータの販売によって収益を上げていることが多いためです。

# 参考リンク

- [Nym公式サイト](https://nymtech.net/)
- [Nymのミキシングネットワーク - Wikipedia](https://ja.wikipedia.org/wiki/Nymミックスネット)
- [Nymホワイトペーパー](https://nymtech.net/nym-whitepaper.pdf)
- [分散型VPN と中央集権型VPN:違いの全て](https://note.com/koko_crypto/n/n71fe7e92b68a)
- [ミックスネットとは何か？ VPNによる比類なきオンラインプライバシー](https://note.com/koko_crypto/n/n302e7516f691?magazine_key=m0129d65e3526)
- [Sphinx暗号-Nymを支える匿名データフォーマット](https://qiita.com/pseudonym2/items/107cf005e9cab0b165b6)
- [ココナッツ認証（Coconut Credentials）とは？- プライバシーを保護するゼロ知識証明技術](https://qiita.com/pseudonym2/items/b2739ae32f4fb29de0b6)

# コミュニティ

- [Nym日本コミュニティ - Telegram](https://t.me/nymjapanese)
- [Nym日本コミュニティ - Discord](https://discord.com/invite/nym)
- [Nym日本コミュニティ - LINEオープンチャット](https://line.me/ti/g2/0YGYYq4EoQZ8fL5FYQmqU4O9SRuE_a6YX19GtA?utm_source=invitation&utm_medium=link_copy&utm_campaign=default)

- [Nymプロジェクト日本語アカウント - X](https://x.com/nymproject_jp)