[tor-dev] Gosling onion-to-onion specifications

Richard Pospesel richard at blueprintforfreespeech.net
Sat Mar 19 21:51:09 UTC 2022


Hi everyone!

tldr: Is there any reason why one should not use the same ed25519 public 
key to authenticate with multiple, unrelated ClientAuthV3 onion services?

----

Lots of progress has been made on building the foundation for Gosling 
over the past few months (rust/C FFI, cryptographic primitives 
integration, tor controller, etc) and I'm about to begin work actually 
implementing the protocol! The repo can be found here:

- https://github.com/blueprint-freespeech/gosling

The protocol spec (here for reference: 
https://github.com/blueprint-freespeech/gosling/blob/main/docs/protocol.md 
) calls for verified clients (ie 'friends' or 'contacts' in 
Ricochet-Refresh parlance) to connect to endpoints with v3 onion client 
authentication (see the 'request_endpoint' function in the 'Introduction 
Server RPC API' section).

Currently, the API is designed such that a client explicitly provides an 
ed25519 public key as part of the endpoint request to be used to encrypt 
their circuit descriptor (ie via the ClientAuthV3 param to ADD_ONION).

However, every client *already* has a public ed25519 public key 
associated with their identity; their onion service id associated with 
*their* introduction server (ie their own contact id in Ricochet-Refresh 
parlance). This public key is used in handshake verification to verify a 
client is who they say they are (see 'Proof Calculation and 
Verification' section).

Is there any particular reason why the client's identitying public key 
and the ClientAuthV3 public keys should be separate?

Being able to reuse this public key would simplify the protocol only a 
little bit, but if it means not needing to manage a key per contact that 
seems good. But if this is a terrible idea that's fine too. :)

best,
-Richard


On 12/4/21 14:51, Richard Pospesel wrote:
> Hi tor-dev,
> 
> As part of my work with Blueprint for Free Speech, I recently gave a 
> short presentation during the 2021 state-of-the-onion where we announced 
> Gosling ( see https://youtu.be/mNhIjtXuVzk?t=8155 ).
> 
> If you missed the talk, the tldr; is that we're developing a 
> specification and reference implementation library for building (onion 
> service based) anonymous+private+secure peer-to-peer applications.
> 
> Essentially, we're taking what we've learned about onion-to-onion 
> authentication from Ricochet-Refresh, extracting and improving the 
> relevant pieces, and packaging it all in a library that developers can 
> use to build their own anonymous+private+secure peer-to-peer 
> applications. Our hope is that future developers will not need to be tor 
> experts to build these types of applications.
> 
> Today ,I'm happy to announce that we just made the the gosling repo on 
> Github public!
> 
> - https://github.com/blueprint-freespeech/gosling
> 
> Things are little bare-bones at the moment, but the most relevant piece 
> right now is the protocol specification here:
> 
> - 
> https://github.com/blueprint-freespeech/gosling/blob/main/docs/protocol.md
> 
> You'll also find some initial prototyping work under the source 
> directory (the pace of development should pick up come 2022).
> 
> Please go take a look and feel free to respond here with any questions, 
> concerns, criticisms, etc. Thanks!
> 
> best,
> -Richard
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xDE47360363F34B2C.asc
Type: application/pgp-keys
Size: 5560 bytes
Desc: OpenPGP public key
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20220319/815b376a/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 840 bytes
Desc: OpenPGP digital signature
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20220319/815b376a/attachment.sig>


More information about the tor-dev mailing list