[tor-bugs] #29206 [Circumvention/Snowflake]: New design for client -- server protocol for Snowflake

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Oct 24 14:34:10 UTC 2019


#29206: New design for client -- server protocol for Snowflake
-----------------------------------------------+---------------------------
 Reporter:  cohosh                             |          Owner:  cohosh
     Type:  task                               |         Status:
                                               |  needs_review
 Priority:  Medium                             |      Milestone:
Component:  Circumvention/Snowflake            |        Version:
 Severity:  Normal                             |     Resolution:
 Keywords:  anti-censorship-roadmap-september  |  Actual Points:
Parent ID:                                     |         Points:  6
 Reviewer:  dcf                                |        Sponsor:
                                               |  Sponsor28-must
-----------------------------------------------+---------------------------

Comment (by cohosh):

 Alright, I had a chance to take a look at the obfs4 integration with Turbo
 Tunnel: https://github.com/net4people/bbs/issues/14#issuecomment-544747519

 Another option is to just scrap the work done here so far and work turbo
 tunnel into snowflake.

 One of the main differences between Snowflake and obfs4 in how it relates
 to the work on Turbo Tunnel so far is the difference in how Dial would be
 called. There is no `Dial` in snowflake, but rather a simultaneous routine
 that collects snowflakes in the background until we are ready to use them.
 A call to a call to [https://gitweb.torproject.org/pluggable-
 transports/snowflake.git/tree/client/lib/snowflake.go#n20
 snowflakes.Pop()] retrieves it for use by the `Handler` function.

 I'm curious about whether Turbo Tunnel is going to be implemented as a
 separate library.

 Snowflake could accommodate this with a dial function similar to the one
 provided by the obfs4 ClientFactory:
 https://dip.torproject.org/dcf/obfs4/blob/reconnecting-
 quic/transports/base/base.go#L56
 Here `Dial` would likely be provided by `SnowflakeCollector` and just wrap
 the call the `snowflakes.Pop`. Then `dialAndExchange` could take a
 `Dialer` interface as the first argument.

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


More information about the tor-bugs mailing list