« [P2P]DHTによるコンテンツ管理システムの提案 | トップページ | [P2P]DHTによるサーバレス・マルチキャストシステムの提案 »

2005.03.17

[P2P]自己署名証明書を用いたDHTにおける認証について

P2P勉強会ではP2Pの認証でPKIのアプローチを取ると、容易且つ正確に認証が行える事を講演した。
詳しくは以下のページを見て欲しい
P2Pによる認証

ところで、P2P勉強会で、自己署名証明書を使ったアプローチがあるのでは、というコメントがあった。
自己署名証明書はCAなどによく使われる証明書であり、自分の公開鍵を自分自身の秘密鍵で署名した物である。
つまり、自分自身の存在を自分自ら表明したものである。
自己署名証明書とは?

コレを使うと、CAがなくても自分自身の存在を表明できる。DHTで自己署名証明書を使って認証をする方法は以前提案したPKIと同様なアプローチなので省略する。つまり、ある人nameの自己署名証明書dig(name)はNode_ID=hash(name)となるノードに格納され、これが全てのノードから参照できるようにすれば良い。

では、自己署名証明書を使ったメリット・デメリットを整理しよう。

・メリット
☆CAなどのサーバが不要。よって運用コスト、初期費用はほぼ0。
☆だれもが自分自身の存在を証明する事が可能。

・デメリット
☆同じ名前の自己署名証明書を意図的にたくさん作ることができる。
☆ある悪意を持ったユーザの証明書の無効を完全には難しい。
☆あるユーザの秘密鍵がもれた場合の証明書の無効を完全に行うのは難しい。
☆本当にDHTに参加して良いノードかどうか審査することができない
☆あるユーザが多数の証明書を使い分けていることを検証するのが難しい。

ただし、デメリットの数点は改善することができる。
☆同じ名前の自己署名証明書を意図的にたくさん作ることができる
⇒自己署名証明書をNode_ID=hash(name)に登録する場合、既に登録されているnameでは、登録ノードがその登録をはじくようにすれば良い。

☆ある悪意を持ったユーザの証明書の無効を完全には難しい。
ユーザの中からスーパーユーザを募集し、スーパーユーザ権限を与える。これはスーパーユーザが悪意のあるユーザの証明書についてCRL(失効リスト)をつくり、それをDHTに格納する。この方法だとスーパーユーザに悪意のある人がいると、破綻する可能性がある。

☆あるユーザの秘密鍵がもれた場合の証明書の無効を完全に行うのは難しい。
方法は2つある。
方法1)自らの秘密鍵を使って、スーパーユーザに失効届けを出す。スーパーユーザは失効届が正当であることを検証してから、CRLを作成する。
方法2)自らの秘密鍵を使って、失効したという証明書をNode_ID=hash(name)に格納する。

これらの方法はお互い補完的で、まず方法2でユーザの影響を最小限に留め、時間が経つとスーパーユーザによるCRLによってブロックするとすれば良いだろう。

☆本当にDHTに参加して良いノードかどうか審査することができない
この辺は難しい問題だ。一つのアプローチとしてEigenTrustを使う事があるだろう。
EigenTrust~「今日の井原」から

自己署名証明書によると緩やかな信頼の和、コミュニティができることが期待できる。またこの方法ではとてもコストが低い事が魅力的である。ただし課金を行う、ビジネス的に信頼性を保障するとなると、このアプローチでは限界があって、信頼性を担保する人または機関、すなわちPKI的なアプローチを取るべきである。

|

« [P2P]DHTによるコンテンツ管理システムの提案 | トップページ | [P2P]DHTによるサーバレス・マルチキャストシステムの提案 »

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

コメント

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

トラックバック


この記事へのトラックバック一覧です: [P2P]自己署名証明書を用いたDHTにおける認証について:

« [P2P]DHTによるコンテンツ管理システムの提案 | トップページ | [P2P]DHTによるサーバレス・マルチキャストシステムの提案 »