07/01/18 21:24:31
>>183
ノードが1対1でパケットを送るときに送信元の証明を付けるだけの話し。
ノードA <-> ノードB <-> ノードC
↑この状態の時にノードDが参加してきて、ノードCに繋いだら、
ノードCとの間で公開鍵の交換をして、
ノードDで共有鍵を作ってそれを秘密鍵で暗号化して、ノードCに投げる。
ノードCはそれをノードDの公開鍵で復元して、共有秘密鍵を手に入れる。
これで↓のようにノードDが繋がった。
ノードA <-> ノードB <-> ノードC <-> ノードD
ここでノードDが書込をする
ノードDは、まず書込データのMD5ハッシュ値を作る。
そのハッシュ値をノードC用の共有鍵を使って暗号化して、
それを書込データに付けてノードCに送る。
ノードCは書込データ+暗号化されたハッシュ値を受け取って、
まず書込データのMD5ハッシュ値を作る。
次にハッシュ値をノードD用の共有鍵を使って復元して、
自分で作ったハッシュ値と一致するか確認する。
正しければ、ノードB用の共有鍵を使ってハッシュ値を暗号化して、
書込データ+暗号化されたハッシュ値をノードBに投げる。
これをネットワーク全体に届くまで繰り返す。