1 00:00:00,060 --> 00:00:03,090 - Okay hi, I'm Roger, and I'm gonna talk today 2 00:00:03,090 --> 00:00:05,880 about Russia, and censorship, and Tor. 3 00:00:05,880 --> 00:00:08,850 I've got way too much to say, and a lot of different topics. 4 00:00:08,850 --> 00:00:12,420 So I'll try to give everybody something interesting 5 00:00:12,420 --> 00:00:14,400 and fun that they haven't thought about before. 6 00:00:14,400 --> 00:00:16,833 So we earlier asked how many people have heard of Tor, 7 00:00:16,833 --> 00:00:20,250 that great, how many people here have heard of Tor bridges, 8 00:00:20,250 --> 00:00:23,490 or plugable transports, or the censorship side? 9 00:00:23,490 --> 00:00:25,200 Awesome, okay, I see some hands, yes, 10 00:00:25,200 --> 00:00:26,280 and some hands no. 11 00:00:26,280 --> 00:00:29,850 So I'm gonna go through a little bit of what Tor is, 12 00:00:29,850 --> 00:00:32,400 how Tor works, I'm gonna try to go through that quickly. 13 00:00:32,400 --> 00:00:35,310 And from there the same intro to Tor and censorship, 14 00:00:35,310 --> 00:00:38,160 and then we'll talk more about the Russia side of things, 15 00:00:38,160 --> 00:00:40,830 and what that means for the rest of the world. 16 00:00:40,830 --> 00:00:45,180 So Tor is a nonprofit organization, we're a 501(c)(3), 17 00:00:45,180 --> 00:00:48,600 we provide Tor browser as software, a lot of people use 18 00:00:48,600 --> 00:00:50,130 to be safe on the internet. 19 00:00:50,130 --> 00:00:53,040 We're also a community of activists, and developers, 20 00:00:53,040 --> 00:00:55,770 and users, and relay operators all around the world. 21 00:00:55,770 --> 00:00:58,110 How many people here run Tor relays, 22 00:00:58,110 --> 00:01:00,330 or bridges, or Snowflakes? 23 00:01:00,330 --> 00:01:03,510 I see a few hands, but not as many as there should be. 24 00:01:03,510 --> 00:01:05,670 So think about while I'm talking about this, 25 00:01:05,670 --> 00:01:08,730 think about running relays to help out other people. 26 00:01:08,730 --> 00:01:10,950 So we also have some number of users, 27 00:01:10,950 --> 00:01:14,250 maybe 2 million daily users, maybe 8 million daily users, 28 00:01:14,250 --> 00:01:16,560 and we're part of a much broader ecosystem 29 00:01:16,560 --> 00:01:18,960 of internet freedom, anonymity research, 30 00:01:18,960 --> 00:01:21,570 censorship resistance, free software. 31 00:01:21,570 --> 00:01:25,350 So there's a broad history of what the Tor organization 32 00:01:25,350 --> 00:01:26,850 has done over the years, 33 00:01:26,850 --> 00:01:28,920 happy to talk more about that afterwards. 34 00:01:28,920 --> 00:01:31,680 So how do you actually build one of these? 35 00:01:31,680 --> 00:01:32,670 What is Tor for? 36 00:01:32,670 --> 00:01:35,550 So we've got Alice over here, she wants to browse the web 37 00:01:35,550 --> 00:01:37,980 to some website Bob, where can the attacker be? 38 00:01:37,980 --> 00:01:40,200 What sort of threat model are we worried about? 39 00:01:40,200 --> 00:01:42,960 One answer is maybe the attackers is watching Alice, 40 00:01:42,960 --> 00:01:46,500 maybe they're watching the Starbucks connection, 41 00:01:46,500 --> 00:01:49,140 or they are the local Tunisian ISP, 42 00:01:49,140 --> 00:01:52,230 or maybe they're watching some pieces 43 00:01:52,230 --> 00:01:54,600 of the backbone internet, maybe they're AT&T, 44 00:01:54,600 --> 00:01:58,080 or Verizon, or Deutsche telecom, or the NSA, 45 00:01:58,080 --> 00:01:59,310 or maybe they're watching Bob, 46 00:01:59,310 --> 00:02:02,880 maybe they're watching Wiki leaks to learn what users 47 00:02:02,880 --> 00:02:03,750 are connecting to them, 48 00:02:03,750 --> 00:02:05,460 and who who's trying to learn things. 49 00:02:05,460 --> 00:02:09,120 Or maybe the adversary is Bob, maybe it's cnn.com, 50 00:02:09,120 --> 00:02:11,610 and they wanna know who their users are, 51 00:02:11,610 --> 00:02:13,440 so they can advertise to them better. 52 00:02:13,440 --> 00:02:15,270 And one of the other important pieces, 53 00:02:15,270 --> 00:02:16,680 anonymity is not encryption, 54 00:02:16,680 --> 00:02:18,780 you should use encryption, encryption is good, 55 00:02:18,780 --> 00:02:20,580 but even when you're using encryption, 56 00:02:20,580 --> 00:02:23,280 somebody watching your network traffic learns 57 00:02:23,280 --> 00:02:26,040 who you're talking to, when you're talking to them, 58 00:02:26,040 --> 00:02:29,670 how much you're talking, and that traffic metadata 59 00:02:29,670 --> 00:02:33,150 is what all the agencies and organizations use to try 60 00:02:33,150 --> 00:02:34,530 to attack things these days. 61 00:02:34,530 --> 00:02:37,320 So we've got creepy NSA, dude. 62 00:02:37,320 --> 00:02:39,660 How many people here recognize creepy NSA Dude? 63 00:02:39,660 --> 00:02:41,370 I'm hoping this is the correct audience. 64 00:02:41,370 --> 00:02:42,570 Okay, quite a few hands. 65 00:02:42,570 --> 00:02:44,670 I did this talk like a couple weeks ago 66 00:02:44,670 --> 00:02:47,100 to a different crowd, and they're like, who is that? 67 00:02:47,100 --> 00:02:50,880 So we should all remember statements from the NSA, 68 00:02:50,880 --> 00:02:52,983 like we kill people based on metadata. 69 00:02:54,270 --> 00:02:55,440 So how do you actually build one of these? 70 00:02:55,440 --> 00:02:59,820 The easy answer is a single centralized, single hot proxy, 71 00:02:59,820 --> 00:03:03,360 like VPNs, and anonymizers, so all the users show up 72 00:03:03,360 --> 00:03:05,610 to that single relay, and there are some problems. 73 00:03:05,610 --> 00:03:08,700 So the first problem is it's a centralized point of trust, 74 00:03:08,700 --> 00:03:12,780 so what happens if that central point, that VPN decides 75 00:03:12,780 --> 00:03:13,680 to go bad? 76 00:03:13,680 --> 00:03:16,320 And it's worse than that because it's a central point, 77 00:03:16,320 --> 00:03:19,713 even if the VPN itself is trying to be honest, 78 00:03:20,610 --> 00:03:22,920 there's one wire in, and it's the same wire out, 79 00:03:22,920 --> 00:03:24,540 so if you are able to watch that, 80 00:03:24,540 --> 00:03:27,780 then you can match up timing and volume to understand 81 00:03:27,780 --> 00:03:28,950 who's talking to who. 82 00:03:28,950 --> 00:03:32,340 So the goal of Tor is to distribute the trust so that 83 00:03:32,340 --> 00:03:35,550 there's no single point that gets to learn about 84 00:03:35,550 --> 00:03:38,160 this user goes to that destination. 85 00:03:38,160 --> 00:03:40,140 So I'll skip over how the crypto works, 86 00:03:40,140 --> 00:03:43,140 but basically you build a tunnel through three relays, 87 00:03:43,140 --> 00:03:46,290 so no single relay knows what's going on. 88 00:03:46,290 --> 00:03:49,830 And we've got a network of about 7,000 volunteer relays 89 00:03:49,830 --> 00:03:50,790 around the world. 90 00:03:50,790 --> 00:03:54,360 Here's a graph of bandwidth load and bandwidth capacity 91 00:03:54,360 --> 00:03:57,900 over the past 10 years or so. 92 00:03:57,900 --> 00:04:00,900 The second half of what Tor is, I talked about Tor, 93 00:04:00,900 --> 00:04:03,300 the anonymity, the network layer, 94 00:04:03,300 --> 00:04:05,130 the hiding your IP address layer. 95 00:04:05,130 --> 00:04:07,830 The second half is the application level side, 96 00:04:07,830 --> 00:04:10,500 where we have Tor browser based on Firefox that tries 97 00:04:10,500 --> 00:04:13,410 to fix all of the application level issues, 98 00:04:13,410 --> 00:04:18,410 like cookies used to be flash fonts, all sorts of stuff 99 00:04:19,230 --> 00:04:21,843 in the browser that could be used to recognize you. 100 00:04:23,280 --> 00:04:27,390 Another key point to realize transparency is critical 101 00:04:27,390 --> 00:04:28,950 for Tor as an ecosystem, 102 00:04:28,950 --> 00:04:30,660 and for people to be able to trust it. 103 00:04:30,660 --> 00:04:33,750 So yes, that means it's open source, it's free software, 104 00:04:33,750 --> 00:04:36,360 it also means that we give you specifications, 105 00:04:36,360 --> 00:04:39,630 and design documents to say, this is what we meant to build, 106 00:04:39,630 --> 00:04:41,700 this is what we're trying to do, 107 00:04:41,700 --> 00:04:44,370 this is what the security goals are. 108 00:04:44,370 --> 00:04:46,560 And also we are publicly identified people. 109 00:04:46,560 --> 00:04:48,780 Hi, I'm Roger, I built Tor, 110 00:04:48,780 --> 00:04:51,090 I'm happy to explain that to everybody. 111 00:04:51,090 --> 00:04:54,090 And that level of transparency is critical 112 00:04:54,090 --> 00:04:56,040 for a privacy tool. 113 00:04:56,040 --> 00:04:58,410 And I always have somebody come up afterwards, 114 00:04:58,410 --> 00:05:00,780 and they're like, oh haha, the anonymity people are talking 115 00:05:00,780 --> 00:05:03,030 about transparency, that's so stupid. 116 00:05:03,030 --> 00:05:06,750 No, actually the key is privacy is about choice, 117 00:05:06,750 --> 00:05:10,080 and we choose to be transparent in order to build 118 00:05:10,080 --> 00:05:14,913 a stronger, safer, bigger ecosystem and community. 119 00:05:16,440 --> 00:05:19,560 So that was the crash course on Tor, so far so good. 120 00:05:19,560 --> 00:05:21,750 Now let me talk a little bit about the censorship side 121 00:05:21,750 --> 00:05:23,520 of things, so you've got some context 122 00:05:23,520 --> 00:05:25,020 for what I'm gonna talk about later. 123 00:05:25,020 --> 00:05:26,640 So the first arms race, 124 00:05:26,640 --> 00:05:29,730 the 7,000 public relays I was talking about, 125 00:05:29,730 --> 00:05:32,910 there's a list of them, you, the sensor grab, 126 00:05:32,910 --> 00:05:36,060 those 7,000 IP addresses, and block them, and you're done. 127 00:05:36,060 --> 00:05:38,190 Now nobody can bootstrap into the Tor network, 128 00:05:38,190 --> 00:05:39,420 there's nothing to connect to. 129 00:05:39,420 --> 00:05:41,220 So the first step of the arms race 130 00:05:41,220 --> 00:05:44,130 is we have unlisted relays called bridges, 131 00:05:44,130 --> 00:05:48,180 and the goal is the users who are in some sensor situation 132 00:05:48,180 --> 00:05:50,850 can get some bridges in order to bridge 133 00:05:50,850 --> 00:05:53,190 into the Tor network, but the adversary hopefully 134 00:05:53,190 --> 00:05:54,750 can't get all of them. 135 00:05:54,750 --> 00:05:57,780 Then the second arms race beyond IP addresses 136 00:05:57,780 --> 00:06:00,810 is based on Deep Packet Inspection, or DPI. 137 00:06:00,810 --> 00:06:03,930 So the goal is there are some protocols 138 00:06:03,930 --> 00:06:06,720 that the sensor might try to block by looking 139 00:06:06,720 --> 00:06:09,633 at packet patterns, or bites in the packets. 140 00:06:10,860 --> 00:06:13,170 Originally Tor tried to look like TLS because 141 00:06:13,170 --> 00:06:14,037 who would block TLS? 142 00:06:14,037 --> 00:06:16,140 And then Syria blocked TLS, 143 00:06:16,140 --> 00:06:18,030 and a bunch of other places started doing that. 144 00:06:18,030 --> 00:06:22,080 So we are not trying to exactly mimic Firefox talking 145 00:06:22,080 --> 00:06:25,590 to Apache, instead we have a more modular approach 146 00:06:25,590 --> 00:06:28,999 where Tor takes care of the privacy, the anonymity side 147 00:06:28,999 --> 00:06:32,970 of things, and then you can plug in various transports, 148 00:06:32,970 --> 00:06:35,280 and the goal of each transport is to transform 149 00:06:35,280 --> 00:06:39,450 the Tor traffic into some other protocol appearance 150 00:06:39,450 --> 00:06:41,490 that the sensor is not willing to block. 151 00:06:41,490 --> 00:06:44,250 So there are a couple of popular ones of these 152 00:06:44,250 --> 00:06:46,200 that work well, the most popular 153 00:06:46,200 --> 00:06:48,831 is called obfs4, obfuscating proxy. 154 00:06:48,831 --> 00:06:52,410 Basically the idea is that it adds a layer of encryption 155 00:06:52,410 --> 00:06:54,960 on top of whatever the input is, 156 00:06:54,960 --> 00:06:57,090 and that means there's no recognizable headers, 157 00:06:57,090 --> 00:07:00,510 there's no structure at the beginning that you can put 158 00:07:00,510 --> 00:07:04,440 your Zeke rules on and start recognizing the protocol. 159 00:07:04,440 --> 00:07:08,070 So the idea is there's a long tail of random stuff 160 00:07:08,070 --> 00:07:11,940 on the internet, and if you have a protocol 161 00:07:11,940 --> 00:07:14,490 where the automated classifier says, 162 00:07:14,490 --> 00:07:18,030 I don't know what that is, then the sensor has to choose, 163 00:07:18,030 --> 00:07:21,000 do I block everything that my classifier can't classify? 164 00:07:21,000 --> 00:07:24,120 'Cause then there's gonna be a long tail of random stuff, 165 00:07:24,120 --> 00:07:25,830 and a bunch of angry people who call up 166 00:07:25,830 --> 00:07:29,430 the great firewalls help desk to complain. 167 00:07:29,430 --> 00:07:32,700 Or do I allow through everything that I can't classify? 168 00:07:32,700 --> 00:07:36,123 And in that case protocols like obfs4 can go through also. 169 00:07:37,110 --> 00:07:38,880 There's another transport we've been working 170 00:07:38,880 --> 00:07:42,390 on more recently called Snowflake that basically does 171 00:07:42,390 --> 00:07:43,710 a webRTC connection. 172 00:07:43,710 --> 00:07:47,771 So it looks like you're doing an online video call, 173 00:07:47,771 --> 00:07:52,771 Skype, zoom, Jitsi, BVB, Signal, all of these. 174 00:07:53,100 --> 00:07:55,680 But the reality is that you're tunneling your Tor traffic 175 00:07:55,680 --> 00:07:59,760 through that video call, and one of the cool things about it 176 00:07:59,760 --> 00:08:02,610 is that you can install a browser extension 177 00:08:02,610 --> 00:08:04,860 to become one of these Snowflake volunteers. 178 00:08:04,860 --> 00:08:07,620 So you don't have to app get installed Tor, 179 00:08:07,620 --> 00:08:09,900 and know how to edit a text file and so on, 180 00:08:09,900 --> 00:08:12,930 you just volunteer your browser as one of the tens 181 00:08:12,930 --> 00:08:16,230 of thousands of volunteers that people proxy 182 00:08:16,230 --> 00:08:19,470 from their sensor situation into your browser extension, 183 00:08:19,470 --> 00:08:21,780 and from there to the rest of the Tor network. 184 00:08:21,780 --> 00:08:23,700 So that means we've got a lot more volunteers, 185 00:08:23,700 --> 00:08:27,511 and it's easy to have more and more dynamic volunteers. 186 00:08:27,511 --> 00:08:29,280 And that means we can do more, 187 00:08:29,280 --> 00:08:32,850 we've got more flexibility about how to use them. 188 00:08:32,850 --> 00:08:35,790 And then the third plugable transport that is important 189 00:08:35,790 --> 00:08:39,090 to learn about is called meek it's based on domain fronting. 190 00:08:39,090 --> 00:08:42,510 So the basic idea for domain fronting is I'm gonna make 191 00:08:42,510 --> 00:08:46,890 a TLS connection to a popular cloud provider like Amazon, 192 00:08:46,890 --> 00:08:51,060 or Fastly, or CloudFlare if they still allowed it. 193 00:08:51,060 --> 00:08:53,250 And the idea is from the outside, 194 00:08:53,250 --> 00:08:56,250 it looks like you're connecting to a popular website 195 00:08:56,250 --> 00:08:57,810 that the sensor's not willing to block, 196 00:08:57,810 --> 00:09:00,630 but once you've done the TLS connection, and you've labeled 197 00:09:00,630 --> 00:09:04,140 in your server name indicator, you've specified, 198 00:09:04,140 --> 00:09:08,430 I'm trying to connect to this totally ordinary website, 199 00:09:08,430 --> 00:09:13,080 inside that connection, then you provide a host header 200 00:09:13,080 --> 00:09:15,990 at the HTTP level to say, what I really wanted to go 201 00:09:15,990 --> 00:09:18,480 to was this other server. 202 00:09:18,480 --> 00:09:20,280 So from the outside, it looks like 203 00:09:20,280 --> 00:09:23,340 a totally ordinary connection to the right IP address, 204 00:09:23,340 --> 00:09:26,400 to an acceptable server, but on the inside, 205 00:09:26,400 --> 00:09:28,320 you end up, I moved forward. 206 00:09:28,320 --> 00:09:31,680 But on the inside, you end up actually connecting 207 00:09:31,680 --> 00:09:34,080 to some other cloud provider that for example, 208 00:09:34,080 --> 00:09:36,210 tunnels you into the Tor network. 209 00:09:36,210 --> 00:09:40,650 So one big downside of domain fronting is you have to pay 210 00:09:40,650 --> 00:09:44,310 the front domain, whether that's Fastly, or CloudFlare, 211 00:09:44,310 --> 00:09:48,180 or Amazon, or Azure, or whoever it is, 212 00:09:48,180 --> 00:09:51,090 so you can use it for signaling, but you probably can't use 213 00:09:51,090 --> 00:09:53,823 it for actually proxying all of your flows. 214 00:09:55,045 --> 00:09:58,110 And then the last key background thing to think about 215 00:09:58,110 --> 00:10:00,510 is we need smart algorithms 216 00:10:00,510 --> 00:10:04,260 for what we call bridge distribution, to match up volunteers 217 00:10:04,260 --> 00:10:05,340 who are running bridges, 218 00:10:05,340 --> 00:10:08,290 with people who are in censored areas and need to use them. 219 00:10:09,660 --> 00:10:11,820 Basically the idea is to take the bridges you've got, 220 00:10:11,820 --> 00:10:14,940 and divide them into buckets where each bucket requires 221 00:10:14,940 --> 00:10:18,450 a different strategy for how you're going to give it out. 222 00:10:18,450 --> 00:10:21,750 So one of them is you email us from your Gmail account, 223 00:10:21,750 --> 00:10:24,780 and we give the same answer to the same Gmail account. 224 00:10:24,780 --> 00:10:27,840 And the goal there is if you have one Gmail account, 225 00:10:27,840 --> 00:10:30,990 you can get a set of bridges, but you need thousands 226 00:10:30,990 --> 00:10:34,680 of Gmail accounts to enumerate all of them in that bucket. 227 00:10:34,680 --> 00:10:37,740 There's another one that looks at what subnet 228 00:10:37,740 --> 00:10:39,310 on the internet you're coming from. 229 00:10:39,310 --> 00:10:41,430 There's another one that's based on a captcha, 230 00:10:41,430 --> 00:10:42,810 so that's the basic idea, 231 00:10:42,810 --> 00:10:45,390 got something similar in Snowflake land 232 00:10:45,390 --> 00:10:49,590 to match up volunteers with censored users so they can know 233 00:10:49,590 --> 00:10:52,800 who to make what looks like a phone call too. 234 00:10:52,800 --> 00:10:55,473 Okay, sounds good, we're still on time. 235 00:10:56,496 --> 00:10:59,460 So that was the background, now let talk more about 236 00:10:59,460 --> 00:11:02,179 what we're talking about today, what Russia did, 237 00:11:02,179 --> 00:11:04,050 and then how we dealt with it. 238 00:11:04,050 --> 00:11:07,380 So our story starts in December the beginning of December 239 00:11:07,380 --> 00:11:10,920 last year, and at that point, some ISPs in Russia, 240 00:11:10,920 --> 00:11:13,140 it wasn't all of them, but it was a third, 241 00:11:13,140 --> 00:11:17,130 or half or something, they blocked the public IPS 242 00:11:17,130 --> 00:11:20,520 in the Tor network by IP address, they blocked 243 00:11:20,520 --> 00:11:24,090 the meek-azure domain fronting plugable transport, 244 00:11:24,090 --> 00:11:27,240 and we'll talk later about how they actually did that. 245 00:11:27,240 --> 00:11:31,080 They grabbed the IP addresses of the obfs4 bridges 246 00:11:31,080 --> 00:11:33,180 that come with Tor browser, the ones that are easy, 247 00:11:33,180 --> 00:11:36,240 they're built in, and they blocked those by IP addresses, 248 00:11:36,240 --> 00:11:38,190 and they blocked the Snowflake protocol 249 00:11:38,190 --> 00:11:39,930 by what turned out to be DPI. 250 00:11:39,930 --> 00:11:43,500 So in the same day or so, they rolled out a bunch of these 251 00:11:43,500 --> 00:11:45,720 that I guess they'd been working on in parallel, 252 00:11:45,720 --> 00:11:48,720 and decided that that was the day to roll out 253 00:11:48,720 --> 00:11:49,844 their Tor block. 254 00:11:49,844 --> 00:11:52,590 Right around then a little while later, 255 00:11:52,590 --> 00:11:56,610 we got an official notice to one of our hosting providers, 256 00:11:56,610 --> 00:12:00,240 Hetzner, in Russian from the Russian Censorship Ministry 257 00:12:00,240 --> 00:12:03,600 saying that our website is bad, and we need to stop having 258 00:12:03,600 --> 00:12:05,550 a bad website, or they're gonna block it. 259 00:12:05,550 --> 00:12:08,670 And we don't really have a way to stop having a bad website, 260 00:12:08,670 --> 00:12:10,620 so a few days later they blocked it, 261 00:12:10,620 --> 00:12:15,600 and that was the official censorship side of that. 262 00:12:15,600 --> 00:12:18,870 So here's a graph of roughly the number of people 263 00:12:18,870 --> 00:12:22,560 who were using Tor to connect to direct public relays. 264 00:12:22,560 --> 00:12:24,417 So you see it starts at maybe 300,000, 265 00:12:24,417 --> 00:12:27,840 and we lost maybe a third of them, and similarly, 266 00:12:27,840 --> 00:12:30,930 a bunch of people switched over to using bridges 267 00:12:30,930 --> 00:12:31,770 during that month. 268 00:12:31,770 --> 00:12:34,500 So in some sense, that's this one's sort of a sad graph, 269 00:12:34,500 --> 00:12:36,390 that's sort of a happy graph. 270 00:12:36,390 --> 00:12:38,970 We'll talk more about the balance there. 271 00:12:38,970 --> 00:12:43,970 So this is the detail of how they did the Snowflake DPI. 272 00:12:44,640 --> 00:12:49,350 Basically we try to look like webRTC, 273 00:12:49,350 --> 00:12:53,130 but specific implementations behave in certain ways, 274 00:12:53,130 --> 00:12:57,390 and we had an extra extension on the server side 275 00:12:57,390 --> 00:13:00,930 that the Google Chrome webRTC implementation doesn't have. 276 00:13:00,930 --> 00:13:03,300 So that was the distinguisher that they used. 277 00:13:03,300 --> 00:13:06,540 And we patched the webRTC library that we used, 278 00:13:06,540 --> 00:13:08,160 and put that out a few days later, 279 00:13:08,160 --> 00:13:12,780 so the Snowflake DPI block lasted for maybe 36 hours, 280 00:13:12,780 --> 00:13:15,930 or something until we'd put out a new version of Snowflake 281 00:13:15,930 --> 00:13:18,210 that got around the blocking that they did. 282 00:13:18,210 --> 00:13:19,920 And they haven't really rolled out 283 00:13:19,920 --> 00:13:22,170 any other DPI based approaches 284 00:13:22,170 --> 00:13:23,790 to block Snowflake since then. 285 00:13:23,790 --> 00:13:26,520 So that was sort of the good news. 286 00:13:26,520 --> 00:13:29,970 So this is the meek-azure detail and all these slides 287 00:13:29,970 --> 00:13:31,980 are online, I know that the font is small, 288 00:13:31,980 --> 00:13:33,570 so you don't have to worry about the details. 289 00:13:33,570 --> 00:13:36,900 But I was trying to figure out how do they block 290 00:13:36,900 --> 00:13:37,980 the domain fronting thing? 291 00:13:37,980 --> 00:13:42,090 Because we are making a connection to the Azure site, 292 00:13:42,090 --> 00:13:46,643 and the front domain that we're using is ajax.aspcdn 293 00:13:47,760 --> 00:13:51,750 So it's like a main web server that serves JavaScript 294 00:13:51,750 --> 00:13:53,880 to every other website in the planet. 295 00:13:53,880 --> 00:13:56,790 So at first I was thinking, oh my God, 296 00:13:56,790 --> 00:13:59,460 they blocked this JavaScript server, 297 00:13:59,460 --> 00:14:02,040 the whole Internet's gonna be angry because Russia 298 00:14:02,040 --> 00:14:03,960 just blocked the front domain 299 00:14:03,960 --> 00:14:05,790 that they never blocked. 300 00:14:05,790 --> 00:14:07,860 Turns out they blocked it by IP address, 301 00:14:07,860 --> 00:14:11,583 turns out they blocked Azure by IP address. 302 00:14:12,750 --> 00:14:15,620 No shit, let me tell you that time that we got Russia 303 00:14:15,620 --> 00:14:18,822 to block all of Microsoft Azure story. 304 00:14:18,822 --> 00:14:19,770 (audience laughs) 305 00:14:19,770 --> 00:14:23,700 And that also lasted for a day or so, and at some point, 306 00:14:23,700 --> 00:14:26,850 I guess somebody at Microsoft noticed that nothing 307 00:14:26,850 --> 00:14:29,760 was working, and they rotated to a new IP address. 308 00:14:29,760 --> 00:14:32,430 So at that point you couldn't do Skype from Russia, 309 00:14:32,430 --> 00:14:35,910 you couldn't do whatever it is that Microsoft hosts on Azure 310 00:14:35,910 --> 00:14:40,383 'cause they do geo DNS, so it isn't that they blocked, 311 00:14:40,383 --> 00:14:42,630 that there's a different IP address for where 312 00:14:42,630 --> 00:14:45,030 in the world you are, and there's one IP address 313 00:14:45,030 --> 00:14:47,010 that everybody in Russia mapped to, 314 00:14:47,010 --> 00:14:48,990 and they blocked that IP address. 315 00:14:48,990 --> 00:14:51,960 So I guess the other side of the question is, 316 00:14:51,960 --> 00:14:53,844 was Russia willing to do that? 317 00:14:53,844 --> 00:14:55,290 Did they think it through? 318 00:14:55,290 --> 00:14:57,690 And they said that collateral damage is acceptable, 319 00:14:57,690 --> 00:15:00,390 we're gonna do it, or was it just somebody who's like, 320 00:15:00,390 --> 00:15:02,670 I saw them make a connection to this IP address, 321 00:15:02,670 --> 00:15:05,010 so I'm gonna block that, I don't know what it is. 322 00:15:05,010 --> 00:15:07,890 And then they blocked a whole lot of things, 323 00:15:07,890 --> 00:15:10,023 including Skype, it's hard to say. 324 00:15:11,490 --> 00:15:15,870 So the steady state ish that we're in right now is Russia 325 00:15:15,870 --> 00:15:19,320 is crawling various bridge addresses, 326 00:15:19,320 --> 00:15:21,570 and trying to block them by IP address. 327 00:15:21,570 --> 00:15:25,170 But it's still not instantaneous, you still have days 328 00:15:25,170 --> 00:15:27,930 to weeks between what a new bridge shows up, 329 00:15:27,930 --> 00:15:30,840 and we give it out to a lot of people, and it gets blocked. 330 00:15:30,840 --> 00:15:33,480 And other obfs4 bridges are working fine, 331 00:15:33,480 --> 00:15:35,940 so they're definitely not blocking by protocol, 332 00:15:35,940 --> 00:15:37,890 they're definitely blocking by IP address, 333 00:15:37,890 --> 00:15:40,140 and Snowflake and meek are still working fine, 334 00:15:40,140 --> 00:15:42,810 but they're maybe a little less fun to use 335 00:15:42,810 --> 00:15:44,880 than the main ones. 336 00:15:44,880 --> 00:15:47,910 So what else happened around the same time? 337 00:15:47,910 --> 00:15:52,375 We put up a forum post explaining to people in Russia, 338 00:15:52,375 --> 00:15:55,050 what happened, and how they can get around it. 339 00:15:55,050 --> 00:15:57,450 And it turns out we had just set up the Tor forum 340 00:15:57,450 --> 00:16:00,420 a couple of months before that, and we were using discourse 341 00:16:00,420 --> 00:16:03,390 because we want a third party hosted thing. 342 00:16:03,390 --> 00:16:05,910 And because we had a third party hosted thing, 343 00:16:05,910 --> 00:16:08,940 we set it up on forum.torproject.net 344 00:16:08,940 --> 00:16:11,580 because we wanted to isolate the domains, 345 00:16:11,580 --> 00:16:14,550 I don't wanna know whether discourse is like faking cookies, 346 00:16:14,550 --> 00:16:17,100 and making gitlab.torproject.org cookies. 347 00:16:17,100 --> 00:16:20,100 So we gave them a totally separate domain for that. 348 00:16:20,100 --> 00:16:23,400 Russia never blocked torproject.net. 349 00:16:23,400 --> 00:16:26,700 So that means our forum was reachable the entire time, 350 00:16:26,700 --> 00:16:28,500 nobody's ever thought to block that, 351 00:16:28,500 --> 00:16:31,440 and that means we've got 177,000 viewers 352 00:16:31,440 --> 00:16:36,060 on this Russian language post explaining what happened, 353 00:16:36,060 --> 00:16:38,430 and how you can get around it because they never blocked 354 00:16:38,430 --> 00:16:41,501 this part of it, I guess it's never occurred to them 355 00:16:41,501 --> 00:16:44,673 that an organization could use more than one domain name. 356 00:16:46,440 --> 00:16:50,370 So the longer term picture here we start with our 300,000, 357 00:16:50,370 --> 00:16:53,460 we lose the first hundred thousand, in a month and we lose 358 00:16:53,460 --> 00:16:56,370 the next a hundred thousand over the next couple of months. 359 00:16:56,370 --> 00:16:58,946 So it's sort of a steady state now, 360 00:16:58,946 --> 00:17:03,946 but there are an uncomfortably large number of places 361 00:17:04,170 --> 00:17:06,360 in Russia that are working hard to continue 362 00:17:06,360 --> 00:17:07,380 to try to block Tor. 363 00:17:07,380 --> 00:17:09,660 And there are quite a few people using bridges, 364 00:17:09,660 --> 00:17:12,030 but not quite as many as before. 365 00:17:12,030 --> 00:17:15,123 So let me take a side note here. 366 00:17:16,020 --> 00:17:18,420 So I've got all these graphs with numbers on them, 367 00:17:18,420 --> 00:17:22,140 but the numbers may or may not be accurate because 368 00:17:22,140 --> 00:17:24,030 so one of the challenges we have in the Tor world 369 00:17:24,030 --> 00:17:27,690 is how do we do safe enough metrics. 370 00:17:27,690 --> 00:17:30,690 So the Tor relays or bridges, they don't know 371 00:17:30,690 --> 00:17:32,820 what you're doing with Tor, but they see you making 372 00:17:32,820 --> 00:17:36,990 a connection, and they can publish an aggregated 24 summary 373 00:17:36,990 --> 00:17:40,470 of how many users they've seen from various countries. 374 00:17:40,470 --> 00:17:45,120 The challenge there is how do we extrapolate from the view 375 00:17:45,120 --> 00:17:50,120 of each individual relay. how many total users we have, 376 00:17:50,130 --> 00:17:51,600 how much usage we have. 377 00:17:51,600 --> 00:17:55,380 So the numbers that we have here are assuming each 378 00:17:55,380 --> 00:17:59,370 of these users is leaving their Tor browser on all day. 379 00:17:59,370 --> 00:18:02,460 And I'm pretty sure that in some countries 380 00:18:02,460 --> 00:18:04,680 where it's an internet cafe, and you go in, 381 00:18:04,680 --> 00:18:07,530 and you use Tor browser for an hour and you go away, 382 00:18:07,530 --> 00:18:10,980 then we are off by an order of magnitude. 383 00:18:10,980 --> 00:18:14,310 So one way of visualizing this, 384 00:18:14,310 --> 00:18:16,170 I've been working with the metrics team to try to figure out 385 00:18:16,170 --> 00:18:17,190 how to visualize it. 386 00:18:17,190 --> 00:18:21,570 So the green line up there is if every Tor user runs 387 00:18:21,570 --> 00:18:24,690 their Tor browser for only a couple of hours a day. 388 00:18:24,690 --> 00:18:28,320 In that case, we've got 20 million, 25 million daily users. 389 00:18:28,320 --> 00:18:32,910 The red line down there is if every Tor user uses 390 00:18:32,910 --> 00:18:36,090 has their Tor running all day, each day. 391 00:18:36,090 --> 00:18:39,570 And the graphs that I've been showing you are that blue line 392 00:18:39,570 --> 00:18:41,040 right down there by the red line. 393 00:18:41,040 --> 00:18:45,090 So this is a huge range of lower bound, upper bound, 394 00:18:45,090 --> 00:18:47,640 on how many Tor users there are all day. 395 00:18:47,640 --> 00:18:49,800 And we'll get back to the metric side of things, 396 00:18:49,800 --> 00:18:53,040 but I wanted to let you start thinking about 397 00:18:53,040 --> 00:18:56,940 how do we actually accurately understand the graphs 398 00:18:56,940 --> 00:18:58,274 we're talking about? 399 00:18:58,274 --> 00:19:02,400 And here's a graph of the number of volunteers we have 400 00:19:02,400 --> 00:19:05,400 in Snowflake land over the last couple of months. 401 00:19:05,400 --> 00:19:09,931 You can see a bump in December of the standalone proxies, 402 00:19:09,931 --> 00:19:13,350 so these are the browser extension people, 403 00:19:13,350 --> 00:19:16,800 but they're folks who actually install the go client 404 00:19:16,800 --> 00:19:20,040 on their Linux machine, they know how to do go get, 405 00:19:20,040 --> 00:19:21,630 and it's a headless browser, 406 00:19:21,630 --> 00:19:23,880 it's a headless Snowflake proxy. 407 00:19:23,880 --> 00:19:28,260 And then you see a much bigger jump in March 408 00:19:28,260 --> 00:19:32,340 when the actual invasion was happening of people installing 409 00:19:32,340 --> 00:19:34,053 the extension side of things. 410 00:19:36,120 --> 00:19:39,810 And you can see the growth in the number of users 411 00:19:39,810 --> 00:19:42,330 we have in Snowflake, we've been working 412 00:19:42,330 --> 00:19:45,690 on some scalability issues to try to be able to handle more 413 00:19:45,690 --> 00:19:47,850 and more users on the Snowflake bridge. 414 00:19:47,850 --> 00:19:49,440 Happy to chat about that one later. 415 00:19:49,440 --> 00:19:52,890 You can also see as we fix some of the scalability issues, 416 00:19:52,890 --> 00:19:55,470 the throughput that we're handling gets a lot better. 417 00:19:55,470 --> 00:20:00,470 So we're handling maybe 10,000 to 50,000 users 418 00:20:00,890 --> 00:20:04,590 of Snowflake in Russia each day at this point. 419 00:20:04,590 --> 00:20:08,160 You can also see the growth and the number of bridges 420 00:20:08,160 --> 00:20:11,700 that we had, we did an advocacy campaign in December, 421 00:20:11,700 --> 00:20:13,230 that's the first bump that you can see, 422 00:20:13,230 --> 00:20:15,390 and then we did another advocacy campaign in March 423 00:20:15,390 --> 00:20:17,970 to be like, hey, everybody run a bridge, 424 00:20:17,970 --> 00:20:21,180 help people in Ukraine and Russia get around the censorship 425 00:20:21,180 --> 00:20:24,213 that they are seeing, or will be seeing soon. 426 00:20:26,069 --> 00:20:28,230 So one of the other things that we did 427 00:20:28,230 --> 00:20:30,870 once the initial censorship started rolling out, 428 00:20:30,870 --> 00:20:34,470 one of them was we set up a telegram autoresponder, 429 00:20:34,470 --> 00:20:36,840 and the idea is, if you're a telegram user, 430 00:20:36,840 --> 00:20:39,592 you can send us a telegram request, and we'll send you 431 00:20:39,592 --> 00:20:42,300 a couple of bridges, and that way there's another avenue 432 00:20:42,300 --> 00:20:43,470 for getting bridges. 433 00:20:43,470 --> 00:20:46,500 So that you can imagine the sensors would block 434 00:20:46,500 --> 00:20:49,740 that pretty quickly because they can get a telegram account, 435 00:20:49,740 --> 00:20:51,720 so they get one, and they send us a request, 436 00:20:51,720 --> 00:20:53,700 and we send them the bridges. 437 00:20:53,700 --> 00:20:56,340 It turns out that telegram accounts 438 00:20:56,340 --> 00:21:00,960 are assigned numerically sequentially, so when you send me 439 00:21:00,960 --> 00:21:04,920 a telegram message, I can learn how old your account is. 440 00:21:04,920 --> 00:21:07,950 So our secret sauce there, it's not all that secret 441 00:21:07,950 --> 00:21:09,660 'cause I'm about to tell a group of thousands 442 00:21:09,660 --> 00:21:11,310 of people at DEF CON. 443 00:21:11,310 --> 00:21:14,250 Our secret sauce there is we look at how old 444 00:21:14,250 --> 00:21:17,160 your telegram account is, and if you have 445 00:21:17,160 --> 00:21:20,370 a pretty established one, we give you this set of bridges, 446 00:21:20,370 --> 00:21:21,660 and if you have a new one, 447 00:21:21,660 --> 00:21:23,580 we give you this other set of bridges. 448 00:21:23,580 --> 00:21:26,790 And so far the sensors make new telegram accounts, 449 00:21:26,790 --> 00:21:30,960 and then they get only the second set of bridges, 450 00:21:30,960 --> 00:21:35,880 so there are a bunch of telegram based distribution bridges 451 00:21:35,880 --> 00:21:39,120 that we've been using that end up with hundreds of users 452 00:21:39,120 --> 00:21:41,460 for a while, until they get rotated out. 453 00:21:41,460 --> 00:21:46,380 So that telegram age-based trick is a fun example 454 00:21:46,380 --> 00:21:49,770 of another asymmetry that we need to explore, 455 00:21:49,770 --> 00:21:53,340 but it's also an example of an unstable one 456 00:21:53,340 --> 00:21:55,080 because once we explain it enough, 457 00:21:55,080 --> 00:21:57,840 then the adversary's gonna go out and be like, yes, 458 00:21:57,840 --> 00:22:00,930 I do have a pile of old telegram accounts 'cause I made them 459 00:22:00,930 --> 00:22:04,110 for this totally unrelated reason, and I'll use them to try 460 00:22:04,110 --> 00:22:06,480 to learn a bunch of the bridges 461 00:22:06,480 --> 00:22:08,330 that those Tor people are giving out. 462 00:22:10,650 --> 00:22:13,590 Another fun thing, which I didn't put in the slides, 463 00:22:13,590 --> 00:22:15,480 and I'm not going to present to the thousands 464 00:22:15,480 --> 00:22:16,722 of people at DEF CON. 465 00:22:16,722 --> 00:22:19,050 We have some nice people 466 00:22:19,050 --> 00:22:21,210 inside the Russian Censorship Ministry, 467 00:22:21,210 --> 00:22:24,930 who work on censoring Tor, who reached out and wanted 468 00:22:24,930 --> 00:22:28,140 to explain what they do all day, and how that works, 469 00:22:28,140 --> 00:22:30,720 and how the censorship works, and what they're focusing on. 470 00:22:30,720 --> 00:22:35,340 So I am not going to read any quotes from them translated 471 00:22:35,340 --> 00:22:38,160 or otherwise, because I don't know what their situation is, 472 00:22:38,160 --> 00:22:42,270 but they were explaining that it's not as automated 473 00:22:42,270 --> 00:22:45,660 as you might imagine, their job is to actually download 474 00:22:45,660 --> 00:22:48,930 Tor browser, go through the same steps that users do, 475 00:22:48,930 --> 00:22:52,320 get an IP address, put it in a spreadsheet, yes, 476 00:22:52,320 --> 00:22:56,040 and email it to the sensors who then add that IP address 477 00:22:56,040 --> 00:22:57,750 to the censorship infrastructure. 478 00:22:57,750 --> 00:23:01,230 So that is the feedback loop that we're talking about. 479 00:23:01,230 --> 00:23:05,760 And that explains why a new bridge will continue to work 480 00:23:05,760 --> 00:23:10,170 for days to weeks until that feedback loop has succeeded, 481 00:23:10,170 --> 00:23:13,173 and that particular IP address gets blocked. 482 00:23:14,670 --> 00:23:17,190 So there are a bunch of other lessons I'm gonna skip forward 483 00:23:17,190 --> 00:23:19,593 to make sure we get to a lot of things. 484 00:23:20,430 --> 00:23:22,890 At the same time in March, 485 00:23:22,890 --> 00:23:25,560 OONI, the Open Observatory for Network Interference, 486 00:23:25,560 --> 00:23:27,510 they do censorship measurement stuff. 487 00:23:27,510 --> 00:23:31,380 They had just rolled out a Snowflake test 488 00:23:31,380 --> 00:23:32,550 from around the world. 489 00:23:32,550 --> 00:23:36,270 So the first thing I looked at was the China graph, 490 00:23:36,270 --> 00:23:39,240 and it's pretty cool that Snowflake was working, 491 00:23:39,240 --> 00:23:41,850 is working in China in March. 492 00:23:41,850 --> 00:23:46,850 And there's a more longer time scale version of this 493 00:23:46,890 --> 00:23:48,630 that shows mostly green. 494 00:23:48,630 --> 00:23:51,810 So green is successful bootstraps from all around the world 495 00:23:51,810 --> 00:23:54,510 of OONI clients connecting using Snowflake, 496 00:23:54,510 --> 00:23:58,050 but also at the very bottom of the green column, 497 00:23:58,050 --> 00:24:01,980 you can see maybe 5% or 10% is yellow, 498 00:24:01,980 --> 00:24:05,340 so that's not censorship so much as being 499 00:24:05,340 --> 00:24:07,170 on crappy internet connections, 500 00:24:07,170 --> 00:24:09,540 or being given a Snowflake volunteer 501 00:24:09,540 --> 00:24:10,770 that doesn't have the throughput 502 00:24:10,770 --> 00:24:13,440 to let you bootstrap properly. 503 00:24:13,440 --> 00:24:17,340 So we've got more work to do in terms of engineering 504 00:24:17,340 --> 00:24:21,720 to try to make every Snowflake connection be fast, fun, 505 00:24:21,720 --> 00:24:24,360 and reliable rather than most of them, 506 00:24:24,360 --> 00:24:27,090 which is what we've got going on right now. 507 00:24:27,090 --> 00:24:28,320 And it would be even better 508 00:24:28,320 --> 00:24:31,350 if we could have Snowflake auto recognize, 509 00:24:31,350 --> 00:24:33,960 I get through this part of bootstrapping, but not that part, 510 00:24:33,960 --> 00:24:38,960 I'm trying to do the introduction of the piece of webRTC, 511 00:24:39,840 --> 00:24:41,160 and this is the one that I got through, 512 00:24:41,160 --> 00:24:42,570 and this is the one that failed. 513 00:24:42,570 --> 00:24:44,970 So that way we could have all of the users, 514 00:24:44,970 --> 00:24:49,500 or all of the OONI probes auto diagnosing what's gone wrong, 515 00:24:49,500 --> 00:24:51,780 and help us understand how the internet works 516 00:24:51,780 --> 00:24:52,630 around the world. 517 00:24:53,940 --> 00:24:57,420 So that was what Russia did and responses. 518 00:24:57,420 --> 00:24:59,710 Now let's talk about some other stuff 519 00:25:00,630 --> 00:25:02,820 that I either don't understand that happened 520 00:25:02,820 --> 00:25:07,350 around the time, or that is sort of a bizarre side effect. 521 00:25:07,350 --> 00:25:11,880 So one of them was when that blocking of our website, 522 00:25:11,880 --> 00:25:14,160 the legal request came into Hetzner, 523 00:25:14,160 --> 00:25:18,930 there's an NGO inside Russia that said that's illegal, 524 00:25:18,930 --> 00:25:22,320 that's unconstitutional, the Russian Censorship Ministry 525 00:25:22,320 --> 00:25:25,260 broke their own laws by blocking your website., 526 00:25:25,260 --> 00:25:27,570 we want to fight them in court. 527 00:25:27,570 --> 00:25:29,790 And we were like, yeah, okay. 528 00:25:29,790 --> 00:25:31,680 So there's a Russian group that wants to go fight 529 00:25:31,680 --> 00:25:33,510 the Russian judges, and the Russian court 530 00:25:33,510 --> 00:25:34,950 like that's gonna work. 531 00:25:34,950 --> 00:25:38,730 But on the other hand, I want to empower them to change 532 00:25:38,730 --> 00:25:40,950 their country from the inside, I don't know what's going on 533 00:25:40,950 --> 00:25:45,000 in Russia, and they do, and if we can let them fight 534 00:25:45,000 --> 00:25:47,400 the fight they wanna fight inside then yeah, 535 00:25:47,400 --> 00:25:49,320 for sure let's do it. 536 00:25:49,320 --> 00:25:53,580 And it turns out that they did go through the fight, 537 00:25:53,580 --> 00:25:58,110 and they won, they actually got a judge in the Russian court 538 00:25:58,110 --> 00:26:01,170 to be like, yes, you're right, that was unconstitutional, 539 00:26:01,170 --> 00:26:04,350 that was illegal, the process by which they decided to block 540 00:26:04,350 --> 00:26:07,140 your website did not involve you, 541 00:26:07,140 --> 00:26:10,470 and therefore you must unblock Tor in Russia 542 00:26:10,470 --> 00:26:15,090 is what the judge said, did not expect that. 543 00:26:15,090 --> 00:26:17,970 And then of course the follow up question is, 544 00:26:17,970 --> 00:26:19,920 okay, what do you mean unblock? 545 00:26:19,920 --> 00:26:23,370 And I don't know whether that judge knows what they meant 546 00:26:23,370 --> 00:26:27,690 by unblock either, we haven't seen much change in terms 547 00:26:27,690 --> 00:26:29,790 of the behavior of the censorship ministry trying 548 00:26:29,790 --> 00:26:34,170 to find bridge addresses, and unblocking them by IP address, 549 00:26:34,170 --> 00:26:37,380 but I think our website has started working 550 00:26:37,380 --> 00:26:39,090 in more places in Russia. 551 00:26:39,090 --> 00:26:41,820 So that was a sort bizarre side effect that 552 00:26:41,820 --> 00:26:46,440 we hadn't been expecting where, and this last part just came 553 00:26:46,440 --> 00:26:48,600 out a couple of weeks ago, and there's a follow up 554 00:26:48,600 --> 00:26:50,730 of course, where I imagine they're just gonna go through 555 00:26:50,730 --> 00:26:51,900 the process correctly, 556 00:26:51,900 --> 00:26:54,060 and then they will have blocked us legally, 557 00:26:54,060 --> 00:26:55,170 and that'll be that. 558 00:26:55,170 --> 00:26:58,440 They're also taking the opportunity to pull Google in, 559 00:26:58,440 --> 00:27:01,230 and be like, Hey Google, you have to censor your app store, 560 00:27:01,230 --> 00:27:02,892 you gotta take that Tor browser thing out 561 00:27:02,892 --> 00:27:04,999 of the Android Play Store. 562 00:27:04,999 --> 00:27:07,923 So we'll see where that goes. 563 00:27:09,000 --> 00:27:12,390 Another fun side effect that we were not expecting. 564 00:27:12,390 --> 00:27:15,240 Some nice person on the internet, broke into 565 00:27:15,240 --> 00:27:17,220 the rush Russian Censorship Ministry, 566 00:27:17,220 --> 00:27:20,190 and took all their files, and stuck them on the internet. 567 00:27:20,190 --> 00:27:24,870 So if you are interested in reading through 360,000 PDFs 568 00:27:24,870 --> 00:27:28,830 that came from the secret agency in Russia on censorship, 569 00:27:28,830 --> 00:27:31,350 the internet has them, and it would be great 570 00:27:31,350 --> 00:27:32,310 if you could look through them, 571 00:27:32,310 --> 00:27:34,320 and let us know what you find. 572 00:27:34,320 --> 00:27:36,600 We have a couple of people who speak Russian, 573 00:27:36,600 --> 00:27:39,180 we haven't found anything Tor specific, 574 00:27:39,180 --> 00:27:42,690 I would caution you that it's conceivable 575 00:27:42,690 --> 00:27:47,690 that the Russian Misinformation Ministry has put something 576 00:27:47,940 --> 00:27:50,880 in those PDFs that you might now wanna load them 577 00:27:50,880 --> 00:27:53,850 on your computer directly, so consider that 578 00:27:53,850 --> 00:27:56,970 as the DEF CON audience that you are, and please let me know 579 00:27:56,970 --> 00:28:00,000 if you find anything in this data dump. 580 00:28:00,000 --> 00:28:01,293 So thanks internet. 581 00:28:03,270 --> 00:28:04,410 Other stuff that happened. 582 00:28:04,410 --> 00:28:09,410 So rt.com is censored in a lot of places in Europe. 583 00:28:09,600 --> 00:28:12,030 I'm gonna get back to what was going on then. 584 00:28:12,030 --> 00:28:15,720 But I noticed that first because I heard somebody talking 585 00:28:15,720 --> 00:28:18,480 about censoring, RT Russia today in Europe, 586 00:28:18,480 --> 00:28:21,930 and because the Tor network has a lot of exit relays 587 00:28:21,930 --> 00:28:23,790 in Germany, and France, and so on, 588 00:28:23,790 --> 00:28:28,790 suddenly it became harder for you to read rt.com over Tor. 589 00:28:28,890 --> 00:28:31,920 That's kind of fucked up, I want a tool 590 00:28:31,920 --> 00:28:33,840 that lets people reach whatever they wanna reach 591 00:28:33,840 --> 00:28:34,773 on the internet. 592 00:28:36,346 --> 00:28:41,010 The other side of that is the way that the blocking happens 593 00:28:41,010 --> 00:28:43,800 by IP address is by bidirectional, 594 00:28:43,800 --> 00:28:46,140 they block all traffic in either directions. 595 00:28:46,140 --> 00:28:48,360 And that means that if you are a Tor user trying to go 596 00:28:48,360 --> 00:28:52,440 to a Russian website, you connect out of a Tor exit node, 597 00:28:52,440 --> 00:28:55,140 and then your connection into Russia fails 598 00:28:55,140 --> 00:28:57,630 because they're censoring the Tor network. 599 00:28:57,630 --> 00:29:00,000 So suddenly they've cut themselves off in a way 600 00:29:00,000 --> 00:29:02,232 that we didn't at first expect. 601 00:29:02,232 --> 00:29:06,693 And another side of that, we got a bunch of new relays 602 00:29:06,693 --> 00:29:09,240 in the Tor network, yay, more relays, 603 00:29:09,240 --> 00:29:11,250 and they've got nicknames like fuck Russia, 604 00:29:11,250 --> 00:29:13,290 or support Ukraine. 605 00:29:13,290 --> 00:29:15,660 But we also have some organizations in Russia 606 00:29:15,660 --> 00:29:18,570 who've been trying to sneak in some misbehaving relays, 607 00:29:18,570 --> 00:29:21,480 and now they've got an excellent opportunity to sneak 608 00:29:21,480 --> 00:29:23,820 in a few more, and if they name and support Ukraine, 609 00:29:23,820 --> 00:29:25,710 maybe will be happy and leave them there, 610 00:29:25,710 --> 00:29:28,770 so that's an arms race that we can also chat 611 00:29:28,770 --> 00:29:29,870 about more afterwards. 612 00:29:31,230 --> 00:29:34,830 So another surprise that I'm still working my head around, 613 00:29:34,830 --> 00:29:38,100 here's a sort heat map of where in the world 614 00:29:38,100 --> 00:29:40,230 our Snowflake volunteers are. 615 00:29:40,230 --> 00:29:41,610 So we've got a bunch in the US, 616 00:29:41,610 --> 00:29:44,130 we've got a bunch in Germany, we've got a bunch in Europe, 617 00:29:44,130 --> 00:29:48,540 we have a bunch in Russia, and maybe these are people 618 00:29:48,540 --> 00:29:50,610 in the free part of Russia who installed 619 00:29:50,610 --> 00:29:53,610 the Snowflake extension to help people out around the world, 620 00:29:53,610 --> 00:29:55,797 or maybe these are confused people. 621 00:29:55,797 --> 00:29:58,140 The Snowflake helps them get around censorships, 622 00:29:58,140 --> 00:30:00,120 so they installed Snowflake. 623 00:30:00,120 --> 00:30:03,690 So that's bad, that's not what we want. 624 00:30:03,690 --> 00:30:08,280 So there's a lesson here about messaging or UX in terms 625 00:30:08,280 --> 00:30:11,400 of explaining which components you should install, 626 00:30:11,400 --> 00:30:14,073 and why, and how volunteer ecosystems work. 627 00:30:16,320 --> 00:30:21,320 On the day of the invasion, we had a huge spike in users 628 00:30:21,590 --> 00:30:25,290 of Tor in Ukraine, what the heck? 629 00:30:25,290 --> 00:30:27,690 I have no good explanation here. 630 00:30:27,690 --> 00:30:32,010 If you have any good ideas of why suddenly a huge spike 631 00:30:32,010 --> 00:30:34,440 of people ended up using Tor in Ukraine, 632 00:30:34,440 --> 00:30:38,700 maybe it's a GOIP mistake, maybe lots of things, 633 00:30:38,700 --> 00:30:40,590 we can speculate all day long, 634 00:30:40,590 --> 00:30:43,563 this is another bizarre mystery in Tor land. 635 00:30:44,520 --> 00:30:47,820 But I guess the most important thing to think about here is 636 00:30:47,820 --> 00:30:50,580 the user impact on the censorship arms race. 637 00:30:50,580 --> 00:30:52,530 So yeah, we've got pluggable transports, 638 00:30:52,530 --> 00:30:54,570 we've got domain fronting, we've got all these tricks 639 00:30:54,570 --> 00:30:57,540 that we can do, but every time the censorship arms race 640 00:30:57,540 --> 00:31:00,990 takes another step forward, the users who don't care 641 00:31:00,990 --> 00:31:02,580 that much fall off. 642 00:31:02,580 --> 00:31:06,150 So yeah, we saw a bunch of people switch from connecting 643 00:31:06,150 --> 00:31:08,790 to public relays over to using bridges, 644 00:31:08,790 --> 00:31:10,980 but also we lost a bunch of people. 645 00:31:10,980 --> 00:31:14,010 So I guess the most important thing to think about here 646 00:31:14,010 --> 00:31:18,390 is we need a way to improve the usability of the arms race, 647 00:31:18,390 --> 00:31:22,500 or not take so many steps forward because the sensor 648 00:31:22,500 --> 00:31:24,720 is willing to keep taking the steps, 649 00:31:24,720 --> 00:31:28,230 and some of the users are, and some of the users aren't. 650 00:31:28,230 --> 00:31:32,220 So make sure to think about the user impact in terms 651 00:31:32,220 --> 00:31:35,610 of censorship, I don't have a good fix, 652 00:31:35,610 --> 00:31:37,853 but it's something that we all have to keep in mind. 653 00:31:38,760 --> 00:31:41,730 So what do we need to do next? 654 00:31:41,730 --> 00:31:42,750 What what's going on? 655 00:31:42,750 --> 00:31:45,660 And I guess there are a bunch of building blocks 656 00:31:45,660 --> 00:31:47,190 that we have and I'll go through them, 657 00:31:47,190 --> 00:31:50,520 and then I'll describe some of the improvements and fixes. 658 00:31:50,520 --> 00:31:51,600 So the first building block 659 00:31:51,600 --> 00:31:54,480 is a DPI-resistant point-to-point channel. 660 00:31:54,480 --> 00:31:58,620 So that's obfs4, but it's not just obfs4, there's vmess, 661 00:31:58,620 --> 00:32:00,660 and a bunch of other protocols out there that try 662 00:32:00,660 --> 00:32:03,210 to look like nothing, so they're unclassifiable. 663 00:32:03,210 --> 00:32:05,310 So that that's building block one 664 00:32:05,310 --> 00:32:07,230 Building block two, we need some sort 665 00:32:07,230 --> 00:32:09,420 of civil resistant sign-up mechanism. 666 00:32:09,420 --> 00:32:12,870 We need something that is going to let users get 667 00:32:12,870 --> 00:32:16,140 a bridge address, and the sensors can't get all of them. 668 00:32:16,140 --> 00:32:18,630 So the telegram trick is a fun example 669 00:32:18,630 --> 00:32:22,200 to get you thinking about them, but we need more situations 670 00:32:22,200 --> 00:32:24,360 where we can exploit that asymmetry. 671 00:32:24,360 --> 00:32:26,850 And it needs to be something where we can automate 672 00:32:26,850 --> 00:32:28,560 the verification side. 673 00:32:28,560 --> 00:32:33,480 So think like Twitter accounts, friends on Facebook, 674 00:32:33,480 --> 00:32:34,350 something like that, 675 00:32:34,350 --> 00:32:38,880 where users have demonstrated social connections 676 00:32:38,880 --> 00:32:43,880 that are hard for the sensor to scale up, and imitate that, 677 00:32:43,950 --> 00:32:46,560 but that are easy for us to verify, I don't know 678 00:32:46,560 --> 00:32:48,660 how to verify in an automated way, 679 00:32:48,660 --> 00:32:50,250 how many Facebook friends you have, 680 00:32:50,250 --> 00:32:52,440 how many legit Facebook friends you have, 681 00:32:52,440 --> 00:32:54,090 maybe there's an API for that, 682 00:32:54,090 --> 00:32:56,430 love to chat with you afterwards. 683 00:32:56,430 --> 00:32:58,530 Building block three, we need some way to figure out 684 00:32:58,530 --> 00:32:59,880 which bridges are actually blocked 685 00:32:59,880 --> 00:33:01,650 in each place around the world. 686 00:33:01,650 --> 00:33:04,110 So the easy answer is you get like a vantage point somewhere 687 00:33:04,110 --> 00:33:06,420 and you scan them, but if they learn what 688 00:33:06,420 --> 00:33:08,970 that vantage point is, then they just watch you scanning, 689 00:33:08,970 --> 00:33:11,820 so that's an arms race of itself. 690 00:33:11,820 --> 00:33:15,570 There's a new tool called bridgestrap, and the idea is 691 00:33:15,570 --> 00:33:19,320 you feed it a pile of bridge lines, and it connects 692 00:33:19,320 --> 00:33:22,350 to each of them, and tells you whether it failed, 693 00:33:22,350 --> 00:33:25,113 or whether it succeeded, it's all public data, 694 00:33:26,250 --> 00:33:28,320 we publish it by the hash of the fingerprints, 695 00:33:28,320 --> 00:33:31,560 so there's nothing here in this file that you can use 696 00:33:31,560 --> 00:33:33,720 to discover where the bridges are and block them, 697 00:33:33,720 --> 00:33:35,490 but if you already know about the bridge, 698 00:33:35,490 --> 00:33:37,830 then you can go to the bridgestrap output, 699 00:33:37,830 --> 00:33:40,470 and decide, does it work in Turkey? 700 00:33:40,470 --> 00:33:41,550 Does it not work in Turkey? 701 00:33:41,550 --> 00:33:43,950 So we've got vantage points right now in China, Turkey, 702 00:33:43,950 --> 00:33:48,210 Russia, Ukraine, and we need to scale that up, 703 00:33:48,210 --> 00:33:50,250 and we need to be smarter about how that works. 704 00:33:50,250 --> 00:33:54,210 Maybe we only test the ones that for metrics reasons, 705 00:33:54,210 --> 00:33:56,220 it looks like they used to have a lot of users, 706 00:33:56,220 --> 00:33:59,070 and now they don't, because we don't wanna 707 00:33:59,070 --> 00:34:01,770 have too much surface area exposing too much. 708 00:34:01,770 --> 00:34:04,350 Building block four, we need a whole lot of addresses. 709 00:34:04,350 --> 00:34:06,720 So we've got the nice volunteers who are setting up bridges 710 00:34:06,720 --> 00:34:09,810 one at a time, we also have another person who's working 711 00:34:09,810 --> 00:34:14,400 on an automated framework for spinning up cloud bridges. 712 00:34:14,400 --> 00:34:18,990 And that way on Hetzner, or OVH, or Digital Ocean, 713 00:34:18,990 --> 00:34:21,720 you basically auto spin up a new bridge, 714 00:34:21,720 --> 00:34:24,390 and then there's a mechanism for scaling it down, 715 00:34:24,390 --> 00:34:25,560 and putting up a new one next. 716 00:34:25,560 --> 00:34:28,980 So the more automation we can have there, the better. 717 00:34:28,980 --> 00:34:31,650 And so this is actually happening right now, 718 00:34:31,650 --> 00:34:33,870 where dynamic bridges are going up and down, 719 00:34:33,870 --> 00:34:35,370 and they're easy to use. 720 00:34:35,370 --> 00:34:37,380 The next building block we need it, 721 00:34:37,380 --> 00:34:40,440 some sort of signaling channel like domain fronting, 722 00:34:40,440 --> 00:34:43,950 so there's a reliable way for Tor browser to get around 723 00:34:43,950 --> 00:34:47,370 the firewall, not for all of your traffic necessarily, 724 00:34:47,370 --> 00:34:50,340 but something that they're unlikely to block. 725 00:34:50,340 --> 00:34:53,040 So domain fronting is one example, maybe we tunnel 726 00:34:53,040 --> 00:34:57,180 it through email, through DNS, over HTTPs, 727 00:34:57,180 --> 00:34:58,713 there are some examples there. 728 00:34:59,580 --> 00:35:02,370 So milestone one in terms of what we're doing to fix 729 00:35:02,370 --> 00:35:05,250 this long term, is we want Tor browser 730 00:35:05,250 --> 00:35:06,360 to use that signaling. 731 00:35:06,360 --> 00:35:09,840 So if you failed to bootstrap use domain fronting 732 00:35:09,840 --> 00:35:11,970 or something like it, to pull down a list 733 00:35:11,970 --> 00:35:15,600 of recommendations for what your Tor browser 734 00:35:15,600 --> 00:35:19,110 should automatically do depending on what country you're in. 735 00:35:19,110 --> 00:35:22,260 So there's a adjacent file that describes if you are 736 00:35:22,260 --> 00:35:26,310 in Belarus, then start with your built in obfs4 bridges 737 00:35:26,310 --> 00:35:28,590 because those still work, and then from there, 738 00:35:28,590 --> 00:35:30,120 try other bridges. 739 00:35:30,120 --> 00:35:32,220 If you're in China, go straight to Snowflake 740 00:35:32,220 --> 00:35:34,200 because the other ones are probably going 741 00:35:34,200 --> 00:35:35,400 to be a fail for you. 742 00:35:35,400 --> 00:35:39,270 So building this map of what works in what country, 743 00:35:39,270 --> 00:35:41,550 in what order, and then the goal is that 744 00:35:41,550 --> 00:35:44,370 your Tor browser says, hey, I failed a bootstrap, 745 00:35:44,370 --> 00:35:46,890 I think you're in Brazil, I think this should have worked, 746 00:35:46,890 --> 00:35:48,630 are you in a different country? 747 00:35:48,630 --> 00:35:51,780 Help me help you bootstrap in an automatic way. 748 00:35:51,780 --> 00:35:54,510 So the goal of that is that you start off 749 00:35:54,510 --> 00:35:57,390 with the automatic approach where while it's doing 750 00:35:57,390 --> 00:35:58,920 the domain fronting connection, 751 00:35:58,920 --> 00:36:00,690 it learns what your IP address is, 752 00:36:00,690 --> 00:36:03,116 and turns that into a country, doing this in a way 753 00:36:03,116 --> 00:36:06,660 that makes users comfortable with the automation 754 00:36:06,660 --> 00:36:08,403 is another piece of that. 755 00:36:09,750 --> 00:36:11,970 So milestone two that we haven't done yet, 756 00:36:11,970 --> 00:36:16,470 but we need to do in order to have a more robust system. 757 00:36:16,470 --> 00:36:18,570 We need some sort of bridge subscription model. 758 00:36:18,570 --> 00:36:21,090 So right now we have a bunch of volunteers who set up 759 00:36:21,090 --> 00:36:23,640 a bridge, and then they get bored, and they take it down. 760 00:36:23,640 --> 00:36:25,920 So it isn't that the bridge got censored, 761 00:36:25,920 --> 00:36:28,140 but the user found it, they were happily using it, 762 00:36:28,140 --> 00:36:31,230 and then the bridge went away, and now the users no longer 763 00:36:31,230 --> 00:36:32,700 has a bridge that works. 764 00:36:32,700 --> 00:36:36,120 So we need some, once we've got this automation, 765 00:36:36,120 --> 00:36:39,300 we can use the domain, fronting the signaling channel, 766 00:36:39,300 --> 00:36:41,940 to learn, I used to have this bridge, 767 00:36:41,940 --> 00:36:43,620 can you give me a replacement? 768 00:36:43,620 --> 00:36:46,440 And the trick there is you don't need the same level 769 00:36:46,440 --> 00:36:51,120 of proof of work, or capture, or scarce resource proof, 770 00:36:51,120 --> 00:36:52,770 because you already did that last time. 771 00:36:52,770 --> 00:36:54,990 So you show up saying, here is the bridge 772 00:36:54,990 --> 00:36:57,600 that I used to use, can you automatically 773 00:36:57,600 --> 00:36:59,700 in the background give me the replacement? 774 00:36:59,700 --> 00:37:00,930 And that subscription model 775 00:37:00,930 --> 00:37:03,960 where your Tor browser seamlessly switches 776 00:37:03,960 --> 00:37:06,870 over to the new bridge, is something that we need 777 00:37:06,870 --> 00:37:08,520 to have as a building block here. 778 00:37:10,860 --> 00:37:12,300 And the fun thing about that 779 00:37:12,300 --> 00:37:14,850 is the dynamic cloud bridges work really well 780 00:37:14,850 --> 00:37:18,660 with that subscription model, where you spin up a bridge, 781 00:37:18,660 --> 00:37:21,210 and then it goes away, or it gets blocked, 782 00:37:21,210 --> 00:37:23,540 and you spin up another one next door, and then you tell all 783 00:37:23,540 --> 00:37:25,530 of the users through the signaling channel, 784 00:37:25,530 --> 00:37:27,570 you used to use that one switch over to that one. 785 00:37:27,570 --> 00:37:30,450 So if we can keep on IP address hopping 786 00:37:30,450 --> 00:37:34,350 like frequency hopping over the cloud provider IP space, 787 00:37:34,350 --> 00:37:37,050 faster than the sensors can keep up, 788 00:37:37,050 --> 00:37:38,750 then we've got something going on. 789 00:37:42,270 --> 00:37:44,040 The third milestone that we need to hit 790 00:37:44,040 --> 00:37:47,220 is a reputation based bridge distribution idea. 791 00:37:47,220 --> 00:37:49,620 So there are a bunch of research papers out there, 792 00:37:49,620 --> 00:37:52,200 Salmon, Lox, Hyphae, and so on. 793 00:37:52,200 --> 00:37:55,530 But basically the idea is, 794 00:37:55,530 --> 00:37:57,750 once you've got the subscription model going on, 795 00:37:57,750 --> 00:38:01,260 so users have some sort of long term cryptographic identity, 796 00:38:01,260 --> 00:38:03,450 keep track of when I give you a bridge, 797 00:38:03,450 --> 00:38:05,760 does it get blocked or not? 798 00:38:05,760 --> 00:38:07,830 And if it does get blocked, then screw you, 799 00:38:07,830 --> 00:38:09,390 I'm not gonna give you more. 800 00:38:09,390 --> 00:38:12,360 But if it doesn't get blocked, then you're doing great, 801 00:38:12,360 --> 00:38:17,360 we'll keep on giving you more bridges, will maybe put you 802 00:38:17,520 --> 00:38:21,930 as the only set of users on a bridge will long term 803 00:38:21,930 --> 00:38:24,810 not get blocked, because the 10 of you have demonstrated 804 00:38:24,810 --> 00:38:27,180 that you're not the sensor, and you're not trying 805 00:38:27,180 --> 00:38:28,800 to learn bridges and block them. 806 00:38:28,800 --> 00:38:33,000 So there's a lot more going on that, 807 00:38:33,000 --> 00:38:35,040 there are a bunch of parameters we need to get right. 808 00:38:35,040 --> 00:38:38,220 Salmon actually has a design where once you have 809 00:38:38,220 --> 00:38:40,890 a high enough reputation, you can invite your friends in 810 00:38:40,890 --> 00:38:43,320 at a similar reputation level, and that makes 811 00:38:43,320 --> 00:38:46,110 the system scale a lot better, but also there's a bunch 812 00:38:46,110 --> 00:38:49,020 of analysis in terms of if the adversary can get 813 00:38:49,020 --> 00:38:51,930 one high reputation person, and then invite a bunch 814 00:38:51,930 --> 00:38:54,390 of fake people that are also high reputation. 815 00:38:54,390 --> 00:38:57,270 So getting the parameters right is important here, 816 00:38:57,270 --> 00:38:59,430 but this is where the arms race has to go. 817 00:38:59,430 --> 00:39:03,150 We need this sort of asymmetry where users 818 00:39:03,150 --> 00:39:06,360 have social connections, or we keep track of whether 819 00:39:06,360 --> 00:39:10,587 the user has behaved correctly or not, and reward the ones 820 00:39:10,587 --> 00:39:14,763 that are not ending up blocking their bridges. 821 00:39:16,860 --> 00:39:18,630 We've got a little while more. 822 00:39:18,630 --> 00:39:22,830 I'm going to talk about some other things 823 00:39:22,830 --> 00:39:25,710 that have been bugging me over the past couple of years. 824 00:39:25,710 --> 00:39:30,710 So one of the big ones is when Russia invaded Ukraine, 825 00:39:31,200 --> 00:39:33,090 a lot of Western companies 826 00:39:33,090 --> 00:39:35,820 are like, haha, I'm gonna sanction them. 827 00:39:35,820 --> 00:39:38,040 We heard about ISPs that are like, 828 00:39:38,040 --> 00:39:41,340 I'm deep hearing from Russia, that'll show them. 829 00:39:41,340 --> 00:39:43,710 And then we heard about Western companies like Facebook, 830 00:39:43,710 --> 00:39:45,270 and Google, and so on saying, 831 00:39:45,270 --> 00:39:50,270 I'm gonna stop allowing Russians to have Gmail accounts, 832 00:39:50,310 --> 00:39:52,020 and that'll show them, we'll punish them, 833 00:39:52,020 --> 00:39:53,610 we'll put pressure on them. 834 00:39:53,610 --> 00:39:56,340 And the key to realize, a couple of years ago, 835 00:39:56,340 --> 00:39:59,550 Trump was trying to do something similar in Iran, 836 00:39:59,550 --> 00:40:02,460 it was called the maximum pressure or sanctions program. 837 00:40:02,460 --> 00:40:05,790 And he would call up Netflix, and Google, and Facebook, 838 00:40:05,790 --> 00:40:07,980 and be like, I know the law doesn't require this, 839 00:40:07,980 --> 00:40:11,160 but could you like everybody who speaks Farsi, 840 00:40:11,160 --> 00:40:14,220 could you turn off all their accounts, thanks? 841 00:40:14,220 --> 00:40:19,220 And the problem with that is Iran periodically 842 00:40:19,770 --> 00:40:22,380 was trying to isolate themselves from the internet, 843 00:40:22,380 --> 00:40:24,810 their goal is they want their own halal internet, 844 00:40:24,810 --> 00:40:28,620 they want their own safe, religiously okay Facebook, 845 00:40:28,620 --> 00:40:31,830 their own, Google, their own Gmail, their own whatever, 846 00:40:31,830 --> 00:40:34,350 and every time Iran tried to cut themselves off 847 00:40:34,350 --> 00:40:36,660 from the internet, everybody in the country is like, 848 00:40:36,660 --> 00:40:39,810 fuck you blocked Google, I don't like this, 849 00:40:39,810 --> 00:40:42,240 I need you to stop the censorship. 850 00:40:42,240 --> 00:40:46,200 Whereas when Trump said, hey, Google, can you turn off 851 00:40:46,200 --> 00:40:48,720 all the accounts of all the people from Iran? 852 00:40:48,720 --> 00:40:51,990 Now when they block Google, nobody cares because Google 853 00:40:51,990 --> 00:40:54,480 has already screwed them, Google has demonstrated 854 00:40:54,480 --> 00:40:57,630 that it has no interest in having them as users. 855 00:40:57,630 --> 00:41:02,550 So that means that those sanctions cause the government 856 00:41:02,550 --> 00:41:05,340 of Iran to be able to block more things 857 00:41:05,340 --> 00:41:08,280 without any collateral because there's nobody who's left 858 00:41:08,280 --> 00:41:10,920 who's angry because the Western companies 859 00:41:10,920 --> 00:41:12,030 let them down anyway. 860 00:41:12,030 --> 00:41:13,950 So we're gonna see the same thing in Russia, 861 00:41:13,950 --> 00:41:17,340 where if Facebook decides to stop providing service 862 00:41:17,340 --> 00:41:21,210 to Russia, then nobody's gonna get upset 863 00:41:21,210 --> 00:41:22,560 when Russia blocks Facebook, 864 00:41:22,560 --> 00:41:24,270 I think actually Russia did block Facebook, 865 00:41:24,270 --> 00:41:28,980 but next it's gonna be LinkedIn, or whatever comes next. 866 00:41:28,980 --> 00:41:29,813 So we're gonna see 867 00:41:29,813 --> 00:41:32,883 the same isolation results from sanctionings. 868 00:41:34,290 --> 00:41:36,870 Something else that is also kind of bizarre. 869 00:41:36,870 --> 00:41:39,480 The European union decided that they needed 870 00:41:39,480 --> 00:41:43,353 to block misinformation, especially they needed to block RT. 871 00:41:44,460 --> 00:41:47,850 They unlisted the television channel sounds good, 872 00:41:47,850 --> 00:41:51,720 but they also had an EU wide mandate 873 00:41:51,720 --> 00:41:54,660 that every member country needs to build, 874 00:41:54,660 --> 00:41:57,060 and deploy a censorship infrastructure in order 875 00:41:57,060 --> 00:41:59,970 to block the rt.com website. 876 00:41:59,970 --> 00:42:04,530 So that is a fuck up thing that Europe has decided to do. 877 00:42:04,530 --> 00:42:07,530 And I mean, sure, there's the slippery slope 878 00:42:07,530 --> 00:42:11,370 of once you built your internet censorship infrastructure, 879 00:42:11,370 --> 00:42:14,220 then what else are you gonna use it for? 880 00:42:14,220 --> 00:42:16,710 And I guess the other side of that, I mean, 881 00:42:16,710 --> 00:42:21,710 actually I ended up arguing with a German guy 882 00:42:21,780 --> 00:42:25,350 who's part of the Brussels group that decided to do this. 883 00:42:25,350 --> 00:42:28,140 And I was like, why are you censoring the internet, 884 00:42:28,140 --> 00:42:28,973 what's going on? 885 00:42:28,973 --> 00:42:31,680 And he kept stopping me, he's like, no sanctions, 886 00:42:31,680 --> 00:42:33,480 not sensors sanctions. 887 00:42:33,480 --> 00:42:35,734 And I'm like, okay, well that's the word you're using. 888 00:42:35,734 --> 00:42:39,540 But the reality is that you are encouraging every country 889 00:42:39,540 --> 00:42:43,320 to buy and deploy a censorship infrastructure. 890 00:42:43,320 --> 00:42:45,870 And while I was having that argument with him, 891 00:42:45,870 --> 00:42:49,710 one of the OONI people pointed out that Romania interpreted 892 00:42:49,710 --> 00:42:53,940 that EU requirement, as you gotta block all misinformation. 893 00:42:53,940 --> 00:42:57,930 So Romania apparently has a multi megabyte list of URLs 894 00:42:57,930 --> 00:43:01,170 that they decided to censor in their country 895 00:43:01,170 --> 00:43:04,380 because of this kind of vague, poorly worded, 896 00:43:04,380 --> 00:43:07,710 you better block RT requirement from the EU. 897 00:43:07,710 --> 00:43:10,980 And they ended up blocking like software update sites 898 00:43:10,980 --> 00:43:11,883 and so on. 899 00:43:13,313 --> 00:43:16,140 And the same Brussels guy was explaining, 900 00:43:16,140 --> 00:43:18,930 no, this is a temporary six month sanction, 901 00:43:18,930 --> 00:43:21,780 in six months we're gonna revisit it. 902 00:43:21,780 --> 00:43:24,660 But the problem is these countries are gonna roll out 903 00:43:24,660 --> 00:43:27,270 their censorship and they're not gonna unroll it out 904 00:43:27,270 --> 00:43:29,580 in six months, they're gonna find something else to do 905 00:43:29,580 --> 00:43:31,410 with their censorship infrastructure. 906 00:43:31,410 --> 00:43:34,770 So I guess the big question is, what the fuck Europe? 907 00:43:34,770 --> 00:43:36,690 Why you censoring so much? 908 00:43:36,690 --> 00:43:39,900 And if you as the audience could keep on asking 909 00:43:39,900 --> 00:43:44,250 that question to the European Union decision makers, 910 00:43:44,250 --> 00:43:47,220 that would be awesome because this is, I mean, 911 00:43:47,220 --> 00:43:50,250 they start off trying to argue that they need freedom 912 00:43:50,250 --> 00:43:51,971 of information and freedom of speech, 913 00:43:51,971 --> 00:43:54,600 and then they end up using the same tactics 914 00:43:54,600 --> 00:43:55,800 to block more things, 915 00:43:55,800 --> 00:43:58,742 and this is not where the world should go. 916 00:43:58,742 --> 00:44:01,742 (audience clapping) 917 00:44:07,680 --> 00:44:11,460 Another kinda interesting lesson to learn here. 918 00:44:11,460 --> 00:44:14,820 So our story started in December of last year, 919 00:44:14,820 --> 00:44:17,280 but from the mainstream media side, 920 00:44:17,280 --> 00:44:20,040 the story started in March of this year, 921 00:44:20,040 --> 00:44:24,900 so Tor blocking, censorship blocking, internet censorship 922 00:44:24,900 --> 00:44:28,110 is an early warning system for there's about 923 00:44:28,110 --> 00:44:30,780 to be some fucked up stuff going on in that part 924 00:44:30,780 --> 00:44:35,430 of the world world, and watching the next political events 925 00:44:35,430 --> 00:44:39,180 gives you some early sense of where important things 926 00:44:39,180 --> 00:44:41,700 are gonna be, and where we as the world should 927 00:44:41,700 --> 00:44:43,200 put our resources. 928 00:44:43,200 --> 00:44:46,950 And the story is not over, there's more going on. 929 00:44:46,950 --> 00:44:48,660 One of the things that's happening recently 930 00:44:48,660 --> 00:44:51,660 from the Great Firewall in China, is they've been rolling 931 00:44:51,660 --> 00:44:56,220 out an entropy test, where if you are connecting from China 932 00:44:56,220 --> 00:45:01,114 to a couple of cheapo providers like Digital Ocean, Alibaba, 933 00:45:01,114 --> 00:45:04,800 Hetzner, OVH, then they look at how many ones 934 00:45:04,800 --> 00:45:06,390 there are in your first couple of packets, 935 00:45:06,390 --> 00:45:09,000 and how many zeros there are, and if it's about even, 936 00:45:09,000 --> 00:45:11,190 then they cut that connection. 937 00:45:11,190 --> 00:45:13,800 So that means that if you are in China trying to do 938 00:45:13,800 --> 00:45:17,760 an obfs4 spore connection to one of these IP spaces, 939 00:45:17,760 --> 00:45:19,230 then it fails. 940 00:45:19,230 --> 00:45:22,560 And maybe they're fine with that collateral damage. 941 00:45:22,560 --> 00:45:26,040 I would argue that they can't afford to roll out that out 942 00:45:26,040 --> 00:45:28,500 to the rest of China because there's too much 943 00:45:28,500 --> 00:45:30,330 just random protocols on the internet 944 00:45:30,330 --> 00:45:31,620 that they'd end up blocking. 945 00:45:31,620 --> 00:45:34,980 I was talking to a US academic researcher who did a study 946 00:45:34,980 --> 00:45:39,980 at his university of, if I put this censorship rule in place 947 00:45:40,320 --> 00:45:43,590 to my students at my university, he ended up concluding 948 00:45:43,590 --> 00:45:46,980 that he would block one or 2% of all 949 00:45:46,980 --> 00:45:48,960 the flows going through his university. 950 00:45:48,960 --> 00:45:52,950 So I don't think China can afford to make this broader 951 00:45:52,950 --> 00:45:56,520 than those destination IP spaces, but I don't know. 952 00:45:56,520 --> 00:46:00,210 So we are gonna need better transports that look 953 00:46:00,210 --> 00:46:03,690 like nothing in better ways or that look like something 954 00:46:03,690 --> 00:46:06,423 in better ways, that's gonna be our talk in a bit. 955 00:46:07,260 --> 00:46:12,260 We have these awesome Tor onion badges at the Tor booth 956 00:46:14,220 --> 00:46:16,950 in the vendor area, so after this talk ends, 957 00:46:16,950 --> 00:46:19,680 I'm gonna head over to the vendor area, 958 00:46:19,680 --> 00:46:22,170 I'm wearing my bright green shirt, I'm easy to spot, 959 00:46:22,170 --> 00:46:24,450 and I will answer all of your Tor questions 960 00:46:24,450 --> 00:46:26,493 until you have no more Tor questions. 961 00:46:28,200 --> 00:46:31,980 So we are out of time at this point, some things for you 962 00:46:31,980 --> 00:46:35,070 to think about, please run Tor bridges. 963 00:46:35,070 --> 00:46:40,050 If you can apt get installed Tor, then run an obfs4 bridge 964 00:46:40,050 --> 00:46:42,900 on your Debbie, and or Ubuntu, or whatever system. 965 00:46:42,900 --> 00:46:46,350 Please run Snowflakes, we've got a Firefox extension, 966 00:46:46,350 --> 00:46:49,290 we've got a Chrome extension, so these are easy to add, 967 00:46:49,290 --> 00:46:51,840 and you'll be one of the tens of thousands of people 968 00:46:51,840 --> 00:46:53,610 who are helping people in Russia get 969 00:46:53,610 --> 00:46:54,780 around their censorship. 970 00:46:54,780 --> 00:46:58,410 Please run Tor relays, please make the Tor network stronger, 971 00:46:58,410 --> 00:47:01,440 and also think about the anti censorship research area, 972 00:47:01,440 --> 00:47:06,090 we need more academics engaging in workshops 973 00:47:06,090 --> 00:47:09,210 like folky, and conferences like pets to think through 974 00:47:09,210 --> 00:47:11,070 how to analyze these things. 975 00:47:11,070 --> 00:47:14,310 And there will be ongoing Tor Q and A at the vendor booth. 976 00:47:14,310 --> 00:47:17,245 And I believe I'm at the end, so thank you. 977 00:47:17,245 --> 00:47:20,245 (audience clapping)