基本情報のVPNとは?仕組みと出題のされ方を解説
VPNって、結局なにが仮想で、なにがプライベートなんだろう。
テレワークでよく聞く言葉なのに、仕組みを聞かれると答えに詰まっていませんか?
VPNは、基本情報技術者試験のネットワーク分野とセキュリティ分野の両方にまたがって登場する用語です。IPsec、トンネルモード、SSL-VPNと関連用語が次々に出てくるので、名前だけ覚えようとすると混ざりやすいところでもあります。
でも、大丈夫です。VPNがやっていることは、突き詰めると包んで、鍵をかけて、相手を確かめる、の三つだけです。
私はエンジニアとして10年以上、Webシステムの開発や運用に携わってきました。本番サーバの保守作業は、社外から直接つなぐのではなく、必ずVPNを経由して社内のネットワークに入ってから行うのが当たり前でした。
VPNの接続が切れた途端に、サーバへのログイン画面すら表示されなくなる。その経験を何度かすると、VPNが見えない専用の通路として働いていることを肌で感じます。
この記事では、VPNの意味、仕組み、種類、試験での問われ方を順番に見ていきます。後半では、通信をトンネルに通すかどうかの判断を擬似言語で書いて追ってみます。
基本情報のVPNとは?公衆の回線に専用の通路を作る技術¶
まず、言葉の意味から押さえましょう。VPNはVirtual Private Networkの略で、日本語では仮想私設網や仮想専用線と訳されます。
一言でいうと、VPNはインターネットのような共用の回線の上に、仮想的な専用の通路を作る技術です。
昔は、本社と支社を安全につなぐには、通信事業者から専用線を借りるのが一般的でした。専用線は自分たちしか使わない回線なので安全ですが、そのぶん費用がかかります。
そこで、みんなが使う回線を借りながら、あたかも専用線のように使えるようにしたのがVPNです。物理的には共用なのに、論理的には専用に見える。これが仮想という言葉の意味です。
仮想とプライベートを分けて考える¶
VPNという言葉は、二つの部分に分けると理解しやすくなります。仮想の部分と、プライベートの部分です。
それぞれが何を指しているのかを、表で整理しておきましょう。
| 言葉 | 指しているもの | たとえると |
|---|---|---|
| Virtual(仮想) | 物理的には共用の回線を使っていること | 一般道の上に見えない専用レーンを引く |
| Private(私設・専用) | 自分たちだけが使える閉じた通信であること | そのレーンには許可された車しか入れない |
| Network(網) | 拠点や端末同士をつなぐこと | 本社・支社・自宅をレーンで結ぶ |
表の1行目と2行目が、VPNの本質です。共用の道を使いながら、中身は自分たちだけのものにする、という矛盾をどう解決するかが仕組みの話になります。
VPNが使われる二つの場面¶
VPNが使われる場面は、大きく分けて二つあります。拠点と拠点をつなぐ場面と、個人の端末を社内へつなぐ場面です。
前者は拠点間接続やサイト間VPNと呼ばれ、本社と支社のルータやVPN装置同士がトンネルを張ります。後者はリモートアクセスVPNと呼ばれ、自宅や外出先のパソコンが社内のVPN装置へ接続します。
テレワークで社内システムを使うときに立ち上げるのは、たいてい後者のリモートアクセスVPNです。試験の事例でも、在宅勤務の社員がVPNで社内に入る、という設定はよく見かけます。
VPNの仕組みはトンネリング・暗号化・認証の三つ¶
ここからは、VPNがどうやって共用の回線に専用の通路を作っているのかを見ていきます。柱になるのは、トンネリング、暗号化、認証の三つです。
三つの役割を先に表で並べておきます。どれか一つが欠けても安全な通路にはならない、という点を意識しながら読んでみてください。
| 仕組み | やっていること | 防いでいるもの |
|---|---|---|
| トンネリング(カプセル化) | 元のパケットを別のパケットで包んで運ぶ | 社内の宛先がそのままでは届かない問題 |
| 暗号化 | 包んだ中身を第三者に読めなくする | 盗聴・のぞき見 |
| 認証・改ざん検知 | 通信相手と中身が本物かを確かめる | なりすまし・改ざん |
トンネリングとカプセル化¶
トンネリングの中心にあるのが、カプセル化という考え方です。カプセル化とは、元のパケットを丸ごと別のパケットの中に入れて運ぶことです。
たとえるなら、社内便の封筒を、さらに宅配便の箱に入れて送るようなものです。宅配業者は外側の箱の宛先しか見ないので、中の封筒に何が書いてあっても気にせず運んでくれます。
社内のネットワークでは、プライベートIPアドレスが使われています。プライベートIPアドレスはインターネット上ではそのまま運べないので、VPN装置のグローバルIPアドレスを宛先にした外側のヘッダを付けて送ります。
受け取った側のVPN装置は、外側の箱を開けて元のパケットを取り出し、社内へ流します。インターネットの中を、外からは中身の見えないトンネルが通っているように見えるので、トンネリングと呼ばれています。
ネットワーク層の宛先の考え方があやふやな場合は、ルータの記事で経路の選び方を先に確認しておくとスムーズです。
【関連記事】基本情報のルータとは?ルーティングの考え方をやさしく解説
暗号化と認証がないとトンネルは安全にならない¶
ただし、包んだだけでは安全とはいえません。箱を開ければ中身が見えてしまうからです。
そこで、中の封筒を暗号化して、途中で誰かに見られても読めないようにします。さらに、接続してきた相手が本当に正しい装置や利用者なのかを認証で確かめ、途中で中身が書き換えられていないかも検査します。
試験で注意したいのは、トンネリングと暗号化は別の仕組みだという点です。カプセル化するだけで暗号化しないトンネルもあるので、トンネルを張る=必ず暗号化される、と思い込むと選択肢で引っかかります。
IPsecとSSL/TLS、インターネットVPNとIP-VPNの違い¶
VPNの種類は、二つの切り口で整理すると混ざりません。一つは暗号化にどの技術を使うか、もう一つはどの回線の上に作るかです。
まずは、インターネットVPNでよく使われる二つの技術を比べてみましょう。
| 項目 | IPsec-VPN | SSL/TLS-VPN(SSL-VPN) |
|---|---|---|
| 暗号化する層 | ネットワーク層(IPのレベル) | TLSを使い、アプリケーションに近い位置 |
| 主な使われ方 | 拠点間接続、専用ソフトでのリモートアクセス | ブラウザや軽いソフトでのリモートアクセス |
| 端末側の準備 | 専用の設定やソフトが必要なことが多い | ブラウザだけで使える方式もある |
| 保護できる範囲 | IPで運ばれる通信を幅広く守れる | 方式によって対象のアプリケーションが限られる |
IPsecはIPのレベルで暗号化するので、上で動くアプリケーションの種類を問わずに守れます。一方のSSL/TLS-VPNは、Webサイトの暗号化でおなじみのTLSを使うので、ブラウザから手軽に接続できるのが持ち味です。
IPsecのトンネルモードとトランスポートモード¶
IPsecには、試験で問われやすい細かい用語がいくつかあります。代表的なのが、トンネルモードとトランスポートモードの違いです。
トンネルモードは、元のIPヘッダを含めたパケット全体を暗号化し、新しいIPヘッダを付けます。先ほどの宅配便の箱のたとえそのもので、拠点間のVPNで使われる形です。
トランスポートモードは、元のIPヘッダはそのまま残し、中身のデータ部分だけを保護します。端末同士が直接やり取りするときに使われる形です。
もう一つ、IPsecの中で使われる決まりごととして、ESPとAHがあります。ESPは暗号化と改ざん検知の両方を担い、AHは改ざん検知と認証だけを担って暗号化はしません。さらに、通信の前に鍵を安全に取り決める仕組みとしてIKEが使われます。
名前を丸暗記するより、どれが暗号化をするのか、どれが中身まで包むのか、という役割で覚えるのがおすすめです。役割で区別できていれば、説明文の選択肢で見分けられます。
インターネットVPNとIP-VPN¶
もう一つの切り口は、どの回線の上にVPNを作るかです。ここで混ざりやすいのが、インターネットVPNとIP-VPNです。
インターネットVPNは、誰もが使うインターネットの上に、IPsecなどでトンネルを張る方式です。費用は抑えやすい反面、回線の混み具合の影響を受けやすく、暗号化で身を守ることが前提になります。
IP-VPNは、通信事業者が用意した閉じたネットワークの上に、利用者ごとの仮想的な通路を作る方式です。インターネットを通らないぶん、品質や安全性を確保しやすい一方で、費用は高くなりがちです。
名前が似ているので、インターネットを通るかどうか、で区別すると迷いません。インターネットVPNは公衆の道を使い、IP-VPNは事業者の敷地内の道を使う、とイメージしておきましょう。
試験でVPNはどう問われるのか¶
仕組みと種類が分かったところで、試験での出され方を見ていきます。VPNは、科目Aの用語問題と、科目Bのセキュリティの事例問題の両方に顔を出します。
出題の形ごとに、何を押さえておけばよいかを表にまとめました。
| 出題の形 | 問われること | 押さえるポイント |
|---|---|---|
| 用語の意味 | VPNで実現できること | 共用回線の上に専用の通路を作る |
| 技術の比較 | IPsecとSSL/TLS、各モードの違い | どの層で暗号化するか、何を包むか |
| 回線の比較 | インターネットVPNとIP-VPN | インターネットを通るかどうか |
| 事例の対策 | テレワーク環境の安全対策 | 認証の強化、装置の更新、接続後の制御 |
科目Aでは、上の3行が中心です。正しい説明を選ぶ形が多いので、役割の違いを一言で言えるようにしておくと得点につながります。
科目Bではテレワークの事例として出てくる¶
科目Bの情報セキュリティの問題では、VPNそのものの説明よりも、VPNを使っている会社で起きた出来事を読む形が多くなります。たとえば、社員のIDとパスワードが漏れてVPNに不正ログインされた、という事例です。
こうした問題で問われるのは、次に何をすべきかという判断です。多要素認証を導入する、VPN装置のソフトウェアを最新に保つ、VPNでつながった後も必要なサーバにしか届かないように制限する、といった対策が候補になります。
ここで大事なのは、VPNはつながった後の安全までは保証しないという視点です。VPNは通路を守る技術であって、通路に入ってきた人が本物かどうかは認証の強さで決まります。
実務でも、この考え方はとても大切です。私が関わった現場でも、VPNの利用者ごとに入れるサーバを絞り、退職者のアカウントはその日のうちに止める運用を徹底していました。
セキュリティ分野で何から手を付ければよいか迷っている場合は、科目Aと科目Bの両方の対策をまとめたこちらの記事が道しるべになります。
【関連記事】基本情報の情報セキュリティは何を勉強する?科目A・科目Bの対策を解説
VPNに通すかどうかの判断を擬似言語で追ってみよう¶
ここからは、端末が通信を送るたびに行っている判断を擬似言語で書いてみます。題材は、社内宛ての通信だけをVPNのトンネルに通し、それ以外はそのままインターネットへ出す、という動きです。
この動きはスプリットトンネルと呼ばれます。本物の装置はアドレスをビット単位で比べますが、ここでは読みやすさを優先して、宛先の文字列が社内のアドレスの先頭部分で始まるかどうかで判定する形に簡略化しました。
○文字列型: chooseRoute(文字列型: dest, 論理型: connected)
文字列型の配列: internal ← {"10.1.", "10.2.", "192.168.10."}
論理型: isInternal ← false
整数型: i
for (i を 1 から internalの要素数 まで 1 ずつ増やす)
if (dest が internal[i] で始まる)
isInternal ← true
endif
endfor
if (isInternal = true and connected = true)
return "カプセル化してVPN装置へ送る"
elseif (isInternal = true)
return "送信しない"
else
return "そのままインターネットへ送る"
endif
配列internalが、社内のネットワークを表す一覧です。引数connectedは、VPNに接続できているかどうかを表す論理型の値です。
社内宛てなのにVPNにつながっていないときは、送信しないようにしています。社内宛ての通信を暗号化せずにインターネットへ流してしまわないための安全策です。
変数の値をトレース表で追う¶
宛先が10.2.0.8で、VPNに接続できている場合を追ってみましょう。ループを1周するごとに、先頭が一致したかどうかと、isInternalの値を書き出します。
| i | internal[i] | 先頭が一致するか | isInternal |
|---|---|---|---|
| 開始時 | ― | ― | false |
| 1 | 10.1. | しない | false |
| 2 | 10.2. | する | true |
| 3 | 192.168.10. | しない | true |
ループが終わった時点で、isInternalはtrueです。connectedもtrueなので、最初の条件が真になり、カプセル化してVPN装置へ送るが返ります。
では、宛先が203.0.113.5ならどうでしょうか。どの行とも一致しないのでisInternalはfalseのままになり、最後のelseに進んで、そのままインターネットへ送るが返ります。
トレース表の書き方をもう少し丁寧に確認したい人は、手順を一から解説したこちらの記事を読んでおくと楽になります。
【関連記事】擬似言語のトレース表の書き方|科目Bで変数の値を追う手順を解説
間違いやすい選択肢の見分け方¶
このコードを題材にした問題なら、狙われやすいのはループの中の書き方です。一致しなかったときに isInternal ← false と書き戻してしまう選択肢があると、最後の要素で一致しなければ、途中で見つけた結果が消えてしまいます。
さきほどの10.2.0.8の例がまさにそうです。3周目で一致しないときにfalseへ戻すと、社内宛てなのにインターネットへ出す、という危険な答えになってしまいます。
もう一つの落とし穴は、条件の順番です。isInternal = true だけを先に判定して送信してしまうと、VPNにつながっていないときに社内宛ての通信が守られないまま出ていきます。
実務でも、見つかったら覚えておく、見つからなくても消さない、という書き方はあらゆる場面で出てきます。私自身、アクセス制御の判定処理をレビューするときは、この書き戻しがないかを真っ先に確認しています。
VPNの知識をセキュリティ全体につなげる¶
VPNは、ネットワークの知識とセキュリティの知識がちょうど重なる場所にある用語です。カプセル化はネットワークの話、暗号化と認証はセキュリティの話で、両方が分かって初めて全体像が見えてきます。
逆にいえば、VPNを一度しっかり理解すると、ファイアウォールや多要素認証の話も同じ地図の上に置けるようになります。どこを通路で守り、どこを認証で守るのかが、自然と整理されていくはずです。
ネットワーク分野そのものに苦手意識がある場合は、つまずく場所と解き方を整理したこちらの記事が参考になります。
【関連記事】基本情報のネットワークが難しい人へ|つまずく場所と問題の解き方
科目Bのセキュリティ問題の対策全体は、次の記事にまとめてあります。VPNの知識を事例問題のどこで使うのかが、より具体的に見えてきます。
【関連記事】基本情報 科目Bの情報セキュリティ対策|擬似言語との勉強時間の配分を解説
まとめ¶
VPNは、インターネットのような共用の回線の上に、仮想的な専用の通路を作る技術でした。拠点同士をつなぐ使い方と、個人の端末を社内へつなぐ使い方があります。
仕組みの柱は、トンネリング、暗号化、認証の三つです。包むだけでは安全にならず、鍵をかけて相手を確かめることで、初めて専用の通路として使えるようになります。
種類は、IPsecかSSL/TLSかという技術の切り口と、インターネットを通るかどうかという回線の切り口で整理できます。IPsecのトンネルモードはパケット全体を包み、ESPは暗号化まで担う、と役割で覚えておきましょう。
科目Bでは、VPNがあっても認証が弱ければ侵入される、という視点が問われます。通路を守る技術と、入ってくる人を確かめる技術は別物だと意識しておくと、事例問題でも落ち着いて判断できます。
用語の暗記に頼らず、包む・鍵をかける・確かめる、の三つを軸にすれば、VPNの問題は怖くありません。今日の表を一度自分の手で書き直すだけでも、次に問題を見たときの見え方が変わるはずです。
通信がどこを通り、どこで守られているのかを実際に動かしながら確かめたい人は、Giji Academyのセキュリティ講座を使ってみてください。パケットの流れが目に見えると、VPNのトンネルがぐっと身近になります。