[tor-bugs] #14389 [Applications/Tor Browser]: Improve TBB UI of hidden service client authorization

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Mar 22 14:49:49 UTC 2018


#14389: Improve TBB UI of hidden service client authorization
--------------------------------------------+------------------------------
 Reporter:  asn                             |          Owner:  tbb-team
     Type:  defect                          |         Status:
                                            |  needs_revision
 Priority:  Medium                          |      Milestone:
Component:  Applications/Tor Browser        |        Version:
 Severity:  Normal                          |     Resolution:
 Keywords:  tor-hs, tbb-usability, ux-team  |  Actual Points:
Parent ID:                                  |         Points:
 Reviewer:                                  |        Sponsor:
--------------------------------------------+------------------------------

Comment (by asn):

 Replying to [comment:27 dgoulet]:
 > Replying to [comment:22 asn]:
 > > Executive summary No2: v2 descriptors do not let us distinguish
 between descs where the auth is enabled or whether they are corrupted, so
 Tor keeps on trying new directories in hope of finding a non-corrupted
 desc. In this sense, the current approach of the patch is not bad.
 >
 > Indeed... and not only that but a warning will be emitted because we'll
 try to parse the introduction point using a binary blob (encrypted).
 >
 > Proposition:
 >
 > Upon receiving a descriptor from the HSDir, if we can parse it (passes
 `rend_parse_v2_service_descriptor()`) but unable to decode intro points,
 we actually keep it in the client cache. Meaning that once Tor browser (or
 tor client) comes back with the authentication token, we don't have to
 refetch it. We'll probably to patch couples things here to make sure that
 we can use a descriptor in our cache with client auth but also that if the
 auth token is invalid, we trigger a `BAD_DESC` event.
 >
 > Another approach would be to have a control port option (or torrc) to
 tell tor to keep any invalid but parseable descriptor which TB would
 enable. But honestly, for the sake of simplicity, I think we could easily
 keep it in the client cache which is bound to expire after a while
 normally.
 >
 > That being said, TB does need to check for the `BAD_DESC` event of
 `HS_DESC` mentioned in comment:11. Once you get that, you should prompt
 for a client authorization. If you don't see that event after, it should
 be connecting. Else, tor should trigger the event again and TB should ask
 again for the auth code.


 Hmmm, that does seem like a plan. However it's only approximately
 specified how it would work. And looking at the codebase it's quite hairy
 at those parts and the interfaces are not obvious to me. And also it's the
 legacy v2 codebase that we would ideally not touch a lot.

 Another approach would be: Do nothing on the little-t-tor side and just
 use Arthur's approach of checking for `BAD_DESC` events. The tradeoffs:
 {{{
 + No extra complexity on the Tor side (no chance for extra bugs,
 complicated code, review process, etc.)
 - Some extra network load from users of this feature
 }}}

 The pros are quite obvious, so let's try to estimate the extra load we
 impose:

 First let's assume that regular users don't stumble on random HSes with
 client auth, and even if they did, they would impose the same network load
 with this feature and without it (6 HSDir requests for unparseable
 descriptors). So it's safe to assume that the extra load comes from people
 who want to use this feature:

 So when a person wants to use this feature (with the right password), they
 will cause 6 HSDir requests on the network, until TB realizes that it
 needs to try client auth. Then it will need to do one additional HSDir
 request to properly decrypt it. This means that legit users of this
 feature cause 6 useless HSDir requests. Basically the same load as
 mistyping an onion address. OTOH, when a person wants to use this feature
 with the wrong password, they will cause 12 useless HSDir requests.

 It's unclear to me whether this tradeoff is worthwhile, however I do feel
 bad about spending time to reengineer the v2 codebase just for this, since
 the effort seems far from trivial. Then in v3 we can do it the right way.

 I'm not actually sure this is a good idea, but I'll just throw it here for
 now.

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


More information about the tor-bugs mailing list