[P2P]P2Pでのソーシャルネットワーキングの叩き台
今日は体の調子が悪く、朝食と昼食を食べてない。。。夕食はお粥でした。。。
さてP2Pでのソーシャルネットワーキングを実現するにはどうすればよいか簡単なメモを書いておきます。ソーシャルネットワーキングをP2Pで実現すると何がうれしいかはそのうち整理します。
まず、P2Pでのソーシャルネットワーキングの実現方法ですが、以下のようにすればいいかなと思っています。
1)DHT(分散ハッシュ)で検索を行う。ある人のページ(プロフィール)に行くにはニックネームのハッシュ値を計算し、それをキーにする。
2)ユーザの状態(プロフィール)、及びつながり(そのユーザと友達の関係)はFOAFで記述すると何かと便利そう。(これはP2PでなくてもSNS全般に言えること。ただ、P2PだとFOAFの意義がより重要性を増すかもしれない。)
FOAFは改ざんできないように電子署名するといいかも。
3)自分のページ等の公開権限(例えば「友達まで公開」とか「友達の友達まで公開」)はPGPのようなことをすればできそうかな?
さっきのFOAFで友人を管理して、あるユーザが自分のページにアクセスする時にはSSLのクライアント認証のように証明書認証するのもいいと思います。
そうすると、あるユーザが他のユーザの「友達」の「友達」を証明するには次の通りになりそう。
<前提条件>
今、ユーザA,B、Cがいる。ユーザAとユーザB及びユーザBとユーザCは友人とする。今、ユーザAがユーザCにアクセスしたい。
手順:
1)ユーザAはユーザBに「ユーザAがユーザBの友人であることを示す証明書」をユーザBの秘密鍵を使って作ってもらう事を依頼する。このときに、ユーザBはユーザAをクライアント認証すること。(SSLでのクライアント認証と同じ)
2)ユーザBは友人証明書を作成し、ユーザAに証明書を送付する。
3)ユーザAはユーザCに友人証明書を送信する。まず、ユーザCはFOAFによってユーザBがユーザCの友人である事を確認。その後、ユーザBの公開鍵からユーザAがユーザBの友人である事を確認。(あるユーザの公開鍵証明書はユーザのニックネームのハッシュ値がNode_IDとなるノードに格納。)あと、これだけだと友人証明書を送信した人がユーザAであることがわからないので、ユーザCはユーザAをクライアント認証をする。(SSLでのクライアント認証と同じ)
取りあえずこんな感じでしょうか?
そういえば、この案だとルート証明書や証明書を発行する人をどうすればいいのだろう?やっぱりPGP的なアプローチが必要なのかな?
まだ叩き台ですし今日は体調が悪いので、後でちゃんと整理します。。。
参考:SSLのシーケンス
「パソコン・インターネット」カテゴリの記事
- 第3回Twitter研究会のライトニングトークの実施について(2012.01.25)
- 第3回Twitter研究会公式サイトの公開+講演概要3つ追加しました(2012.01.15)
- 第3回Twitter研究会参加者募集のお知らせ+講演概要について(2012.01.09)
- 2012年のIT系勉強会開催予定について(2012.01.03)
- 第3回Twitter研究会の講師を発表します!(1/28[土]開催)(2011.12.30)

Comments