16:00:26 #startmeeting tor anti-censorship meeting 16:00:26 Meeting started Thu Aug 14 16:00:26 2025 UTC. The chair is onyinyang. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:26 Useful Commands: #action #agreed #help #info #idea #link #topic. 16:00:26 hello everyone! 16:00:26 here is our meeting pad: [https://pad.riseup.net/p/r.9574e996bb9c0266213d38b91b56c469](https://pad.riseup.net/p/r.9574e996bb9c0266213d38b91b56c469) 16:00:30 hi~hi~ 16:00:53 hello 16:01:22 hi 16:03:05 ok, we have a couple of things to discuss and then the reading group discussion (which I forgot about XD but am currently skimming) 16:03:25 The first discussion topic is: SQS snowflake rendezvous price check? 16:04:21 this is from me 16:04:27 i just updated the wiki for last month: https://gitlab.torproject.org/tpo/anti-censorship/team/-/wikis/Snowflake-costs 16:05:04 oh thank you 16:05:10 this is what I was curious 16:05:12 about 16:05:46 imo the costs are starting to get out of hand for cohosh to continue paying out of pocket 16:05:53 is this in the process to be moved under TPO umbrella? 16:05:58 this is partially my bad for not following up with micah 16:06:00 https://gitlab.torproject.org/tpo/applications/tor-browser/-/issues/43842#note_3210215 16:06:25 ahh, ok, so is in your plate 16:06:32 let me know if you need any help with it 16:07:20 I would support cohosh going on strike to force an action 16:07:44 I love strikes, I'm in 16:07:48 hehe 16:07:52 XD 16:07:53 hahahaha 16:08:05 I was not aware of the tpo/applications/tor-browser#43842 discussion, thank you 16:08:13 i will send another email, i've lost track of where the conversation was at 16:08:48 ^is this an apps problem or higher up the chain? 16:08:56 (sorry i've a tor-browser ping) 16:09:16 morganava: no not at all, heh, it's just a coincidence this is the public comment i have about this payment discussion 16:09:48 ack 16:09:56 * meskio wonders if tor-browser keyword summons morganava 16:10:06 indeed 16:10:07 XD 16:10:13 morganava: but feel free to spread awareness, anti-censorship team members are the type to carry on without complaint 16:10:27 boo, complain early complain often 16:10:38 squeeky wheel gets the grease and all that 16:10:39 anywa 16:10:41 * morganava awaaaaay 16:10:47 thanks dcf1 for bringing this to our attention and advocating for a change on this :) 16:10:52 regardless of whether tor pays for this, i don't feel comfortable continuing to spend over 30 USD / month on this, i think the next steps are: 16:10:57 - see if tor will pay for it 16:11:08 - if not, try and find other outside funding 16:11:33 - otherwise, it isn't a very cost efficient signalling channel so shut it down until we can figure out how the make it more sustainable 16:11:55 are there any places that are solely relying on it? 16:12:34 maybe china, according to https://bridges.torproject.org/moat/circumvention/map 16:12:58 and https://snowflake-broker.torproject.net/metrics 16:13:10 client-sqs-ips CN=61904,PL=31576, 16:13:21 client-http-ips RU=2606272,IR=1180624,US=575440,DE=400744,CN=291296, 16:13:22 from what I got from micah tor does have credits in AWS and it should be fine, but let's see 16:13:27 hej polska 16:13:27 ok 16:13:36 :) 16:13:41 I think the domain fronting is also working in China 16:13:49 so it is not like a hard dependency 16:13:56 good to know 16:14:43 https://gitlab.torproject.org/tpo/anti-censorship/connectivity-measurement/bridgestatus/-/blob/main/recentResult_cnnext?ref_type=heads 16:14:51 that's it from me, thanks for the reminder on that :) 16:14:52 or at least equally malfunctioning 16:15:04 I think I should have a look at the situation next week.... 16:15:26 oh thanks shelikhoo 16:15:35 ok let's move on to the next topic 16:15:42 Why was the snowflake broker restarted 2025-08-02? 16:15:52 this is a curiosity question from me 16:16:06 i don't recall restarting it... 16:16:39 i saw a gap in our snowflake metrics for august 2nd 16:17:07 do we know who restarted it or is that a automatic restart? 16:18:40 was it restarted when the bridge went down (or maybe it crashed)? 16:20:32 it looks like there was an overload that happened at that time: https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake/-/issues/40475 16:20:58 being the same date looks related 16:21:00 maybe i should check the broker logs 16:21:12 maybe it overloaded, is it configured to automatically restart? 16:21:22 not that i know of but maybe there was a crash 16:21:27 which would be good to know about 16:21:33 I think it is an automatic restart 16:21:44 we should keep a copy of the log 16:21:48 if it is still there 16:21:55 shelikhoo: by auto restart, what do you mean? 16:22:10 that it will restart if it crashed or that there is some mechanism in place to periodically restart the broker machine? 16:22:17 or the broker process rather 16:22:29 or maybe it was a hosting provider outage 16:22:35 last 16:22:35 shelikho pts/0 *** Thu Aug 14 *** still logged in 16:22:35 cohosh pts/2 *** Thu Jul 24 *** 16:22:35 cohosh pts/0 *** Thu Jul 24 *** 16:22:36 cohosh pts/0 *** Thu Jul 24 *** 16:22:39 reboot system boot 6.1.131 Tue Jul 1 16:57 still running 16:23:07 if the broker process crashed, systemd should restart the process automatically 16:23:10 so it was only the broker process that restarted, not the OS 16:23:14 yes 16:23:22 yeah, so there was potentially a crash 16:23:24 and therefore there might be some info in the snowflake-broker log 16:23:38 if the logs are kept for 12 days 16:23:49 i'll look into this, thanks for confirming it wasn't intentional 16:25:56 (shell is dumping logs....) 16:25:56 next on the agenda, we have 2 interesting links 16:26:29 the IRBlock paper might be interesting for a future reading group 16:27:01 Yes, now that the pdf is available :D 16:27:30 :) 16:28:11 nice! 16:28:17 Should we go ahead and set it as the next reading group reading at some future date? 16:29:02 sure 16:29:08 I would propose september 11 16:29:17 because I'll be AFK the weeks before 16:29:30 works for me afaik 16:29:44 it should work for me 16:29:50 same here 16:31:04 then I guess is set 16:31:12 ok cool :) I will put it in my calendar so I don't forget this time /o\ 16:31:35 cohosh: the restart happened at 1990804:Aug 02 12:03:41 snowflake-broker-40349 broker[488594]: 2025/08/02 12:03:41 Loading geoip databases 16:32:42 shelikhoo: thanks! i had the time figured out, is there anything in the logs before that to indicate a crash? 16:33:07 i guess it could've been the OOM killer, which wouldn't show up there 16:33:51 yes... my command is running, I will randomly insert more progress report... 16:34:13 ok we can continue in #tor-anticensorship :) 16:34:26 ok, let's move on to today' 16:34:29 s reading group 16:34:32 2248897:Aug 02 12:03:34 snowflake-broker-40349 kernel: Out of memory: Killed process 629 (broker) total-vm:7873300kB, anon-rss:5600452kB, file-rss:0kB, shmem-rss:0kB, UID:1003 pgtables:11224kB oom_score_adj:200 16:34:37 it is oom killer 16:35:08 Today we are discussing: Encrypted Client Hello (ECH) in Censorship Circumvention" https://www.petsymposium.org/foci/2025/foci-2025-0016.pdf 16:35:25 shelikhoo: well that's good to know, i'll make an issue for it, thanks! 16:35:39 Does anyone have a brief summary prepared or want to summarize on the fly? 16:35:39 yes, thanks cohosh!!! 16:37:01 I can try to do a sumary 16:37:16 the paper analyzes the status of ECH 16:37:25 both from the deployment side, as in how many websites do support it 16:37:44 and on the censorship side, as in if censored and how in different locations 16:37:54 the deployment outside cloudflare is minimal 16:38:11 but it looks like only one mayor https server (caddy) supports it, and is very recent 16:38:40 they did try multiple techniques to test if the top 1M websites support ECH with very few postive responses outside cloudflare 16:39:05 on the censor side, they see Russia blocking cloudlfare's ECH specifically 16:39:33 and they believe the rest of the censors rely on DNS to block ECH websited, and don't bother to do anything directly with ECH 16:39:42 do I miss something important? 16:41:35 I guess we can go to the discussion 16:41:46 thanks meskio 16:42:03 for me is unsurprising that only cloudflare supports it, I assume most websites are waiting for nginx or apache to support it 16:42:15 this paper can be compared to the 2019 paper on ESNI https://www.usenix.org/system/files/foci19-paper_chai_update.pdf https://github.com/net4people/bbs/issues/10 16:42:18 and nginx and apache are waiting for openssl to support it... 16:43:01 yes, thanks meskio. discussion wise, I think ECH is a nice protocol, especially now that many browsers might send ech extension in client hello by default 16:43:53 yes, AFAIK this is why Russia is so careful on their block of cloudflare's ECH, doing it only on the right domain name, the right IP range and if the encrypted hello is included 16:44:24 also, interesting that the researchers found that the block only affects the cloudflare IP block 16:45:50 yes... I wouldn't be surprised if they block by cloudflare SNI and extension 16:46:04 but they actually also added ip range constraint 16:46:10 I found very useful the paper to understand better ECH, their description of the protocol is clearer than other pieces I have read (or maybe it is for me after reading this other pieces :) 16:47:20 in the same time, other censors blocks ECH by blocking it at DNS step 16:47:26 meskio, yeah, I think it also helps to have the context of how it is/isn't working in the current censorship landscape 16:48:30 shelikhoo: yes, but this is only useful as long as users don't find a unkown by the censor DoH server or some other way to scape DNS blocks 16:49:04 but sure, as stated in many places before, censors don't tend to care about perfection, but to make a statement 16:49:37 meskio: yes, and in cloudflare's case, you can query a non-censored domain to get the ech key 16:49:50 and then use that key to connect to anther censored domain 16:50:26 ("ech_query_domain" option in v2ray) 16:51:02 and then use that key to connect to another censored domain 16:51:53 true :D 16:53:09 would be interesting to see this research done again in a couple of years, when I hope ECH will have more adoption 16:54:48 yes... and adoption outside cloudflare 16:55:20 yes 16:56:15 but the interesting adoption for anti-censorship is that mayor browsers do send GREASE ECH since a while, so maybe ECH is something that could be used some time soonish 16:57:45 yes, and censor is already reacting to this grease with more restraints 16:58:18 is there any reaction to GREASE ECH besides russia's block of cloudflare? 16:59:41 I think there was a reason why censors in the rest of world block ech by dns instead of tls extension 17:00:16 ahh, I see what you mean, yes, which is good news for us 17:00:35 yes! 17:00:58 pitty that cloudlfare only accept ECH connections to the couldflare-ech.com domain 17:02:06 shelikhoo: meskio: so you're saying the potential blocking resistance could come from a domain fronting style interaction with ech 17:02:07 yes, I think this is by kind of by their design 17:02:42 cohosh: yes, and this is used in practice already 17:02:43 where if a provider excepts ECH connections to a domain that also serves other content or would force a censor to make a tradeoff to block it 17:02:49 yes, we might be able to use ech as signaling channel, for most places cloudflare will work 17:03:29 shelikhoo: where is it used in practice now? 17:03:42 i guess not with cloudflare? 17:04:14 v2ray websocket is being used like that in cloudflare, isn't it? 17:04:39 ah, i think i misunderstood meskio's comment above about cloudlflare-ech.com 17:04:49 *cloudflare-ech.com 17:05:46 yes.... i think some user are using it with v2ray already 17:06:01 but I do not have exact numbers...\ 17:06:08 :) 17:06:23 very cool 17:06:47 we are a bit over time but is there anything else anyone wants to add on this before we wrap up? 17:06:56 I think I'm done 17:07:05 EOF from me 17:07:35 sorry one more question 17:07:44 so is this statement in the paper false then: 17:07:45 This makes be- 17:07:45 nign ECH connections to Cloudflare trivially distinguishable from 17:07:45 GREASE ECH connections to their servers and allows censors to 17:07:45 block every ECH connection to Cloudflare by censoring the domain 17:07:47 cloudflare-ech.com in the SNI extension 17:08:26 if there's a way to use Cloudflare ECH by using a domain other than cloudflare-ech.com and relying on a domain fronting type thing, it's not trivially distinguishable? 17:08:34 that statement is true to my knowledge 17:08:45 no, there is no other way, this statement is true 17:08:51 no, so there is no hiding that one is using ECH 17:09:01 what I say is censors need to choose between blocking all cloudflare, or leting us pass 17:09:06 but to bypass censor by DNS 17:09:15 russia choosed to block all, but others didn't (yet?) 17:09:27 ah thanks, i see my misunderstanding now :) 17:09:27 this "domain name fronting" works 17:09:46 hehe! nice! 17:09:48 EOF 17:10:04 that's it from me, thanks for the discussion 17:10:19 thanks everyone! 17:10:24 yes, nice discussion, thanks 17:10:31 #endmeeting