Jabber/XMPPで安全なメッセージングを実現
前回書いたように、各社のメッセージングサービスはそれぞれ異なったポリシーを持っており、情報の開示を正当化でき、また情報漏洩のリスクが昨今では決して低くないのが現状です。
ということで、今回は安全なメッセージングを実現する方法について説明していきます。使用するソフトはマルチプラットフォームなので、Windows、Mac、Linuxなどで使用できます。
手順は基本的なWindowsやMacの操作、コマンドプロンプトやMacではシェルの起動が行えることを前提にしてあります。
できるだけ容易に設定できるようにするために手順として一部セキュリティ面で推奨されない部分もありますがその点はご了承ください。一見複雑なように感じますが、ある程度PCやMacを扱える人であれば問題ないと思います。
ここで使用するのはXMPPというプロトコルを使う、以前はJabberと呼ばれていたもので、これは以下のような特徴を持ちます。
- オープンなプロトコル(仕様は全て公開されています。)最近ではGoogle Talkでも同じプロトコルを使用しています。
- 自前でサーバを立て、他のサーバと接続できる(会社でも立てられますし、自前でサーバを持っている人はもちろん家族で、なんてのも可能です。)
- 会議室機能なども完備
- 複数の場所から接続するのも前提にしてある
必要なものは以下の通りです。
- GnuPG-暗号化を行うソフトです。インストールが簡単なのはWindowsではgpg4winです。(同ページにLiteというのがありますがドイツ語のドキュメンテーションが必要ない場合にはLiteの方で大丈夫です。間違えてFullなものをダウンロードしても別に問題はありません。)Mac用にはMacGPGが手軽です。
- Psi-Jabber/XMPPクライアントです。なお、これは今現在は開発版を使用してください。開発版はWindows版、Mac版が存在しています。0.11正式版が出るまではこのナイトリーでいいでしょう。
他に必要なツールとしては
- ZIPファイルを解凍できる環境-WindowsXPであればそのまま開けます。開けない場合は7-zipなどをダウンロードしてください。
まず、gpg4winもしくはMacGPGをインストールします。gpg4winの場合はインストール後にインストール先(通常はC:\Program Files\GNU\GnuPG)にあるgpg.exe、gpa.exe、gpgsplit.exe、gpgv.exeを同じ場所にあるpubというディレクトリの中の同名ファイルに上書きしてください。環境変数のPathのエントリーをC:\Program Files\GNU\GnuPG\pubからC:\Program Files\GNU\GnuPGに変更しても問題ありません。MacGPGはインストール後には特にすることはありません。
次に、コマンドプロンプトを起動し、次のコマンドを打ち込んでください。
これにより以下のような表示が出てくればインストールは完了しています。gpg --version
次にPsiを解凍します。gpg (GnuPG) 1.4.7
Copyright (C) 2006 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.Home: C:/Documents and Settings/xxxxxx/Application Data/gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
場所は分かるところではあればどこでもかまいません。
全て解凍したら、psi.exeを起動してください。
以下のようなダイアログが表示されます。
このダイアログではアカウントを新規作成するか、または既存のものを使うかが指定できます。もし、すでにどこかのJabberサーバでアカウントを持っている場合はUse exisitng accountを指定し、アカウントを指定します。
新しく作る場合はRegister new accountを指定します。
アカウントとしてはjabber.orgなどいろいろとありますが日本語の他のサービスに接続するトランスポートという機能を使用する場合はnantoka.kicks-ass.netというサーバがあります。尚、トランスポートに関しては後述しますが、現状他のサーバからもこれらの機能は使用できるようですのでどのサーバを使うかは好みで決めてもOKだと思います。尚、Gmailのアカウントを持っている人はすでにアカウントが存在します。これを使用する場合は後述の設定で行ってください。
以下はRegister new account選択時の一例です。
暗号化の方式に自己証明書と呼ばれるものが使用されている場合は以下のような警告が出ます。本当は正当性をきちんと確認するべきですがこの段階ではContinueを押して進んでください。
次に聞かれるのはログイン名です。
任意のユーザー名とパスワードを指定してください。パスワードを忘れるとアカウントにアクセスできなくなるので忘れないようにしてください。
そして、登録に成功すると以下のような表示がでます。
次にこういう画面が表示されていると思いますので、ここでOfflineになっているのをOnlineにします。
Continueをするとユーザ情報がないという情報が出ますがこちらには好きな情報を入力してSubmitしてください。この情報は公開されますので公開したくない情報は入れないようにしてください。
Gmailを使用している人はUse exisitng accountの設定を使用し、以下の情報にしてください。
Accountタブ
- Jabber ID: Gmailでのメールアドレス
- Password: Gmailのパスワード
- Manually Specify Server Host/Port: チェック
- Host: talk.google.com
Accountタブ
- Automatically reconnect if disconnected: チェック(切断された場合に再接続を行います)
- Compress traffic (if possible): チェック (可能であれば圧縮します)
- Send "keep-alive" packets (to prevent timeouts): チェック(タイムアウトを防ぐために一定時間ごとに通信します。)
- Ignore SSL Warnings: チェック(証明書のエラーを消します。ただし、エラーが表示されることがないことが分かっている場合にエラーが表示される場合は注意が必要です。)
- Probe legacy SSL port: チェック外す(これはほとんど最近では使われていません。)
次のような表示が出ます。gpg --gen-key
1を入力し、エンターキーを押します。Please select what kind of key you want:
(1) DSA and Elgamal (default)
(2) DSA (sign only)
(5) RSA (sign only)
Your selection?
この表示ではそのままエンターキーを押してください。DSA keypair will have 1024 bits.
ELG-E keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
有効期限を指定するように言ってきますが、この場合はそのままエンターキーで大丈夫です。(有効期限を指定することもできますがこれを行うと有効期限後に鍵を作り直すか、または延長する必要があります。)Please specify how long the key should be valid.
0 = key does not expire
yを押しエンターキーを押します。Is this correct? (y/N)
名前を入力してください。You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) "Real name:
メールアドレス、この場合はJabber/XMPPのユーザ名(ユーザ名@サーバ名)でOKです。E-mail address:
そのままエンターキーを押してください。(注釈をつけてもかまいません。)Comment:
ここで情報が正しければoを押してエンターキーを押します。You selected this USER-ID:
"Hideki Saito "Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?
パスワード(パスフレーズ)を入力します。パスフレーズはスペースを含んでも問題ありません。尚、入力中した文字は表示されません。You need a Passphrase to protect your secret key.
Enter passphrase:
確認のために同じパスフレーズを再度入力します。しばらく時間がかかりますのでお待ちください。Repeat passphrase:
完了すると以下のような表示が出ます。
公開鍵の生成が完了しました。pub 1024D/207D1F90 2007-07-03
Key fingerprint = DD9E 06A3 CB78 E364 A079 6917 B0FC 5DE6 207D 1F90
uid Hideki Saito
sub 2048g/AED0035E 2007-07-03
とりあえず通信相手に渡せるように公開鍵を出力します。
次にPsiのアカウント設定に戻ります。gpg -o mypubkey.asc -a --export
DetailsタブにあるSelect key...を選択します。
ボタンを押すとリストが表示されるので適切なものを選択します。
設定が完了すると以下のような表示になっているはずです。
Saveを押すとこの設定が保存されます。
先ほど作成した公開鍵は通信相手に任意の方法で渡してください。(もちろん相手の環境もこの記事で説明している環境を満たしている必要があります。)
そして、コマンドプロンプトにて次のコマンドで公開鍵を取り込んでください。
相手の公開鍵も同じように受け取り、取り込んでください。gpg --import mypubkey.asc
Psiを使用して相手を追加するのはAdd a contactメニューを使用します。
すると追加承認についてのメッセージが届きますのでAdd/Authをお互い選択し、自分のリストに追加してください。
暗号化を有効にする方法はまずメッセージウインドウを開きます。
この画面で右上の鍵のマークのボタンを押します。
そして、何かメッセージを入力し、エンターキーを押します。
鍵の選択を求められます。
Choose key manuallyを押すと手持ちの公開鍵が表示されますので相手の公開鍵を選択します。
すると、お互い暗号化されたセッションで会話できます。
駆け足で説明してきましたが、もし方法に何らかの疑問がありましたら気軽にhideki@jabber.orgまでお問い合わせください。
すぐに答えられる質問であればお答えしますし、そうでなければまた追加の記事で書いていきたいと思います。
また次回は、Psiを使って他のメッセンジャーネットワークへの接続について説明したいと思います。