VPNは何か - (PN と IPSECの説明から、なぜVPNではプライバシを守れないか)
大学院で進めている課題のため、VPNに関する情報を集めていたところ、インターネットにVPNについてきちんと説明した記事が一つもなかったので、この記事を作成するようになりました。
(グーグルにVPNを検索すると、広告しか表示されない;;;(先生!!!))
記事を読むために必要な基礎知識
現在、ブログにネットワークや暗号学の理論について何も書いていないため、できるだけ分かりやすい文章を作成するように努力しました。
しかし、文章を読むためには、以下のような基本的な知識は持っていることをお勧めします。
1. IPアドレスというものがインターネットの郵便番号や自宅の住所などと同じように'住所'の役割をする
2. パスワードを通じてファイルなどを暗号化して復号化するという概念を知っている
以下の知識は知っていれば、もう少し深い理解ができるだろう。 もし、記事を読んで興味を持ったら、調べてみて、もう一度記事を読んでみよう。
1. NAT(Network Address Translation)について知っている
2. 対称暗号と非対称暗号の概念。特に、公開鍵を通じた認証または秘密の共有方法について
3. ハッシュ関数と整合性検証について
上記のリストの概念はこの記事では取り上げないが、IPsecのような暗号学が登場する概念を完全に理解するためには知っておいた方が良い。
この記事では、暗号学についての言及はできるだけ控えることにします。
最後に、家と家の間で宅配便を配達するのと同じように、IPアドレスとIPアドレス間のデータを転送することをルーティングという言葉を使います。
ネットワークを知らない人がVPNの概念を理解できるように。
また、コンピュータ工学を専攻している人にとっては、混乱しがちな概念について再確認できるような文章になることを祈りつつ、VPNについて本格的に説明する。
여기까지
いや、だからPrivateなNetworkって何?
VPNについて話す前に、私たちは次の3つの用語についてしっかりと理解する必要がある。
1.ネットワーク
2.プライベート
3.バーチャル
Network
ネットワークという言葉については、後で機会があればもう少し詳しく説明することにして、ここでは簡単に見ていきましょう。
まず正解から言うと、Networkとは接続である!!
このように話すとすぐにピンと来ないかもしれないので、例で簡単に説明しましょう。
まず問題です、地下鉄の路線図をNetworkと言えるでしょうか?
答えははいです 次のようなものはすべてネットワークと言えます。
1.地下鉄の蜘蛛の巣のような路線図。
2.宅配便配達のためのサプライチェーン
3.私たちが普段パソコンでデータを配信するために使うインターネット。
4.町内における隣人と隣人との関係。
文字通り、接続で表現できるすべてのものがネットワークである。
もう少し専門的に表現すると、ネットワークはこのように表現できます。
Network: Connection + *Topology
つまり、接続とその接続がどのように行われたかを定義できるすべてのものをネットワークと呼ぶことができる。
Private
ネットワークでPrivateとは、ネットワーク上で起こることが秘密裏に行われることを意味する。
何を当たり前のことを言っているのかと思うかもしれないが、もう少し読んでみよう。
ここで私たちは、Privateとは何なのかを理解するために、少し昔話をしてみましょう。
What is Secret?
Privacyという言葉は、意外と古い概念ではない。
すぐ19世紀まで、人間は村社会単位で生活し、隣の人の背中に何個の点があるのかさえ知っている社会に住んでいた。
また、20世紀末まで、私たちの生活には電話帳を利用し、全国民の電話番号を共有する生活をしていた。
[出典 - https://en.wikipedia.org/wiki/Telephone_directory ]
21世紀の私たちにとって、隣の人が私の身体の秘密を知っていたり、我が国のすべての人が私の家の電話番号を知っているとは考えにくい。
このような歴史の流れから、私たちが考えるPrivacyという概念が大きく変化してきたことが分かる。
この記事で説明するVPNでのPrivateを理解するため、Secretの範囲を2つに分けて考える。
- 私たちが送る内容を誰かに見られても構わない時代のPrivacy
- 中身を隠さなければならない現代のPrivacy
How to make Perfect Private Network?
では、私たちがPrivate Networkを構成することができる最高の方法は何だろうか?
どうすれば、隣の家の友達や親や先生にバレずに、明日学校で何をして遊ぶか秘密裏に話せるのだろうか?
どうすれば、外部の人と区別されるPrivateなネットワークを構築することができるのだろうか?
答えは意外に簡単だ
ただ、通信したい人同士で電線(または通信ケーブル)を敷設して、自分たちだけで使えばいいのです!
(WOW~~)
もしSecretの1番の条件だけを満たせば、ただ連絡したい人同士で接続すればそれがPrivateなNetworkである!
じゃあLAN(Local Area Network)は?
ここで疑問を感じるかもしれません。
'いいえ、LANで外部接続をすべて遮断してLocalでのみ通信すれば、それもVPNなのか?
そう、実はこれもPrivate Networkと言えます。
しかし、通常、このようなネットワークを私たちは外部との接続を遮断した閉鎖された環境という意味でClosed Networkと呼びます。
Virtual
コンピュータ工学では、Virtualという言葉は様々なところで使われている。
専攻者に馴染みのある仮想化、仮想メモリという言葉から、最近よく出てくるVR(Virtual Reality)、仮想世界(異世界とは違う)など。
ここでは、Virtualという言葉をこう定義していくことにしよう。
[出典 - https://en.wikipedia.org/wiki/Brain_in_a_vat ]
実際に存在するわけではありませんが、それと同じ役割をしてくれるもの。
上記の定義がわかりにくい場合は、次のように置き換えて考えると理解しやすいだろう。
- 実際のコンピュータハードウェア上で動作するオペレーティングシステムではないが、オペレーティングシステムと同じ役割をするもの。
- 実際の世界ではないが、現実と区別できない世界を見せるもの。
これを上で列挙した図に代入して、友達と私が通信するために電線を接続して構成したPrivate Networkに適用してみると
- 友達と私が電線を接続するために友達の家まで電線を持って移動したわけではありませんが、あたかも電線を接続してPrivate Networkを構成したような効果を出す物
これは Virtual + Private Networkである。
VPN(Virtual Private Network)
さあ、いよいよVPNに入りましょう。
そして、VPNに移ったついでに、友達と私が学校をサボるという例から離れて、もう少し現実的な例を考えてみましょう。
Motivation
世の中のすべての工学と同じく、VPNも何らかの問題を解決するために生まれました。
その問題とは何かというと、「電線を繋ぐ」という問題である。
皆さんがPrivate Networkが構成された会社で働いていて、海外に出張に出かけた会社員だとしましょう。
ここで発生する問題は以下の通りである。
- 会社のPrivate Networkの接続のために、海を越えて数千kmの電線をコンピュータと一緒に持っていかなければならない。
- 電線をどのように接続するのか、電線の重量とサイズはどうするのか?
そうです、今すぐあなたのスマートフォンを開けばGoogleに接続できる世の中で、会社との接続のためだけのために以下の問題を解決しなければならない。
- ネットワーク実装の問題:大きなサイズと重量の電線を持ち歩く必要がある
- コストの問題:また、電線の値段はどうするのか。
イライラする、いや、こんなに簡単にGoogleに接続できる世の中で、会社のネットワークに接続するのがこんなに難しければ、誰が会社に通うだろうか?
いや、すでに構築されているインターネットインフラを利用してGoogleやYoutubeに接続するように会社に接続する方法は本当にないのだろうか?
そうです、会社の外部からPrivate Networkに接続して、まるで会社内部のPrivate Networkに接続しているような効果を与えることができれば。 つまり、すでに構築されているインターネットインフラを利用してVirtualにPrivate Networkを構成することができれば!
という目的を達成するために誕生したのがVPNである。
簡単にVPNを構築してみよう
それでは、目次で紹介したルーティングというものを利用して、世界で一番簡単なVPN環境を構成してみましょう。
心に留めておこう、私たちはGoogleやYoutubeがある世の中に住んでいるが、20世紀後半のマインドを持っている、Secretの1つ目の条件だけを満たせばいい人たちだ。
さて、前章で言及したように、私たちはすでに構築されたインターネットインフラを利用することになり、私たちはこのようなインフラを構築・管理しながら、私たちから毎月携帯電話使用料、インターネット使用料を受け取っている事業者をISP(Internet Service Privider) という。(SK、KT、Softbank、NTT、AT&T、T-mobileのような会社を考えればいい)
ここでVPNを構築するために私たちができる最も簡単な方法は、ISPに話をしておくことです。
- 私とISP:ISPさん、私はこれから1週間海外に行くので、インターネットから送信する情報を会社にルーティングしてください。
- 私とISP:そして、会社から出るデータは他の人に送らないで(ルーティングしないで)私だけに送ってくれ。
- ISP:わかったから早くお金くれよ。
さあ、簡単にVPNの設定が完了しました!
これで私が外部から送ったデータは会社のネットワークに届き、会社のデータも外に出て私だけが使えるようになります。
つまり、まるで私が会社に出勤してPrivate Networkを使用するのと同じ効果を見ることができます!
(もちろん、どのデータが私が送ったものなのか、本当に私が送ったものなのか、確認、認証、区別するような些細な問題は考えないようにしましょう)
このように生成された通信の通路を通常 Tunnel と言い、トンネルを作る行為を VPN 構成のために Tunneling と言います。
IPsec - VPN in the wild
さて、ここまで来たらだいたいVPNが何なのかが分かったと思う(信じます!!!)。
それでは、実際によく使われているIPsecについて、VPNの種類や分類などについて詳しく説明します。
そして、今まで無視していた些細な問題を簡単に考えてみましょう。
VPNの種類
IPsecを見る前に、今まで読んだ内容から、VPNは特別なサービスの名前や技術のようなものではなく、「コンピュータネットワーク」で扱われる一つの概念であることが分かります。
つまり、VPNという概念が解決しようとする問題に対して、さまざまな解決方法があり、それらすべてをVPNと呼ぶことができる。
VPNはこの問題解決方法(Functional Requirement)に応じて、通常、次のような基準に分けられます。
(種類を全部知ることが重要なのではなく、それぞれがどのような特性があり、どのような問題状況で使用できるかを知ることが重要です!!!)。
- 実装階層:L2、L3、L4など。
- 接続モデル: Site-to-Site, Remote Access(個人と個人、個人とサーバー、サーバーとサーバーなど)
- プロトコル:IPsec、SSL / TLS、PPTP、L2TPなど。
IPsecは通常
- 実装層:IPと同じインターネット層に属していると言います
- 接続モデル:Site-to-Site、Remote Access(個人と個人、個人とサーバー、サーバーとサーバーを)接続するモードが存在する
- プロトコル:認証、暗号化、鍵交換機能をサポートするプロトコルである
という特徴を持つと述べている。
軽く知るIPsec
出張で外国から会社に接続する過程を見ながら、IPsecについて軽く学んでみましょう。
この章を詳しく説明するためには、冒頭で述べた暗号化と復号化、認証、鍵交換、整合性とハッシュなどの概念を知る必要があるため、これらの内容はできるだけ言及を控えて話を進めましょう。
私たちは今、現代に入り、Secretの1つ目の条件ではなく、2つ目の条件が必要な世界に生きている。
会社に外部と分離されたPrivate Networkを構築する基本的な理由は、外部と切り離されて守らなければならない情報があり、これを保護しなければならない理由があるからです(e.g. 機密資料)。
当然、私が外国から会社に送るデータも誰かに公開されてはならない。
そのため、IPsecは仮想的なPrivate Networkを作り、あたかもPrivate Networkに接続したような効果を与えるとともに、データを適切に暗号化して誰にも見られず、露出されないようにする暗号化のような技術が加わった。
具体的には、Secretの2番目の条件を満たすためには、次のような前提が必要である。
- 認証:会社に届いたデータが本当に「私」が送ったデータなのか?
- 暗号化: 会社と自分だけが知っているパスワード(暗号キー)を通じて、インターネットを通過する間、誰も見ることができないようにしたか?
- 整合性:インターネットを通過する間、誰かによって操作されなかったか?
本章では、上記の各テーマについては説明しない。
(気になる人は、IPsecについて検索するのではなく、各テーマについてGoogleで検索することをお勧めします。各テーマの問題解決のための様々な方法が存在し、IPsecはこれらの方法を採用して使用することに過ぎないからです)
VPNの作成過程
VPNを生成して外部からアクセスするためには、まず、出張先で会社のPrivate Networkに接続する際に使用するIPを会社から発行してもらう必要があります。
Tunneling
さて、皆さんは遠方に出張に行きました(または、自宅で在宅勤務をしている)。
まず、IPsecで通信のための接続を生成するトンネリング過程について簡単に説明します。
先に述べた様々な暗号学の概念がこのトンネルを作るために使われます。
全体的な流れは次のようになります。
- 認証
- 自分がBobであることを会社に知らせる
- 会社は本物のBobであることを確認する
- パスワード(キー)の交換
- データ(パケット)を暗号化して送信するために、会社とBobだけが知ることができるパスワード(キー)を交換する。
この過程を実行することで、ネットワークインフラで会社とBobだけのための通信の通路が作られるのである。
そして、このような通路をTunnelという。
Packet transfer(データ転送)
これで、会社とBob間の秘密の通信経路であるトンネルが作成されました!
さて、このトンネルを通して、Bobがあたかも会社のPrivate Networkの中で行動しているように見せるにはどうすればいいのでしょうか?
その秘密は
1. 出張前に発行されたIPアドレスを会社のサーバーは知っていること。
2. パケットをもう一回カプセル化することです。
IPsecでカプセル化は、外部ネットワークでのルーティングのためのIPの出発地(Source)と到着地(Destination)情報とPrivate Network内で使用する出発地/到着地情報の2つを含めることを意味します。
このようにカプセル化されたパケットは、会社内部で使用される出発地/到着地/データを会社とBobが共有した鍵で暗号化したため、外部から知ることができる情報は外部ネットワーク上の出発地と到着地情報のみです。
会社に到着したパケットは、カプセル化を解除し、事前に共有した鍵を通して暗号化を解除することになる。
このように解除されたパケットをよく見ると、Private Network上でのリクエスト用のパケットと同じであることがわかります。
これがIPsecを通じた通信が行われる過程である。
もちろん、内部から外部のBobに通信するときにも同じように考えることができます。
なぜVPNは安全でないのか?
まず、ここまで読んでくれた皆さんに拍手を送りたい。
今からは、最後の最後のテーマである「なぜVPNは安全でないのか」について説明します。
具体的には、なぜ迂回用のVPNサービスが匿名性を保証してくれないのかについてです。
迂回を提供するVPNサービス
リモートワーク、海外出張のような状況では、VPNはその機能を忠実に実行し、ほとんどの要件を満たしています。
しかし、私たちが聞いたことのあるVPNは、~~迂回などの用語でより多く聞いたことがあるかもしれません。
これらのサービスは、自分たちが完全な匿名性を提供し、プライバシーを満たすと言います。
果たして、ここで言うプライバシーと匿名性とは何なのでしょうか?
ここまで私たちは、Route調整を通じたVPN設定とIPsecを通じたVPN設定の2つについて説明しました。
ここで私たちが留意すべきことは
1. 情報の伝達をISPまたは会社に依存している - つまり、ISPを経由して伝達される。
2. 何であれ、IPアドレスは外部に公開される。
ということです。
この2つが議論の中心となるポイントである。
IPアドレスかISPか?
匿名性を提供するVPNサービスを利用する場合、私をBob、VPNサービスプロバイダーを「会社」と考えることができます。
会社」は、「私たち」が接続しようとする「外部のサイト」と私たちを中継してくれる役割を果たしているのです。
これまで見てきたVPNで、私たちはISPが提供する外部のネットワークでBobと会社のIPアドレスが公開されること、Bobからデータを受け取った会社は暗号化されたデータを復号化できるという事実を見ました。
つまり、ISPは、私たちがVPNサービスプロバイダーに何かを要求していることを知ることができ、VPNサービスプロバイダーは、私たちがアクセスしようとしているサイトがどこであり、何をやり取りしているのかを知ることができるのです。
もちろん、VPNサービスプロバイダーがすべての情報を知ることができるわけではありませんが、実際に知ろうとすれば、アクセスしようとしたサイトやデータに関するログを含め、さまざまなデータを残すことができるのです。
これが、VPNサービスが完全な匿名性を提供できないと言われる理由です。
検索してみると、VPNサービス提供者がログを残さないと宣伝しているのを簡単に見つけることができるのは、このような理由からです。