[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で上記の事が実現できるかどうか検討して欲しい。
TrackBack
TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18781/2198610
Listed below are links to weblogs that reference [P2P]P2PとSNSの融合~その1:ユーザ認証:
» SNSとP2Pの融合(mixiのコミュニティより) [hsato V2.0]
8月から議論されています。
SNSをP2Pのようなサーバレスで作ったらどうか、SNSはインターネットのオーバーレイである、友達同士を確認するために認証を組み合... [Read More]
Tracked on 2004.12.10 at 10:01 AM
» SNSはオープンになるべきだと思う理由 [ここギコ!]
[P2P]P2PとSNSの融合??その1:ユーザ認証 -Tomo’s HotLine- リンク先は、FOAF等を認証アカウントに用いて、P2PのSNSを構築する... [Read More]
Tracked on 2004.12.17 at 12:18 PM
» 匿名性とWinnyそしてSNS [みよしてつおのぼやき部屋]
Winnyの開発者が逮捕されたことは記憶に新しいが、なぜ逮捕されなければならなか... [Read More]
Tracked on 2004.12.28 at 01:27 AM

Comments