[tor-dev] Introducing Snowflake (webrtc pt)

Serene keroserene at riseup.net
Mon Jan 25 22:34:42 UTC 2016


Hi all,

Snowflake is a webrtc pluggable transport inspired by flashproxy.
(https://gitweb.torproject.org/pluggable-transports/snowflake.git)
Arlo, David, and I have made lots of progress on it lately, and it now
appears to have reached minimum viability.

The following should result in a 100% bootstrap over WebRTC:
```
git clone https://git.torproject.org/pluggable-transports/snowflake.git
cd snowflake/client
go get
go build
tor -f torrc
```
In case you have a moment, it'd be cool if you tried it out and let us
know whether it works for you. I'd really appreciate hearing about
all the thoughts / concerns / issues before we move forward.

-- More info --

Q: What are the benefits of this PT compared with other PTs?
Snowflake combines the advantages of flashproxy and meek. Primarily:
- It has the convenience of Meek, but can support magnitudes more
users with negligible CDN costs. (Domain fronting only used for brief
signalling / NAT-piercing to setup P2P webrtc which handles the actual
traffic)
- Arbitrarily high numbers of volunteer proxies are possible like in
flashproxy, but NATs are no longer a usability barrier - no need for
manual port forwarding!

Q: How does it work?
1. Volunteers visit websites which host the "snowflake" proxy. (just
like flashproxy)
2. Tor clients automatically find available browser proxies over the
domain fronted signaling channel.
3. Tor client and browser proxy establish a WebRTC peer connection.
4. Proxy connects to some relay.
5. Tor occurs.

Q: Why is it called Snowflake?
There's a bunch of "ICE" negotiation happening for WebRTC, and it also
involves a great abundance of ephemeral and short-lived (and special!)
volunteer proxies...

Anyhow, if Snowflake seems like it would be useful / desired here, it
would be awesome if we had more help getting it stable, polished,
audited, deployable, etc...
Plenty of work to do!

<3,
~serene

P.S. Make sure you're using a recent version of Go (1.5+)
P.P.S. The repo is available in these locations:
- https://gitweb.torproject.org/pluggable-transports/snowflake.git
- https://github.com/keroserene/snowflake


More information about the tor-dev mailing list