PPTP
自宅パソコン等から会社へのVPN接続に向いているPPTPについて説明しています。
PPTPの概要
PPTPはかなり以前から利用されているVPNで、自宅パソコン等からリモート接続する時に使われます。電話回線等で広く利用されていたレイヤー2プロトコルのPPPと、シスコシステムズ社が開発したGREを利用します。
PPTPは最初にPPPをGREでカプセル化し、接続先とトンネルを構築します。

PPPを利用しているのは認証やIPアドレス割り当て等の機能を利用するためです。基本編の「家庭内ネットワークの構築 - ケーブルの接続」で説明したPPPoEもPPPの認証等を使っています。
認証
認証の方法は何通りかありますが、ここではCHAPとMS-CHAPv2について説明します。
CHAPはワンタイムパスワードの一種であるチャレンジ・レスポンス方式を採用しています。仕組みは、まずユーザーIDを入力するとサーバーからチャレンジコードを送ります。チャレンジコードはサーバーで作成したランダムな値です。

パソコン側ではパスワードを入力した際にパスワードをチャレンジコード等と組み合わせてMD5でハッシュし、サーバーにレスポンスとして送ります。

サーバー側では送られてきたユーザIDに対応するパスワードを自身が保存しているデータから探し、チャレンジコード等と組み合わせてハッシュします。それを送られてきた値と比較し、一致すると正規のユーザーと判断します。

このため、CHAPではパスワードを平文に戻せる状態で保存する必要があり、悪意あるユーザーにとってパスワードを盗み易い状態と言えます。
尚、チャレンジコードが暗号化されずに送られるため、これを盗聴されるとパスワードが解読されると思われるかもしれません。
しかし、ハッシュは不可逆性を持っており、元に戻せないため簡単には解読出来ません。

又、ハッシュする前のデータが異なると極稀な可能性を除いて異なる計算結果になります。このため、本来のパスワードを知らない人がハッシュしても、本来のパスワードからハッシュした値と異なる計算結果となり、認証されません。

インターネットでハッシュ値を盗聴されてもパスワードが解読されにくいため、ハッシュはしばしば認証に使われます。
MS-CHAPv2はCHAPと殆ど同じやりとりをしますが、パスワードは平文に戻せる状態で保存しません。又、双方向で認証を行います。
暗号化
認証後はPPPの制御信号を使ってパソコンに対して社内で通信出来るIPアドレス、下図では172.16.2.2を割り当て、DNSサーバー等のIPアドレスも設定します。又、MS-CHAP等で用いた数字を基に作成した共通鍵でRC4によって暗号化して通信を行います。

尚、認証にCHAPを用いていた場合は暗号化出来ません。
PPTPの留意点
PPTPはWindowsでサポートされているため接続先の設定を行う事で利用可能になる一方、留意点としては通信の最初から暗号化されていないためセキュリティが弱く、更に上で説明した認証方法では脆弱性がある点、パソコン側がファイアウォール等に守られている場合は透過出来るようにしたり特殊な設定が必要な事があります。