wiki:doc/PluggableTransports/list

Version 13 (modified by joncamfield, 2 years ago) (diff)

Adding link to draft table of PTs that incorporates and updates data from this page.

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.

obfs4

  • 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: Obfs4 Evaluation

meek

  • Description: Uses HTTP, relays through a third party, TLS for obfuscation.
  • Language: Go.
  • Maintainer: David Fifield
  • Evaluation: meek Evaluation

Format-Transforming Encryption (FTE)

  • Description: Transforms data to arbitrary application-layer traffic.
  • Language: Python/C++
  • Maintainer: Kevin Dyer
  • Evaluation: FTE Evaluation

ScrambleSuit

  • Description: Sophisticated look-like-nothing pluggable transport (in obfsproxy)
  • Language: Python
  • Maintainer: Philipp Winter
  • Evaluation: ScrambleSuit Evaluation
  • 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.

Dust

  • Description: Look-like-nothing pluggable transport.
  • Language: Python
  • Notes: Superseded by Dust2
  • Maintainer: Brandon Wiley

StegoTorus

  • 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.

obfs3

obfs2

  • Description: Look-like-nothing pluggable transport (in obfsproxy)
  • Language: Python
  • Notes: Superseded by obfs3
  • Maintainer: asn
  • Evaluation: obfs2 Evaluation

Flashproxy


Other PTs being developed

SnowFlake

  • 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: SnowFlake Evaluation

basket2

  • Description: Modular obfs4 update with fingerprinting resistance, framing, negotiation, PQ
  • Language: Go
  • Maintainer: Yawning
  • Evaluation: basket2 Evaluation

SkypeMorph

  • Description: transforms Tor traffic flows so they look like Skype Video - design paper.
  • Maintained: Ian Goldberg.

bananaphone

  • Description: Markov-chains pluggable transport
  • Language: Python
  • Maintainer: David Stainton

LODP

  • Description: UDP-based pluggable transport.
  • Language: C
  • Maintainer: Yawning

sshproxy

  • Description: SSH-based pluggable transport.
  • Language: Python
  • Notes: Actually uses the ssh binary
  • Maintainer: Yawning

hexchat

  • 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

Dust2

  • Description: Transforms traffic to arbitrary formats based on sample traffic.
  • Language: Go / Python
  • Evaluation: Dust2 Evaluation
  • 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

git

  • Description: Git-based pluggable transport (in obfsproxy)
  • Language: Python
  • Notes: Git is poll-based. Slow.
  • Maintainer: Björgvin Ragnarsson && Pieter Westein

Castle

  • Description: Encodes messages as commands in online video games.
  • Status: Prototyped.
  • Language: C++.

marionette

lampshade

  • Description: multiplexing. mostly follows obfs4
  • Language: go
  • Maintainer: oxtoacart

TapDance

  • 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.