[tor-dev] protecting users from known relay groups with end-to-end correlation capabilities

teor teor2345 at gmail.com
Fri Dec 2 22:39:40 UTC 2016

Dear relay operators who are CC'd,

TL;DR: we're talking about blacklisting your non-exit relays,
because they don't have MyFamily set correctly.

If you'd like help configuring MyFamily correctly, please let us know.

> On 3 Dec. 2016, at 08:50, nusenu <nusenu at openmailbox.org> wrote:
> Hi,
> it is a well known fact that MyFamily is a largely ignored setting,
> luckily this is not a problem in most cases because
> - all relevant relays are run in a single /16
> or
> - are only guard relays (exit probability = 0*)
> or
> - are only exit relays (guard probability = 0*)
> but there is a limited number of relay groups** that have actual
> end-to-end correlation capabilities, meaning they are potentially chosen
> by tor clients for the guard _and_ exit position, even if the odds are
> (hopefully) not very high.
> These potentially dangerous relay groups
> - are run in multiple /16 netblocks
> - have an exit _and_ guard probability of > 0 (because they run exits
> and guards)
> Examples (generated daily):
> https://raw.githubusercontent.com/ornetstats/stats/master/o/potentially_dangerous_relaygroups.txt
> (see CC)

This is a useful check, but it is insufficient.
Can you please produce a similar list for middles and exits by the same

(Controlling the middle and exit leads to a guard identification

There's also an attack when an operator controls a guard and a middle.
But that's harder to resolve, albeit much more common.

> How could the risk for tor clients be reduced?
> (options after enough dir auths came to the conclusion that these relays
> are in fact operated by a single entity)
> 1) try to contact the operators and give them time to fix it
> I've done that multiple times but haven't been successful [1]

Have you tried emailing them individually?
I've typically got better results that way.

> 2) build tools to easily/automatically manage MyFamily
> done[2], but it is unlikely to be used

Maybe one solution is to build a generic tool that works with more than
just ansible?

> 3) assign them the badexit flag
> since exits are a scarce resource, not very wise


> 4) assign them the badguard flag
> there is no such thing ;)

We have written patches that take away the guard flag.
This would be possible, but it doesn't resolve the issue, because they
will still be used as middle relays.

However, taking away the guard flag would fix the guard/middle case,
because then all the relays would only be used as middle relays.

> 5) blacklist the entry guards (that are outside the configured family)

Yes, this is the best option, because it protects clients from
selecting relays from that operator as either guard or middle.

(However, operating a bridge and an exit still has the same issue, and
there is no MyFamily for bridges, because that de-anonymises them. As
do the bridge/middle and guard/middle cases. So maybe we should
consider the risks of each case, and whether we want to educate or ban.)

And, of course, it's worth noting that the ContactInfo might be
incorrect, so we would have to do this on a case-by-case basis, and
convince the directory authority operators it's a sensible thing to do.

(If someone is using others' ContactInfo, those relays should be

> 6) change tor's path selection algorithm to never choose more than one
> relay with a given non-empty non-default contact string?
> This would basically turn the ContactInfo field into the PoS token
> mentioned by Mike in [3]. Since there are a few common contactInfo
> strings this is probably not the best option without excluding them.

No, this field is not mutually authenticated, unlike MyFamily.
This leads to an attack where bad relays bias client path selection
using ContactInfo.

> [1]
> https://lists.torproject.org/pipermail/tor-relays/2016-November/010965.html
> [2] https://github.com/nusenu/ansible-relayor
> [3] https://trac.torproject.org/projects/tor/ticket/5565
> * if we can assume onionoo's values to be accurate and realistic
> ** they are considered to be operated by a single group due to their
> contactInfo descriptor field. This string is not verified in any way and
> can therefore result in false-positives.


Tim Wilson-Brown (teor)

teor2345 at gmail dot com
PGP C855 6CED 5D90 A0C5 29F6 4D43 450C BA7F 968F 094B
xmpp: teor at torproject dot org

More information about the tor-dev mailing list