2016年3月23日

VPNの特性と実装

アドバイス セキュリティ

前回の記事ではVPN(バーチャルプライベートネットワーク)の定義、目的、さまざまな用途をご紹介しました。今回は、広く普及しているVPN実装と、その長所と短所を見ていきたいと思います。

vpn-impementations-FB

そもそもVPNの概念は多義的で、この実装はVPNである、とはすぐにわからないことがあります。ある意味、インターネットの原型となったARPANETもVPNと言えなくもありません。興味深いことに、ネットワーキングの概念(ネットワークのプロトコルも)は、ほぼすべてが企業向け技術として始まり、一般ユーザー向けに普及するのはその後です。

もっとも、歴史も企業インフラ云々も、今の私たちにとっては興味の外です。今回の記事では、テクノロジーに詳しくない人でも遭遇することのある、一般的なVPNの実装方法を詳しく見ていきます。

まずは、公共Wi-Fiネットワークに接続するときに利用者を守るため、またはサービスプロバイダーによる何らかのIP制限を回避するための実装方法を見ていきましょう。一般消費者向けのVPNサービスでは一般的なOSの機能が採用されているのが普通で、安全な接続を確立するための手順が順番に現れます。

最近のVPNは、手順の簡略化の点でかなり改善されました。技術的にややこしい作業は一切不要で、ただ「支払い手続きはこちら、アプリのダウンロードはこちら、ここをクリックしたら完了」といった単純な指示に従うだけでVPN接続を設定できます。とはいえ、VPNの実装方法がそれぞれどう違うのかくらいは、知っておいた方がよい場合があるかもしれません。

vpn-implementations-settings-en

AndroidのVPN設定(左)とWindowsのVPN設定(右)

一般的なVPNの実装方法

PPTP(Point-to-Point Tunneling Protocol)は20年ほど前に開発されたプロトコルで、長所もあれば大きな短所もあります。一番の長所は、レガシーOSも含めてほぼすべてのOSと互換性があるので、普遍性と可用性が高いことです。もう1つ、新しいソリューションよりは処理能力を必要としない、というメリットも挙げられます。

一方で、一番のデメリットはその古さです。セキュリティの現状を考えると、PPTPの保護レベルはかなり低く、90年代半ばであればまったく問題なかった暗号化方式も、今や十分とは言えません。加えて、アーキテクチャ上の欠陥や(英語記事)、最も普及しているMicrosoft環境での実装に存在する脆弱性の多さが、問題を大きくしています。

しかも、PPTPは既定で暗号化を行っておらず、現在入手可能なハードウェアのパスワードを解読するのには24時間もかからないことでしょう(英語記事)。ただし、超安全な接続を必要としないとき、または他のVPN接続を利用できないときには、何の保護もかけないよりは弱い暗号化方式のPPTPを使ったほうがよいでしょう。

そういえば私は一度、微妙な状況に直面したことがあります。インターネットが規制されていることで悪名高い某国(どこかはお察しください)へ行ったときの話です。自国にある会社のPPTPサーバーを使ってメールしたのですが、メールが配信されるのには2日から約2週間もかかりました。その間、メールがどこにあったのかは知る由もありません。その上、より安全なVPN接続の利用も制限されていました。政府や企業といった権力者から身を守るのにPPTPはまったく役に立たないことが、よくわかる話です。

L2TP(Layer 2 Tunneling Protocol)は、PPTPにかなり似ています。L2TPもPPTPもほぼ同時期に開発され、認定されました。バーチャルネットワークではL2TPの方が効果的と考えられていますが、PPTPよりもやや高い処理能力が要求されます。このプロトコルは一般的に、ISPや企業ユーザーに好んで使われています。ちなみに、L2TPは暗号化機能が既定で提供されておらず、別のプロトコル(大抵はIPSec)とバンドルされています。

IPSec(Internet Protocol Security)は、プロトコル、標準、推奨がまとめられたもので、さまざまな種類の安全な接続向けに開発されました。IPSecの開発が始まったのは1990年初頭ですが、それ以降も技術の進化に合わせて基本概念の改良と更新が繰り返されているため、仕様は固定されていません。

IPSecが、どの業界に向けて開発されたかは明白です。IPSecには十数個の標準が含まれており(それぞれに複数の実装方法があります)、あらゆるレベルでの安全な接続の確立に利用できます。アーキテクチャ、暗号化アルゴリズムの信頼性、機能の面では確かに優れています。

はばかりながら、IPSecにも短所があります。1つ目は、普通のPCユーザーからすると設定が簡単ではなく、設定を間違えると安全性が損なわれる可能性がある点です。また、先に述べたとおり、IPSecでは複数のプロトコルを利用します。

2つ目は、処理能力を必要とする点です。この短所は、AES暗号化アルゴリズムのハードウェアアクセラレーション機能を使うことで部分的に解消されます。このアルゴリズムは、最近のIPSec実装では他の暗号化アルゴリズムとともに提供されています。AESハードウェアアクセラレーション機能は、モバイル端末やデスクトップ端末向けの最新プロセッサーだけでなく、Wi-Fiルーターなどにも導入されています。

残念ながら、理論家(主に数学の専門家)によって考え出されたテクノロジーは、科学の知識や理解が不足している時期に実務家によって具体化されてしまいました。2015年10月に発表された研究報告によると(いずれも英語記事)、66%ものIPSec接続は大した苦労もなくハッキング可能であり、NSAは暗号解読に適したハードウェアリソースを保持している可能性があります。

問題は、安全な接続を確立するためのプロトコルが間違った使われ方をしていることです。これはIPSecだけの問題ではなく、TSL(後述)やSSHTOR、OTRにも当てはまる問題です。言い換えれば、Webサイト、メールサーバー、メッセンジャーなどと安全な接続を確立するためのVPN接続や他の接続方法は、いずれもセキュリティを侵害される可能性があるのです。

もちろん、こうした攻撃には、長い準備期間と膨大な処理能力が必要です。しかし、この研究では、研究者はAmazonのごく普通のクラウド技術を用いていますし、どうやら現実的な金額を支払い、個人が利用可能な技術を使ったようです。

このようにリソースが手元にあるなら、うまくいけば攻撃準備に1分もかからないでしょうし、最悪の場合でも準備期間は長くて1か月と考えられます。一方で、この概念実証に対して懐疑的な専門家もいます。実世界に存在する脆弱なシステムの数はずっと少ない、というのが彼らの言い分です。いずれにせよ、報告書の一部の側面については真剣に捉えるべきです。一方で、脆弱性が存在するかもしれないソフトウェアの開発者は、パッチの準備を進めているか、すでに開発を完了して利用者に注意を促しています。

SSLSecure Sockets Layer VPNTLSTransport Layer Security VPNは、名称からわかるとおり、それぞれSSLとTLSのプロトコルをベースとしており、他の保護手段の補完として使われることがあります。ネットを見て回る中で、誰でもSSLまたはTLSに遭遇しているはずです。たとえば、今ご覧になっているこのWebサイトでも使っています。アドレスバー内に表示されるURLの先頭の「https」という文字列と緑色の錠前マークは、そのWebサイトがこれらのプロトコルを用いて安全に接続されていることを示しています。

このプロトコルの最初の実装は前世期まで遡りますが、勢いが増したのは2000年になってからです。このプロトコルが普及した結果、詳細な研究が進み、アーキテクチャ自体と各種実装で多数の脆弱性が発見されました。SSL 3.0は、2015年6月に段階的に廃止されました(英語記事)。最新バージョンはTLS 1.2ですが、これも万全とは程遠い存在です。実のところ安全性は、設定によって大きく異なります(IPSecの説明をご参照ください)。そもそも、SSLもTLSも下位互換性を提供しなければならない点が足かせになっています。

SSL VPNとTLS VPNの長所は、間違いなく、インターネット上でSSL/TLSが普及している点です。そのため、ほとんどの公共ネットワークで自由に利用できます。短所は、パフォーマンスが低いこと、設定が難しいこと、追加でソフトウェアを導入する必要があることです。

SSL/TLS VPNで最も普及している実装方法は、OpenVPN(SSL 3.0/TLS 1.2)とMicrosoftのSSTP(SSL 3.0)です。事実、SSTPはWindowsに組み込まれています。OpenVPNはオープン性という特徴から、ほとんどのプラットフォーム向けに数多くの実装が用意されており、現在最も信頼できるVPN実装と考えられています。

まとめ

現在知られている中で、広く普及しているVPN実装方法を概説してきましたが、この技術は長い年月をかけて進化する間に、似たようなソリューションがいくつも開発されています。企業や通信事業者向けに作られたソリューションがどれだけあるか考えてみてください!

一般ユーザーに関しては、オープン性、信頼性、安全性の観点からOpenVPNをこのまま利用し続けることをお勧めします。もっとも、OpenVPNや他のVPN実装には技術的、法的な課題がいくつもあります。これについては、本シリーズの後半で触れていきたいと思います。