[tor-bugs] #28803 [Applications/Tor Browser]: Integrate building pluggable transports for Android into tor-browser-build

Tor Bug Tracker & Wiki blackhole at torproject.org
Mon Dec 17 00:38:45 UTC 2018


#28803: Integrate building pluggable transports for Android into tor-browser-build
-------------------------------------------------+-------------------------
 Reporter:  gk                                   |          Owner:  tbb-
                                                 |  team
     Type:  task                                 |         Status:  new
 Priority:  High                                 |      Milestone:
Component:  Applications/Tor Browser             |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tbb-rbm, tbb-mobile, TBA-a3,         |  Actual Points:
  TorBrowserTeam201812                           |
Parent ID:                                       |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by sisbell):

 It looks like the candidate PTs are

  1. obfs4 (implemented in orbot)
  1. meek (implemeted in orbot - uses meek_lite)
  1. fteproxy[wiki:FteProxy -]has no plans for support on Android:
 https://github.com/kpdyer/fteproxy/issues/187

 '''Configuration:'''

 The obfs binary used by orbot supports: obfs3, obfs4. meek lite binary
 also is available. So we can support (1) and (2). All of these are
 configured and written to a custom torrc file:

       '''!ClientTransportPlugin''' ''transport'' exec ''path-to-binary''
 [options]::
 The bridge list is read from a text file in the res/raw  folder. The
 bridges are then written to the custom torrc file.

 '''Building the libraries:'''

 Orbot uses Pluto to build the transports for Android:
 https://github.com/guardianproject/pluto . However, there is an updated
 Pluto 2 library available:
 https://github.com/guardianproject/AndroidPluggableTransports

 So first question is do we want to use Pluto 1 (which is what orbot is
 currently using) or Pluto 2 which is the current recommended version?

 To build the transport (for Pluto 1), we will need:

  1. Build go toolchain for android (this could be a separate project/go-
 android-toolchain)
  1. Build (with go)  github.com/n8fr8/meek/meek-client
  1. Build (with go) git.torproject.org/pluggable-
 transports/obfs4.git/obfs4proxy

 Pluto has a script which sets the correct parameters go compile params and
 flags. We can modify this script for use in tor-browser-build

 The files in Pluto are then packaged into an Android library with the
 binaries in the res/raw folder. For our purposes, we could put these into
 the assets folder instead since we want to add this in the last phase of
 the tor-browser build. We will need to just make sure to create an
 installer class that will pull from the assets folder into the private
 data section of the app so we can execute the binaries during runtime.

 For Pluto 2 the build is different: It uses the following git repo for
 building the transports: [https://gitlab.com/eighthave/goptbundle
 https://gitlab.com/eighthave/goptbundle .]We can then follow a similar
 process for installing as outlined above.

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


More information about the tor-bugs mailing list