[tor-bugs] #19859 [Core Tor/Tor]: Expose stream isolation information to controllers

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon Aug 8 23:13:29 UTC 2016


#19859: Expose stream isolation information to controllers
------------------------------+--------------------------------------------
     Reporter:  nickm         |      Owner:
         Type:  enhancement   |     Status:  new
     Priority:  Medium        |  Milestone:  Tor: 0.3.0.x-final
    Component:  Core Tor/Tor  |    Version:
     Severity:  Normal        |   Keywords:  needs-proposal hidden-services
Actual Points:                |  Parent ID:
       Points:                |   Reviewer:
      Sponsor:                |
------------------------------+--------------------------------------------
 See the discussion on the "How to integrate an external name resolver into
 Tor" thread on tor-dev; most notably
 http://archives.seul.org/tor/dev/Aug-2016/msg00019.html .

 Resolvers would like to know the isolation information of incoming streams
 so they know which streams need to be isolated from which other streams.

 Semantically, this is a little tricky.  The underlying rule that Tor
 implements is that each stream has a tuple of attributes (A_1, A_2...
 A_n), and a bit field (b_1, b_2... b_n).  Two streams S_a and S_b may
 share the same circuit iff, for every i such that the OR of their b_i
 values is true, they have the same A_i value.

 Note that this is not transitive: Stream S_a may be able to share a
 circuit with S_b or S_c, even if S_b cannot share with S_c.  Worse

 Should we (1) expose these attribute tuples and bitfields and require
 controllers to manipulate them correctly?  That seems obnoxious and error-
 prone.

 Or should we (2) allow controllers to ask questions like "may stream A
 share a circuit with stream B?" Or "what streams may A share a circuit
 with?"  This might lead to O(n) queries, and it will still be error-prone
 because of the non-transitivity issue.

 Or would it be better to (3) oversimplify the system above and provide
 each stream a 'cookie' such that any two streams with the same cookie may
 definitely share the same circuit?  But this is problematic, and will
 overestimate how much isolation we need.

 My current best idea is that (4) we should provide an operation of the
 form "make stream A have the same isolation properties as stream B".  And
 possibly "make circuit C have isolation properties as if it had been used
 by stream A".  So we don't expose isolation information, we just expose a
 way to manipulate it.

 Or maybe there's a further clever way I'm not even thinking about just
 now.

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


More information about the tor-bugs mailing list