Baldanders.info

VPN に関する基礎学習

前回の続き。 もう少しだけまじめに。

VPN に関する基礎学習

私の知識は SoftEther あるいは SSL-VPN あたりで完全に止まってるので,まずは基本的なおさらい。

VPN(Virtual Private Network)は物理的な回線・ネットワークの上に構築された仮想的(virtual を仮想的と訳すのは本来は間違いらしいのだが面倒なのでこのまま)なネットワークである。 なので,たとえば ssh や https を使った仮想ネットワークも VPN である。 ここでは VPN の機能として

  1. カプセル化とトンネリング
  2. 経路の暗号化
  3. 認証とアクセス制御

を挙げ,これらの要件を満たしたものを VPN と呼ぶことにする。

VPN は目的によって大きく2つに分かれる。 ひとつは「拠点間 VPN」でもうひとつは「リモートアクセス」だ。 「拠点間 VPN」は昔でいうところの「専用線」の代わりになるものだ。 「リモートアクセス」は企業イントラネットやプライベート・ネットワーク内部に外からアクセスするもので,これは近年の BYOD(Bring Your Own Device)への需要の高まりによって企業による実装が進んでいる。

そして最近,3つ目の目的による VPN が台頭してきた。 つまり公衆無線 LAN やホテル・サービス用の LAN など,内部構成が公開されておらず「安全でない」ネットワークをバイパスするための VPN である。 これを仮に「バイパス型 VPN」と呼ぶことにする。

「バイパス型 VPN」と「リモートアクセス」はよく似ているが,「バイパス型 VPN」の出口ノードはイントラネットではなくインターネットになっているのが特徴である。 また「バイパス型 VPN」は「拠点間 VPN」と組み合わせ,国をもまたいで任意の出口ノードを作ることができる。 最近のネットワーク・サービスでは IP アドレスによってリージョンを設定しているものも多いが,「バイパス型 VPN」ではほぼ無意味になる。 また,このことによって IP アドレスベースの行動追跡を困難にする。

「バイパス型 VPN」のセキュリティ・リスク

言うまでもないことだが,「バイパス型 VPN」ではアクセスする VPN サーバ(およびその運営[社|者])が信頼できることが絶対条件である。

最近, Tor の出口に malware が仕掛けられているという報告があった。

悪意のあるTorの出口ノード経由でユーザが実行ファイルをダウンロードしようとすると、実際に受け取るものは実行ファイルの「ラッパー」である。これにはオリジナルの実行ファイルと、もう1つの悪意ある実行ファイルの双方が埋め込まれている。分離したラッパーを用いることで、悪意のある人間がオリジナルのバイナリに含まれ得る完全性チェックを迂回し得る。実行すると、ラッパーはオリジナルの実行ファイルのディスクへの書き込みを開始し、これを実行する。そうしてユーザにすべてがうまくいっているように思い込ませる。しかし、ラッパーはもうひとつの実行ファイルもディスクに書き込んで実行する
エフセキュアブログ : OnionDuke:Torネットワーク経由のAPT攻撃より

あぁ,この部分を見て「それ見たことか,だから Tor は...」とか言い出す人がいそうなので,続きも引用しておく。

Torの問題は、使用している出口ノードを誰が保守しているのか、何が彼らの動機なのかがまったく分からない点だ。VPN(Freedome VPNのような)はTorネットワーク上を経由する際にあなたの接続を暗号化するため、Torの出口ノードの保守を行っている人も、あなたのトラフィックを見たり改ざんしたりできない
エフセキュアブログ : OnionDuke:Torネットワーク経由のAPT攻撃より

(Tor の特徴は経路の暗号化の多層化により通信経路を隠蔽(匿名化)するものだ。 なので End to End では別途暗号化を行う必要がある)

Tor のような例は極端かと思われるかもしれないが,実際に VPN 製品を見てみるとプロトコルや使用する暗号 suite について明示してないものが多い。 例えばプロトコルは SSL/TLS を使ってると思われるが鍵交換に(DH や ECDH ではなく) RSA を使っているものがあったりする(RSA では PFS(Perfect Forward Secrecy)を達成できない)。 あるいはデータの暗号化にいまだに RC4 や TDES を使ってるものもあるみたいで「なんだかなぁ」という感じである。

(最近では SSL 3.0 の仕様上の脆弱性が発覚したけど SSL を使ってる VPN 製品はちゃんと対応してるのかな,とか思うわけですよ。 TLS だってもう 1.2 より前のものはもうダメだよ。 分かってる?)

セキュリティにおける「信頼」は,「あなたは人として信頼できる」とかいった情緒的な意味での信頼ではなく,ユーザに対して透過的で合理的な運用をしているかどうかが問われる。 その上で第3者の審査を受け瑕疵や脆弱性を修正していくプロセスを通して信頼を積み重ねていくのだ。

OpenVPN とオレオレ CA

VPN サービスのベンダが信頼できないのなら自分で VPN を構築する手もある。 実際ググってみると,クラウド型サーバと OpenVPN を組み合わせてる例をよく見かける。 OpenVPN では経路の暗号化に OpenSSL を使っているようなのだが,驚いたのは「オレオレ証明書」で運用している人の多いこと。 「オレオレ証明書」って絶滅したのかと思ってたけど,まだ現役でのさばってるんだねぇ。

はっきり言って自己署名しかない証明書はなりすましを防げない(だからルート証明書の管理って凄く大変なのよ)。 しかも(SSL/TLS が採用している) X.509 型の PKI は権威的 CA による認証がないと全く意味を成さない。 そう,「オレオレ証明書」だけならまだしも(いやダメだけど),「オレオレ証明書」を発行するための「オレオレ・ルート CA」を OpenVPN サーバ上に置いてるのよ。 いやいやいや。 みんな CA(Certification Authority)が何をするのか知らないのか?

確かに昔は X.509 型 PKI の証明書を CA に認証してもらうのはコストが高かった(XMPP サーバもオレオレ証明書が多かったし)。 でも今は格安ないし無料で証明書を管理してくれる CA もあるのだ。

しかも今日,凄い発表があった。

ブラボー!

実際のサービスインは2015年夏頃らしいが,本当に素晴らしい。 もしできたら,このサイトも https にしたいものである。

というわけで「オレオレ・ルート CA」などもっての外なので今すぐ止めましょう。

(本当は GnuTLS が OpenPGP をサポートしてくれたらよかったんだけどねぇ。 あの話,随分前に立ち消えになっちゃったみたいだし。 まぁ OpenPGP の実装である GnuPG が X.509 との共存を目指した時点でしょうがないのかもしれないけど)

とりあえず Freedome と Hotspot Shield を試してみた

いずれも Android 用と iOS 用がある。 ベンダにアカウントを作る必要はなく,すぐ使うことができる。 Freedome は基本有料だが,現在出ているβ版は試用期間が長めに設定されているようだ。 Hotspot Shield は無料版と有料版がある。 有料と言っても月額500円程度(年額なら3,000円くらい?)。

無料版でしか試してないが, VPN 出口ノードは海外のみで日本はない。 Hotspot Shield の出口ノードは米国のみ。 Freedome は複数の国に出口ノードがある。 いきなり海外に飛ばされるのはなぁ。

VPN 以外のセキュリティ機能は Freedome のほうが充実している。

参考にしたページ