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

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Jun 6 15:36:11 UTC 2019


#29206: New design for client -- proxy protocol for Snowflake
-------------------------------------+--------------------------------
 Reporter:  cohosh                   |          Owner:  cohosh
     Type:  task                     |         Status:  needs_review
 Priority:  Medium                   |      Milestone:
Component:  Circumvention/Snowflake  |        Version:
 Severity:  Normal                   |     Resolution:
 Keywords:  ex-sponsor-19            |  Actual Points:
Parent ID:                           |         Points:  6
 Reviewer:                           |        Sponsor:  Sponsor28-must
-------------------------------------+--------------------------------
Changes (by cohosh):

 * status:  assigned => needs_review


Comment:

 I'm going to ask for an incremental review on this one, mostly just to get
 another pair of eyes on what I've done and my next steps before I sink
 more time into going possibly the wrong direction:
 https://github.com/cohosh/snowflake/compare/sequencing

 What I've done:

  * Added a `ReadWriteCloser` that takes data to be sent and adds a header
 before passing it on to the Write function of the webrtc connection and
 removes the header in a Read on the other side. This is implemented as a
 common package because it's used by both the client and server
  * Wrote some tests for the package
  * Send and acknowledgement packet at every read:
 https://github.com/cohosh/snowflake/commit/a7191b6b5ea4c9e58709c03fefc2dcd07571dc0f

 Next steps:

  * Implement a timeout (maybe making the `ReadWriteCloser` a `net.Conn`
 and implementing `SetReadDeadline` and a fixed size window to stop sending
 packets before others have been acknowledged)
  * Make it backwards compatable. I'm thinking of doing this by having an
 extra field in the header that should be set to all zeros. If it's not
 zeros, we just forward the data as is. If it is zeros, we extract the
 header.
  * Make the tests better. Right now I'm just reading and writing from a
 buffer, we should test with network connections

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


More information about the tor-bugs mailing list