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フレームとGREトンネル

PPPを利用しているのは、認証やIPアドレス割り当てなどの機能を利用するためです。基本編の家庭内ネットワークの構築 - 機器の役割で説明したPPPoEも、PPPの認証などを使っています。

認証

認証の方法は何通りかありますが、ここではCHAP(Challenge Handshake Authentication Protocol)とMS-CHAPv2について説明します。

CHAPは、ワンタイムパスワードの一種であるチャレンジ・レスポンス方式を採用しています。仕組みは、まずユーザーIDを入力するとサーバーからチャレンジコードを送ります。チャレンジコードは、サーバーで作成したランダムな値です。

CHAPチャレンジコード

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

CHAPレスポンス

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

CHAP認証

このため、CHAPではパスワードを平文に戻せる状態で保存する必要があり、悪意あるユーザーにとってパスワードを盗みやすい状態と言えます。

なお、チャレンジコードが暗号化されずに送られるため、これを盗聴されるとパスワードが解読されると思われるかもしれません。

しかし、ハッシュは不可逆性を持っており、元に戻せないため簡単には解読できません。

ハッシュの不可逆性

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

ハッシュの一意性

インターネットでハッシュ値を盗聴されてもパスワードが解読されにくいため、ハッシュはしばしば認証に使われます。

MS-CHAPv2はCHAPとほとんど同じやりとりをしますが、パスワードは平文に戻せる状態で保存しません。また、双方向で認証を行います。

暗号化

認証後は、PPPの制御信号を使ってパソコンに対して社内で通信できるIPアドレス(下図では172.16.2.2)を割り当て、DNSサーバーなどのIPアドレスも設定します。また、MS-CHAPなどで用いた数字を基に作成した共通鍵で、RC4によって暗号化して通信を行います。

PPTP通信方法

なお、認証にCHAPを用いていた場合は暗号化できません。

PPTPの留意点

PPTPは、Windowsでサポートされているため接続先の設定を行うことで利用可能になる一方、以下のような留意点があります。

  • 通信の最初から暗号化されていないためセキュリティが弱い
  • 上で説明した認証方法では脆弱性があります
  • パソコン側がファイアウォールなどに守られている場合は、透過できるようにしたり特殊な設定が必要なことがあります。

VPN関連のページ

  • 1ページ目「VPN
  • 2ページ目「PPTP」
  • 3ページ目「IPsec
  • 4ページ目「L2TP/IPsec
  • 5ページ目「SSL-VPN