[P2P]P2PとSNSの融合~その1:ユーザ認証
MixiでP2PとSNSに対するディスカッションが盛り上がっている
P2PとSNSの融合はあり得るか
ここでは技術的な観点からどうすればSNSをP2Pで実現するか眺めてみよう。
いきなりSNS機能を全部実現するのはムリなので、少しずつ考察してみる。
SNSでは友達の友達までがプロフィールやBlogを見ることが出来たりする機能がある。そこで、ある人がその人の友達の友達であることを証明する必要がある。まずこれを実現してみよう。
認証といえばPKIかPGPなのだが、今回はPKIを取ってみよう。(ということは証明書発行、廃棄についてはサーバを使う事になる。)
今、A、B、Cがいるとする。このとき、AとB、BとCは友達関係だがAとCは直接友達の関係ではない。さて、AはCにどうやって、Bと知り合いであるのか証明してみよう。
AがBと友達関係であれば(Mixiでいうマイミク)AのプロフィールとそれをAの秘密鍵で電子署名したものについて、
Bの秘密鍵で電子署名すれば良い。これを「AのBによるプロフィール証明書」と呼ぶことにする。Aはこれを入手しておく。
CがAはBの友達であることを検証しよう。
Aは「AのBによるプロフィール証明書」をCに送る。ここでまずDHTの原理からHash(name_B)となるNode_IDにBの公開鍵が置いてあるので、それでBの署名を確認する。今度はHash(name_A)となるNode_IDにAの公開鍵が置いてあるので、それでAのプロフィールの正当性を証明する。これで検証は終わりだ。
ちなみにAとBの公開鍵はCAによって電子署名されている事に注意。N次の友達の輪の証明もこれをマネしてできないことはないが、面倒なことになるだろう。
もうすでにお分かりだと思うが、ある人がコミュニティに参加できるかどうかは電子証明書をDHTの参加しているノードに照らせばできる。つまり、ユーザの電子証明書におけるCAの署名を確認するのだ。もちろん、CAは随時不要・不正なユーザに対するCRLリストをDHTに格納するので、それを参照する必要もある。つまりある名前CのCRLはNode_ID(name_C)においてあるのだ。
もうひとつ。先ほど信頼の輪を多重電子署名で処理していたが、FOAFに電子署名を使っても同じようなことが実現できる。こちらの方がスマートだろう。
FOAFについては、下記のページがいいだろう。
メタデータによる知人ネットワークの表現
つまりA⇔B⇔Cという信頼関係があるとき、BはFOAFを作ってC、Aが友人であることを記述。それにBの秘密鍵で電子署名をする。このFOAFはBの公開鍵と共にNode_ID(name_B)に格納。CはBの公開鍵でFOAFの電子署名を検証後、AがBの友人であることがわかる。ただし、Bが勝手にAの友人と名乗る事が可能である事に注意!そのため、Aのリクエストがあってから、CはBのFOAFの検証しAがBの友人を確認するという手順を取ることになる。
認証サーバがあるとP2Pっぽくなくてヤダ!という人はPGPで上記の事が実現できるかどうか検討して欲しい。
「パソコン・インターネット」カテゴリの記事
- Twitter研究会の講師募集(2009.07.13)
- 音楽という名の情報学(2009.04.25)
- 自分の論文がWeb上で公開できるかチェックできるサイト(2009.03.29)
- 「IT技術者のための距離空間入門」を書くためのメモ(2009.02.04)
- 第2回SBM研究会プレゼン資料公開+ライブ中継用URL(2008.12.05)

Comments