Once we start pinning ed25519 keys, we should probably also allow directory authorities to ban them in approved-routers. This will allow us to migrate away from RSA keys at some point.
(Where else do we use RSA fingerprints?)
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.
Quick question here. Can a relay have N rsa keys (for N > 1) for 1 ed25519 key and still keep it's uptime/weight?
I'm asking here because we currently block by RSA fingerprint but what if I can rotate that everyday (or when blocked) but still keep my consensus weight because my ed25519 is still recognized by dirauths?
Quick question here. Can a relay have N rsa keys (for N > 1) for 1 ed25519 key and still keep it's uptime/weight?
Yes, but not for long.
The directory authorities keep a key pinning journal, but don't enforce it.
When we turn on key pinning, authorities won't vote for relays that change one key and keep the other the same.
I'm asking here because we currently block by RSA fingerprint but what if I can rotate that everyday (or when blocked) but still keep my consensus weight because my ed25519 is still recognized by dirauths?
The bandwidth script uses RSA fingerprints, so changing your RSA removes all your bandwidth.
In the far future, when we remove RSA keys, we will want to have a file that bans both RSA and ed25519 keys, to make the transition easier.
The function dirserv_load_fingerprint_file() reads the file approved-routers. I have a few questions:
Should the ed25519 key in the approved-routers file be a base16-encoded key (similar to what we do right now with RSA fingerprints)?
Would it be okay that if a ed25519 key was given, I check keypin hashtable to get the relay's corresponding RSA key and then add it to the list? I propose will be done with a new function that searches the ed25519 keypin hash table for each entry until a matching ed25519 key is given, and then return a corresponding RSA key.
I am concerned with Point 2 however because of the O(n^2^) running time from needing to go through the list of all Tor relays. Another concern is that mapping ed25519 to RSA could mean we prolong the life of the RSA code.
Would it be better to overhaul the relay data structures to be ed25519-first and then do this?
The function dirserv_load_fingerprint_file() reads the file approved-routers. I have a few questions:
Should the ed25519 key in the approved-routers file be a base16-encoded key (similar to what we do right now with RSA fingerprints)?
I think it should base64-encoded; that's how ed25519 keys are printed everywhere else in Tor.
Would it be okay that if a ed25519 key was given, I check keypin hashtable to get the relay's corresponding RSA key and then add it to the list? I propose will be done with a new function that searches the ed25519 keypin hash table for each entry until a matching ed25519 key is given, and then return a corresponding RSA key.
I think it should just store the ed25519 keys, and look up by the ed25519 key.
I am concerned with Point 2 however because of the O(n^2^) running time from needing to go through the list of all Tor relays. Another concern is that mapping ed25519 to RSA could mean we prolong the life of the RSA code.
Would it be better to overhaul the relay data structures to be ed25519-first and then do this?
I think that might be a good idea, but instead of being ed25519-only, we should make it handle both ed25519 and RSA keys.
I think it should just store the ed25519 keys, and look up by the ed25519 key.
Does that mean something like authdir_config_t should be done for ed25519 (even if the digests are stored as a union), and then introduce a function like dirserv_get_status_impl() that takes in ed25519 keys. And then I should make dirserv_router_get_status() look at ed25519 keys as well?