WireGuard暗号化

WireGuard®暗号化

更新

WireGuard®暗号化は全プランでご利用いただけます。

WireGuard®は、Jason Donenfeld氏が設計したオープンソースのVPNプロトコルです。
2020年にLinuxカーネル5.6へ正式統合され、現在ではLinux、Windows、macOS、iOS、Androidなど主要プラットフォームで動作します。
TailscaleはこのWireGuardをコアの暗号化レイヤーとして採用し、すべての通信をエンドツーエンドで保護します。

このページでは、WireGuardの技術的な仕組みと、TailscaleがWireGuardをどのように活用しているかを解説します。

WireGuardの特徴

WireGuardは、OpenVPNやIPsecといった従来のVPNプロトコルと比較して、次の点で優れています。

コードベースの小ささ
WireGuardの実装は約4,000行のコードで構成されています。
OpenVPNが60万行超、IPsecが数十万行規模であることと比較すると、監査・検証が容易であり、脆弱性が混入するリスクも大幅に低減されます。
モダンな暗号アルゴリズムの採用
WireGuardは特定の暗号スイートを固定採用する設計方針(Cryptokey Routing)を取ります。
ネゴシエーションにより弱い暗号方式が選択されるダウングレード攻撃のリスクがなく、設定ミスによる暗号強度の低下が原理的に発生しません。
高いパフォーマンス
カーネル空間で動作するため、ユーザ空間で処理するOpenVPNと比較してオーバーヘッドが小さく、スループットが高くレイテンシも低いです。
ベンチマークではOpenVPNの数倍以上のスループットを記録することが多く、モバイル環境でのバッテリー消費も抑制されます。
高速な接続確立
ハンドシェイクが非常に軽量で、接続確立が高速です。
ネットワーク切り替え(Wi-FiからLTEへの切り替えなど)後も瞬時に再接続するため、モバイルユーザの利便性が高まります。

暗号アルゴリズム

WireGuardが採用する暗号アルゴリズムは固定されており、設定による変更はできません。
これはセキュリティ上の意図的な設計です。

WireGuardで採用している暗号アルゴリズム
用途 アルゴリズム
データの暗号化・認証 ChaCha20-Poly1305
鍵交換 Curve25519(ECDH)
ハッシュ・鍵導出 BLAKE2s
ハンドシェイクフレームワーク Noise Protocol Framework(Noise_IKpsk2)
SipHash(パケット索引用) SipHash24
WireGuardの仕組み
WireGuardの仕組み

ChaCha20-Poly1305はAES-GCMと同等の安全性を持ちながら、AESハードウェアアクセラレーションが利用できない環境(一部のモバイルデバイスや組み込み機器など)でも高速に動作します。
Curve25519はNSAによる影響が疑われるNIST曲線(P-256等)を避けた選択であり、プライバシー重視の観点からも支持されています。

TailscaleにおけるWireGuardの活用

TailscaleはWireGuardをネットワーク層の暗号化エンジンとして採用していますが、そのまま使うのではなく、大規模な企業ネットワークに対応するための機能を上位レイヤーで提供しています。

鍵管理の自動化
通常のWireGuardでは、公開鍵・秘密鍵の生成、配布、ローテーションを管理者が手動で行う必要があります。
Tailscaleではこれを完全に自動化します。
各デバイスがTailscaleに参加する際に鍵ペアを自動生成し、コントロールプレーンを介して公開鍵を安全に配布します。
鍵のローテーションも定期的に自動実行されます。
コントロールプレーンとデータプレーン

素のWireGuardが提供するのはデータプレーン(暗号化トンネル)のみです。
コントロールプレーン——デバイスの認証、公開鍵の配布・管理、アクセスポリシーの配信、接続先の案内——はWireGuardの仕様に含まれておらず、自前構築の場合は管理者が設定ファイルを手書きするだけです。

Tailscaleはこのコントロールプレーンをマネージドサービスとして実装しています。
携帯網(3GPP)でいえば、シグナリング(位置登録・認証・接続先制御)を担うコントロールプレーンと、実際のパケット転送を担うデータプレーンが分離されている構造と同じです。
Tailscaleのコントロールプレーンはシグナリングのみを担い、データプレーン(WireGuardトンネル)を流れる通信内容には一切アクセスできません。
エンドツーエンド暗号化はデバイス間で直接確立されるため、Tailscale社を含む第三者が通信を傍受することは技術的に不可能です。

NATトラバーサルとの組み合わせ
WireGuardはP2P接続を前提とした設計ですが、現実のネットワーク環境ではNATやファイアウォールにより直接接続できないケースが多くあります。
TailscaleはSTUN/ICEによるNATトラバーサルと、直接接続が不可能な場合のDERPリレーを組み合わせることで、あらゆる環境でWireGuardトンネルを確立します。
いずれの接続方式でも、WireGuardによるエンドツーエンド暗号化は維持されます。
IPアドレスの自動割り当て

WireGuardはIPアドレスの管理機能を持ちません。
Tailscaleはこれを補うため、tailnet内の各デバイスにIPアドレスを自動的に割り当てます。

IPv4アドレスは 100.64.0.0/10 のCGNAT(Carrier-Grade NAT)アドレス範囲から割り当てられます。
具体的には 100.64.0.0 から 100.127.255.255 の範囲であり、各デバイスには 100.x.y.z 形式のアドレスが1つ付与されます。
このアドレスはデバイスが同じtailnetに所属している限り変わらず、デバイスを再起動したりネットワークを切り替えても維持されます。

IPv6アドレスは fd7a:115c:a1e0::/48 の範囲から割り当てられます。
MagicDNSと組み合わせることで、IPアドレスを意識せずホスト名でアクセスすることも可能です。

CGNAT範囲を使用する理由は、このアドレス帯がインターネット上のパブリックIPアドレスとも、一般的な企業内のプライベートIPアドレス(192.168.0.0/1610.0.0.0/8172.16.0.0/12)とも重複しないためです。
既存のネットワーク構成を変更することなく、Tailscaleを透過的に追加導入できます。

エンドツーエンド暗号化の意味

Tailscaleの暗号化が「エンドツーエンド」である点は、企業セキュリティにおいて重要な意味を持ちます。

従来の集中型VPNでは、VPNゲートウェイがすべてのトラフィックを一度復号したうえで転送します。
これはVPNゲートウェイが侵害された場合に、そこを通過するすべての通信が危険にさらされることを意味します。

TailscaleのWireGuardによるエンドツーエンド暗号化では、送信元デバイスで暗号化されたデータは宛先デバイスにのみ復号できます。
経路上の中継点(DERPリレーサーバ、ルータ、クラウドプロバイダのネットワーク機器など)はすべて暗号化されたパケットを転送するだけで、内容を知ることができません。

WireGuard単体での自前構築 vs Tailscale

「WireGuardがあれば自分でVPNを構築できる」という意見はその通りです。
WireGuardはOSSであり、LinuxサーバにインストールしてVPNを構成することは技術的に可能です。
ただし、WireGuard自体はあくまで暗号化トンネルを張るプロトコルであり、企業ネットワークの運用に必要な機能の大半は自前で設計・実装・維持する必要があります。
Tailscaleはその「WireGuardの上に必要なすべて」をマネージドサービスとして提供します。

WireGuardとTailscaleの対比表
WireGuard vs Tailscale
WireGuard単体での自前構築とTailscaleの対比表
項目 WireGuard単体(自前構築) Tailscale
暗号化エンジン WireGuard WireGuard(同一)
鍵ペアの生成 管理者が手動でwg genkeyを実行 デバイス参加時に自動生成
公開鍵の配布 各ピアの設定ファイルに手動で記述 コントロールプレーンが自動配布
鍵のローテーション 手動(忘れがち・運用負荷大) 180秒ごとに自動ローテーション
NATトラバーサル 原則として対応なし。ポート開放・転送が必要 STUN/ICEで自動処理。設定変更不要
CGNAT・厳格なFW越え 困難。グローバルIPを持つサーバが必須 DERPリレーが自動フォールバック
IPアドレス管理 アドレス帯の設計・割り当てを自前で管理 100.x.y.z を自動割り当て
アクセス制御(ACL) iptables/nftablesを手動で設定・管理 JSON形式のACLポリシーで一元管理
ユーザ認証・SSO 別途実装が必要(PAM、証明書等) Google/Microsoft/Okta等のIdPと標準連携
多要素認証(MFA) 別途実装が必要 IdP側のMFA設定がそのまま適用
デバイス管理 設定ファイルの手動追加・削除 管理コンソールまたはAPIで一元管理
デバイス承認 仕組みなし(設定ファイルへの追記で参加) 管理者承認フローを標準装備
デバイスポスチャ評価 仕組みなし。外部ツールとの独自連携が必要 OS・暗号化状態を収集しACLの条件に利用可
DNS(ホスト名解決) 別途DNSサーバの構築・管理が必要 MagicDNSで自動割り当て。Split DNSにも対応
SSH鍵管理 authorized_keysの手動管理 Tailscale SSHで自動管理・ACL連携
監査ログ 別途syslog等の設計・実装が必要 構成変更ログ・ネットワークフローログを標準提供
SIEMへのログ転送 別途実装が必要 ログストリーミングで標準対応
高可用性 冗長構成を自前で設計・実装・維持 高可用性Subnet Routerを標準装備
IaC(Terraform等) Ansible等で独自管理スクリプトを構築 公式Terraform/Pulumiプロバイダを提供
Kubernetes連携 独自のネットワークポリシーを別途設計 Kubernetes Operatorを標準提供
モバイル対応 MDM連携は独自実装が必要 Intune/Jamf等のMDM連携を標準サポート
クライアントアプリ OSごとに設定ファイルを手動作成・配布 全OS向け公式クライアントをワンクリックで展開
初期構築の工数 数日〜数週間(設計・実装・テスト) 数時間以内に本番運用可能
継続的な運用負荷 高い(鍵管理・設定変更・障害対応を全て内製) 低い(運用の大半をTailscaleが代替)
セキュリティパッチ適用 サーバOS・WireGuardを自前でアップデート Tailscaleがインフラ側のパッチを適用

WireGuardの自前構築は、少人数の技術者チームが数台のサーバを管理する用途であれば選択肢になりえます。
しかし、デバイス数・ユーザ数が増えるにつれて、鍵配布・ACL管理・監査ログ・ユーザ認証など「WireGuardが提供しない部分」の維持コストが急増します。
Tailscaleはこれらを一括してマネージドサービスとして提供するため、エンジニアリングリソースをネットワーク管理ではなく本来の事業に集中させることができます。

セキュリティに関するよくある質問

Tailscaleは通信内容を見ることができますか?
できません。
WireGuardによるエンドツーエンド暗号化により、Tailscaleのコントロールプレーンが扱うのはデバイスのメタデータ(公開鍵、IPアドレス、接続状態)のみです。
通信内容はデバイス間でのみ復号されます。
さらにTailnet Lockを有効にすることで、コントロールプレーンへの信頼自体を排除することもできます。
DERPリレーを経由する場合も暗号化されますか?
はい。
DERPリレーはWireGuardで暗号化済みのパケットをそのまま転送するのみで、内容を復号する手段を持ちません。
P2P接続とDERPリレー経由接続のいずれでも、エンドツーエンド暗号化は同一の強度で維持されます。
WireGuardの鍵はどのくらいの頻度でローテーションされますか?
TailscaleはWireGuardのセッション鍵を180秒ごとに自動ローテーションします。
また、一定量のデータ転送ごとにも鍵が更新されます。
これにより、万が一ある時点の鍵が漏洩しても、過去の通信が解読されるリスクを限定(前方秘匿性)します。
量子コンピュータに対して脆弱ではありませんか?
WireGuardが採用するCurve25519は古典的なコンピュータに対しては極めて強固ですが、十分な能力の量子コンピュータが実現した場合には理論上脆弱となる可能性があります。
この点についてはWireGuardコミュニティおよびTailscaleも認識しており、ポスト量子暗号への移行が業界全体で検討されています。

関連機能

NATトラバーサル

NATトラバーサル

STUN/ICEプロトコルを活用し、NAT、ファイアウォール、CGNATの背後にあるデバイス同士でも自動的にP2P接続を確立します。
ほとんどの環境で、ネットワーク機器の設定変更は不要です。

全プラン

DERPリレー

DERPリレー

P2P接続が確立できない厳格なネットワーク環境でも、Tailscaleが世界中に配置するDERPリレーサーバを経由して、暗号化通信を維持します。

全プラン

Tailnet Lock

Tailnet Lock

Tailscaleの制御サーバを含め、信頼された署名ノードの承認なしにはデバイスをネットワークに追加できなくする機能です。
コントロールプレーンへの信頼を排除し、最高水準のセキュリティを実現します。

Enterprise

HTTPS証明書

HTTPS証明書

Tailscaleネットワーク内のデバイスに対して、Let's Encryptを利用したTLS証明書を自動発行・更新します。
WireGuardによる通信暗号化に加えて、アプリケーション層のHTTPS保護も実現します。

全プラン