Opened 2 years ago

Last modified 3 weeks ago

#19409 new enhancement

Make a deb of snowflake and get into Debian

Reported by: adrelanos Owned by:
Priority: High Milestone:
Component: Obfuscation/Snowflake Version:
Severity: Major Keywords:
Cc: whonix-devel@…, eighthave Actual Points:
Parent ID: Points:
Reviewer: Sponsor:

Description

aka

apt-get install snowflake

Speaking for Whonix, this would be very useful. Perhaps for Tails as well, but I am not speaking for them.

(Similar to #13160.)

Child Tickets

TicketTypeStatusOwnerSummary
#24203defectclosedAppArmor default config blocks Snowflake from running with system tor

Change History (11)

comment:1 Changed 12 months ago by cypherpunks

#23742 is a duplicate.

comment:2 Changed 12 months ago by cypherpunks

Priority: MediumHigh
Severity: NormalMajor
Summary: make a deb of snowflake and get into DebianMake a deb of snowflake and get into Debian

comment:3 Changed 12 months ago by cypherpunks

It would be useful not only for Whonix but anyone who wants to configure a torrc to use Snowflake.

comment:4 in reply to:  1 Changed 12 months ago by arma

Replying to cypherpunks:

#23742 is a duplicate.

Note there are two things we might mean here: one is to get the snowflake code into a deb, so I can volunteer my server to be a snowflake, and the other is to get snowflake-client into a deb, so client-side approaches other than Tor Browser can integrate it more easily. Both are worth doing for various reasons, but let's be careful of forgetting whichever one you weren't thinking of. :)

comment:5 Changed 7 months ago by cypherpunks

@arma Sounds good. This is a bit higher priority for TAILS and Whonix now that meek is dying.

comment:6 Changed 7 weeks ago by eighthave

Now that I'm digging into building libwebrtc, I have to say that building a Debian package of Snowflake based on the Chromium libwebrtc will be a ton of work. The libwebrtc build system is vast and insane. It literally downloads Debian stretch images for both i386 and amd64 as part of the process:

________ running '/usr/bin/python src/build/linux/sysroot_scripts/install-sysroot.py --running-as-hook' in '/go/src/github.com/keroserene/go-webrtc/third_party/webrtc'
Installing Debian Stretch amd64 root image: /go/src/github.com/keroserene/go-webrtc/third_party/webrtc/src/build/linux/debian_stretch_amd64-sysroot
Downloading https://commondatastorage.googleapis.com/chrome-linux-sysroot/toolchain/2202c161310ffde63729f29d27fe7bb24a0bc540/debian_stretch_amd64_sysroot.tar.xz

see the full build log here: https://gitlab.com/eighthave/snowflake/-/jobs/112538917

I think we need to consider alternate implementations of webrtc in order to make snowflake able to be included in Debian and other distros. There is a Go implementation that uses DTLS from openssl.

Last edited 7 weeks ago by eighthave (previous) (diff)

comment:7 Changed 7 weeks ago by eighthave

its kind of like building Tor Browser to get one of the libraries.

comment:8 Changed 5 weeks ago by eighthave

Cc: eighthave added

comment:9 Changed 3 weeks ago by eighthave

FYI, I set up a GitLab CI project to run gitlab-ci pipelines for the canonical repo (https://git.torproject.org/pluggable-transports/snowflake.git). That will happily run in parallel with the TravisCI stuff that's there. Since Travis doesn't let you run arbitrary docker images, it is more limited in what you can do with it. My upcoming .gitlab-ci.yml update (see #28205 for dev history), includes running the builds and tests against various versions of Go/Debian/Ubuntu. That should help smooth packaging and deployment.

You can see that here:
https://gitlab.com/torproject/snowflake/pipelines

comment:10 Changed 3 weeks ago by eighthave

I made a simple binary package to start testing this easily. Once https://github.com/keroserene/snowflake/pull/43 is merged, then the packages will be available in this apt repo: https://torproject.gitlab.io/snowflake/. Any fork of that in gitlab.com will automatically get their own apt repo, for example, here is my fork: https://eighthave.gitlab.io/snowflake/

comment:11 Changed 3 weeks ago by eighthave

Since this stuff was fresh in my brain, I rebased @infinity0's 2016 work on top of my Android pull request:
https://github.com/eighthave/go-webrtc/tree/build-from-scratch

And threw it in a gitlab-ci job running in Debian/testing:
https://gitlab.com/eighthave/go-webrtc/-/jobs/124653582

Seems the git repos have been rearranged, so the script needs an update.

Note: See TracTickets for help on using tickets.