PPTP
自宅パソコンなどから会社へのVPN接続に向いているPPTP(Point-to-Point Tunneling Protocol)について説明しています。
PPTPとは
PPTPはかなり以前から利用されているVPNで、自宅パソコンなどからリモート接続する時に使われます。電話回線などで広く利用されていたレイヤー2プロトコルのPPP(Point-to-Point Protocol)と、シスコシステムズ社が開発したGRE(Generic Routing Encapsulation)を利用します。
PPTPは最初にPPPをGREでカプセル化し、接続先とトンネルを構築します。
PPPを利用しているのは、認証やIPアドレス割り当てなどの機能を利用するためです。基本編の家庭内ネットワークの構築 - 機器の役割で説明したPPPoEも、PPPの認証などを使っています。
認証
認証の方法は何通りかありますが、ここではCHAP(Challenge Handshake Authentication Protocol)と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でサポートされているため接続先の設定を行うことで利用可能になる一方、以下のような留意点があります。
- 通信の最初から暗号化されていないためセキュリティが弱い
- 上で説明した認証方法では脆弱性があります
- パソコン側がファイアウォールなどに守られている場合は、透過できるようにしたり特殊な設定が必要なことがあります。
VPN関連のページ
- 1ページ目「VPN」
- 2ページ目「PPTP」
- 3ページ目「IPsec」
- 4ページ目「L2TP/IPsec」
- 5ページ目「SSL-VPN」