|
|
[[TOC]]
|
|
|
|
|
|
== List of Pluggable Transports ==
|
|
|
|
|
|
## List of Pluggable Transports
|
|
|
|
|
|
Table of known PTs, tracking multiple different properties including language, platform support, TCP/UDP support, and other useful metrics:
|
|
|
https://docs.google.com/spreadsheets/d/132n5eD52RkRAHFD8y1xvyKACH5iQb933E_c2vmX8UHg/edit?usp=sharing
|
|
|
|
|
|
=== Currently deployed PTs ===
|
|
|
### Currently deployed PTs
|
|
|
|
|
|
These Pluggable Transports are currently deployed in Tor Browser, and you can start using them by [https://www.torproject.org/download/download-easy.html.en downloading and using Tor Browser].
|
|
|
These Pluggable Transports are currently deployed in Tor Browser, and you can start using them by [downloading and using Tor Browser](https://www.torproject.org/download/download-easy.html.en).
|
|
|
|
|
|
[https://gitweb.torproject.org/pluggable-transports/obfs4.git/tree/doc/obfs4-spec.txt obfs4]
|
|
|
[obfs4](https://gitweb.torproject.org/pluggable-transports/obfs4.git/tree/doc/obfs4-spec.txt)
|
|
|
|
|
|
* Description: Is a transport with the same features as ScrambleSuit but utilizing Dan Bernstein's elligator2 technique for public key obfuscation, and the tor protocol for one-way authentication. This results in a faster protocol.
|
|
|
* Language: Go
|
... | ... | @@ -23,16 +23,16 @@ These Pluggable Transports are currently deployed in Tor Browser, and you can st |
|
|
* Maintainer: David Fifield
|
|
|
* Evaluation: [[doc/PluggableTransports/MeekEvaluation|meek Evaluation]]
|
|
|
|
|
|
[https://fteproxy.org/ Format-Transforming Encryption (FTE)]
|
|
|
[Format-Transforming Encryption (FTE)](https://fteproxy.org/)
|
|
|
|
|
|
* Description: Transforms data to arbitrary application-layer traffic.
|
|
|
* Language: Python/C++
|
|
|
* Maintainer: Kevin Dyer
|
|
|
* Evaluation: [[doc/PluggableTransports/FteEvaluation|FTE Evaluation]]
|
|
|
|
|
|
[https://www.cs.kau.se/philwint/scramblesuit/ ScrambleSuit]
|
|
|
[ScrambleSuit](https://www.cs.kau.se/philwint/scramblesuit/)
|
|
|
|
|
|
* Description: Sophisticated look-like-nothing pluggable transport (in [https://www.torproject.org/projects/obfsproxy.html.en obfsproxy])
|
|
|
* Description: Sophisticated look-like-nothing pluggable transport (in [obfsproxy](https://www.torproject.org/projects/obfsproxy.html.en))
|
|
|
* Language: Python
|
|
|
* Maintainer: Philipp Winter
|
|
|
* Evaluation: [[doc/PluggableTransports/ScrambleSuitEvaluation|ScrambleSuit Evaluation]]
|
... | ... | @@ -40,152 +40,152 @@ These Pluggable Transports are currently deployed in Tor Browser, and you can st |
|
|
|
|
|
----
|
|
|
|
|
|
=== Deprecated PTs; ===
|
|
|
### Deprecated PTs;
|
|
|
These PTs was once part of Tor Browser, but are not used anymore, most of the time because a better version have come out.
|
|
|
|
|
|
[https://github.com/blanu/Dust Dust]
|
|
|
[Dust](https://github.com/blanu/Dust)
|
|
|
|
|
|
* Description: Look-like-nothing pluggable transport.
|
|
|
* Language: Python
|
|
|
* Notes: Superseded by Dust2
|
|
|
* Maintainer: Brandon Wiley
|
|
|
|
|
|
[http://www.owlfolio.org/media/2010/05/stegotorus.pdf StegoTorus]
|
|
|
[StegoTorus](http://www.owlfolio.org/media/2010/05/stegotorus.pdf)
|
|
|
|
|
|
* Description: Pluggable transport with modular output formats.
|
|
|
* Language: C++
|
|
|
* Notes: Part of [https://www.usenix.org/conference/foci12/bootstrapping-communications-anti-censorship-system DEFIANCE framework]
|
|
|
* Notes: Part of [DEFIANCE framework](https://www.usenix.org/conference/foci12/bootstrapping-communications-anti-censorship-system)
|
|
|
* Maintainer: vmon (?)
|
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
=== Undeployed PTs ===
|
|
|
### Undeployed PTs
|
|
|
|
|
|
These Pluggable Transports exist but are not deployed as part of the Tor Browser.
|
|
|
|
|
|
[https://gitweb.torproject.org/pluggable-transports/obfsproxy.git obfs3]
|
|
|
[obfs3](https://gitweb.torproject.org/pluggable-transports/obfsproxy.git)
|
|
|
|
|
|
* Description: Look-like-nothing pluggable transport (in [https://www.torproject.org/projects/obfsproxy.html.en obfsproxy])
|
|
|
* Description: Look-like-nothing pluggable transport (in [obfsproxy](https://www.torproject.org/projects/obfsproxy.html.en))
|
|
|
* Language: Python
|
|
|
* Maintainer: asn
|
|
|
* Evaluation: [[doc/PluggableTransports/Obfs3Evaluation|obfs3 Evaluation]]
|
|
|
|
|
|
[https://gitweb.torproject.org/pluggable-transports/obfsproxy.git obfs2]
|
|
|
[obfs2](https://gitweb.torproject.org/pluggable-transports/obfsproxy.git)
|
|
|
|
|
|
* Description: Look-like-nothing pluggable transport (in [https://www.torproject.org/projects/obfsproxy.html.en obfsproxy])
|
|
|
* Description: Look-like-nothing pluggable transport (in [obfsproxy](https://www.torproject.org/projects/obfsproxy.html.en))
|
|
|
* Language: Python
|
|
|
* Notes: Superseded by obfs3
|
|
|
* Maintainer: asn
|
|
|
* Evaluation: [[doc/PluggableTransports/Obfs2Evaluation|obfs2 Evaluation]]
|
|
|
|
|
|
[https://crypto.stanford.edu/flashproxy/ Flashproxy]
|
|
|
[Flashproxy](https://crypto.stanford.edu/flashproxy/)
|
|
|
|
|
|
* Description: Zerg-like browser-based proxies XXX
|
|
|
* Language: Python, Go, Javascript
|
|
|
* Maintainer: David Fifield
|
|
|
* Uses [https://gitweb.torproject.org/pluggable-transports/websocket.git/tree/websocket-server/websocket-server.go websocket-server] on the server side, which can also be used with a standalone [https://gitweb.torproject.org/pluggable-transports/websocket.git/tree/websocket-client/websocket-client.go websocket-client], without going through a flash proxy.
|
|
|
* Uses [websocket-server](https://gitweb.torproject.org/pluggable-transports/websocket.git/tree/websocket-server/websocket-server.go) on the server side, which can also be used with a standalone [websocket-client](https://gitweb.torproject.org/pluggable-transports/websocket.git/tree/websocket-client/websocket-client.go), without going through a flash proxy.
|
|
|
* Evaluation: [[doc/PluggableTransports/FlashproxyEvaluation|Flashproxy Evaluation]]
|
|
|
|
|
|
----
|
|
|
|
|
|
=== Other PTs being developed ===
|
|
|
### Other PTs being developed
|
|
|
|
|
|
|
|
|
[https://gitweb.torproject.org/pluggable-transports/snowflake.git SnowFlake]
|
|
|
[SnowFlake](https://gitweb.torproject.org/pluggable-transports/snowflake.git)
|
|
|
* Description: Intends to modernize the flashproxy concept with a more modern NAT traversal algorithm centered around WebRTC.
|
|
|
* Language: The implementation is mostly Go, except for the WebRTC implementation, written in C/C++, which is called from the Go application via the cgo FFI interface.
|
|
|
* Maintainer: Serene H.
|
|
|
* Evaluation: [[doc/PluggableTransports/SnowFlakeEvaluation|SnowFlake Evaluation]]
|
|
|
|
|
|
[https://git.schwanenlied.me/yawning/basket2 basket2]
|
|
|
[basket2](https://git.schwanenlied.me/yawning/basket2)
|
|
|
* Description: Modular obfs4 update with fingerprinting resistance, framing, negotiation, PQ
|
|
|
* Language: Go
|
|
|
* Maintainer: Yawning
|
|
|
* Evaluation: [[doc/PluggableTransports/basket2evaluation|basket2 Evaluation]]
|
|
|
|
|
|
|
|
|
[http://crysp.uwaterloo.ca/software/SkypeMorph-0.5.1.tar.gz SkypeMorph]
|
|
|
[SkypeMorph](http://crysp.uwaterloo.ca/software/SkypeMorph-0.5.1.tar.gz)
|
|
|
* Description: transforms Tor traffic flows so they look like Skype Video - design paper.
|
|
|
* Maintained: Ian Goldberg.
|
|
|
|
|
|
|
|
|
[https://github.com/david415/obfsproxy bananaphone]
|
|
|
[bananaphone](https://github.com/david415/obfsproxy)
|
|
|
|
|
|
* Description: Markov-chains pluggable transport
|
|
|
* Language: Python
|
|
|
* Maintainer: David Stainton
|
|
|
|
|
|
[https://lists.torproject.org/pipermail/tor-dev/2013-September/005434.html LODP]
|
|
|
[LODP](https://lists.torproject.org/pipermail/tor-dev/2013-September/005434.html)
|
|
|
|
|
|
* Description: UDP-based pluggable transport.
|
|
|
* Language: C
|
|
|
* Maintainer: Yawning
|
|
|
|
|
|
[https://github.com/Yawning/sshproxy.git sshproxy]
|
|
|
[sshproxy](https://github.com/Yawning/sshproxy.git)
|
|
|
|
|
|
* Description: SSH-based pluggable transport.
|
|
|
* Language: Python
|
|
|
* Notes: Actually uses the ssh binary
|
|
|
* Maintainer: Yawning
|
|
|
|
|
|
[https://github.com/aeftimia/hexchat.git hexchat]
|
|
|
[hexchat](https://github.com/aeftimia/hexchat.git)
|
|
|
|
|
|
* Description: XMPP-based pluggable transport.
|
|
|
* Language: Python (SleekXMPP)
|
|
|
* Notes: Bandwidth issues since most XMPP servers are throttled. Can be solved maybe with multiple hexchat bots.
|
|
|
* Maintainer: Feynmann
|
|
|
|
|
|
[https://github.com/blanu/Dust Dust2]
|
|
|
[Dust2](https://github.com/blanu/Dust)
|
|
|
|
|
|
* Description: Transforms traffic to arbitrary formats based on sample traffic.
|
|
|
* Language: Go / Python
|
|
|
* Evaluation: [[doc/PluggableTransports/Dust2Evaluation|Dust2 Evaluation]]
|
|
|
* Maintainer: Brandon Wiley
|
|
|
|
|
|
[http://cacr.uwaterloo.ca/techreports/2012/cacr2012-08.pdf Code Talker Tunnel (previously: SkypeMorph)]
|
|
|
[Code Talker Tunnel (previously: SkypeMorph)](http://cacr.uwaterloo.ca/techreports/2012/cacr2012-08.pdf)
|
|
|
|
|
|
* Description: Skype-based pluggable transport
|
|
|
* Language: C/C++
|
|
|
* Notes: Actually uses the Skype binary
|
|
|
* Maintainer: Ian Goldberg
|
|
|
|
|
|
[http://ext.delaat.net/rp/2012-2013/p70/report.pdf git]
|
|
|
[git](http://ext.delaat.net/rp/2012-2013/p70/report.pdf)
|
|
|
|
|
|
* Description: Git-based pluggable transport (in [https://www.torproject.org/projects/obfsproxy.html.en obfsproxy])
|
|
|
* Description: Git-based pluggable transport (in [obfsproxy](https://www.torproject.org/projects/obfsproxy.html.en))
|
|
|
* Language: Python
|
|
|
* Notes: Git is poll-based. Slow.
|
|
|
* Maintainer: Björgvin Ragnarsson && Pieter Westein
|
|
|
|
|
|
[https://arxiv.org/abs/1503.05904 Castle]
|
|
|
[Castle](https://arxiv.org/abs/1503.05904)
|
|
|
|
|
|
* Description: Encodes messages as commands in online video games.
|
|
|
* Status: Prototyped.
|
|
|
* Language: C++.
|
|
|
|
|
|
[https://github.com/marionette-tg marionette]
|
|
|
[marionette](https://github.com/marionette-tg)
|
|
|
|
|
|
* Description: An updated FTE proxy.
|
|
|
* Notes: ([https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/dyer Presentation]). Includes many [https://github.com/marionette-tg/marionette/tree/master/marionette_tg/formats/20150701 formats].
|
|
|
* Notes: ([Presentation](https://www.usenix.org/conference/usenixsecurity15/technical-sessions/presentation/dyer)). Includes many [formats](https://github.com/marionette-tg/marionette/tree/master/marionette_tg/formats/20150701).
|
|
|
* Language: Python
|
|
|
|
|
|
[https://github.com/getlantern/lampshade lampshade]
|
|
|
[lampshade](https://github.com/getlantern/lampshade)
|
|
|
* Description: multiplexing. mostly follows obfs4
|
|
|
* Language: go
|
|
|
* Maintainer: [https://github.com/getlantern/lampshade/commits oxtoacart]
|
|
|
* Maintainer: [oxtoacart](https://github.com/getlantern/lampshade/commits)
|
|
|
|
|
|
[https://github.com/SergeyFrolov/gotapdance/ TapDance]
|
|
|
[TapDance](https://github.com/SergeyFrolov/gotapdance/)
|
|
|
* Description: TLS encryption MITM'ed by a participating ISP
|
|
|
* Language: Go (client) / Rust+C (server)
|
|
|
* Notes: Unlike Telex, ISP uses a passive tap. Part of [https://refraction.network refraction.network]
|
|
|
* Notes: Unlike Telex, ISP uses a passive tap. Part of [refraction.network](https://refraction.network)
|
|
|
* Maintainer: Sergey
|
|
|
|
|
|
|
|
|
----
|
|
|
|
|
|
|
|
|
== PT libraries ==
|
|
|
* [https://gitweb.torproject.org/pluggable-transports/pyptlib.git pyptlib] is a Python library which makes it easier to turn a proxy into a Tor pluggable transport.
|
|
|
* [https://gitweb.torproject.org/pluggable-transports/goptlib.git goptlib] is a pluggable transports library for golang. Check the [https://gitweb.torproject.org/pluggable-transports/goptlib.git/tree/examples/dummy-client/dummy-client.go example client] and [https://gitweb.torproject.org/pluggable-transports/goptlib.git/tree/examples/dummy-server/dummy-server.go example server].
|
|
|
* [https://github.com/guardianproject/pluto PLUTO]: Pluggable Libraries Using Transport Obfuscation for Android.
|
|
|
* [https://github.com/Yawning/liballium liballium] is a C/C++ library for people that absolutely need to use C or C++ for a pluggable transport. |
|
|
\ No newline at end of file |
|
|
## PT libraries
|
|
|
* [pyptlib](https://gitweb.torproject.org/pluggable-transports/pyptlib.git) is a Python library which makes it easier to turn a proxy into a Tor pluggable transport.
|
|
|
* [goptlib](https://gitweb.torproject.org/pluggable-transports/goptlib.git) is a pluggable transports library for golang. Check the [example client](https://gitweb.torproject.org/pluggable-transports/goptlib.git/tree/examples/dummy-client/dummy-client.go) and [example server](https://gitweb.torproject.org/pluggable-transports/goptlib.git/tree/examples/dummy-server/dummy-server.go).
|
|
|
* [PLUTO](https://github.com/guardianproject/pluto): Pluggable Libraries Using Transport Obfuscation for Android.
|
|
|
* [liballium](https://github.com/Yawning/liballium) is a C/C++ library for people that absolutely need to use C or C++ for a pluggable transport. |
|
|
\ No newline at end of file |