[tor-project] Anti-censorship team meeting notes, 2025-06-26

Hey everyone!

Here are our meeting logs:

And our meeting pad:

Anti-censorship work meeting pad

···

--------------------------------
Anti-censorship
--------------------------------

Next meeting: Thursday, July 11 16:00 UTC
Facilitator:shelikhoo

^^^(See Facilitator Queue at tail)

Weekly meetings, every Thursday at 16:00 UTC, in #tor-meeting at OFTC
(channel is logged while meetings are in progress)

This week's Facilitator:onyinyang

== Goal of this meeting ==

Weekly check-in about the status of anti-censorship work at Tor.
Coordinate collaboration between people/teams on anti-censorship at the Tor Project and Tor community.

== Links to Useful documents ==
* Our anti-censorship roadmap:
* Roadmap:Issue Boards · Development · Boards · Anti-censorship · GitLab
* The anti-censorship team's wiki page:
* Home · Wiki · The Tor Project / Anti-censorship / Team · GitLab
* Past meeting notes can be found at:
* The tor-project Archives
* Tickets that need reviews: from projects, we are working on:
* All needs review tickets:
* Merge requests · Anti-censorship · GitLab
* Project 158 <-- meskio working on it
* Issues · Anti-censorship · GitLab

== Announcements ==

 \* Mid\-year Tor AFK  Jun 30\-Jul 5, no meeting July 4

== Discussion ==

 \* Iran network situation \(updates from last week\)
     \* references
         \* https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40465
         \* https://github.com/net4people/bbs/issues/484
         \* https://ntc.party/t/network-shutdown-in-iran-since-2025-06-18/17068
         \* https://ioda.inetintel.cc.gatech.edu/country/IR?from=1750090308
     \* network is coming back so there is more information available about how/why snowflake is overloaded
         \* broker or proxy pool is very overloaded
         \* restricted proxy pool is totally exhausted
         \* equal number of matched vs idle proxies
         \* number of clients has doubled since 2025\-06\-20 https://metrics.torproject.org/userstats-bridge-transport.html?start=2025-06-01&end=2025-06-26&transport=snowflake
             \* snowflake\-01 https://metrics.torproject.org/rs.html#details/5481936581E23D2D178105D44DB6915AB06BFB7F
             \* snowflake\-02 https://metrics.torproject.org/rs.html#details/91DA221A149007D0FD9E5515F5786C3DD07E4BB0
         \* community team is asking for more specific\+actionable information from the anti\-censorship team: not just that we need proxies, but how many proxies? how many users are there in Iran right now? the information needs to be appealing to people outside the tor community\.
             \* https://mastodon.social/@torproject/114745109066226826 outreach: &quot;We&#39;re still in need of more \#snowflake extensions to help keep Iranians connected during this critical time\.&quot;
             \* our prometheus metrics are the best source of real\-time proxy usage, but they are not publicly available\. could share screenshots to show the number of matched clients\.
                 \* Has information on polls per country
                 \* https://snowflake-broker.torproject.net/prometheus
                 \* snowflake\_rounded\_client\_poll\_total has a &quot;cc&quot; field
             \* snowflake\-stats metrics in CollecTor
             \* https://gitlab.torproject.org/tpo/community/relays/-/issues/116 &quot;\[Snowflake\] We need more snowflake proxies&quot;
     \* we now have access to a vantage point:
         \* investigate if snowflake is being blocked by fingerprint or listing proxies
     \* there are reports that google might be reachable in Iran
         \* if so maybe ampcache works and things like champa are useful for people to reach the rest of internet
         \* https://repo.or.cz/champa.git
         \* https://github.com/net4people/bbs/issues/485
         \* This did indeed work, to a very limited extent\. Enough to get connected to Telegram for 10 minutes\.
 \* webtunnel bridges block in Russia
     \* https://gitlab.torproject.org/tpo/anti-censorship/censorship-analysis/-/issues/40064
     \* the block seems to be SNI based
     \* the censor is likely to be listing and blocking bridges

== Actions ==

== Interesting links ==

 \* https://github.com/pion/webrtc/wiki/Release-WebRTC@v4.0.0#dtls-provides-hooks-for-censorship-circumvention

== Reading group ==

 \* We will discuss &quot;A Wall Behind A Wall: Emerging Regional Censorship in China \(Henan firewall\)&quot; on June 26
     \* https://gfw.report/publications/sp25/en/
     \* Questions to ask and goals to have:
         \* What aspects of the paper are questionable?
         \* Are there immediate actions we can take based on this work?
         \* Are there long\-term actions we can take based on this work?
         \* Is there future work that we want to call out in hopes that others will pick it up?

== Updates ==
Name:
This week:
- What you worked on this week.
Next week:
- What you are planning to work on next week.
Help with:
- Something you need help with.

cecylia (cohosh): 2025-06-26
Last week:
- merged and deployed broker metrics rewrite (snowflake#40458)
- discussed broker metrics interpretation
- Generate CSV of client rendezvous polls by country (!1) · Merge requests · David Fifield / snowflake-graphs · GitLab
- reached out to new conjure bridge operator with installation instructions
- monitored snowflake overload situation
- opened issue to change proxy NAT reassignment (snowflake-webext#118)
This week:
- follow up on snowflake rendezvous failures
- take a look at potential snowflake orbot bug
- [BUG] 20% CPU overhead in kindness mode · Issue #1183 · guardianproject/orbot-android · GitHub

dcf: 2025-06-26
Last week:
- reviewed snowflake-graphs MR to add client-polls data Generate CSV of client rendezvous polls by country (!1) · Merge requests · David Fifield / snowflake-graphs · GitLab
- refactoring in snowflake-graphs
- support during Iran network shutdown
Next week:
- re-reduce snowflake broker resource allocation Increase on clients with denied connection (#40465) · Issues · The Tor Project / Anti-censorship / Pluggable Transports / Snowflake · GitLab
- open issue to have snowflake-client log whenever KCPInErrors is nonzero Deploy snowflake-server for QueuePacketConn buffer reuse fix (#40260) (#40262) · Issues · The Tor Project / Anti-censorship / Pluggable Transports / Snowflake · GitLab
- parent: Improve bug discovery process (#40267) · Issues · The Tor Project / Anti-censorship / Pluggable Transports / Snowflake · GitLab
Help with:

meskio: 2024-06-26
Last week:
- merge the contaners of rdsys and bridgestrap, the staging server is life...
- investigate the changes in webtunnel used in russia to bypass censors (censorship-analisys#40064)
- test snowflake proxy patch for Iran (snowflake#40465)
- support grant writting
Next week:
- AFK

Shelikhoo: 2024-06-26
Last Week:
- [Testing] Unreliable+unordered WebRTC data channel transport for Snowflake rev2 (cont.)( Draft: Unreliable+unordered WebRTC data channel transport for Snowflake rev2 (!315) · Merge requests · The Tor Project / Anti-censorship / Pluggable Transports / Snowflake · GitLab ) testing environment setup/research
- Snowfalke Staging Server Experiment
- [Deploy] Add Domain Fronting Testing Support to logcollector
- [Invesgate] Meek-CDN77 stop working in China (Meek-CDN77 stop working in China (#162) · Issues · The Tor Project / Anti-censorship / Team · GitLab)
- Merge request reviews
Next (working) Week/TODO:
- Merge request reviews
- Support the Testing of domain fronting sites ( Support the Testing of domain fronting sites (#6) · Issues · The Tor Project / Anti-censorship / Connectivity Measurement / logcollector · GitLab ) (cont.)

onyinyang: 2025-06-26
Last week(s):
- Started looking into unresolved lox issues, signalling channel library
- Pivoted to webtunnel distribution through telegram:
-Distribute WebTunnel bridges via Telegram bot? (#158) · Issues · The Tor Project / Anti-censorship / Team · GitLab
-Draft: Webtunnel button (!534) · Merge requests · The Tor Project / Anti-censorship / rdsys · GitLab

Next week:
Mid-year break
Finish up webtunnel work on rdsys
Switch back to some of these:
As time allows:
- review Tor browser Lox integration Bug 43096: Move to Rust for the Lox integration (!1300) · Merge requests · The Tor Project / Applications / Tor Browser · GitLab
- add TTL cache to lox MR for duplicate responses:
Enable repeat responses to successful Lox requests (!305) · Merge requests · The Tor Project / Anti-censorship / lox · GitLab

     \- Work on outstanding milestone issues:
         \- key rotation automation

     Later:
     pending decision on abandoning lox wasm in favour of some kind of FFI? https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/43096):
         \- add pref to handle timing for pubkey checks in Tor browser
         \- add trusted invitation logic to tor browser integration:

- improve metrics collection/think about how to show Lox is working/valuable
- sketch out Lox blog post/usage notes for forum

 \(long term things were discussed at the meeting\!\):
     \- brainstorming grouping strategies for Lox buckets \(of bridges\) and gathering context on how types of bridges are distributed/use in practice
         Question: What makes a bridge usable for a given user, and how can we encode that to best ensure we&#39;re getting the most appropriate resources to people?
             1\. Are there some obvious grouping strategies that we can already consider?
                 e\.g\., by PT, by bandwidth \(lower bandwidth bridges sacrificed to open\-invitation buckets?\), by locale \(to be matched with a requesting user&#39;s geoip or something?\)
             2\. Does it make sense to group 3 bridges/bucket, so trusted users have access to 3 bridges \(and untrusted users have access to 1\)? More? Less?

theodorsm: 2025-06-12
Last weeks:
- Applying for funding from NLnet to implement DTLS 1.3 in Pion. Got through the first round.
- Writing paper for FOCI: continuation of master thesis about reducing distinguishability of DTLS in Snowflake by implementing covert-dtls, further analysis of collected browser fingerprint and stability test of covert-dtls in snowflake proxies. Draft: https://theodorsm.net/FOCI25
- Key takeaways:
* covert-dtls is stable when mimicking DTLS 1.2 handshakes, while the randomization approach— though more resistant to fingerprinting — tends to be less stable.
* Chrome webextensions are more unstable than standalone proxies
* covert-dtls should be integrated in Snowflake proxies as they produce the ClientHello messages during the DTLS handshake.
* Chrome randomizes the order of extension list.
* Firefox uses DTLS 1.3 by default in WebRTC.
* A prompt adoption of DTLS 1.3 in both Snowflake and our fingerprint-resistant library is needed to keep up with browsers
* The evolution of browsers’ fingerprints had no noticeable effect on Snowflake’s number of daily users over the last year.
* Even with a sharp drop in the amount of proxies, it does not seem to affect the number of Snowflake users.
* Browser extensions make Snowflake resistant to ClientHello fingerprinting.
* Standalone proxies can serve more Snowflake clients per volunteer than webextensions.
* We need metrics on which types of proxies are actually being matched and successfully used by clients.
Next weeks:
- Getting paper camera ready.
- Fix merge conflicts in MR (Add covert-dtls to proxy and client (!448) · Merge requests · The Tor Project / Anti-censorship / Pluggable Transports / Snowflake · GitLab).
Help with:
- Should we do user testing of covert-dtls?

Facilitator Queue:
meskio onyinyang shelikhoo
1. First available staff in the Facilitator Queue will be the facilitator for the meeting
2. After facilitating the meeting, the facilitator will be moved to the tail of the queue

--
---
onyinyang

GPG Fingerprint 3CC3 F8CC E9D0 A92F A108 38EF 156A 6435 430C 2036

1 Like