For reasons discussed in #5565 (moved), the ‘MyFamily’ option should go away:
It is probably harmful for clients to refuse to use two relays operated by the same honest entity, and malicious relay operators will not use MyFamily honestly.
Honest relay operators have a hard time setting MyFamily correctly on all of their relays.
Relay family information bloats up microdescriptors, likely for no benefit.
Groups of relays operated by the same entity can be recognized tolerably well (e.g. for metrics purposes) using their ContactInfo string instead (modulo the possible need for fuzzy matching of some sort).
This change requires (assuming I didn't forget anything):
a proposal, spec change, and consensus method to remove relay family information from microdescriptors;
a corresponding code change for Tor dirauths;
a code change to clients to make them ignore relay family information (if they receive it, e.g. by turning off UseMicrodescriptors) by default, and warn if the user tries to re-enable use of relay family information without disabling UseMicrodescriptors.
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.
It is probably harmful for clients to refuse to use two relays operated by the same honest entity, and malicious relay operators will not use MyFamily honestly.
I've the feeling that this ignores the fact that MyFamily is still useful even if only honest operators use it. Why is it useful even then? 0wning a honest relay operator likely gives you access to all of his relays (sooner or later). [Yes after owning them the attacker could remove their MyFamily setting but reconfiguring and reloading a relay hopefully would rise some suspicion]
Or more generally: The probability to compromise relay A and B is higher if they are run by the same operator.
There are other concerns here, it wouldn't be trivial to match the two relays I'm running via contact info, and anyone can set up a relay matching my contact info, too. Generally the reasoning above uses "probably" too much imo.
I think the strongest argument we're going to get here will come from Tariq's research on guard rotational vulnerabilities. He found that when guard rotation occurs, the bad guy is significantly more likely to get his relay chosen as your guard if you obey the family stuff than if you ignore it. The 'significantly' is because a lot of our really big relays are in families. So there's increased vulnerability right now in the passive (no compromise of big nodes) case. The question is which vulnerabilities are worse.
I'm hoping to get good answers here once he finishes prepping the WPES paper/talk and moves on to the NDSS submission (or whatever venue is next).
I think it is a bad idea to remove the family setting, because it will make larger operators a more interesting target.
What if I end up as both entry and exit, and potentially even the middle node? Some time ago, some LEA wanted me to give up information on a case that was "happening right now", so there might still be open circuits, right?
I think the strongest argument we're going to get here will come from Tariq's research on guard rotational vulnerabilities. He found that when guard rotation occurs, the bad guy is significantly more likely to get his relay chosen as your guard if you obey the family stuff than if you ignore it. The 'significantly' is because a lot of our really big relays are in families. So there's increased vulnerability right now in the passive (no compromise of big nodes) case. The question is which vulnerabilities are worse.
I'm hoping to get good answers here once he finishes prepping the WPES paper/talk and moves on to the NDSS submission (or whatever venue is next).
I talked to Tariq about this at Oakland, and he said that his analysis shows (counterintuitively) that taking away the Family concept actually doesn't change vulnerability to the above attacks much. That is, the 'significantly' above is not actually significant.
It would be interesting to have Aaron re-do the same calculation using his new TorPS simulator.
I'd like to know whether this applies to path selection too, or whether it only implies that we shouldn't consider families during guard selection. I'd also like to know whether it applies in a one-guard universe.
I believe it is dangerous to use all 3 relays in a circuit from a single entity - even if the entity is acting honestly.
MyFamily is hated and not properly used because:
it is cumbersome to manage
there are no incentives for a relay operator to set it properly
it was not easy to verify whether MyFamily was setup correctly on all your relays
I'm aiming to make it very easy for relay operators to manage MyFamily without them even knowing what MyFamily is (using an ansible role https://github.com/nusenu/ansible-relayor)
create a tor operator "bandwidth ranking" based on the family (new compass group-by family functionality). So a relay operator that wants to move up on the list has a reason to properly set MyFamily (using provided tools or manually). MyFamily is currently even the only way to properly group relays of a certain operator toghether. Using contactInfo is a much weaker since it does not require any mutual agreement.
relay operators can use compass to very easily verify whether their MyFamily is setup correctly using the Family lookup (which is already available today)
For what it's worth, Roster also makes MyFamily a bit less painful to work with because the detected families are now robust to changes in the Family graph. For details see:https://trac.torproject.org/projects/tor/ticket/16750