A popular-ish HSv3 operator contacted me and told me that they've been getting lots of warnings on their logs:
[warn] Tried connecting to router at [IP:port], but RSA identity key was not as expected: wanted [hex string] + [base64 string] but got [same hex string] + no ed25519 key.
They are afraid it's some sort of downgrade attack. We should look into this.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items
0
Link issues together to show that they're related.
Learn more.
What would you suggest is the best way of testing those possibilities?
To answer your questions:
Partially v0.3.2.10, partially v0.3.3.7.
Assuming you mean single-hop, yes.
Single onion services don't use guards, so they eventually connect to most relays.
This means that they see more errors than most other onion services, which only connect to a few guards.
No load balancing.
I'm not sure how to answer the last question, can you point me to how can I query or view the consensus?
We are particularly interested in the failing relay versions, because that helps us isolate the bug.
You could also use Stem to look up the RSA fingerprints and dump the relay information:
https://stem.torproject.org
If you'd like us to do the analysis, it should be safe to post the RSA/ed25519 pairs as an attachment to this ticket.
But you must remove the timestamps from the log file, then destroy order by sorting the list.
I assume ed25519 keys started in v0.3, so it makes sense that those relays wouldn't support ed25519 handshakes, but why do they have three ed25519 values in their descriptor?
I assume ed25519 keys started in v0.3, so it makes sense that those relays wouldn't support ed25519 handshakes, but why do they have three ed25519 values in their descriptor?
0.3.0.1-alpha introduced ed25519 link authentication, using the ed25519 identity keys that had been around since 0.2.7.2-alpha. So all supported relays have ed25519 keys, but only relays on 0.3.0.1-alpha or later use them to authenticate their TLS connections:
In 0.3.0.1-alpha:
With the 0.3.0 series, clients and relays now use Ed25519 keys to
authenticate their link connections to relays, rather than the old
RSA1024 keys that they used before.
All relays now maintain a stronger identity key, using the Ed25519
elliptic curve signature format. This master key is designed so
that it can be kept offline. Relays also generate an online
signing key, and a set of other Ed25519 keys and certificates.
These are all automatically regenerated and rotated as needed.
Implements part of ticket 12498.
v3 clients sending introduce cells include an ed25519 key for 0.2.9 and earlier rend points, even though ed25519 link authentication can't possibly work for those rend points:
(There would be a similar bug for v3 Tor2web client to intro, but Tor2web is not supported on v3.)
This bug is similar to #21107 (moved), where directory authorities marked 0.2.9 relays as not running, because they had ed25519 identity keys, but did not support authenticating their link handshakes with those keys. See, in particular:
check that relays log a protocol warning (or lower) when a client asks them to extend to an ed25519 id, but the relay they're extending to doesn't support ed25519 link authentication
without the backport, clients can't check if the node supports ed25519 link auth
these backports also make v3 client intro behaviour consistent between 0.3.3+ and 0.3.2
only send ed25519 link specifiers in client intros if the rend point supports ed25519 link auth
only send ed25519 link specifiers in service descriptors if the intro point supports ed25519 link auth
Relays already behave correctly:
all relays log a protocol warning when a client asks them to extend to an ed25519 id, but the relay they're extending to doesn't support ed25519 link authentication
I've merged the 0.3.3 branches, and forward. Let's think a little more about whether we want to backport this to 0.3.2, though? It's only a warning, and the extra dependent backports seem a little tricky to me.
Trac: Milestone: Tor: 0.3.5.x-final to Tor: 0.3.2.x-final