VPNの表示が緑で、プライバシーを感じた矢先、ブラウザが銀行のサイトで証明書の警告を出す。その警告はトンネルによって少しも改善されない。VPNが守るのは端末から自社サーバーまでの経路であり、HTTPSが守るのはブラウザからウェブサイトのTLS終端までの要求である。両者は旅の別々の区間を覆っており、片方がもう片方を置き換えるものではない。

両端が異なる二つのトンネル

VPNトンネルはVPNサーバーで終わる。その先では、通信は通常のインターネット上を宛先に向かって続いていく。VPN事業者は内容を読めないとしても、接続のメタデータは見ることができる。

HTTPSはブラウザで始まり、ウェブサイトのTLS終端で終わる。パケットがどうサーバーに届いたかは関係なく、VPNの有無にも依存しない。

だからこの二つの保護は競合するのではなく補完し合う。VPNは要求をローカルネットワークとISPから自らの出口まで隠す。HTTPSはその出口より先のあらゆる観測者から、VPN事業者自身も含めて隠す。どちらも相手の隙間を埋めない。これを理解した人は、どちらで足りるのかと問うのをやめる。

普通のHTTPフォームは出口の先でも普通のまま

HTTPでフォームを受け付ける古いサイトは、VPNサーバーの先では保護されない。トンネルはフォームを出口まで運び、残りの経路はそれを平文で運ぶ。

機密に関わるものには、本物のHTTPS版か別の公式な経路を使う。

接続中の表示はアプリケーションの転送方式を変えない。ブラウザのHTTPSのみモードは偶発的な後退を防ぐ助けにはなるが、TLSを一度も提供しなかったサイトを直すことはできない。

証明書の警告はVPNでは治らない

誤ったホスト名、失効した証明書、狂った端末の時計、傍受のいずれも検証の失敗を引き起こしうる。VPNはそのどれも無害にはしない。

何よりも先に、正確なアドレスとシステムの時計を確認する。

ネットワークのサインインページが絡む場合は、プラットフォーム標準のキャプティブポータルの流れを使う。ホテルのネットワークに求められたからといって、無関係なアカウントのサイトに恒久的な例外を与えない。

管理された端末では、検査用の証明書が入っていないか尋ねる。それは通常の信頼の取り決めを変えるもので、肩をすくめる代わりに具体的な説明を受ける価値がある。証明書の目的と所有者を尋ねる。

暗号化は追跡を止めない

セッションはCookie、ログイン、フォームのデータを意図どおりにサイトへ運ぶ。追跡者も暗号化された接続に乗ることができ、そのほとんどがそうしている。

VPNは経路と見かけの出口アドレスを変える。アカウントで示す身元を変えることはなく、サイト間で追いかけてくるCookieを消すこともない。

すでに使っているブラウザの保護はそのまま残す。VPNはそれへの追加であって、置き換えではない。

表示ではなくアドレスを確認する

アドレスバーのホスト名と、サイトが提示する証明書を確認する。南京錠は、接続がどこかの終端まで暗号化されていることを意味するにすぎず、その終端が意図した相手だという意味ではない。

二つのコマンドで証明書とリダイレクトの連鎖を確認できる:

curl -sSI https://bank.example/ | head -5
openssl s_client -connect bank.example:443 -servername bank.example < /dev/null 2>/dev/null | openssl x509 -noout -subject -dates

証明書が別のホストを名指ししたら、そこで止める。時計が狂っていたら、再試行の前に直す。リダイレクトが平文のHTTPへ送るなら、それは検証を切る理由ではなくサイトの不具合とみなす。ブラウザの警告があるのは、そうでなければ、どの終端がパスワードを受け取ったのかを推測するしかないからだ。

関連記事