Tunnel Vision
久々に拠点間VPNを組んだ。
オンプレ事業を引き継いだとき、前任者にWireGuardを案内された。恥ずかしながら、そのとき初めて知った。IDCと事務所をセキュアに繋ぐ必要があり、使ってみた。設定ファイルは数行。鍵ペアを生成して、相手の公開鍵とエンドポイントを書いて、許可するIPレンジを指定する。それだけでトンネルが通る。
以前ならOpenVPNだった。証明書の生成、CAの構築、TLSの設定、ovpnファイルの配布。動くまでに半日かかることもあった。いまとなっては触る理由がない。WireGuardはカーネルモジュールとして動き、UDPの単一ポートだけで通信する。TCPでVPNを張るとTCP over TCPになって再送の嵐が起きる問題も、UDPベースなら発生しない。設計が正しいとはこういうことだと思った。
WireGuardのコードベースは約4,000行だという。OpenVPNは10万行を超える。桁が違う。コードが少ないということは、攻撃対象が少ないということだ。暗号もChaCha20-Poly1305とCurve25519に固定されている。選択肢がないことが強みになる。暗号スイートのネゴシエーションという概念自体が攻撃面だったことを、TLSの歴史が証明している。
ChaCha20もCurve25519も、いまでは誰でも自由に使える。だが暗号が自由になってから、まだそう長くはない。
1990年代、暗号ソフトウェアはアメリカの武器輸出規制の対象だった。フィル・ジマーマンが作ったPGPは、強力すぎるという理由で国外への持ち出しが禁じられた。ソフトウェアとしては輸出できない。ではソースコードを本に印刷して出版したらどうか。書籍は合衆国憲法修正第1条で保護される。誰かがそれをやった。PGPのソースコードは活字になり、合法的に国境を越え、海の向こうで誰かがOCRで読み取って再びコンパイルした。
暗号が武器だった時代がある。ソースコードを紙に印刷して輸出していた時代がある。
いまわたしはターミナルでwg genkeyと打って、数秒で鍵を生成している。拠点間のトンネルは5分で開通した。あの紙の束から思えば、ずいぶん遠くまで来た。WireGuardを知らなかったわたしが言うのもなんだが、視野が狭いのはいつの時代も同じらしい。Solarisではこうはいかなかった。