公共のコンピューターでVPNを使う:最初に確認すべきこと
トンネルが守るのは経路であり、両端の機器ではない。サインインする前に、ホストを誰が管理しているか、ディスクに何が残るか、アクセスをどう取り消すかを決めておく。
借り物のマシン、急ぎの作業、そしてすべてを暗号化すると約束するVPNクライアント——この組み合わせは安全に思えて、実際は安全ではない。トンネルが守るのは二つの端点の間の経路であり、目の前の端点こそ検証できない部分だ。以下の三つの手順は、その機器がそもそも使えるのか、認証情報をどう遠ざけるのか、そして一時的なセッションを恒久的な複製にしないために後で何をするのかを決める。
ホストがすでにデータを見た後にトンネルは始まる
暗号化は、マシン上でプログラムとして動くVPNクライアントで行われる。そのプログラムより上のすべて、つまりブラウザ、オペレーティングシステム、十分な権限を持つ拡張機能やドライバーは、データが暗号化される前に扱う。これはプロトコルの欠陥ではなく、プロトコルが置かれている場所の話だ。
したがって出口アドレスを確認しても、ホストについてはほとんど何も証明できない。マシンはすべての通信を清潔な出口に通しつつ、すべてのキー入力を記録できるが、この二つの事実は矛盾しない。
有用なのは、ネットワークが何をできるかではなく、ホストが何を観察できるかを問うことだ。他人が管理するマシンでは、その範囲は列挙できるより広い。
手順一:デバイスを誰が管理しているかを確かめる
管理とは管理者権限と物理的アクセスの問題であり、礼儀の問題ではない。他の人がソフトウェアをインストールし、ドライバーを読み込み、デバイスを接続し、イメージを復元できるなら、そのマシンの挙動は見ただけでは確かめられない。管理は能力であり、能力はスクリーンショットに写らない。マシンを渡した人に尋ねることだ。
ありふれた兆候を探し、それぞれを安全の証明ではなく管理に関する証拠として扱う。どれも単独では決め手にならない。
- ソフトウェアをインストールできないゲストアカウントやキオスクアカウントは、誰かに渡された管理者アカウントより良い出発点だ。
- 所有者とサポート窓口が分かっている管理対象のデバイスは、端末が清潔に見えても、放置された端末より良い。
- 最後に誰がログインしたかを特定できないマシンは、状態を説明できないマシンだ。
これらの確認のどれも、共有ホストを信頼できるものにはしない。リスクが限定的な作業を続けられる程度に抑えられているかを教えてくれるだけで、それは別の、より正直な問いだ。続ける前に答えを書き留めておく。
手順二:認証情報をホストに残さない
生きているプロファイルはブックマークではない。OpenVPNプロファイルには埋め込み証明書と秘密鍵が含まれることがあり、インポートするとその素材が自分が所有しないデバイスに書き込まれる。クッキーを保存するブラウザのセッションや、保管庫をローカルにキャッシュするパスワードマネージャーも同じだ。
| Decision | Safe default | What it buys you |
|---|---|---|
| Which device to use | One you control, or an approved managed device | A host whose software you can account for |
| Which account to sign in with | A session that does not persist, with a second factor | Limited exposure if the machine retains state |
| What to install | Nothing; use the browser and the service's own portal | No profile or client left behind for the next user |
| What to do afterwards | Sign out everywhere and revoke sessions from a trusted device | An end to access that does not depend on local cleanup |
サービスが対応する中で最も持続しないアクセスを選ぶ。セッションごとに認証し第二要素を求めるWebポータルは、プロファイルを保存したデスクトップクライアントより痕跡が少なく、ブラウザを閉じると終わるセッションは再起動を生き延びるセッションより良い。
次に、マシンが何を残すかを確認する。共有のLinuxホストではプロファイルの場所を調べるのは簡単で、Windowsでは同等の検索に一つのコマンドで足りる。以前の利用者のプロファイルが見つかることは、自分のものも同じ扱いを受けるという有用な注意だ。
ls -la ~/.config/openvpn 2>/dev/null
Get-ChildItem -Path $HOME -Recurse -Filter *.ovpn -ErrorAction SilentlyContinue
手順三:信頼できる場所からアクセスを終わらせる
ローカルでの後片付けはやる価値があるが、十分ではない。サービスからサインアウトし、ブラウザを閉じ、ダウンロードしたファイルを削除し、そのうえで本当に重要な手順、つまり自分が管理するデバイスからセッションまたは認証情報を取り消す。
この最後の動作こそが飛ばされやすい。ローカルの画面はきれいに見えるからだ。ホスト上のソフトウェアがコピーしたセッショントークンは、立ち去った後も機能し続け、ブラウザが閉じられたことなど気にしない。取り消しは、ホストが敵対的だった可能性を前提とする唯一の手順であり、そうだった場合でも機能する唯一の手順でもある。
秘密鍵や回復用の秘密がマシンに触れたなら、露出したものとして扱い、複製を調べるのではなくローテーションし、第二要素を使ったアカウントでは、提供者が一覧表示するデバイスとセッションも確認する。訪問中に発行されたトークンがまだ有効かもしれない。
結果は、どのデバイス、どのアカウント、何をインストールし、何を取り消し、いつ行ったかという形で、新鮮なうちに書き留めておく。その記録があれば、次の人は後に唯一重要な問い、つまりまだ何かにアクセス権が残っているかどうかに答えられる。
私的に管理されたデバイスにも保守は必要だが、借りた端末では決して得られない端点管理の基盤を与えてくれる。トンネルは簡単な部分だった。