lsd0004

LSD0004: R5N Distributed Hash Table
Log | Files | Refs

commit 4505c81791f4e7ccdede38b01ede8364b5262344
parent a79a93f4928b11b631d71974cbe06d723a46bc3f
Author: Bernd Fix <brf@hoi-polloi.org>
Date:   Wed, 17 Jul 2024 11:36:38 +0200

Clarified PATH verification / reconstruction.

Diffstat:
Mdraft-schanzen-r5n.xml | 19++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml @@ -1265,11 +1265,11 @@ ComputeOutDegree(REPL_LVL, HOPCOUNT, L2NSE): <section anchor="p2p_path"> <name>Path</name> <t> - If the <tt>RecordRoute</tt> flag is set, the travel of a <tt>PutMessage</tt> + If the <tt>RecordRoute</tt> flag is set, the route of a <tt>PutMessage</tt> or a <tt>ResultMessage</tt> through the overlay network is recorded in the <tt>PATH</tt> field of the message. <tt>PATH</tt> is a list of path elements. - A new path element is appended to the existing <tt>PATH</tt> before - a peer sends the message to the next peer. + A new path element (<xref target="p2p_pathelement"/>) is appended to the + existing <tt>PATH</tt> before a peer sends the message to the next peer. </t> <t> A path element contains a signature and the public key of the peer that @@ -1299,6 +1299,12 @@ ComputeOutDegree(REPL_LVL, HOPCOUNT, L2NSE): ]]></artwork> </figure> <t> + Note that the wire format of <tt>PATH</tt> (<xref target="p2p_pathelement"/>) + will not include the last public key (Pub C in our example) as this will be + redundant; the receiver of a message can use the public key of the sender as + the public key to verify the last signature. + </t> + <t> The <tt>PATH</tt> is stored along with the payload data from the <tt>PUT</tt> message at the final peer. Note that the same payload stored at different peers will have a different <tt>PATH</tt> associated with it. @@ -1315,14 +1321,13 @@ ComputeOutDegree(REPL_LVL, HOPCOUNT, L2NSE): <t> When receiving a message with flag <tt>RecordRoute</tt> and <tt>PATH</tt>, a peer is encouraged to verify the integrity of <tt>PATH</tt> (if the - available resources of the peer allow this). A validator should first check - that the peer sending the message has its public key recorded in the last - path element. It may then check all contained signatures. + available resources of the peer allow this) by checking the signatures of + the path elements. </t> <t> If an invalid signature is detected, the path is truncated keeping only element fields following the faulty signature and setting the <tt>Truncated</tt> - flag. Assume that peer C detects a faulty signature in path element #2, + flag. Assume that peer C detects a faulty signature from peer B, the trunacted path has two entries: </t> <figure anchor="figure_path_truncated" title="Example truncated PATH">