On Wed, Sep 21, 2011 at 1:58 PM, Nick Mathewson nickm@alum.mit.edu wrote:
I'm thinking of a few more tweaks to this proposal, based on implementation.
Here's one:
I think on reflection that we should change the TLSSECRETS field from optional to required in all AUTHENTICATE cells. Only relays need to send it, after all.
Doing this makes us more secure, at the expense of making it a little harder for now to write a relay using an inflexible TLS library that you can't change.
Another change: Previously I had said that every server (including relays and bridges) should send an AUTH_CHALLENGE cell to say "I'd like authentication". In fact, that should only apply to relays: There is never a point in authenticating to a bridge, right? Similarly, bridges should only authenticate to their clients, not to the relays that they're extending to.
So here, I think, are the right behaviors for the possible interactions in the v3 protocol now: Client connects to bridge: C->B: VERSIONS B->C: VERSIONS, CERT, NETINFO C->B: NETINFO Client or bridge connects to relay: C->R: VERSIONS R->C: VERSIONS, CERT, AUTH_CHALLENGE, NETINFO C->R: NETINFO Relay connects to relay: R1->R2: VERSIONS R2->R1: VERSIONS, CERT, AUTH_CHALLENGE, NETINFO R1->R2: CERT, AUTHENTICATE, NETINFO