Support Snowflake bridges
Snowflake has been part of the default bridges in Tor Browser since July 2021.
Since then it became the preferred way of connecting to Tor from Iran and China. Russia still uses mostly obfs4.
As of 2024-07-23, the Circumvention Settings API, that Tor Browser uses for its "connect assist" feature, and that we should use for Support automatic bridge retrieval (#15331), returns Snowflake bridges for China, among other places: https://bridges.torproject.org/moat/circumvention/map
However, note that Snowflake is known to be slow in China: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40251
More data on how Snowflake is helping against censorship around the world: https://blog.torproject.org/snowflake-daily-operations/.
User feedback
- [Tails-dev] obfs4 not work in Iran
- [Tails-dev] Please update the Snowflake Bridge and default bridge
Implementation
- a beginning of a prototype #5494 (comment 191609) did this:
- add Snowflake to our
ClientTransportPlugin
config - adjust the Tor Connection backend to allow entering a Snowflake bridge
- add Snowflake to our
-
snowflake-client
needs to resolve a few domain names; isconfig/chroot_local-includes/lib/systemd/system/tor@default.service.d/50-resolv-conf-override.conf
enough? - allow the
debian-tor
user to do everything on UDP - update the Tor Connection UX to reflect the fact we allow entering a Snowflake bridge manually but the email + QR code way only works for obfs4; we probably have to help the user figure out which kind they need, ideally in the UI, if needed with some support from the doc; chances are this is a bit messy until we do Support automatic bridge retrieval (#15331), but at least we'll allow users who need Snowflake to use it
- either test Snowflake with Chutney in our automated test suite, or using the real Tor network, or add to manual QA; expected challenges are the same as for WebTunnel, see details on Add WebTunnel support (#20267)
- update the end-user doc
- update the design doc
- anything else?