« [P2P]VoIPとセキュリティ | トップページ | [P2P]P2Pソフトとセキュリティポリシ »

2004.10.02

[P2P]分散ハッシュとPGPの親和性

さて、前回はDHTとPKIの関連について書いてみた。せっかくP2Pを考えているのだからCAのようなサーバが必要なシステムはあまり好きでない、という人が多いかもしれないが、P2P勉強会のアリエル岩田氏が説明したように、サーバ=クライアント型とP2P型モデルはお互い補完しあうべきだと思うし、それを全否定するのは現実的ではないと思う。(もちろん、すべてPure-P2Pで考える事は技術的、研究的には意義があることである。)

PKIでなく、PGPであればサーバレスでDHTと親和性が良いと思う人が多いと思う。確かにそれは否定できない。ただし、DHTを使っても使わなくてもPGPとPKIのメリット・デメリットが残る事は気をつけないといけない。PGPは信頼の環によってお互いを保障しあうわけであり、これによって課金や重要な認証を行うには無理があることは言わざるを得ない。気の知れたコミュニティ内やあまり課金や認証を意識しないシステムであればPGPは非常に有効だ。

ところで、PGPでは自分の公開鍵を登録する登録サーバというのがある。ところが、この公開鍵登録サーバの負荷が重く、レスポンスが悪い事があるらしい。そこで思ったのが、公開鍵の登録についてはDHTによってP2Pネットワークに分散したノードに所有させることである。ノードの参加数が多ければ大量の公開鍵の登録があっても問題ないし、レスポンス・負荷分散も優れている。

もうひとつDHTで面白いことができるとすれば秘密鍵の回復である。秘密鍵が失われた場合、ある手順を踏めば秘密鍵を取り戻せる事である。

以下の手順をすれば安全に秘密鍵を取り戻せるだろう。

1)秘密鍵をs_kyeとする。Rをあるフレーズとする。Rとs_kyeは別々の場所に保存すると仮定する。
(Rは記憶しているとしても良い,長めの覚えやすいフレーズが良いだろう)func()はある整数を返す関数。

2)s_kye_1=s_kye-func(R)とする。s_kye_1を秘密分散法によって、閾値y、x個の情報を生成する。
つまり、info_1,info_2.....info_xがあり、その中をy個を集めればs_kye_1は回復できる。

3)infoをDHTを使って分散させたノードに保存する。(Node_ID=func2[R , z],z=1,2,3...x)info_iは自分の秘密鍵で署名してある。

4)秘密鍵を失ったノードはRを使って、まずinfoを持っているノードを探し、その一部の情報を得る。それを基にs_kye_1を計算し、最終的にはs_kyeすなわち秘密鍵を回復する。Rを知らない人はs_kye_1までは得られる可能性はあるが(これもRがわかないので困難だが、ノードの登録情報を全て調べればなんとかなる。ノードがあるオーダー以上になるとこのアタックは非現実的だろう。もちろんfunc2()は注意深く検討する必要がある)、s_kyeまで計算するのは難しいだろう。

こんな感じだろうか。鍵のリカバリーだけでなく鍵の預託も面白い話でこれも秘密分散法を使うテクニックがあるのだが、興味があればDHTと組み合わせて興味深いモデルを考えて欲しい。

|

« [P2P]VoIPとセキュリティ | トップページ | [P2P]P2Pソフトとセキュリティポリシ »

パソコン・インターネット」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [P2P]分散ハッシュとPGPの親和性:

« [P2P]VoIPとセキュリティ | トップページ | [P2P]P2Pソフトとセキュリティポリシ »