WireGuardは、フリーかつオープンソースのルーティング又はブリッジで安全なポイント・ツー・ポイント接続を作成するための技術であるVirtual Private Network (VPN) の実装であり、アプリケーション及び通信プロトコルである。Linuxカーネル内のモジュールとして実行され、IPsecやOpenVPNよりも優れた性能を目指している[2]。WireGuardはJason A. Donenfeldによって書かれ、GNU GPL v2の下で配布されている[3]。
特徴
WireGuardは単純で非常に効果的なVPNを提供することを目指している。Ars Technicaのレビューによると、OpenVPNやIPsecなどの一般的なVPN技術は、多くの場合セットアップが困難であり、簡単に切断され[注釈 1]、再接続のネゴシエーションにかなりの時間を要し、古い暗号方式を使用しており、ソースコードが比較的大規模[注釈 2]であることからバグの発見が困難になっていると述べている[4]。
WireGuardの設計ではこれらの問題を軽減し、トンネルのセキュリティを強化し、デフォルトで管理しやすくしている。暗号パッケージのバージョン管理を使用することによって、その時点で最も安全と考えられる暗号方式に焦点を当てており、更に、コードベースは約4,000行[注釈 3]となり、セキュリティ監査(英語版)が容易である。Ars Technicaはテストにおいて、代替と比較してWireGuardは安定したトンネルの作成が容易であると報告し、WireGuardの「実用的な」な即時再接続と比較して、代替の長い再接続の遅延に「戻ることは難しい」とコメントした[4]。
プロトコル
WireGuardは鍵共有(英語版)にはCurve25519、暗号化にはChaCha20、データ認証(英語版)にはPoly1305、ハッシュテーブル鍵にはSipHash(英語版)、ハッシュにはBLAKE2sを利用する[3]。ネットワーク層のIPv4及びIPv6の両方に対応し、4in6(英語版)及び6in4(英語版) (カプセル化) にも対応している[5]。
000000002019-05-01-00002019年5月、フランス国立情報学自動制御研究所 (INRIA) の研究者は、CryptoVerif(英語版) proof assistant(英語版)を使用して作成されたプロトコルのマシンチェック済み証明を公開した[6]。
歴史
コードベースの最初期のスナップショットは000000002016-06-30-00002016年6月30日から存在する[7]。WireGuardの初期の採用者はVPNサービスプロバイダのMullvad(英語版)[8]、AzireVPN[9]、IVPN[10]及びcryptostorm[11]であった。WireGuardはMullvad、Private Internet Access(英語版)、IVPN及びNLnet Foundation(英語版)から寄付を受け取った[12]。
000000002018-06-01-00002018年6月の時点で、WireGuardの開発者はソースコードとプロトコルを実験的なものとして扱うことを推奨しており、発見される可能性のある脆弱性のCVEと互換性の有る安定版が未だリリースされていないことを注意した[13][1]。
000000002019-12-09-00002019年12月9日、Linuxのネットワーキングスタックの主要メンテナであるDavid Millerは、今後のカーネルのリリースにWireGuardを含めるために、"net-next" メンテナツリーにWireGuardのパッチを受け入れた[14][15][16]。000000002020-01-28-00002020年1月28日にリーナス・トーバルズはDavid Millerの"net-next" ツリーをマージし、WireGuardがメインラインLinuxカーネルツリーに統合された[17]。
反応
オレゴン州選出の上院議員のロン・ワイデン(英語版)は、アメリカ国立標準技術研究所 (NIST) にIPsecやOpenVPNなどの既存の技術の代替としてWireGuardを評価することを推奨している[18]。
実装
WireGuardプロトコルの実装:
脚注
注釈
- ^ 追加の設定が無い場合。
- ^ OpenVPNやIPsecのソースコードは40万行 - 60万行である。
- ^ OpenVPNやIPsecの約1%。
出典
関連項目
外部リンク