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
These Pluggable Transports are currently deployed in Tor Browser, and you can start using them by downloading and using Tor Browser.
- 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
- Maintainer: Yawning Angel
- Evaluation: doc/PluggableTransports/Obfs4Evaluation
- Description: Uses HTTP, relays through a third party, TLS for obfuscation.
- Language: Go.
- Maintainer: David Fifield
- Evaluation: doc/PluggableTransports/MeekEvaluation
Format-Transforming Encryption (FTE)
- Description: Transforms data to arbitrary application-layer traffic.
- Language: Python/C++
- Maintainer: Kevin Dyer
- Evaluation: doc/PluggableTransports/FteEvaluation
- Description: Sophisticated look-like-nothing pluggable transport (in obfsproxy)
- Language: Python
- Maintainer: Philipp Winter
- Evaluation: doc/PluggableTransports/ScrambleSuitEvaluation
- Status: Deployed, but superseded by obfs4 (Tor Browser)
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.
- Description: Look-like-nothing pluggable transport.
- Language: Python
- Notes: Superseded by Dust2
- Maintainer: Brandon Wiley
- Description: Pluggable transport with modular output formats.
- Language: C++
- Notes: Part of DEFIANCE framework
- Maintainer: vmon (?)
Undeployed PTs
These Pluggable Transports exist but are not deployed as part of the Tor Browser.
- Description: Look-like-nothing pluggable transport (in obfsproxy)
- Language: Python
- Maintainer: asn
- Evaluation: doc/PluggableTransports/Obfs3Evaluation
- Description: Look-like-nothing pluggable transport (in obfsproxy)
- Language: Python
- Notes: Superseded by obfs3
- Maintainer: asn
- Evaluation: doc/PluggableTransports/Obfs2Evaluation
- Description: Zerg-like browser-based proxies XXX
- Language: Python, Go, Javascript
- Maintainer: David Fifield
- Uses websocket-server on the server side, which can also be used with a standalone websocket-client, without going through a flash proxy.
- Evaluation: doc/PluggableTransports/FlashproxyEvaluation
Other PTs being developed
- 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
- Description: Modular obfs4 update with fingerprinting resistance, framing, negotiation, PQ
- Language: Go
- Maintainer: Yawning
- Evaluation: doc/PluggableTransports/basket2evaluation
- Description: transforms Tor traffic flows so they look like Skype Video - design paper.
- Maintained: Ian Goldberg.
- Description: Markov-chains pluggable transport
- Language: Python
- Maintainer: David Stainton
- Description: UDP-based pluggable transport.
- Language: C
- Maintainer: Yawning
- Description: SSH-based pluggable transport.
- Language: Python
- Notes: Actually uses the ssh binary
- Maintainer: Yawning
- 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
- Description: Transforms traffic to arbitrary formats based on sample traffic.
- Language: Go / Python
- Evaluation: doc/PluggableTransports/Dust2Evaluation
- Maintainer: Brandon Wiley
Code Talker Tunnel (previously: SkypeMorph)
- Description: Skype-based pluggable transport
- Language: C/C++
- Notes: Actually uses the Skype binary
- Maintainer: Ian Goldberg
- Description: Git-based pluggable transport (in obfsproxy)
- Language: Python
- Notes: Git is poll-based. Slow.
- Maintainer: Björgvin Ragnarsson && Pieter Westein
- Description: Encodes messages as commands in online video games.
- Status: Prototyped.
- Language: C++.
- Description: An updated FTE proxy.
- Notes: (Presentation). Includes many formats.
- Language: Python
- Description: multiplexing. mostly follows obfs4
- Language: go
- Maintainer: oxtoacart
- 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 refraction.network
- Maintainer: Sergey
PT libraries
- pyptlib is a Python library which makes it easier to turn a proxy into a Tor pluggable transport.
- goptlib is a pluggable transports library for golang. Check the example client and example server.
- PLUTO: Pluggable Libraries Using Transport Obfuscation for Android.
- liballium is a C/C++ library for people that absolutely need to use C or C++ for a pluggable transport.