[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的なアプローチを取るべきである。
| 固定リンク
「パソコン・インターネット」カテゴリの記事
- 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)
この記事へのコメントは終了しました。
コメント