HOME


暗号化トンネルZebedeeで無線LAN(IEEE802.11b/a/g)を傍受から守る

2003/6/13

1年ほど前から、いろいろな雑誌記事で無線LAN(IEEE 802.11b/a/g)のWEP暗号が解読される危険性がとりあげられている。


この問題の解説としては、セキュリティマガジン 第7号「無線LANの脆弱性を検証する」(根津研介氏)を薦める。
入手できない場合は、次の記事もよい。
Software Design 2003年2月号 「無線LANは安全に使えるか?―疵だらけのセキュリティ」(根津研介氏)
ハッカージャパン 2003年3月号 「丸見え無線LAN」(はまもと@常時接続の宴氏)
オンラインの資料としては根津研介氏による「802.11セキュリティ フォーラム」(http://www.famm.jp/wireless/modules/newbb/)が詳しい。

私の家で利用している無線LAN機器は2〜3年前のルーター機能付きアクセスポイントと無線LAN PCカードである。これらは「64ビットWEP」にしか対応していない。64ビットWEPというのはユーザーが指定できるキーの長さがわずか40ビットであり、「WEPの数学的な脆弱性(上記の資料を参照)」を利用するまでもなく、総当たり攻撃で実用的に解読できるほど頼りないものだ。近所に「スキルと覗き趣味のある人」がいれば、無線LANでやりとりしている内容がわかってしまうだろう。

無線LANで流れている情報の中で、特に問題になるのは次のものだ。

上記以外にも、アクセスしたWebサイトの情報があるが、それは「非常に困る情報」には含めない。ショッピングサイトに入力するクレジットカード番号などがあるが、その種のサイトとのやりとりはSSLで暗号化されるのがあたりまえなので、WEPが破られただけでは情報は漏れない。

最後の「SSLで暗号化された内容は、WEPが破られただけでは漏れない」点は重要だ。SMTPとPOPの通信内容も、同じようにWEP以外の暗号で保護すればよい。


あなたが利用しているISPがIIJであれば、Outlook Expressなどのメーラーの設定だけで、SMTPとPOPをSSLで暗号化できる。そのためメールに関しては、わざわざ本稿の方法を使用しなくてもよい。

PGPやS/MIMEを使って、メール本文や添付ファイルを暗号化する方法もある。しかしメールをやりとりする相手が、全員PGPかS/MIMEを使えるケースは少ないだろう。PGPやS/MIMEを使わない相手とのメールは、結局別の方法でカバーすることになる。



128ビットWEPの製品に買い換える、WPA(Wi-Fi Protected Access)対応の製品が出るのを待ち、買い換えるなどの選択肢もある。しかし、本稿で説明する方法では、フリーソフトを使うため費用はかからない。
ただし、「暗号装置」として使えるPCが1台(イーサネットに接続できるもの)と、イーサネットケーブルが1本必要である。

現在の128ビットWEPが安全と考えられるのは、ランダムなキーを使っている場合の、総当たり式の攻撃についてだけだ。次の条件では128ビットWEPも安全ではない。

2003年末ぐらいからは、無線LAN製品の主流はWPA(Wi-Fi Protected Access)対応になっていくだろう。WPAでは、 を行うので、「正しく運用すれば」現在の無線LAN製品よりもずっと安全と予想される。


暗号化トンネリングによる解決

「暗号化トンネリング」(「暗号化ポートフォワーディング」も同義語)とは、クライアントとサーバー、たとえばメーラーとSMTP/POPサーバーの間に入って、通信内容を暗号化する機能だ。

たとえると、次のような感じである。外務大臣と大使がやりとりする文書は、普通の郵便(安全ではない通信路)で送られるとしよう。

外務大臣---平文の文書-->外務省の暗号係---暗号文--->大使館の暗号係---平文の文書--->大使

外務大臣と大使は、それぞれ暗号を意識することはない。これと同じように、「暗号化トンネリング」を使用すると、アプリケーションとサーバーが暗号化の機能を持たなくても、通信を暗号化できるようになる。無線LANが安全ではない通信路なので、その両端に暗号係となるソフトウェアを配置するわけだ。

暗号化トンネリングを実現するプロトコルおよびソフトウェアには、次のようなものがある。

SSL
よく知られているとおりWebショッピングで使われているが、他のプロトコルの暗号化トンネリングにも使える。

SSH
"Secure Shell"の意味で、UNIXで暗号化されたリモートログインができるように開発された。リモートログインだけでなく、暗号化トンネリングの機能もある。利用するにはSSHクライアントとSSHサーバー(SSHデーモン)が必要である。上の外務省の例でいえば、大使館の暗号係は、外務省の暗号係とは違うタイプの人でないといけないようなものだ。

Zebedee
上の2つはプロトコルの名前だが、これはプロトコルではなくソフトウェアの名前だ。暗号化トンネリングを主な目的として作られている。本稿では、このソフトウェアを選択する。

 作者 Neil Winton氏
 ダウンロード先 http://www.winton.org.uk/zebedee/download.htm


Zebedeeを解説している資料;


重要:ウイルス対策ソフトのメールスキャン機能との関係

ウイルス対策ソフトには「プロキシ方式のメールスキャン機能」を持つものがある。その機能は、本稿の「送信メール・受信メールの暗号化トンネリング」と同時に使えないものがあるので十分注意してほしい。
ユーザーが多いと思われる製品について記載する。

Norton AntiVirus 2003 (Internet Security 2003も同じ)
Norton AntiVirus 2003を使っている場合、本稿の方法による「送信・受信メールの暗号化トンネリング」を行うには、メーラーでSMTPサーバーのポート番号を25以外(10025など)にする必要がある。本稿の操作例ではSMTPサーバーのポート番号を10025に設定する。
さらに、メーラーでPOPサーバーのポート番号を110以外(10110など)にする必要がある。本稿の操作例ではPOPサーバーのポート番号を10110に設定する。
この制限があるのは、[電子メールスキャン]で[着信電子メールをスキャン]および[発信電子メールをスキャン]をオンにしている場合でも、オフにしている場合でも同じだ。
また、オンにしている場合でも、SMTPサーバーとPOPサーバーのポート番号を25と110以外に設定することによって、Norton AntiVirus 2003の送信・受信メールのスキャンはできなくなる。その分は、Norton AntiVirusのAuto-Protect機能で補完してほしい。


SMTPサーバーとPOPサーバーのポート番号を変更できないメーラーを使用している場合、暗号化トンネリングとの競合を回避する方法がみつかっていない。可能なら、SMTPとPOPのポート番号を変更できるメーラーを使ってもらいたい。Outlook Express 6、Netsacape 6/7、Opera 7、Becky v2などで、SMTPとPOPのポート番号を変更できる。

ウイルスバスター2003
ウイルスバスター2003を使っている場合、本稿の方法による「受信メールの暗号化トンネリング」を行うには、メーラーでPOPサーバーのポート番号を110以外(10110など)にする必要がある。本稿の操作例ではPOPサーバーのポート番号を10110に設定する。
この制限があるのは、[メール検索]で[受信メール(POP3メール)検索を有効にする]をオンにしている場合でも、オフにしている場合でも同じだ。
また、オンにしている場合でも、POPサーバーのポート番号を110以外に設定することによって、ウイルスバスター2003の受信メール検索はできなくなる。その分は、ウイルスバスターのリアルタイム検索機能で補完してほしい。
ウイルスバスター2003では、送信メールのスキャン機能はないため、送信メールについては同じような問題はない。


POPサーバーのポート番号を変更できないメーラーを使用している場合は、次の操作を行う。
  1. 「pop3trap.exe(ウイルスバスターの受信メールスキャンモジュール)」のショートカットを、Windowsのスタートアップフォルダから別の場所に移動する。Windows 98/Meの場合は、システム設定ユーティリティ([スタート]-[ファイル名を指定して実行]で「msconfig」と入力)の[スタートアップ]タブで[pop3trap.exe]のチェックをオフにしても、同じ結果を得られる。
    上記の制限は、pop3trap.exeが110番ポートを待ち受けているために生じている。

  2. ウイルスバスター2003の[メール検索]で、[受信メール(POP3メール)検索を有効にする]をオフにする。

  3. PCを再起動する。

    この操作によって、ウイルスバスター2003の受信メール検索はできなくなる。その分は、ウイルスバスターのリアルタイム検索機能で補完してほしい。


MacAfee.com ウイルススキャンオンライン
この製品は「プロキシ方式のメールスキャン機能」を使用しないので、本稿で説明する方法とは競合しない。


Zebedeeを選択する理由

Zebedeeには次のような利点がある。

これに対してSSHとSSLはどうかというと:

SSH
SSHサーバー(SSHデーモン)がトンネルの先に必要であり、Windowsでは手軽にインストールできない。使うとしたら、Cygwin(Windowsで動くUNIXツール集)をインストールするのが一般的で、その手間はZebedeeのインストールとは比較にならない。

SSL
「認証機関」、「サーバー証明書」などの用語説明を読む間に、Zebedeeの設定はできてしまうだろう。
SSLに対応しているメーラー(Outlook Express、Netscape Messengerなど)を使う場合は、クライアントPCで新規に必要なものはないため、そこは利点である。SSLについての知識があれば、ZebedeeではなくSSLトンネリングを使ってもよいだろう。サーバー証明書の作成には「EasyCert」、SSLトンネリングには「wstunnel」を使うのがよいと思う。


無線LANのセキュリティを解説する記事では、「IPSec」や「PPTP」などVPN用のプロトコルを使う方法がよく紹介されている。これらはWindows 95/98/Meマシンだけの環境では利用できず、Windows NT/2000 Serverが必要になり(PC Unixでもいいのかもしれないが)、SOHOや個人向けとして適しているとはいえない。それにパーソナルルーターでISPに接続している構成にも合わない。


Zebedeeの暗号強度について

せっかく手間をかけてZebedeeが使えるようになったとしても、Zebedee自身の暗号が頼りないものでは意味がない。Zebedeeが使用する暗号は、信頼できるものだろうか?

Zebedeeでは、クライアント-サーバー間のセッションごとに新しい鍵が生成され、その鍵(セッション鍵)でパケットが暗号化される。暗号化アルゴリズムは"Blowfish"、鍵の長さは4〜576ビットだ。デフォルトは128ビットであり、本稿では256ビットに設定する。Blowfishについては、現在のところ脆弱性は発見されていない。

セッション鍵は、Diffie-Hellman鍵交換という方式で、クライアントとサーバーの間で交換される。原理的には、SSHやSSLもほぼ同じである。

「公開されている解読ツール」が、Zebedeeでは(私の知る限り)存在しないことも大きな利点だ。WEPには「公開されている解読ツール」があり、それがなければ本稿を書くこともなかっただろう。


Zebedeeの対応OS

本稿ではクライアント、サーバーともWindowsの場合について説明するが、以下のOSでも利用できる。

UNIX
ソースからコンパイルすることで、各種のUNIX系OSで利用できる。LinuxにはRPM形式のバイナリパッケージが用意されている。

Mac
MacOS Xはソースからコンパイルすれば利用できる。実例はhttp://homepage1.nifty.com/glass/tom_neko/web/web_zebedee.htmlにある。 MacOS 9などでは、Java版を利用できる(はずだが、実例の報告は見たことがない)。



ネットワーク構成図

本稿では、下図のようなネットワークを構成する。

図(1) 無線LAN機能を持つルーターを使う構成

図(2) ルーター機能を持たない無線LANアクセスポイントを、ケーブルでルーターに接続する構成

「Zebedeeクライアント」は無線LANカードをセットしたPCで、図では1台だが複数台でもよい。

無線LANで流れるパケットは、WEPに加えてZebedeeで暗号化される。
Zebedeeサーバーマシンとアクセスポイント(ルーター)はイーサネットケーブルで接続される。その区間では、「ZebedeeクライアントマシンとZebedeeサーバーマシンの間で送受信されるパケット」が暗号化される。「ZebedeeサーバーマシンとISPの間で送受信されるパケット」は暗号化されない。


したがって、上図の中でZebedeeサーバーマシンか、ルーターに接続できるマシンにトロイの木馬などが侵入すると、平文のパケットを傍受されることになる。その危険については無線LANがあってもなくても同じであるため、一般的なセキュリティ対策で対応するものとする。

パケットは次のように処理される。

  1. クライアントからインターネットにアクセスすると、無線LANのパケット(Zebedeeで暗号化されている)がアクセスポイント(ルーター)に送られ、ケーブルを通してZebedeeサーバーに届く。

  2. Zebedeeサーバーで平文にされたパケットは、ケーブルを通してアクセスポイント(ルーター)に戻り、インターネット側に送られる。

  3. インターネット側から送られてくるパケットは、アクセスポイント(ルーター)からケーブルを通してZebedeeサーバーに行き、暗号化されてアクセスポイント(ルーター)に戻り、無線LANのパケットでクライアントに送られる。

上の2つの構成のうち、図(1)(無線LAN機能付きルーターを使う構成)が成立する大前提は「ケーブルで送受信されるパケットは、無線LANのパケットとして漏れない」ことだ。同時に、「送信先を指定した場合に限り、無線LANとケーブルの間でパケットが流れる」ことも必要だ。
もし有線側のパケットが無線LANのパケットとしても漏れてくるなら、有線でだけ流れるはずの平文のパケットが無線で漏れてしまい、意味がなくなってしまう。幸い、有線側と無線側のパケットは、勝手に互いに漏れることはないようだ。
原理的にそうなっているわけではないので、有線側と無線側のパケットがリピータハブのように自由に流れるアクセスポイントが、ひょっとしたら世の中には存在するのかもしれない。アクセスポイントの負荷から考えると、有線側のパケットをいちいちWEPをかけて無線側に転送するのは不合理だ。


注意
Yahoo! BBの「トリオモデム12M(無線LAN対応)」を使用している場合は、本稿の方法は使用できない。「トリオモデム12M」のマニュアルには、無線LANと有線LANの間でパケットを転送しないと記載されているためである。Yahoo! BBに、サードパーティのADSLルーターを使って接続している場合は、本稿の方法が使用できると予想される。

あなたが使用しているアクセスポイントの特性によっては、本稿のネットワーク構成は簡単には実現できないかもしれない。普段、同時に複数のPCから普通にインターネットに接続できているなら、多分大丈夫だ。同時に複数のPCから接続できないとか、専用のツールを使って接続する必要があるとかだと、問題がある可能性がある。

私自身の例をあげると、アクセスポイントはNECのWL30Aであり、内蔵ルーター機能を使う状態ではうまくいかず、内蔵ルーター機能がオフになる「無線HUBモード」にし、ルーターは別の機器を使用することで実現できた。図(1)の構成にできると予想していたのだが、わざわざ図(2)の構成にしなければならなかったわけだ。


上の2つの構成のうち、図(2)(ルーター機能のないアクセスポイントをルーターに接続する構成)では、アクセスポイントとルーター間のケーブルを流れるSMTPとPOPのパケットは暗号化されたものだけなので、漏れの問題はない。


正確には、アクセスポイント、ルーター、Zebedeeサーバーマシンをリピーターハブ(ダムハブともいう)で接続した場合、漏れの問題はある。漏れの問題がないのは、 に限られる。


機材の用意

イーサネットに接続できるWindowsマシン(Windows 95以降)...1台。このPCを「Zebedeeサーバーマシン」とする。このマシンに固定のIPアドレスを設定すること。普段使っているPCで、ISPのDNSサーバーアドレスを設定しているなら、このマシンにも設定しておくこと。そうしないと、SMTPサーバーとPOPサーバーのホスト名をIPアドレスに変換できず、接続できない可能性がある。

イーサネットケーブルで、Zebedeeサーバーマシンをアクセスポイントに接続する。アクセスポイントにルーター機能がない場合は、次のものに接続する。

ここでは、クライアント、サーバー、アクセスポイントとも、ホスト名ではなくIPアドレスで識別する例だけを説明する。また、クライアントとサーバーには、それぞれ固定のIPアドレスが設定されていることを前提とする。[IPアドレスを自動的に取得する]設定にしている場合は、固定アドレスを設定する構成に変える必要がある。


Zebedeeのダウンロード

  1. http://www.winton.org.uk/zebedee/download.htmを表示する。

  2. "Windows binaries (95/98/Me/NT/2000/XP)"の"zbd241setup.exe"をダウンロードする。このファイルをZebedeeクライアントマシンとZebedeeサーバーマシンの両方にコピーする。


インストール

ZebedeeクライアントマシンとZebedeeサーバーマシンの両方で、以下の操作を行う。
  1. "zbd241setup.exe"をダブルクリックすると、インストーラーが起動する。

  2. デフォルトのまま画面を進め、完了させてかまわない。
    デフォルトでは、C:\Program Files\Zebedeeに、プログラムと各種設定ファイルがインストールされる。


Zebedeeの接続テスト

Zebedeeクライアントマシン、Zebedeeサーバーマシン、アクセスポイントの電源を入れ、インターネットに接続する。Zebedeeクライアントマシンからもebedeeサーバーマシンからも、Webサイトなどに正しくアクセスできるか確認する。

Zebedeeの起動

  1. Zebedeeサーバーマシンのコマンドプロンプトで、以下のように実行する。

    >cd Zebedeeのインストールディレクトリ
    >zebedee -s -d www.google.com:80
    (次はメッセージ)
    ZEBEDEE(72195/36331): waiting for connection on port 11965
    _(-dオプションを付けたため、プロンプトが表示されないままになる。この状態ではCtrl+Cを押すだけでZebedeeを終了できるので、テストに適している)


    デフォルトのインストールディレクトリはC:\Program Files\Zebedeeだが、このように、パスに空白が含まれる場合は"Program Files"\Zebedeeのようにダブルクォーテーションで囲む必要がある。

  2. Zebedeeクライアントマシンのコマンドプロンプトで、以下のように実行する。

    >cd Zebedeeのインストールディレクトリ
    >zebedee -d ZebedeeサーバーマシンのIPアドレス 10080:www.google.com:80
    (次はメッセージ)
    ZEBEDEE(6291/9655): waiting for connection on port 10080
    ZEBEDEE(6291/9655): waiting for client connection
    _(-dオプションを付けたため、プロンプトが表示されないままになる。この状態ではCtrl+Cを押すだけでZebedeeを終了できるので、テストに適している)

    これで、クライアントのWebブラウザから10080ポートに接続すると、パケットが暗号化されてZebedeeサーバーに送られ、復号されたパケットが、ZebedeeサーバーからGoogleのWebサーバーに送られることになる。

  3. Zebedeeクライアントマシンで、WebブラウザのURL入力ボックスに、次のように入力する。

    http://localhost:10080/

    Googleのトップページが表示されたなら、接続はうまくいっている。
    PCにパーソナルファイアウォールをインストールしていると、上記の操作のどれかのタイミングで、Zebedeeの通信について警告が表示される場合がある。その場合は、Zebedeeの通信を許容するように設定してほしい。

Zebedeeの終了

ここで、いったんZebedeeを終了する。

Zebedeeクライアントマシンのコマンドプロンプトで、Ctrl+Cを押す。

Zebedeeサーバーマシンのコマンドプロンプトで、Ctrl+Cを押す。


秘密鍵とクライアントIDの作成

  1. Zebedeeクライアントマシンのコマンドプロンプトで、以下のように実行する。

    >zebedee -p > sec.key
    >zebedee -P -f sec.key > id.txt

    "sec.key"、"id.txt"は例であり、別の名前でもよい。"sec.key"ファイルはクライアント設定ファイルの"include"行で指定するので、別の名前にするなら、設定ファイルでもその名前を指定する必要がある。

    Zebedeeクライアントマシンが複数あるなら、各マシンでも同じ操作を行う。"id.txt"ファイルはZebedeeサーバーマシンに移動するので、それぞれ別の名前にする必要がある。

  2. ここからはZebedeeサーバーマシンで操作する。id.txtファイルをZebedeeサーバーマシンに移動し、テキストエディタで開く。

  3. C:\Program Files\Zebedee\clients.idファイルを、テキストエディタで開く。

  4. すでにサンプルのクライアントIDが入力されているが、これらは不要なので、先頭に#を入力する。

  5. id.txtの内容をclients.idにコピーする。
    id.txtには"5b508f8dee863f76559f6501dd522d97254faa77 pc01"のような、長い16進数とZebedeeクライアントマシンのホスト名が入力されている。ホスト名の部分(この例では"pc01")は認証に使われないので、都合のよいものに変えてもかまわない。

    Zebedeeクライアントマシンが複数あるなら、上記の手順をマシンの分だけ繰り返す。

  6. clients.idを保存する。

sec.keyの格納場所は、Zebedeeクライアントマシンの設定ファイルの"include"キーワードで指定される。client.idの格納場所は、Zebedeeサーバーマシンの設定ファイルの"checkidfile"キーワードで指定される。これらの指定方法は後述する。

こうすることで、秘密鍵であるsec.keyと同じ中身を持つファイルを持っていなければ、Zebedeeサーバーマシンに接続できないようになる。この「秘密鍵」はZebedeeクライアントマシンの認証にだけ使われる。パケットの暗号化には「セッション鍵」が使われ、この鍵はセッションごとに違ったものが生成される。


Zebedeeサーバーマシンの設定ファイルを編集する

ZebedeeサーバーマシンのC:\Program Files\Zebedee\server.zbdをテキストエディタで開き、下記のように編集する。

#message "DEFAULT CONFIGURATION FILE -- EDIT BEFORE USE"
先頭に#を入力する。

detached true
"false"を"true"に変更する。

keylength 256の行の下に、

minkeylength 256
と入力する。鍵の長さにゼロを指定してサーバーにアクセスされるのを防ぐ設定だ。

logfile './server.log'
ログファイルにログをとるなら、先頭の#を削除する。これは任意。ログをとる場合、server.logというファイルを用意する必要はない。Zebedeeの起動時に自動的に作られる。

checkidfile './clients.id'
先頭の#を削除する。

#redirect none
先頭に#を入力する。こうしないと、Zebedeeクライアントからの通信が中継されないので注意。

target ISPのSMTPサーバーのホスト名:25
target ISPのPOPサーバーのホスト名:110
上の2行を入力する。ここは最も重要で、ZebedeeクライアントからのSMTPとPOPのパケットをISPのサーバーに中継する設定だ。


Zebedeeサーバーマシンで、zebedeeを起動するショートカットを用意する

  1. Windowsのエクスプローラで、zebedee.exeを右クリックし、[ショートカットの作成]を選択する。

  2. 作成されたショートカットを右クリックし、[プロパティ]を選択する。

  3. プロパティの[リンク先]に

    "c:\Program Files\zebedee\zebedee.exe"

    のように表示されているので、この内容を次のように編集する。

    "c:\Program Files\zebedee\zebedee" -f server.zbd

    -fとserver.zbdの間には英数スペースが必要。
    "-f server.zbd"を指定することで、サーバー用設定ファイルを読み込んで起動するようになる。

  4. [実行時の大きさ]で[最小化]を選択する。

  5. [全般]タブで、ショートカットの名前を[Zebedee Server](例)にし、[OK]をクリックする。

  6. Windowsの[スタート]ボタンを右クリックし、[開く]を選択する。[プログラム]、[スタートアップ]の順に開き、Zebedee Serverのショートカットをコピーする。

    これで、Zebedeeサーバーマシンの起動時に、Zebedeeがサーバー用設定ファイルを読み込んで起動するようになる。


Zebedeeクライアントマシンの設定ファイルを作る

Zebedeeクライアントマシンで、C:\Program Files\Zebedee\vncviewer.zbdを、client.zbdという名前でコピーする。client.zbdをテキストエディタで開き、下記のように編集する。

#message "Starting VNC viewer"
先頭に#を入力する。

#command ’"c:\Program Files\ORL\VNC\vncviewer.exe" localhost:%d’
先頭に#を入力する。

ファイルの末尾に、以下の新しい行を入力する。

serverhost ZebedeeサーバーマシンのIPアドレス

localsource true

include './sec.key'

tunnel 10025:ISPのSMTPサーバーのホスト名:25
tunnel 10110:ISPのPOPサーバーのホスト名:110

SMTPとPOPのポート番号を変更できないメーラーを使っている場合は、上記の10025は25にし、10110は110にする。


Zebedeeクライアントマシンで、zebedeeを起動するショートカットを用意する

  1. Windowsのエクスプローラで、zebedee.exeを右クリックし、[ショートカットの作成]を選択する。

  2. 作成されたショートカットを右クリックし、[プロパティ]を選択する。

  3. プロパティの[リンク先]に

    "c:\Program Files\zebedee\zebedee.exe"

    のように表示されているので、この内容を次のように編集する。

    "c:\Program Files\zebedee\zebedee.exe" -f client.zbd

    -fとclient.zbdの間には英数スペースが必要。
    "-f c:/zebedee/client.zbd"を指定することで、クライアント用設定ファイルを読み込んで起動するようになる。

  4. [実行時の大きさ]で[最小化]を選択する。

  5. [全般]タブで、ショートカットの名前を[Zebedee Client](例)にし、[OK]をクリックする。

  6. Windowsの[スタート]ボタンを右クリックし、[開く]を選択する。[プログラム]、[suスタートアップ]の順に開き、Zebedee Clientのショートカットをコピーする。

    これで、クライアントマシンの起動時に、Zebedeeがクライアント用設定ファイルを読み込んで起動するようになる。


メーラーの設定変更

Zebedeeクライアントマシンで、メーラーの設定を以下のように変更する。
  1. SMTPサーバー名を、localhostまたは127.0.0.1に変更する。

  2. SMTPのポート番号を10025に変更する。
    SMTPのポート番号を変更できないメーラーを使っている場合は、この作業は省略。ただしクライアント設定ファイルの"tunnel"キーワードと整合しなければならない。

  3. POPサーバー名を、localhostまたは127.0.0.1に変更する。
    ウイルスバスター2003を使っている場合、POPサーバー名が、すでにlocalhostになっているかもしれない。もしそうなら、そのままでよい。

  4. POPのポート番号を10110に変更する。
    POPのポート番号を変更できないメーラーを使っている場合は、この作業は省略。ただしクライアント設定ファイルの"tunnel"キーワードと整合しなければならない。

    ウイルスバスター2003を使っている場合、POPアカウント名が

     アカウント名/pop-server.ispdomain.co.jp

    のように、ウイルスバスターによって自動的に変更されているかもしれない。この場合は、ウイルスバスターによって変更される前の状態(「アカウント名」だけ)にする。


接続試験

ZebedeeクライアントマシンとZebedeeサーバーマシンをリブートする。スタートアップフォルダにZebedeeを起動するショートカットを入れているので、デスクトップが表示されるとZebedeeも起動する。


私のPCのうち1台は、最初に起動したとき、起動シークエンスの途中で停止したが、再度起動したあとは異常なく動作している。

インターネットに接続し、Web、メールなど普段どおりの操作が可能か、確認すること。


Zebedeeの暗号化を確認する

Zebedeeでメールなどが暗号化されているか確認するには、パケットモニタという種類のソフトウェアが必要になる。

ここでは、Windows 95/98/Meで使用できる、次のソフトウェアを紹介する。

VIGIL(シェアウェア)
作者:SapporoWorks
ダウンロード先:http://homepage2.nifty.com/spw/vigil/

ダウンロードとインストール

「フルセット版」の方のアーカイブをZebedeeクライアントマシンにダウンロードし、適当なフォルダに解凍する。

解凍されたファイルの中に「WinPcap_2_3.exe」がある。このファイルは、パケットモニタに必要な「winpcap.dll」のパッケージだ。WinPcap_2_3.exeをダブルクリックしてWinPcapのインストーラを起動する。特に設定することはないが、ライセンス画面で[Yes, I agree with all the terms of license agreement]をチェックしないと、先に進めない。
VIGIL自体にはインストーラはなく、解凍されたvigil.exeをダブルクリックすると操作開始できる。

VIGILの実行

  1. vigil.exeをダブルクリックする。

  2. [ツール]メニューから[キャプチャ開始]を選択する。

  3. アダプタ選択ダイアログで、無線LANカードのデバイス名を選択する。

  4. [LOCAL]を選択し、OKをクリックする。

    普通のイーサネットカードの場合、[PROMISCUS]を選択すると、カードを通過するパケットすべてをキャプチャできるのだが、無線LANカードの場合、WinPcapでは完全なプロミスキャスモードにならないものが多いようなので、ここでは[LOCAL]を選択する。この選択では、自分から発信したパケットと自分に送信されたパケットが表示される。Zebedeeによる暗号化を確認するには、これで十分である。

  5. 左上ウィンドウで、ZebedeeクライアントマシンのIPアドレスが表示されているアイコンを展開する([+]をクリックする)。

  6. [TCP]、[11965]の順に展開する。
    11965番ポートは、サーバーモードのZebedeeが待ち受けるポートの番号だ。

  7. [11965]の下に展開されるのが、ZebedeeクライアントとZebedeeサーバーでやりとりされたセッションだ。
    各セッションを表すアイコンをポイントすると、「クライアントのIPアドレス(ポート番号)->サーバーのIPアドレス(ポート番号) xxx octet」とポップアップ表示される。

  8. 各セッションを表すアイコンをクリックすると、右側ウィンドウに、セッションで送受信されたデータが表示される。
    赤字はクライアントからサーバーに送信されたデータで、青字はサーバーからクライアントに送信されたデータである。下図はSMTPによるメール送信がZebedeeで暗号化されている状態のパケット。

    こちらはPOPによるメール受信がZebedeeで暗号化されている状態のパケット。

    それぞれ、内容が読めないものになっているはずだ。

    実際は、これらの内容に対して、さらに(頼りないが)WEPによる暗号化が行われている。WEPの暗号化は、IPパケットよりも物理層に近い側で行われる。VIGILには、WEPが復号されたあとの状態だけが表示されるため、WEPで暗号化された状態は見えない。

VIGILのようなツールを使うのが初めてという人には、Zebedeeによる暗号化の実感がわかないかもしれない。可能なら別のPC(有線LANかダイヤルアップで接続するもの)でもVIGILを実行し、普通の方法でメールを送受信してみるとよい。SMTPサーバーおよびPOPサーバーとの通信内容が、全部読めることがわかるだろう。

もう1台、無線LANを使うPCがあり、そのOSがWindows 2000/XPであれば、次のソフトウェアを使用することで、WEPが破られてもZebedeeによって安全が保たれているかを検証できる。ただしすべての無線LANカードで動作するわけではない。

AirCapture(フリーウェア)
作者:有限会社レイヤー
ダウンロード先:http://www.pacmon.jp/aircap/

AirCaptureが動作するPCで、WEPキーを同じにすれば、WEPが復号されて表示される。ZebedeeやSSLなどで暗号化されていないパケットは、内容が平文として読めてしまう。Zebedeeで暗号化されていれば、同じWEPキーが設定されていても、読めない内容が表示されるはずである。


考察:ネットワーク構成上の安全性について

Zebedeeを使用する構成にすることで、それまでなかった弱点が生じることはないだろうか?

Zebedeeクライアントマシンでの安全性
クライアントモードのZebedeeに対して、外部から接続されることはないだろうか。本稿の設定ファイルには"localsource true"の行があるため、Zebedeeに接続できるのは、Zebedeeクライアントマシン自身(localhost)からだけになる。

Zebedeeサーバーマシンでの安全性
サーバーモードのZebedeeに対して、外部から接続されることはないだろうか。本稿の設定ファイルでは"checkidfile './clients.id' "の行を有効にし、clients.idファイルにZebedeeクライアントマシンのIDを入力している。そのため、Zebedeeクライアントマシンの秘密鍵"sec.key"ファイルを持たないマシンからは接続できない。
sec.keyを盗まれる危険性は、一般的なセキュリティ対策でカバーすべき問題だろう。

Zebedeeによるトンネルが切断されている状態の安全性
本稿の方法では、メーラーのSMTPサーバーとPOPサーバーの両方とも、localhostに設定してしまう。そのためZebedeeが落ちた場合、メールの送受信はできなくなる。これは"fail safe"な状態といえる。


重要:WEPキーのメンテナンスについて

Zebedeeの利用によって、無線LANの通信内容を傍受・解読される可能性は少なくなる。ZebedeeによってカバーされるWEPについては、放置していいのだろうか。

そうではなく、WEPキーはときどき変更しなければならない。Zebedeeで暗号化されるのは、メールなどの通信内容だけである。WEPキー自体は脆弱なままだ。したがって、


ヒント:無作為なWEPキーを簡単に生成する方法

あなたのアクセスポイントが「64ビットWEP(ユーザー指定鍵長40ビット)」の製品であれば、絶対に「16進数10桁」でWEPキーを指定しなければならない。「英数字5文字」では組み合わせの数が少なすぎる(約9億1600万)。16進数10桁にすれば、組み合わせの数が約1200倍多くなる。

とはいえ、無作為な16進数を作るのは、人手では面倒である。「安全なパスワード・暗号鍵のためのTips」の「MD5チェックサムをパスワード・暗号鍵に使う」を参照するとよい。


公衆無線LANスポットへの応用について

本稿では、家庭またはSOHOでのネットワークを対象にしたが、Zebedeeによる暗号化トンネリングは、公衆無線LANスポットでISPのメールを送受信する場合にも、利用できるのではないかと予想できる。その場合は、インターネット側からZebedeeサーバーマシンに接続するために、ダイナミックDNSサービスを利用することになるだろう。


Copyright (C) Cybernetic Survival Network. All Rights Reserved.