疑問解決(VPN)

2012/1/21

リモートアクセスは、暗号化しましょう。

・VPN(Virtual Private Network)
 インターネットは危険がいっぱいです。
 通信データは、いつ盗み見られているかわかりません。
 そこで、暗号化を行って仮想的にプライベートネットワークを作る事により、
 インターネットの世界で安全に通信を行うというのがVPNです。
 そこで利用するのがトンネリングという技術で、
 あるデータを別のプロトコルでカプセル化することを言います。

 Anet - Arooter - Internet - Brooter - Bnet

 上記のようなネットワークがあり、
 AnetからBnetにデータを転送したい場合、
 本来であれば経路上の各ルータはAnetとBnetの経路を知っていなければ
 転送することができません。
 しかしArooterとBrooterがトンネリングされていれば、
 Internet内のルータはAnetとBnetを認識する必要がありません。
 つまり、外部から内部を知る必要がないため、
 内部にはアクセスできないということになり、
 経路情報に対して安全性があります。

 VPNには、データリンク層でトンネリングするレイヤー2トンネリングプロトコル と
 ネットワーク層でトンネリングするレイヤー3トンネリングプロトコルがあります。

 有名どころのVPNの種類は下記の通りです。
種別 解説
PPTP
(Point-to-Point Tunneling Protocol)
PPTPは、レイヤー2トンネリングプロトコルになります。

PPPプロトコルを拡張したもので、
IPネットワーク上でしか利用できません。
WindowsにはPPTPクライアントが標準で組み込まれているため、
PCとルータ間ではもっともメジャーな方法です。
少し高めのルータであれば、基本的に対応していると思います。
私は、YamahaのRt5x 系のものを使っています。

暗号方式は、MPPEを使用します。
ただし、Windows 98 SE以前のPPTPの実装は、
標準ではMPPE-128をサポートしていません。
Windows 95/98でMPPE-128を使うために、
ダイアルアップネットワーク 1.4 アップグレードをインストールする必要があります。

PPTP による通信では、
制御コネクションに TCP の 1723 番のポートを使用し、
トンネルに IP プロトコルの 47 番の ID である
拡張GREプロトコル を使用します。
L2F
(Layer 2 Forwarding)
現在は、L2TPに統合されています。

制御チャンネルとトンネルの両方にUDPポート1701 を使用します。
L2TP
(Layer 2 Tunneling Protocol)
L2TPは、レイヤー2トンネリングプロトコルになります。

L2TPもPPPを拡張して作られたトンネリング用のプロトコルです。
ただし、L2TPには暗号化の機能はないため、
暗号化にIPSecを使用することが多いです。

PPTPと違い、フレームリレーやATMでも使用可能です。
制御チャンネルとトンネルの両方にUDPポート1701 を使用します。
また、複数のユーザセッションを扱えるため、
LAN間接続に良く使われます。

マルチキャストにも対応しています。
IPSec IPSecは、レイヤー3トンネリングプロトコルにあたります。

IPを拡張したものです。
IPv4ではオプションですが、IPv6では必須となっています。

提供する機能は下記の通り
 ・発信元が正しいことを保証
 ・改ざんされていないことを保証
 ・暗号化

プロトコルには、AHまたはESPを利用します。

暗号化と認証のアルゴリズムは、任意のアルゴリズムが選択できます。
ただし、最低限下記のアルゴリズムは実装する必要があります。
 認証 :HMAC-MD5、HMAC-SHA
 暗号化:DES-CBC

鍵交換プロトコルには、IKEプロトコルを利用します。

またIPSecには、トランスポートモードとトンネルモードの2種類あり、
プロトコルのAHとESPの組み合わせがあるので、
計4種類の動作があります。
 トランスポートモード:IPデータグラムのデータ部のみを暗号化
 トンネルモード:IPデータグラム全体を暗号化

Windows2000以降は、標準で L2TP+IPSec に対応しています。

また、マルチキャストには対応していないため、
OSPF等のマルチキャストが必要なプロトコルを使う場合は、
別途GRE等を利用する必要があります。
SSL−VPN ここ2、3年ではやりだしてきた方式です。
暗号方式にWEBで実績のあるSSLを使用した方式です。
暗号方式としてSSLを使うだけであって、
WEBだけでしか使えないというわけではありません。
GRE
(Generic Routing Encapsulation)

レイヤー3トンネリングプロトコルの1つです。
GREでは暗号化はサポートしていないため、
安全性を保ちたい場合はGRE over IPSecと使います。

マルチキャストにも対応しています。
一般的には、ルーティングプロトコル等の
マルチキャストパケットのトンネリングで利用します。

・認証方式
 最近OSをVistaに変更したら、PPTPが繋がらなくなったという問題がおきました。
 これは、認証方式のchap v1をVistaがサポートしなくなったためです。
 ルータ側の設定で認証方式をchap v1にしている場合は、
 chap v2に変更する必要があります。
認証方式 解説

PAP
(Password Authentication Protocol)
アクセス時にパスワードを回線に流します。
CHAP
(Challenge Handshake Authentication Protocol)
アクセス時にパスワードを暗号化して、回線に流します。
サーバでランダムに作成したチャレンジコードを元に、
パスワードをMD5でハッシュした物を、
サーバ・クライアント双方で作成した物を比較して認証します。
MS-CHAPv1
(Challenge Handshake Authentication Protocol
version1)
CHAP認証を拡張して、
パスワード変更や暗号鍵の交換ができるようにしたものです。
MS-CHAPv2
(Challenge Handshake Authentication Protocol
version2)
MS−CHAPv1よりも高セキュリティです。
相互認証とも呼ばれる双方向認証が行われます。
また、送信データと受信データに別々の暗号化キーを使います。
・商用VPNサービス
 商用で提供されている主なVPNサービスは下記の通りです。
サービス名 概要
インターネットVPN インターネットを使って拠点間を暗号化するサービスです。
インターネット上を通るので速度はベストエフォートとなります。
また、データが盗まれる可能性も0ではありません。
IP-VPN 専用回線を使って拠点間を暗号化します。
そのため速度は保証されます。
広域イーサネット 専用回線を使って拠点間を暗号化します。
イーサネットなのでIP以外のプロトコルも使用できます。
・暗号化アルゴリズム
 主な暗号化アルゴリズムは下記の通りです。
サービス名 概要
DES
(Data Encryption Standard)
共有鍵暗号方式のもっとも代表的なアルゴリズム
3DES
(トリプルDES)
DESのアルゴリズムを3回繰り返したもの
DES-CBC
IPSecでの実装が必須となっています。
AES
(Advanced Encryption Standard)
コンピュータの発達に伴い、
DESの安全性が低下してきたため、
代替手法としてAESが考案された。
RSA
(考案者のRivest、Shamir、Adleman
  の3人の頭文字を取ったもの)
公開鍵暗号方式のもっとも代表的なアルゴリズム
・OpenVPN
 OpenVPNは、オープンソースのSSL-VPNシステムです。
 Linux,Windows,Mac,Solaris等幅広いOSに対応しています。
 初期バージョンでは、1対1の主にP2P用途向けでしたが、
 2.0では1対多のシステムにも対応し、
 エンタープライズとしても使用できるものになりました。

 構築するためには下記の通り、複数の鍵と証明書が必要になります。
ファイル名
(configファイルと合わせる必要がある)
解説
ca.crt 認証局の証明書
ca.key 認証局の鍵
dh.pem DHパラメータ
server.crt サーバ証明書
server.key サーバ鍵
client.crt クライアント証明書
client.key クライアント鍵

 2012年1月の時点で最新は2.2.2となります。
 セットアップ時にひかかった点を纏めます。
問題点 解説
Cannot load certificate file server.crtが生成に失敗して0バイトに
なっていないか確認してください。
0バイトであれば再生成してください。
failed to update database TXT_DB error number2 データベース(index.txt)を一旦削除し、
空のフアイルを作成するとうまくいく場合があります。
・用語集
用語 概要
SSL/TSL
(Secure Socket Layer)
(Transport Layer Security)
SSLはNetscape Communicatinos社によって
提唱された暗号方式です。
SSL3.0を元にIETFが仕様をまとめて、
TSL1.0としました。
そのため、SSL3.1≒TSL1.0 という式が成り立ちます。

OSI参照モデルレイヤーではセッション層に位置し、
アプリケーション層から受け取ったデータを暗号化し、
トランスポート層(TCP/UDP)に渡します。
AH
(Authentication Header)
発信元の認証
データの完全性を保証します。
IPプロトコル番号 51
ESP
(Encapsulating Security Payload)
AHに加えて暗号化の機能を提供します。
IPプロトコル番号 50
IKE
(Internet Key Exchange)

インターネット上で安全に暗号鍵を交換するプロトコル。
通常はUDPの500番ポートを使用します。
ISAKMPプロトコル上でOakley鍵交換の手順を実装しています。

IPSecは共通鍵を利用しており、
その共通鍵の鍵交換にIKEが使われます。
IPSecで利用するための鍵なので、
当然これをIPSecで暗号化することはできません。
そのためIKE自身にも暗号化の機能が備わっています。

そのときの鍵生成には「Diffie-Hellman」という方式が利用されます。

TUN/TAP 仮想的なネットワークデバイスです。
本来であれば、パケットはNICに渡しますが、
TUN/TAPドライバはユーザプログラムに対して渡します。

TUNはIPパケットに対応し、
TAPはイーサネットフレームに対応しています。
Man in the Middle Attack
(MITM attack)
(中間者攻撃)
通信の途中に割込み
通信内容を書き換える攻撃
ハッシュ関数 原文から固定長の擬似乱数を生成する関数で、
生成された乱数を”ハッシュ値”という。
ハッシュ値から原文に復元するのは困難な1方向関数。
主なハッシュ関数は下記のとおり
 SHA-1、MD6、MD5、MD2
MD5
(Message Digest 5)
128ビットの固定長乱数を作成するハッシュ関数。
以前までは広く使われていましたが、
脆弱な部分があることが判明しています。
RSA暗号の開発者の一人であるRonald Rivest氏作成
SHA
(シャー、
  Secure Hash Algorithm)
MD4を基にしたアルゴリズムで、
MD5より強固といわれている。
SHA-1 (160ビット)、SHA-224、SHA-256、
SHA-384、SHA-512の5種類があります。
MAC
(Message Authentication Code)
メッセージ認証コードのことで、
通信内容の改竄防止や本人確認を行うために使用する、
メッセージダイジェストのことです。
メッセージダイジェストを作成し、
通信データにつけて送信します。
受信側は、自分のところで作成したMACと比較して、
データが正当なものか判断します。
HMAC
(Keyed-Hashing for
  Message Authentication code)
ハッシュ関数で作成したMACのこと。
使用したハッシュ関数によって下記の様に呼ばれる事があります。
MD5 ・・・ HMAC-MD5
SHA ・・・ HMAC-SHA
Diffie-Hellman鍵交換

安全でない通信経路で、安全に共通鍵を交換する方式
PKIについてはこちら

・単語メモ
 ・RADIUS
 ・EAP(Extensible Authentication Protocol)
 ・MPPE(Microsoft Point-to-Point Encryption)
 ・RC4(MPPE-40/MPPE-128)
 ・DES-56bit
 ・CCP (Compression Control Protocol : 圧縮制御プロトコル)
 ・ISAKMP/Oakley
 ・SA(Security Association)
 ・SPI(Security Pointer Index)
さらに情報が欲しい方は、Google検索で  
Google
・TOPへ戻る
 

メールはこちらに