[00:06.890 --> 00:08.170] Hello, everybody. [00:09.450 --> 00:12.890] I haven't yet set up here, so one moment. [00:22.550 --> 00:25.910] You don't have to be silent while I set up if you don't want to. [00:55.810 --> 00:56.650] Not yet. [01:24.580 --> 01:25.380] Hey. [01:28.590 --> 01:29.810] You see my dog? [01:33.010 --> 01:34.710] So this is mirrored mode? [01:35.110 --> 01:35.170] Yeah. [01:57.250 --> 02:00.010] FYI, we should probably go... [02:00.890 --> 02:04.050] We're at 5 to 12 o'clock. [02:04.370 --> 02:04.630] Okay. [02:04.710 --> 02:06.790] We should go properly until 5 to 5. [02:07.070 --> 02:07.390] Okay. [02:08.790 --> 02:09.250] Whoa. [02:10.790 --> 02:11.910] Okay, that's not much time. [02:15.330 --> 02:15.950] All right. [02:16.710 --> 02:18.590] I'm going to get started here. [02:19.590 --> 02:23.590] If I can get this over on the screen for you. [02:24.350 --> 02:25.430] Hey, there it is. [02:27.610 --> 02:28.750] I can't see. [02:30.290 --> 02:31.130] How's that look? [02:34.430 --> 02:35.230] Looks great. [02:35.430 --> 02:35.970] Oh, even better. [02:37.190 --> 02:37.670] Okay. [02:40.590 --> 02:41.270] All right. [02:41.470 --> 02:42.330] So I'll get started. [02:45.710 --> 02:46.850] It's really bright out here. [02:46.850 --> 02:48.550] Can everybody hear me okay? [02:49.290 --> 02:51.330] I can't see anyone in this audience. [02:52.330 --> 02:52.810] Sorry? [02:53.010 --> 02:53.430] We're there. [02:53.730 --> 02:54.330] Okay, good. [02:56.310 --> 02:57.250] So, hi. [02:57.430 --> 02:58.170] My name's Micah. [02:58.390 --> 03:01.770] I'm here to talk about the LEAP Encryption Access Project. [03:03.410 --> 03:08.210] First, I'll get a few things out of the way and do some quick background about myself. [03:09.130 --> 03:14.090] Which will kind of serve as some foundation for understanding how I got into this space. [03:14.830 --> 03:17.070] And what I find important about LEAP. [03:18.050 --> 03:23.030] Then I'll get into more specifics about what we're doing at LEAP and some of the challenges that we face in the project. [03:24.570 --> 03:30.630] So, the LEAP project is trying to overhaul some fundamentally insecure aspects of the Internet. [03:31.290 --> 03:33.970] By creating secure and private communication software. [03:33.970 --> 03:44.970] And our goal is to be compatible with open standards that are already out there, but while not requiring people to cut off communications with people. [03:45.990 --> 03:52.290] So, we want to instead find ways to kind of re-architect some open standards while maintaining interoperability. [03:52.750 --> 04:00.750] So, while we do have deep knowledge of the problem space and a whole lot of ideas of things that we want to try, we don't have all the answers. [04:00.750 --> 04:06.730] And anyone who tries to tell you that they do are selling snake oil. [04:07.470 --> 04:15.850] So, I hope everybody here has a strong aversion to hype and vaporware and overstated claims around security. [04:15.930 --> 04:25.510] Especially after the parade of new secure communication software that's come out in the last year dripping with snake oil. [04:26.290 --> 04:35.510] Most of our team at LEAP have been building tools to counter state and corporate surveillance for years. [04:35.990 --> 04:44.310] And although we do have this goal, modest goal, of revolutionizing how we communicate securely online. [04:44.310 --> 04:51.050] LEAP is not a flashy tech company trying to sell or capitalize on the new found interest in security. [04:51.610 --> 04:54.370] So, we do have a strong commitment to free software. [04:54.910 --> 04:59.130] And our goals are more political, maybe, rather than commercial. [05:00.210 --> 05:02.670] So, I'm one of the founders of RiseUp.net. [05:02.870 --> 05:04.030] This is a little background about me. [05:04.450 --> 05:04.690] Woohoo! [05:09.930 --> 05:11.350] Thanks for giving me a chance to drink. [05:12.170 --> 05:15.290] RiseUp is a non-profit autonomous server project. [05:15.530 --> 05:17.390] I guess I don't need to talk too much about it. [05:17.830 --> 05:18.790] People know about it. [05:18.790 --> 05:23.930] We provide email, mailing lists, VPN, XMPP, server hosting, all kinds of stuff. [05:25.170 --> 05:34.030] And basically, tools for... communications tools for people in groups engaged in various social justice struggles around the world. [05:34.290 --> 05:39.970] So, we're kind of providing tools for people who would otherwise use large corporate providers. [05:41.750 --> 05:46.930] Who... the corporate providers, their kind of desires don't really map onto what we want to do. [05:46.930 --> 05:50.990] So, for example, we care about adhering to strict privacy guidelines. [05:51.790 --> 06:01.610] And think corporate tracking and association mapping as a business model is more or less a threat to the overall threat... overall health of democracy. [06:02.570 --> 06:05.030] So... and we actually care about free software. [06:06.050 --> 06:13.870] So, I started this crazy project with my roommate after organizing the counter-globalization WTO protest in Seattle in 1999. [06:14.950 --> 06:22.290] We put a server in the basement, started handing out email accounts, and gradually scaled things up and improved things as we went along. [06:23.470 --> 06:24.610] Fast forward to today. [06:24.850 --> 06:29.030] We just announced we're suing GCHQ for a breach of privacy. [06:29.030 --> 06:33.410] So, we'll see how that goes among a number of other organizations and ISPs. [06:34.490 --> 06:37.230] Greenhost is also here, who's doing that as well. [06:37.770 --> 06:42.490] I also was involved in Indymedia back in the day, doing a lot of tech stuff. [06:43.050 --> 06:50.650] So, I have a lot of experience with scaling high traffic events, stuff like that. [06:50.650 --> 06:54.290] And many experiences with dealing with seizure threats. [06:54.690 --> 07:02.670] This is a picture actually from the 2001 Quebec City FTAA protests, which brought the Secret Service and FBI knocking. [07:03.450 --> 07:08.110] They were pretty interested in finding some logs on some servers that we had. [07:08.670 --> 07:14.330] And we had those logs because we hadn't yet learned a valuable lesson from the EFF. [07:15.810 --> 07:26.150] And thanks to the EFF and this particular event, we learned that, at least in the U.S., you are not required to log anything. [07:26.890 --> 07:33.690] In fact, if you do, because you have it, you can be required to turn it over if you are served with a properly legal request. [07:34.290 --> 07:44.310] So, that kind of means that you are involuntarily acting as a deputized agent of the state, gathering for them delicious, delicious bacon scented data. [07:47.030 --> 07:51.830] So, yeah, you know, debugging and abuse, dealing with abuse is a little harder in these cases. [07:52.710 --> 07:56.730] Your precious web analytics won't help your ego inflate. [07:57.430 --> 08:02.450] But in the U.S., there is no requirement for logging, and so we stopped doing that. [08:03.770 --> 08:19.790] And in fact, in the European Union, the data retention directive that was recently challenged, like, maybe three weeks ago, the Supreme Courts in Austria, Romania, and I don't remember, Slovenia or something like that, declared data retention unconstitutional. [08:19.790 --> 08:29.250] So, this is, depending on where you are coming from, this is a valuable lesson that you can learn, is if you stop gathering this stuff, you don't have to turn it over. [08:29.510 --> 08:35.910] So, I put that question to you, why are you logging, but you don't have to answer now. [08:37.050 --> 08:42.390] So, LEAP's goal is, over time, to reduce the amount of information that the provider knows about you. [08:43.210 --> 08:51.530] And, in fact, our configuration right now is set up so the provider knows less about you than, as far as I know, any provider that exists. [08:53.010 --> 08:57.190] I have a whole list of other seizure situations that I could go into. [08:57.450 --> 09:02.130] I don't think you can read that text on there, but I don't have much time. [09:02.130 --> 09:10.850] So, this is a video that I want to tell you about that happened just two years ago, where they took a server of ours. [09:12.770 --> 09:16.330] Basically, this is a video of the server being returned a few days later. [09:16.370 --> 09:20.890] We actually installed the cameras in between them taking the server and returning it. [09:21.750 --> 09:26.510] It's a virtual server, I mean, a server that we provided virtual service for different groups. [09:26.510 --> 09:30.790] And there was no critical rise-up infrastructure or anything on there. [09:31.530 --> 09:37.890] And they found this machine, actually, by unplugging every Ethernet cable in the rack from the top to the bottom until the ping stopped. [09:38.290 --> 09:42.530] We found that out by looking at the D-message, and we found all these, like, Ethernet up-down things. [09:42.850 --> 09:44.750] Anyway, they returned it perfectly cabled. [09:44.930 --> 09:50.090] As I said, this is the return, and how it was before, and even powered it back on for us. [09:51.550 --> 09:59.350] But the one thing they didn't bother doing is to let us know why they took it, or even that they had returned it. [09:59.910 --> 10:06.810] And we didn't even notice it was returned, because it powered on, and the machine is running with full disk encryption. [10:07.190 --> 10:12.410] So it didn't even boot all the way, so we never got the ping, and the monitoring service never told us it was there. [10:12.550 --> 10:15.450] We just happened to notice there was this big video log file. [10:18.230 --> 10:26.050] When it was taken, we lost ping, and then someone had to physically go in there and find the gaping hole where it used to be. [10:26.510 --> 10:28.770] So as I said, it didn't boot full disk encryption. [10:28.950 --> 10:30.250] It hasn't booted since. [10:30.790 --> 10:35.850] It's still going, but you can see this video downstairs, and the server's down there. [10:36.750 --> 10:37.870] So I brought it. [10:38.270 --> 10:47.330] We went in with some plastic gloves and plastic bags, and we bagged it up, and hadn't touched it since yesterday when we undid it. [10:47.470 --> 10:49.270] So come on down and take a look at it. [10:51.530 --> 11:03.150] So I have some experience, I guess, keeping servers running while the tear gas is coming in under the door, and making the servers kind of seizure resistant in a way. [11:03.150 --> 11:11.150] So this knowledge I've learned over time with a bunch of other people that have worked on these projects with me. [11:11.930 --> 11:23.050] And all these different attempts at legal and extra-legal repressions have come at us, and we've evolved our architecture over time as we've learned these lessons. [11:23.990 --> 11:32.610] Like, one important one is you can do whatever physical thing you want to do to protect your server, but always be prepared for the server to be taken. [11:33.850 --> 11:40.770] So in every case, we actually won the legal case, either because they dropped it, or actually we fought it and won. [11:41.950 --> 11:44.670] We weren't... because, actually, why did we win? [11:44.750 --> 11:46.590] Because we weren't doing anything illegal in the end. [11:46.590 --> 11:59.810] On the contrary, most situations, we were just... people were just using the threat of legal action to try to intimidate us to take down some embarrassing or politically damaging information that was already public. [12:00.350 --> 12:02.450] So, side note, anybody know whose house this is? [12:04.010 --> 12:04.970] Barbara Streisand. [12:04.970 --> 12:05.030] Barbara Streisand. [12:05.190 --> 12:06.690] Yeah, the Streisand effect is great. [12:09.150 --> 12:15.070] So one of the early architecture lessons we learned a long time ago was that full disk encryption is great. [12:16.030 --> 12:20.190] We've been doing it for a really long time, even when people thought it was a ridiculous performance hit. [12:21.390 --> 12:28.170] And actually, in that video, the server that they took, like I said, it's interesting to think about what they got when they took it. [12:28.890 --> 12:32.190] They got full disk... a machine with full disk encryption that they couldn't boot. [12:32.790 --> 12:35.310] So, you know, thanks, Snowden, that encryption works. [12:36.810 --> 12:42.570] But, as we know, you know, we're here at a crazy hacker conference, and full disk encryption's not enough. [12:42.570 --> 12:46.530] They could have rolled in with a vampire tap, or a cold boot attack, or whatever. [12:47.350 --> 12:54.130] It's just basically one password away from disclosing some information that we don't want to disclose. [12:55.130 --> 13:01.390] And in the U.S., we have NSLs, and we had the Lavabit scenario this last year, and whatnot. [13:01.390 --> 13:04.710] In fact, RiseUp's in a similar position to Lavabit. [13:06.410 --> 13:10.550] And we've published... we have a published canary that we update on a regular basis. [13:11.690 --> 13:14.090] But this is why LEAP is needed. [13:14.330 --> 13:22.950] We're developing and deploying this infrastructure that can prevent us, as service providers, to have access to anybody's data. [13:23.890 --> 13:25.890] So, LEAP kind of starts from this point. [13:27.370 --> 13:30.330] How do we improve on the sad state of affairs on the Internet? [13:31.210 --> 13:39.310] To better protect us as service providers and users who have, I contend, a reasonable expectation of privacy. [13:39.990 --> 13:44.550] So, we need providers not to have access to content, and we need to protect metadata. [13:45.770 --> 13:46.470] Excuse me. [13:47.370 --> 14:00.410] So, LEAP, we feel like you should be able to tell secrets to people, feeling confident that nobody can actually overhear those. [14:00.650 --> 14:09.690] And this confidence is very important because it's been demonstrated that awareness of ubiquitous surveillance stifles dissent. [14:09.690 --> 14:21.170] And like free speech, in fact, I think this is an aspect or an undervalued aspect of free speech, the right to whisper is a fundamental right in the free society. [14:21.410 --> 14:24.690] And without this right, political freedom is impossible. [14:25.570 --> 14:34.550] And as digital communication becomes more and more important for civic participation, so does the importance for the ability to digitally whisper. [14:34.550 --> 14:43.190] So, this is incredibly important for participants in democracies around the world who need the ability to communicate safely online. [14:43.990 --> 14:50.570] And unfortunately, as we all know, advances in surveillance technology are rapidly eroding this right to whisper. [14:52.130 --> 14:55.690] They betray your identity, your location, conversations. [14:57.150 --> 15:09.110] And when you even try to secure your communications, you are facing confusing software, no secure providers, problems of usability, availability, adoption. [15:10.050 --> 15:19.250] So, actually, it was interesting to listen to this Snowden/Ellsberg talk because I found it really interesting the government gets really upset when people leak secrets. [15:19.250 --> 15:23.630] They aggressively go after whistleblowers to ruin their lives. [15:23.830 --> 15:27.790] So, they don't really like it when people leak their whispering. [15:28.110 --> 15:32.710] But at the same time, they are taking away our ability to whisper to each other. [15:33.010 --> 15:35.370] So, the hypocrisy there is kind of staggering. [15:37.190 --> 15:40.090] We need more government and corporate leakers. [15:40.490 --> 15:44.370] While at the same time, we need more protections for the powerless to whisper. [15:45.010 --> 15:50.550] So, they can organize against corruption or law-breaking and repression, etc. [15:51.250 --> 15:55.190] So, like Snowden said, tech enables dissent. [15:55.410 --> 15:58.910] But it also enables oppression and repression. [15:59.190 --> 16:00.210] So, we need to fight against that. [16:02.170 --> 16:03.710] So, LEAP has two sides. [16:04.150 --> 16:06.470] One side is providing tools for users. [16:06.910 --> 16:18.990] And on the other hand, we are also providing a suite of technologies, which I will get to the actual tech in a moment, to enable an ecosystem where we can have a proliferation of small independent ISPs. [16:21.390 --> 16:25.350] So, maybe we are not leaping into the future, but we are more leaping into the past. [16:27.130 --> 16:41.310] I would contend that the relatively recent concentration of email providers in a very few giant providers reduces the health and resiliency of email as an open protocol. [16:42.110 --> 16:46.690] And there are basically, essentially, a few players right now that monopolize the medium. [16:47.910 --> 17:00.670] And so, in the 90s, I don't know if anybody remembers back then, there was flourishing around the world a lot of small local service providers that you got your communications from. [17:01.070 --> 17:09.010] And these small and medium-sized companies were basically doing that instead of these three huge data silos that we have today. [17:11.070 --> 17:15.430] In fact, Rise Up is far too centralized itself. [17:16.230 --> 17:24.050] So, I contend that we need more secure email providers rather than less, and more people transitioning to them. [17:29.470 --> 17:30.230] Let's see. [17:30.770 --> 17:34.390] So, we have the potential in LEAP to reverse this trend, I think. [17:34.390 --> 17:37.590] As a side, this is Macaulay Culkin from the 90s. [17:38.410 --> 17:43.850] He's now in a pizza-themed Velvet Underground cover band called the Pizza Underground. [17:44.190 --> 17:44.750] It's crazy. [17:44.990 --> 17:46.350] They're playing in Montreal right now. [17:46.450 --> 17:46.810] I'm missing them. [17:47.710 --> 17:55.170] So, yeah, it's kind of crazy to say we should return to the 90s and run service providers and continue to prop up this horribly broken email setup. [17:55.170 --> 17:57.190] But, yeah, it's true. [17:58.450 --> 18:00.290] Talk a little bit about email. [18:00.570 --> 18:10.250] This email kind of, as everybody knows, comes from this ancient history Internet days when people were more trusting and not really caring about security so much. [18:10.410 --> 18:14.010] And because of that, it's really tempting to say, let's throw it out. [18:14.530 --> 18:16.030] Start again with something new. [18:16.030 --> 18:17.750] In fact, some people are doing that. [18:17.890 --> 18:19.410] The dark mail people talked last night. [18:21.170 --> 18:22.250] And that's really great. [18:23.030 --> 18:24.210] I'll come to that in a little bit. [18:24.630 --> 18:37.130] But, you know, just like before, when nobody listened to us in the 90s about how cool the Internet was and how email and websites were awesome, people weren't listening to us about the security problems on the Internet. [18:37.130 --> 18:44.290] And if you talked about NSA being able to maybe compromise some things, people thought you were a crazy conspiracy theorist. [18:44.490 --> 18:46.110] I don't know if you guys remember that. [18:46.250 --> 18:54.810] But now we know that the NSA has actually owned the Internet and Snowden has made all of our conspiracy theories become a reality by proving it. [18:54.810 --> 19:02.970] So it's sort of like this old Oprah episode, you remember, where she tells everybody to look under their chair and they pull out a box. [19:03.130 --> 19:06.190] And in there, there's a key where everybody gets a car. [19:07.650 --> 19:08.610] But it's... [19:10.430 --> 19:11.750] Cars filled with bees. [19:14.930 --> 19:15.410] Yay! [19:17.490 --> 19:18.270] Look at her. [19:19.730 --> 19:22.290] So, yeah, Internet terror as usual here. [19:22.290 --> 19:30.390] So it's hard to remember, but as tempting as it is nowadays to get off the grid, you know, run to a yurt and never touch the Internet again. [19:30.870 --> 19:37.230] Yeah, we have to remember how cool and useful the Internet and email are all about. [19:37.710 --> 19:40.590] This is great how my text went right in the center there. [19:41.850 --> 19:46.210] So, yeah, email is incredibly insecure and why should we even deal with that? [19:46.430 --> 19:48.230] It's a lost cause, we should kill it. [19:49.870 --> 19:52.730] I don't know if I would say that that's true. [19:52.910 --> 19:58.510] I think email, there are some aspects to it that are super solid and there are aspects that are very problematic. [19:59.310 --> 20:03.530] And I don't think anybody in their right mind thinks email is going away in the next 10 years. [20:04.310 --> 20:09.710] So, because of that, I think it's a worthwhile exercise to consider how secure email can possibly be. [20:11.310 --> 20:13.710] It has limitations, but we can push those. [20:14.170 --> 20:17.870] It's going to be around for a while and let's see what we can do to improve it. [20:20.250 --> 20:34.650] I think the more interesting question then, like, should we kill email or let's just use Gmail, is how do we get to the point where we're not depending on free services on the Internet that are paid by through surveillance. [20:35.950 --> 20:38.170] So, how does LEAP deal with this? [20:41.440 --> 20:42.460] Dramatic pause. [20:43.200 --> 20:49.080] From the user's perspective, there is a client application called Bitmask. [20:49.260 --> 20:56.700] And for the server operator, we have a mechanism for deploying and managing servers with some intelligent defaults. [20:56.700 --> 21:07.220] So, pulling these two pieces together, we've made it easier than ever to provide a secure VPN and a client encrypted email solution. [21:08.040 --> 21:14.080] So, I'll start by describing the experiences from the user's perspective real quick and then I'll talk about how we can provide these services. [21:15.680 --> 21:17.580] So, for a user, it's very simple. [21:17.720 --> 21:22.200] You just download and install this Bitmask application and you run it. [21:22.380 --> 21:25.180] And then you register with the LEAP provider and you log in. [21:25.180 --> 21:29.840] So, once this is running, you get an email account and you get the single click VPN. [21:30.100 --> 21:30.720] It's up and running. [21:30.960 --> 21:32.680] And it's not just an email account. [21:32.780 --> 21:35.480] Like I said, it's a client encrypted email account. [21:35.660 --> 21:44.020] So, that means email is encrypted locally and then synchronized to the service provider for storage and synchronization to your other devices. [21:45.840 --> 21:51.220] So, encryption and decryption takes place transparently via a local proxy on your computer. [21:51.220 --> 21:54.840] And you can just use your familiar email account. [21:55.100 --> 21:56.100] I mean email client. [21:57.900 --> 22:09.700] It's not just stored encrypted on your device and the server, but it also tries really hard to encrypt the contents of every mail that you send out and use as much transport encryption as possible. [22:09.700 --> 22:13.720] So, Bitmask is auto-configuring services for you in a secure way. [22:14.700 --> 22:20.700] Doing things for you that you expect, like providing email with OpenPGP without... [22:21.300 --> 22:26.540] That will actually interoperate with other people's OpenPGP software, even if they're not running LEAP. [22:27.700 --> 22:31.580] And running Bitmask means you don't even have to know what OpenPGP means. [22:31.580 --> 22:35.480] And you get a VPN to protect your local traffic. [22:37.680 --> 22:38.440] Excuse me. [22:38.760 --> 22:41.140] So, the beauty of the setup is that it's very simple. [22:41.320 --> 22:43.360] It provides all the complicated pieces for you. [22:43.900 --> 22:49.740] While the server just becomes a simple store and forward for your... [22:49.740 --> 22:54.460] Well, and with very, very little visibility into what sits there. [22:55.620 --> 22:58.720] So, there are a lot of great encryption tools out there right now. [22:59.040 --> 23:03.860] They're a pain to use, unless you're highly technical or you have unlimited amount of time. [23:04.080 --> 23:10.720] So, we're trying to eliminate these barriers for use, not by hiding things for people, but automating them. [23:12.380 --> 23:18.680] So, in order for Bitmask to work and provide these services, you need to register and log in with a service provider. [23:18.680 --> 23:29.440] And what we're kind of trying to promote, in a way, is a federated server model, which is a balance between the pros and cons of a P2P and completely centralized service. [23:30.640 --> 23:34.360] So, with P2P, you don't have to trust people who are running servers. [23:35.840 --> 23:38.500] You know, as long as you trust the software. [23:39.580 --> 23:46.100] But P2P is a really incredibly difficult problem space right now for this particular problem. [23:46.100 --> 23:48.640] So, they're not... those problems are not yet resolved. [23:48.880 --> 24:06.100] So, LEAP is kind of mitigating these problems with our strategy of going with a hybrid approach of using... providing as much functionality as possible to communicate with people and sync data with devices without knowing anything about you or that data. [24:07.260 --> 24:16.000] So, it should be also very possible to, with very few skilled people, without unlimited time, to run a service provider. [24:16.660 --> 24:21.700] And users matter a lot, but I think it's more important that people matter. [24:22.460 --> 24:24.600] And people run service providers. [24:24.780 --> 24:31.700] I'm sure many people in here are people like sysadmins who run service providers or run services. [24:31.700 --> 24:45.720] And to set up a quality... there's a missing image there... privacy protecting service provider that gives you something like what we're trying to do with LEAP requires you kind of to devote your entire life to learning and hacking on this stuff. [24:46.420 --> 24:50.680] And setting up and maintaining it by hand is super hard and painful. [24:50.920 --> 25:00.960] So, the LEAP platform is basically a set of tools to help you deploy and manage servers that provide services with some intelligent defaults. [25:01.060 --> 25:06.620] But also give you configurability and customization and low overhead. [25:06.920 --> 25:20.600] So, we put all this stuff together based on our years of experiences in a sort of simple way that lowers the bar to encourage people to provide these services and run more servers, run more service providers. [25:21.160 --> 25:23.120] So, anyone could run a service provider. [25:23.120 --> 25:28.340] It could be your friendly tech collective or a commercial organization or anyone in here. [25:28.900 --> 25:32.720] So, we need to make it easy as possible for people to set these up. [25:38.840 --> 25:54.820] Basically, the LEAP platform is a system that's designed to configure all the services that are needed to provide the LEAP software in a way so the service provider is untrusted and can't compromise the security of its users. [25:56.420 --> 25:59.020] I'm going to try to go faster here because I don't have much time. [25:59.600 --> 26:01.480] So, a bunch of stuff. [26:01.920 --> 26:02.360] Awesome. [26:03.020 --> 26:10.100] You basically get client-encrypted email in a VPN server that's going to stop DNS leaks and IPv6 leaks. [26:10.100 --> 26:15.480] It's got a user management admin interface with some tickets and billing if you want to do that stuff. [26:18.140 --> 26:22.400] And white box testing for evaluating the health of your provider. [26:22.680 --> 26:28.080] And basically, everything is done via deployment via masterless style push to the servers. [26:28.080 --> 26:35.080] And there's a nice and easy CLI to query information about the servers, configure and deploy them. [26:35.180 --> 26:43.840] And basically, as I said, make it as painless as possible to maintain a service provider infrastructure for this kind of secure communications. [26:46.320 --> 26:57.280] So, in the beginning with LEAP, I think we kind of looked at things and said, let's take all these great crypto tools written by amazing experts in the... [26:58.680 --> 27:01.040] And, well, they have a bad sense of UI. [27:01.120 --> 27:04.280] So, let's just make them easier to use. [27:04.420 --> 27:05.960] That's exactly what we need. [27:06.620 --> 27:11.840] And now that there's all this new interest in security, that's kind of what a lot of the discussion is about. [27:11.940 --> 27:14.360] How to slap a better UI on these things. [27:14.700 --> 27:19.220] And, as Elijah says at LEAP, you can't polish a turd. [27:20.200 --> 27:23.060] We quickly learned that this would not really be sufficient. [27:24.160 --> 27:25.720] So, in some cases it is. [27:25.880 --> 27:30.560] For example, this is a screenshot of the Android bit mask application. [27:31.360 --> 27:35.220] If you want an encrypted tunnel on your phone, you can just press this button. [27:35.520 --> 27:38.360] This is a case where you get a super easy UI. [27:38.720 --> 27:42.500] But a VPN is very simple and it kind of lends itself to a simple UI. [27:42.740 --> 27:47.420] So, for something like user-to-user communication, like chat or email, it's actually a lot more difficult. [27:48.080 --> 27:56.620] There are many core aspects of encryption utilities that can't just have a shiny interface put on top of it. [27:56.800 --> 28:02.320] Because there's some really hard problems in bridging that divide between usability and encryption technology. [28:02.840 --> 28:08.860] So, I'm going to talk a little bit about those hard problems and what we're doing in LEAP to try to solve them. [28:12.160 --> 28:16.000] But that's not going to be all of them because we don't have enough time. [28:16.800 --> 28:18.960] So, there's this data availability problem. [28:20.820 --> 28:24.780] This problem is basically how do you have access to your data when and where you want it. [28:24.780 --> 28:29.940] And it covers a whole class of common things like in terms of backups and storage. [28:30.440 --> 28:35.820] And when you have poor Internet or no Internet, you should be able to access your data. [28:36.400 --> 28:39.620] And centralized cloud services make this super easy to use. [28:40.600 --> 28:46.240] But data availability is a problem when you don't want to trust other people. [28:46.240 --> 28:50.180] And you don't want to make sure your... I mean, you want to make sure your data is secure. [28:52.980 --> 28:57.880] So, one of the problems in this particular space is that we can't use passwords in a normal way. [28:58.720 --> 29:00.240] If you don't want to trust the provider. [29:01.040 --> 29:04.580] You can't... I mean, you don't want to give them clear text access to all your data. [29:04.580 --> 29:09.080] And that's the way you do that, an encrypted channel. [29:10.060 --> 29:14.580] And then the provider takes that password and then hashes it and then stores it. [29:14.780 --> 29:17.940] And so, at some point in time, they have the actual password in memory. [29:18.260 --> 29:21.920] And this is almost how all password management systems work. [29:22.380 --> 29:26.860] So, we don't want to do that because we don't want the provider to have access to the password. [29:28.380 --> 29:32.620] So, there's a bunch of solutions to that, but we chose SRP, Secure Remote Password. [29:32.620 --> 29:34.080] It's been around for a while. [29:34.260 --> 29:35.360] It's a little hard to implement. [29:36.340 --> 29:46.600] It involves this back-and-forth exchange where you negotiate a proof to the server that you have the password without the provider having access to that password itself. [29:46.840 --> 29:51.640] So, it's a zero-knowledge proof to pass authentication scheme. [29:53.200 --> 30:05.460] So, another one of the problems in data availability is that we need to store your data, like your email, locally in two ways. [30:05.880 --> 30:15.320] Rich text format that can be queried and do interesting things with it for like search or whatever, but also encrypted on the disk in case you don't have full disk encryption. [30:15.860 --> 30:21.780] So, SQL Cypher is this free software implementation of the encryption extensions of SQLite. [30:22.460 --> 30:25.740] And everything's stored locally in SQL Cypher. [30:27.300 --> 30:32.680] So, the other problem in data availability is that we don't want to trust the provider. [30:33.360 --> 30:48.440] When you sync data amongst devices and back up to a provider, the provider should have no idea what's going on or be able to do any funky stuff like replay old data or drop or modify data in ways that are hard to detect. [30:49.980 --> 30:52.360] So, it's really tricky to come up with a system for this. [30:52.360 --> 30:59.560] So, what we did is we modified a synchronization protocol that Ubuntu uses called U1DB. [31:00.880 --> 31:02.540] It had no client encryption. [31:03.100 --> 31:13.680] So, we added that in a program called Solidad that individually encrypts on the client before it synchronizes to the server. [31:13.920 --> 31:21.240] So, there are some other programs out there that do this like Firefox Sync and Krypton from SpiderOak, I think it's called. [31:21.960 --> 31:25.260] But neither of these have a local database format. [31:27.880 --> 31:36.740] Since this stuff is really boring and makes me tired to think about it, I can't do it. [31:37.000 --> 31:37.540] Too bad. [31:37.660 --> 31:38.920] I was going to show you a picture of my dog. [31:38.920 --> 31:43.880] If you're at Daniel's talk yesterday, he was showing a picture of my dog as a little break. [31:44.900 --> 31:45.660] Can't do it. [31:46.380 --> 31:46.880] Sorry. [31:49.780 --> 31:51.600] So, we'll just continue on. [31:51.800 --> 31:52.720] Secure identity. [31:53.580 --> 31:53.680] Whew. [31:54.120 --> 31:54.860] That was a great break. [31:56.940 --> 31:58.160] Actually, maybe I can do it. [32:05.460 --> 32:06.320] No, I can't. [32:13.560 --> 32:14.040] Sorry? [32:15.420 --> 32:18.980] What are the roadblocks of integrating these ideas into the screen? [32:20.220 --> 32:23.000] Well, it's just a matter of... [32:23.000 --> 32:29.680] Well, with Ubuntu, with the UNDB problem right now, is that they're considering no longer supporting this. [32:30.120 --> 32:32.400] So, that's a pretty big roadblock right there. [32:32.580 --> 32:34.440] But we're going to see what's going to happen with that. [32:36.060 --> 32:40.240] So, one of the other big problems we have is the secure identity problem. [32:40.240 --> 32:45.400] And when you talk about secure communications, there's actually a lot of properties involved. [32:46.020 --> 32:47.520] Like, communication has to be confidential. [32:47.960 --> 32:50.740] Do we know the whole thing got through without parts being dropped? [32:50.820 --> 32:52.020] This is the integrity problem. [32:53.260 --> 33:02.000] And there's a whole list of dozen more properties that all flow from knowing that you actually are talking to the right person. [33:02.300 --> 33:05.000] So, being confidential with the wrong person doesn't help. [33:05.960 --> 33:09.880] So, secure identity is kind of the weakest link in a secure communication system. [33:12.460 --> 33:17.180] So, there is no standard for securely authenticating people's public keys or identities. [33:20.380 --> 33:27.600] X.509, you know, you got to pay money to the certificate mafia to bind a domain name to a long crypto key. [33:27.720 --> 33:28.280] And that sucks. [33:28.420 --> 33:29.330] You have the centralized situation. [33:30.280 --> 33:31.800] The web of trust is really great. [33:31.800 --> 33:35.160] You can use our social network to build a trust network. [33:35.360 --> 33:36.160] And it's decentralized. [33:36.180 --> 33:36.980] That's awesome. [33:37.220 --> 33:40.260] But it exposes your social graph to network analysis. [33:40.640 --> 33:47.520] And the security implications of exposing your social graph means the web of trust metadata exposure is not okay. [33:49.720 --> 33:55.280] Of course, there's manual verification, which has a horrible usability problem. [33:55.280 --> 33:58.620] I mean, very small percentage of people can do it properly. [33:59.500 --> 34:07.000] There are some other improvements on mechanisms to manually verify shared keys like tech secure and the socialist millionaire stuff. [34:07.600 --> 34:08.220] But... [34:08.220 --> 34:14.530] So, we're in this really odd situation where all of our authentication mechanisms have fallen into disrepute. [34:14.530 --> 34:19.330] And nobody believes in X.509 anymore, but we're all stuck with it. [34:20.070 --> 34:22.550] Nobody believes in the web of trust because... [34:22.550 --> 34:27.770] Well, maybe we do believe in it, but we are concerned about the social graph analysis problem. [34:28.630 --> 34:29.110] But... [34:29.590 --> 34:34.950] So, we're stuck with these two things and you can't really have secure communications without secure authentication. [34:35.330 --> 34:36.370] So, what do we do about this? [34:38.150 --> 34:42.290] Well, maybe I should clarify I'm talking about person to person when I'm talking about secure identity. [34:43.150 --> 34:45.130] Not person to server, so... [34:45.130 --> 34:53.810] At LEAP, we're trying to focus on person to person encrypted communications or group communications to make that easier. [34:54.050 --> 34:57.590] So, the identity problem is one of the big unsolved aspects of this. [34:58.350 --> 35:09.480] There's a lot of active research in this area with what will replace X.509, the web of trust, and stuff about replacing static offline keys for... [35:10.080 --> 35:14.700] The problem is email and chat is a big problem. [35:15.220 --> 35:17.320] So, some of these are TOFU, trust on first use. [35:17.780 --> 35:21.360] You don't have to have any mechanism for secure identity. [35:21.560 --> 35:24.700] You just take the first thing you get and then try to remember it. [35:25.600 --> 35:29.560] And then there's Dane, as people probably know, uses DNSSEC. [35:30.460 --> 35:35.980] Fairly centralized system, although there's some potential for external auditing to add on to that. [35:35.980 --> 35:41.220] And there's CT, Certificate Transparency, which is the Ben Lorre and Adam Langley. [35:42.700 --> 35:47.560] Basically, a replacement to the Certificate Authority system that they're baking into Chromium. [35:48.840 --> 35:51.120] And there's Namecoin and ZRTP. [35:54.480 --> 35:57.220] So, I won't go into a lot of stuff again. [35:57.760 --> 36:01.720] So, there's a lot of debate about which one of these is going to take off. [36:01.720 --> 36:05.500] A lot of people are backing CT because Google's going to do it. [36:07.680 --> 36:13.520] So, people are looking at that and saying, oh, yeah, what we can do is we can use this for user identities as well. [36:13.680 --> 36:15.140] But it wasn't really designed for that. [36:16.000 --> 36:18.320] But there are some ideas for modifying it for that. [36:19.180 --> 36:25.780] There's also Perspectives Convergence, which was Moxie's project that he's not really working on anymore. [36:25.780 --> 36:29.800] Although there's a fork called TAC, or maintaining. [36:30.140 --> 36:33.880] TAC exists, but I don't know that anybody's using it right now. [36:34.280 --> 36:35.940] It's compatible with CT. [36:37.760 --> 36:45.980] The Convergence Strategy doesn't work well for web pages, because basically there's a performance problem. [36:46.420 --> 36:47.680] Mostly a lag problem. [36:47.820 --> 36:52.980] It's not so great for interactivity requirements that people expect for the web. [36:52.980 --> 36:56.620] But if you want to send email, until you've... [36:56.620 --> 37:00.210] You can wait around until you've gathered enough of the perspective information. [37:01.420 --> 37:02.260] That works. [37:02.600 --> 37:03.400] So we are... [37:03.770 --> 37:07.340] LEAP is doing something like that, or we're planning to doing something like that. [37:07.520 --> 37:09.210] But what we're doing in the meantime is... [37:10.720 --> 37:13.340] Why can this picture of Tofu be up there, but not my dog? [37:15.600 --> 37:20.960] We're trying to build basically a graduated backwards compatible system around secure identity. [37:20.960 --> 37:23.840] So we're doing this thing where we start with Tofu. [37:25.680 --> 37:33.780] We basically make a good-faith effort to try to discover a key in whatever way we can, using Tofu for key discovery. [37:34.040 --> 37:45.880] So, you know, with your email address, we can try to discover a key through the traditional key servers, and then store those in our Soledad encrypted store so they can be synchronized with your other devices. [37:46.680 --> 37:55.860] And then when we send out email, we can add an OpenPGP header, which not many people know exists, and not many people implement, so hopefully people will do that. [37:56.440 --> 38:00.200] It tells the recipient, hey, I've got this key, and here's how you get it. [38:01.760 --> 38:05.460] This is harder to do with chat, because there's not things like OTR key servers. [38:06.540 --> 38:11.860] So a lot of people think Tofu is good enough, but that's not really the case in the real world. [38:12.080 --> 38:14.500] People need to rotate keys, and keys expire. [38:15.280 --> 38:17.500] You need to revoke them or lose them or whatever. [38:17.920 --> 38:20.440] So just Tofu is not good enough. [38:20.660 --> 38:22.980] There's a huge attack surface also there. [38:26.300 --> 38:32.160] So we don't want to rely on this heavily, but we want to layer on top of Tofu additional properties. [38:32.500 --> 38:47.700] So we're planning on layering these properties in phases, and the system's designed to ratchet up these validation to stronger security mechanisms if they can be detected or if they're available, or if they're desired. [38:47.700 --> 39:03.980] So, like, if the other person you're communicating with is also using a LEAP service provider, or supports the OpenPGP header, then we can look for the service provider's endorsement of the user in the form of a signature from that service provider to that user's key. [39:04.460 --> 39:19.200] And then, like, as with convergence, we can ratchet up to use network perspectives to audit the service provider's endorsement to make sure that the service provider isn't handing out bogus keys or making bogus signatures. [39:22.000 --> 39:26.600] By basically making queries from a bunch of different places to try to make sure the keys are the same. [39:27.360 --> 39:35.020] And that also allows you as a user to do some auditing of your own service provider to make sure they aren't handing out bogus keys for you. [39:35.020 --> 39:42.640] So, we start with Tofu with key servers, then do cert verification using the X.509 system because it's there. [39:42.920 --> 39:43.960] You can add that. [39:44.160 --> 39:46.080] And then do provider endorsement. [39:46.240 --> 39:50.180] And then there would be a mechanism to audit via network perspective. [39:50.960 --> 39:55.240] It's basically a set of rules depending on the key to ratchet up these properties. [39:56.160 --> 40:05.140] This part is still ongoing and experimental in LEAP and still we expect it will require some tweaking with real-world usage. [40:06.480 --> 40:09.380] Then, finally, the last problem is the metadata problem. [40:10.100 --> 40:16.380] How do you protect the map of associations when you communicate with people? [40:17.860 --> 40:30.480] We've got government powerful actors who are scanning the network for all the headers and routing information between people which are typically sent in the clear, especially for chat and email encryption. [40:31.940 --> 40:37.000] As we all know, when you send an encrypted email, your subject is in the clear and all your headers are in the clear. [40:37.000 --> 40:45.820] And that's very useful information for doing social networking, social, sorry, social network mapping, not social networking. [40:47.220 --> 40:50.860] This is a very powerful tool in the face of adversaries. [40:51.800 --> 41:01.360] A lot of sensitive and dangerous information can be obtained through mining social network mapping. [41:04.100 --> 41:12.560] So, social graph analysis basically means that you're revealing a ton of private data, especially since it's a structured data. [41:13.760 --> 41:19.280] That makes it very useful for data mining, unlike the contents of the email itself. [41:19.480 --> 41:25.440] So, when people talk about it being really hard to make email secure, they're usually actually talking about this metadata problem. [41:28.600 --> 41:36.500] You can, like I said, I think, do a lot of things to make email fairly secure, depending on your threat model with today's technology. [41:36.700 --> 41:40.340] And I think there's many ways that we can improve it without that much work. [41:40.840 --> 41:47.100] So, you know, people are just starting to do start TLS now, which is kind of amazing. [41:47.100 --> 41:54.680] I think Chris Segoyan has been harassing people in the last week or two, or bribing them with whiskey to turn it on. [41:54.840 --> 41:58.480] And that's great, because it's frightening who's not doing these sort of things. [41:58.940 --> 42:02.480] So, that's grown significantly, but nobody's validating the certificates. [42:02.800 --> 42:06.860] So, it's easy to intercept and downgrade. [42:09.360 --> 42:15.420] So, with LEAP, we're enforcing start TLS for provider-to-provider communications. [42:15.420 --> 42:17.780] And if we can detect it. [42:18.300 --> 42:25.340] And then, if a certificate's been published via DNSSEC, we can further validate it. [42:26.860 --> 42:36.440] So, basically, the short-term solutions we have are going to allow the service provider to actually know some metadata about you. [42:36.940 --> 42:40.120] Like, who you're sending and receiving messages to and from. [42:42.560 --> 42:51.500] But, in the long-term, we can do something like what Pawn does, which is making delivery... [42:52.120 --> 42:57.040] Doing delivery to a server over Tor, and adding a mechanism to prevent spam. [42:57.040 --> 43:04.360] So, then you still have a service provider where it's a hybrid approach, but the delivery part happens over anonymizing network. [43:04.900 --> 43:08.240] So, the service provider doesn't have access to the metadata. [43:09.440 --> 43:12.260] So, people always ask how this compares to other projects. [43:12.340 --> 43:13.740] I want to point you to this write-up. [43:14.440 --> 43:19.060] We're trying to stay on top of all the email and post-email projects and compare them. [43:19.740 --> 43:24.220] The space, right now, is really interesting and crowded, and I think that feels really healthy. [43:25.840 --> 43:32.580] Some projects are trying to create new things that don't work with existing technologies, and some people are just trying to tweak up the existing stuff. [43:32.800 --> 43:34.460] So, just to wrap up. [43:35.700 --> 43:42.340] Right now, LEAP, what we have is a Android, Linux, and sort of Mac client, Bitmask. [43:42.340 --> 43:54.440] We've got this MX server that handles the encryption for you, and this key manager that does these ratcheting up of the identity properties that I just was talking about. [43:54.720 --> 44:04.120] And the Soledad for the local encrypted database storage, and the password authentication over SRP. [44:04.280 --> 44:05.800] We've worked all this stuff out. [44:05.980 --> 44:09.900] So, also, we have the LEAP platform to make it easy to deploy. [44:09.900 --> 44:20.080] So, that means, right now, you can get a self-configuring Internet proxy, encrypted Internet proxy, that won't leak or fail into open state. [44:20.720 --> 44:26.280] And we have client encrypted email working, although not quite ready to demo yet. [44:26.980 --> 44:33.900] And in the LEAP project, we have a number of people doing a secure... sorry, Google Summer of Code projects. [44:33.900 --> 44:43.060] And we're working with the Calix project and RiseUp to integrate these services into pre-existing provider space. [44:43.240 --> 44:47.320] So, we're hoping you'll consider running a provider and working with us. [44:47.660 --> 44:51.940] And we have a table downstairs with a bunch of stickers, and we have that server. [44:52.020 --> 44:59.360] If you want to look at it, if you want to come by, it'd be great if you'd consider assigning our archive signing key, because we need signatures to help people validate our code. [45:01.440 --> 45:02.400] And... that's it. [45:03.000 --> 45:03.740] Out of time. [45:06.440 --> 45:07.300] There he is! [45:15.730 --> 45:19.690] Unfortunately, since we're running a little bit late, we don't really have time for questions. [45:19.830 --> 45:22.750] If you'd like to talk with Micah, do find him at his table later. [45:22.750 --> 45:25.570] Or... you guys can all head out in the hall, follow him out there. [45:26.230 --> 45:27.270] Be... be a stalker. [45:27.870 --> 45:28.750] In a nice way. [45:29.730 --> 45:32.270] And... can we get the house lights up a little bit, AV? [45:32.490 --> 45:34.330] Because it's... it's real hard to see up here. [45:34.470 --> 45:36.370] And I don't want people tripping on chairs. [45:36.570 --> 45:37.510] AV, you back there? [45:38.510 --> 45:38.890] Okay. [45:39.450 --> 45:40.170] Lights up, please.