[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