[P2P]VoIPとセキュリティ
NETWORK MAGAZINEの今月号(2004年11月号)に興味深い記事が載っている。128Pから「ここが危ないIP電話」と題して特集を組んでいる。P2PやSkype、VoIPに興味がある方は要チェックな記事だ。
VoIPでもっとも気になるセキュリティ事項といえば、おそらく盗聴であろう。盗聴を防ぐにはEnd-to-Endで暗号化を行う事が真っ先に頭に浮かぶ。一般に音声の通信はRTPというプロトコル(基本的にはUDPの上位)を使うのだが、これを暗号化するためにSRTPというものが使われる。また、End-to-EndではMIKEYという鍵交換プロトコルが使われる。両者については、いずれ噛み砕いて説明する予定だが、これらについて知りたい場合には以下のサイトが役に立つだろう。
The SRTP and MIKEY pages
rfcやドラフト、プレゼンなどを見る事が出来る。
ところで、このサイトを良く見ると携帯で有名なエリクソンのページである。いずれは携帯をフルIP化することも視野に入れているのかもしれない。
さて、シスコのVoIPソリューションもこの雑誌で紹介されているのだが、これも面白い。というのはX.509証明書を使ってSIP Proxyと認証を行うのだ。これによって、SIP Proxy及びユーザがそれぞれ不正なノードでないことを証明できる。
IP Call to Action
では、今度は私がP2P勉強会で提案したDHTでのVoIPの話に戻そう。このDHTを使ったVoIPではどうすればEnd-to-Endの暗号化が可能であろうか?DHTでまず通話すべきノードのルックアップをし、IPアドレスがわかる。グローバルアドレスのあるノードを一旦は介して、その後UDP hole punchingを使えばダイレクトに互いに通話が可能である。一番簡単なのはDiffie-Hellmanを使う事である。しかしこれだと中間侵入攻撃を受ける事になる。
このベストな解決法はPKI的なアプローチを取る事だろう。つまり、DHTネットワークに公開すべき証明書を保持しておく。エンドノードの確認はこの証明書を元に行う。
簡単に認証を行うのであれば、次のようなことが考えられる。
今、AとBが相互認証したいとする。最終的にはA⇔B間で暗号化したい。
1)AはBの証明書をDHTから入手する。それをもとにBの公開鍵を得る。
2)Aはチャレンジレスポンスと同じ考えで認証を試みる。すなわち、AはチャレンジコードCをBに投げる。
3)BはCを秘密鍵で暗号化し、(これをC'とする)Aに返す
4)AはC'を公開鍵で復号化し、Cと一致することを確認する。これでAはBを認証
5)BがAを認証するのも同様な手続きなので省略。
6)相互認証後、どちらかの鍵を使って通信を行いAとBの共通鍵を生成。これをもとにA⇔B間を暗号化。
こんな感じだろうか。
雑誌の話にもう一度戻そう。特集ではVoIP以外に次世代TCPの最新研究・開発動向についても書かれている。それには遠距離での広帯域通信を効率よく行う方法などが書かれている。いずれP2P的なアプローチがワールドワイドで行なわれば、このような研究も重要となるので、こちらもぜひ読んでほして欲しい。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- iPhoneのスクリーンショットを自動的にメールに投稿するテクニック[IFTTT](2014.11.23)
- WebRTC研究会開催のお知らせ(2014年12月開催予定)(2014.08.24)
- 「Gunosyオフィスツアー」を振り返る〜世界一のニュースアプリを目指すために(2014.06.01)
- Gunosyオフィスツアーの参加者募集を開始しました!(5月9日[金]開催)(2014.04.29)
- 第4回Twitter研究会(5/18[土])の講演スケジュール(2013.05.10)
この記事へのコメントは終了しました。
コメント
suno様:
お久しぶりです。
>という段階の前で証明書の信頼性を保証するする仕組みがないと....
これについては、基本的には認証局(CA)を立てることが一般的だと思います。CAがないと、同じユーザの名前の証明書を違う方が作成する事が可能となってしまうので。ここだけはCSモデルとなるので、嫌がる人も多いと思いますが、むしろP2PとCSモデルは場合によっては共存することも許容すべきだと思います。
PGP的なアプローチについても少し考えておきます。
投稿: Tomo | 2004.09.30 06:23
お久しぶりです。
あまりセキュリティは詳しくないので、間違えてるかもしれませんが、
> 1)AはBの証明書をDHTから入手する。それをもとにBの公開鍵を得る。
という段階の前で証明書の信頼性を保証するする仕組みがないと、
証明書をspoofingすることでDiffie-hellmanと同様に
AとBの間でMan in the Middle攻撃が可能になると思います。
純粋なP2Pで完璧な認証・暗号化は難しそうですね・・・。
投稿: suno | 2004.09.30 01:06