[tor-bugs] #9001 [Tor]: Slow Guard Discovery of Hidden Services and Clients

Tor Bug Tracker & Wiki blackhole at torproject.org
Fri May 31 04:11:48 UTC 2013


#9001: Slow Guard Discovery of Hidden Services and Clients
---------------------------------------------+------------------------------
 Reporter:  mikeperry                        |          Owner:                    
     Type:  defect                           |         Status:  new               
 Priority:  major                            |      Milestone:  Tor: 0.2.5.x-final
Component:  Tor                              |        Version:                    
 Keywords:  tor-hs path-bias needs-proposal  |         Parent:                    
   Points:                                   |   Actualpoints:                    
---------------------------------------------+------------------------------
Changes (by mikeperry):

 * cc: andrea (added)


Old description:

> In http://www.ieee-security.org/TC/SP2013/papers/4977a080.pdf, one of the
> attacks described is a method for locating the Guard nodes of a hidden
> service within about an hour.
>
> It also seems possible to locate the Guard nodes of persistent, automated
> clients in a similar timeframe by similarly fingerprinting and destroying
> HSdir lookup circuits.
>
> These attacks are possible to execute on such rapid timescales because
> *each* endpoint in hidden service communications can destroy the current
> circuit, and force the other party to create a new one using a new middle
> node.
>
> There are at least three ways to slow this attack:
>
>  1. Multiple layers of guard nodes.
>  1. Create a "Virtual Circuit" abstraction layer that picks your hops for
> a given purpose, and tries to re-use those hops even after certain
> failure conditions.
>  1. Change the Tor Protocol to prevent DESTROY cells and other mechanisms
> of circuit destruction from destroying the counter-party's endpoint, and
> create mechanisms for multiple clients to share a single HS rend circuit
> (such as I2Ps 'garlic routing' concept).
>
> Nick and I are tentatively learning towards the "Virtual Circuit"
> approach. Such a layer would cleanly decouple path selection from circuit
> use, and allow us to do things like keep the same three hops for rend and
> intro circuits for N days, regardless of transient circuit failures or
> DESTROY cells.
>
> This would considerably slow the attack, and also make all sorts of
> anonymity metrics and analysis easier to do. For example: We can choose N
> intelligently such that we would expect the runtime of the attack to be a
> function of our guard lifetime from #8240, or we could define lifetime
> based on expected circuit use and application-provided linkability hints
> (such as #5752).
>
> We can also use the layer to improve the path bias accounting to only
> count failure if you are forced to choose a new path, rather than simply
> make a new circuit.

New description:

 In http://www.ieee-security.org/TC/SP2013/papers/4977a080.pdf, one of the
 attacks described is a method for locating the Guard nodes of a hidden
 service within about an hour.

 It also seems possible to locate the Guard nodes of persistent, automated
 clients in a similar timeframe by similarly repeatedly destroying HSdir
 lookup circuits for your target hidden service.

 These attacks are possible to execute on such rapid timescales because
 *each* endpoint in hidden service communications can destroy the current
 circuit, and force the other party to create a new one using a new middle
 node.

 There are at least three ways to slow this attack:

  1. Multiple layers of guard nodes.
  1. Create a "Virtual Circuit" abstraction layer that picks your hops for
 a given purpose, and tries to re-use those hops even after certain failure
 conditions.
  1. Change the Tor Protocol to prevent DESTROY cells and other mechanisms
 of circuit destruction from destroying the counter-party's endpoint, and
 create mechanisms for multiple clients to share a single HS rend circuit
 (such as I2Ps 'garlic routing' concept).

 Nick and I are tentatively leaning towards the "Virtual Circuit" approach.
 Such a layer would cleanly decouple path selection from circuit use, and
 allow us to do things like keep the same three hops for rend and intro
 circuits for N days, regardless of transient circuit failures or DESTROY
 cells.

 This would considerably slow the attack, and also make all sorts of
 anonymity metrics and analysis easier to do. For example: We can choose N
 intelligently such that we would expect the runtime of the attack to be a
 function of our guard lifetime from #8240, or we could define lifetime
 based on expected circuit use and application-provided linkability hints
 (such as #5752).

 We can also use the layer to improve the path bias accounting to only
 count failure if you are forced to choose a new path, rather than simply
 make a new circuit.

--

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


More information about the tor-bugs mailing list