ノードの認証


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

CGA(Cryptographically Generated Address)認証

各ノードは公開鍵暗号の鍵ペアを作成し、DHT等のネットワーク上に保管する。
もしくは、ネットワークに参加する際に、他のノードに作成してもらう。
ハッシュ関数はChordアルゴリズムではSHA-1が利用されることが一般的である。

ノードのIDはノード自身が決めるのではなく、ノードの公開鍵とIPアドレスから一定の処理を行い決定される。

ID = H(PubKey) || H(IPAddress)

ここでH(x)はハッシュ関数、PubKeyはノードの公開鍵、IPAddressはノードのIPアドレスで、||は連結である。IPv4かIPv6であるかは問わない。
これ以降、ノードは決定されたノードIDを名乗る。
ノードと接続する際、相手ノードに公開鍵とIPアドレスを与える(多くの場合自明となる)。
相手ノードはこれらからIDを再計算し、正しいノードIDであることを確認したら通信を開始する。
これにより勝手なIDを名乗ることができなくなる。とんでもない量の計算によりIDを算出することは不可能ではないが、事実上不可能だといえる。
これによりデータの改竄が困難なものとなる。特定のデータDはSuccessor(H(D))のノードに配置されるため、ノードIDを自由に選べることはデータの改竄や削除を許す可能性があるからだ。
(これにより生成されたIDはあくまで通信相手の識別という低いレイヤーでの使用に限り、掲示板上での個人の識別は、別途公開鍵暗号を利用した署名で行うべきかもしれない。)