[tor-bugs] #31998 [Circumvention/Censorship analysis]: Linked Tor Relays To Bypass Probing?

Tor Bug Tracker & Wiki blackhole at torproject.org
Tue Oct 8 16:13:19 UTC 2019


#31998: Linked Tor Relays To Bypass Probing?
-----------------------------------------------+------------------------
 Reporter:  Aphrodites1995                     |          Owner:  (none)
     Type:  enhancement                        |         Status:  new
 Priority:  Medium                             |      Milestone:
Component:  Circumvention/Censorship analysis  |        Version:
 Severity:  Normal                             |     Resolution:
 Keywords:                                     |  Actual Points:
Parent ID:                                     |         Points:
 Reviewer:                                     |        Sponsor:
-----------------------------------------------+------------------------
Changes (by dcf):

 * version:  Tor: unspecified =>


Comment:

 What makes active probing attacks against vanilla Tor bridges possible is
 the fact that there's no secret information required to access one, other
 than its IP address and port. If I understand you correctly, you are
 proposing to add a piece of secret information to each bridge: the IP
 address and port of a "buddy bridge." Legitimate clients who discover
 bridges through BridgeDB would know the address of the buddy bridge, but a
 censor who naively active-probes single TCP connections would not. A
 client uses a bridge by sending the same messages simultaneously to both
 the bridge and its buddy. The bridge and its buddy communicate in real
 time, sharing information about the connections they receive and only
 allowing a connection when they receive identical simultaneous messages.

 My first question about this idea is, does it still work after the censor
 knows about it? The censor can watch for clients that connect to two
 separate hosts within a timing threshold, and then active-probe both of
 those hosts in the same way that it now probes single hosts. The secret
 information you propose to add to the connection procedure is only an IP
 address and port—and the client reveals that secret information on the
 wire the first time it connects to a bridge. So the additional secret
 won't remain secret for long, if the censor knows what to look for. The
 censor doesn't have to do this in real time, either. It can make a big
 list of all suspected Tor bridge connections throughout a day, then every
 24 h process the list to find the ones that were initiated at about the
 same time by the same client.

 Connecting to two hosts simultaneously and sending them the exact same
 contents (even if encrypted) probably makes bridge connections more easily
 fingerprintable (by traffic characteristics).

 How does it work on the bridge side? I think it could enable some DoS
 attacks. When a bridge receives a connection, it now needs to start its
 own real-time communication with its buddy to learn whether the buddy also
 receives a connection. How long does it wait before deciding that the
 buddy did not? It will have to remember all incoming connections for that
 amount of time. And then what does it do after deciding that the client
 did not also connect to the buddy? Disconnecting after a fixed timeout,
 for example, would be its own kind of fingerprint that a censor could
 probe for, even without trying to learn buddy relationships.

 The biggest problem I see is that in order to send a message under
 encryption, the client and bridge already have to exchange a lot of
 fingerprintable traffic. They have already exchanged a TLS ClientHello and
 ServerHello, which will easily reveal that the connection is a Tor
 connection. At that point, the game is up, no matter what measures you try
 to take that happen later.

 This would be an incompatible change to the Tor protocol, requiring new
 code on both clients and servers. As long as you're making an incompatible
 change, you may as well use a proper bridge secret that does ''not'' get
 revealed on the wire, like obfs4's [https://gitweb.torproject.org
 /pluggable-
 transports/obfs4.git/tree/doc/obfs4-spec.txt?id=c0898c2d3b3b197ff93f9b1c1da2bbcec0fec341#n75
 NODEID], rather than just a semi-secret IP address and port.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/31998#comment:1>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list