lsd0004

LSD0004: R5N Distributed Hash Table
Log | Files | Refs

commit 4651a10a7458697717ef0e96d71125ff27f828ae
parent 385ebc680f1af71cce85164cb5157c14485cbf59
Author: Martin Schanzenbach <mschanzenbach@posteo.de>
Date:   Mon,  5 Jul 2021 18:53:34 +0200

update naming

Diffstat:
Mdraft-schanzen-r5n.xml | 58+++++++++++++++++++++++++++++++++++++++++++++++-----------
1 file changed, 47 insertions(+), 11 deletions(-)

diff --git a/draft-schanzen-r5n.xml b/draft-schanzen-r5n.xml @@ -160,7 +160,27 @@ Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0 \ tor+onionv3://rasdflkjasdfliasduf.onion/ ]]></artwork> </figure> + <!-- + 1) The current API is always fire+forget, it doesn't allow for flow + control. I think we need to add that, possibly for sending and receiving. + IDK. + +2) I'm not sure what to do with the crypto: mandate EdDSA or allow the + underlay to do whatever public keys it likes. + + We need keys in the overlay. (Path signatures). Do they need to + be the same keys??? + +3) I think we may want to mandate that the lower layer at least +authenticate the other peer (i.e. every UDP message could be in +cleartext, but would need to come with an EdDSA signature, alas 92 byte +overhead and a signature verification _required_). Otherwise, I don't +see how we can offer even the most minimal protections against peer + impersonation attacks. WDYT? + + Security considerations? Prerequisites? + --> <t> It is expected that there are basic mechanisms available to manage peer connectivity and addressing. @@ -168,49 +188,65 @@ Y924NSHMMZ1N1SQCE5TXF93ED6S6JY311K0QT86G9WJC68F6XVZ0 \ procedures and events: </t> <dl> - <dt>PEER_CONNECTED(pk,address)</dt> + <dt>PEER_CONNECTED(phash,address)</dt> <dd> is a signal that allows the DHT to react to peers which connect. Such an event triggers, for example, updates in the routing table. </dd> - <dt>PEER_DISCONNECTED(pk,address)</dt> + <dt>PEER_DISCONNECTED(phash,address)</dt> <dd> is a signal that allows the DHT to react to peers which disconnect. Such an event triggers, for example, updates in the routing table. </dd> - <dt>CONNECT(address)</dt> + <dt>TRY_CONNECT(pid, address)</dt> <dd> A function which allows a peer to attempt the establishment of a connection to another peer using an address. </dd> - <dt>DISCONNECT(address)</dt> + <dt>HOLD(pash)</dt> + <dd> + A function which tells the underlay to keep a hold on the connection + to another peer. + </dd> + <dt>DROP(pash)</dt> <dd> - A function which allows a peer to disconnect from - another peer. + A function which tells the underlay to drop the connection to another + peer. </dd> <dt>RECEIVE(source, message)</dt> <dd> A function or event that allows the peer to receive protocol messages as defined in this document from a connected peer. </dd> - <dt>SEND(source?, target)</dt> + <dt>SEND(target, message)</dt> <dd> A function that allows a peer to send protocol messages as defined - in this document to a connected peer. + in this document to a connected peer. If call to SEND fails, + the message has not been sent. </dd> <dt>NETWORK_SIZE_ESTIMATE(N)</dt> <dd> A function or event that provides estimates on the network size for use in the DHT routing algorithms. </dd> - <dt>ADDRESS_CHANGED(pk, address)</dt> + <dt>ADDRESS_ADD(pk, address)</dt> + <dd> + The underlay signals us that an address was added. + This information is used, for example, to publish + connectivity as part of the bootstrapping and overlay creation. + </dd> + <dt>ADDRESS_DELETE(pk, address)</dt> <dd> - An event that allows the DHT to learn and react to address changes - of the peer. This information is used, for example, to publish + The underlay signals us that an address was removed. + This information is used, for example, to publish connectivity as part of the bootstrapping and overlay creation. </dd> + <dt>VERIFY(blob)</dt> + <dd> + Signature verification by underlay. + </dd> </dl> </section> <section anchor="routing" numbered="true" toc="default">