[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で上記の事が実現できるかどうか検討して欲しい。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 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)
この記事へのコメントは終了しました。
コメント