One of the most popular Linux distributions is Linux Mint and it's popular for really good reason. It's very stable. It's often updated. It's well supported. There's a large community out there that uses Linux Mint. So if you need help, you can go find help really easily and it's based on Ubuntu. So that means that you get access to just a ton of software. It's also popular with people who don't like snaps because snaps aren't included out of the box. So you can kind of use an Ubuntu like system without having to deal with all the snap not sense. I'm not a particular fan of Linux Mint. If you watch the channel, I think you probably know that, but I do tend to watch for new releases and recently they released Linux Mint 20.3, which is the last iteration of the 20 series I believe. So what I thought I'd do today is take a look at some of the new features that you can expect if you give Linux Mint 20.3 a try. So let's go ahead and jump in. Okay. So when you first log into Linux Mint 20.3, you'll get the standard old Linux Mint welcome screen and there's nothing wrong with this welcome screen. It's not the best that I've ever seen.  It gives you exactly what you should have to have in order to get started with Linux Mint. One of the cool things that they enable is allowing you to choose between the dark theme and the light theme right here from the welcome screen.  So we're just going to switch to the dark theme and we're going to choose an accent color. We'll choose purple because I don't like minty green. I can't help it. I just don't. Which is weird because green is my favorite color, but I don't like this particular shade of green. You can also choose the panel layout from here, including modern or traditional. It will change that right on the fly. The thing about updates in Linux Mint is that they're a little bit more forceful than they used to be. Now I did not take a look at 20.2 or if I did, I don't remember. I'm not sure if it was that release or this release where Linux Mint decided that they're going to go through and start to prod users a little bit more about updates. Now I've already updated the system because almost immediately upon start up the update manager was there. So I just went ahead and did the updates. It took about 10 minutes. This was just released yesterday. So there weren't that many updates, but anyways, that's the welcome screen. Now of the new features that we should care about, there are a few things with the theme changes. So let's go ahead and get rid of this drivers notification, which won't go away. And if we open up a file manager, this is Nemo. And Nemo is one of the best file managers that you can use. It's really, really good. And one of the things you can see, or maybe you can't see, is that we now have rounded corners. Now one of the things that distros often do when they do rounded corners is they mess up the touch targets. So when you hover over the corner, you expect to be able to resize it. And one of the things that they've done, at least fairly nicely, is that they've kept those touch targets really easy to get to, at least on the top and even the bottom. Now, a lot of times the bottom is kind of ignored, and it's still not perfect. Like you kind of really have to be on that corner for it to show up. But I've seen some distros where it's just way, way worse. When they do the rounded corners thing, sometimes the corners like out here or in here, like it's not even at the corner. So they really mess it up. They did a really nice job around in those corners. And they've also taken some stuff out of the title bar. The title bars previously were quite small, so now they've made those things bigger. And supposedly that is to make it more pleasant and generous is what they say in the release notes. I don't know. I mean, I don't really notice a difference, but I'm sure if you compared the old title bars and the new title bars, you'd probably notice the difference more. They've also widened the hover zone over the buttons. I'm assuming when they say that they mean these buttons here, the open, closed and minimized buttons, so that they're easier to press. They've also made changes to the buttons themselves. They said that the maximize and unmaximized icon is more intuitive than before. That's exactly what they said. So now they've gone through and as you see, saw in the welcome screen, they've added accent colors. So they're allowing you to change that from the welcome screen. And what I have noticed, and maybe I'm just missing something, is if you search for settings, and you search or even themes, I guess you can search for themes. When you want to change the accent color again, you don't actually have a place you're called accent color. I believe this is what they want you to change here. So if we change to like red or something, and then you have to change individually these things here. And that's not a big problem. It's just a little bit inconsistent. You know what I mean? They call those things accent colors in here. They're calling them various things that you kind of have to change across the board. It'd be nice if that little changer that they have in the welcome center was actually in the theme set, in the theme or in the settings panel. If it is, I've missed it. But it's possible it is there, and I just didn't see it. So they've updated the dark mode so that supports across many more applications and also have made it more consistent across applications that do support it. So there are several applications now that are shipped with dark mode, including cellulite, hypnotics, X viewer, pics, and you know, terminal. In this release, we also have several updates to a few of the Linux Mint specific applications. So if we type in hypnotics, if we can spell this, this is their IPTV thing. And I'm not going to click on these buttons because I don't actually want to start playing anything and get demonetized. But this is the thing where you can watch TV through the internet. They've updated the UI here. They've also included a new search function so that you can easily find TV channels, movies, and series. And they've also added M3U and local playlist. The IP, so the IPTV player can support the Xtreme API, which I have no clue what that is. But if this is your thing, that's probably good news. I mean, more support for other things is always going to be good news. So that's hypnotics. As you can tell, it also has a dark thing. Okay, so the next thing that they updated was a thing called Thingy. And Thingy is an app that is meant to help you manage your documents. Now, when I first read this, I was like, what even is that? And I can't actually tell you what that is because I don't actually have any documents on this system. But apparently what it will do is it will give you quick access to your favorite and recently opened documents and keeps track of your reading progress. So I guess if you went through and did a lot of reading in library office documents, I'm not sure what this actually supports. It does not say on the website at all. So you'd have to kind of play around with this. But if you do a lot of like comic book reading, it shows in the screenshot on their website. It shows comic books and things like that. So I'm wondering if this supports like, what is it, CRB is the comic book format? I might be wrong on those letters, but it also shows that it supports CBC and EPUBs. So you could also read books. So they call this a document manager, but it's kind of more like an e-reader from what I can tell.  I'm just gonna put that out there right now.  That sounds like they just couldn't come up with a name and decided that they were just gonna call it Thingy. All right, and the other application that was updated was Sticky Notes. They now have a search function in their Sticky Notes application here. And the look of the notes was improved by embedding the title within the notes. So you can add a title. You can also go through and change the text and the text format and stuff right here from the note. You no longer have to do that from within the application from what I can tell. Now in Cinnamon itself, they have several more upgrades. This is Cinnamon 5.2, and they now have calendar integration which allow events in the applet to use the same color as the calendar they belong to so that if you have multiple calendars, they can be kind of color coordinated. The applet syncs with evolution data server so it supports things from the evolution email client, I believe, is what that's talking about. And it'll also work with GNOME calendar. So if you use GNOME calendars, you can also see your events here in the little applet thing in the bar, which you probably can't see because my face is probably right there in the middle of the way. So we'll move the camera over here. I'm glad I remembered that always. That would have been embarrassing. All right, anyways, so this is where you'd see the calendar integration here in the applet that is in the bar. So there are several other smaller improvements. So for example, when files are moved or copied and some of them are in conflict with existing files of the same names, NEMA will now show additional options so that you can choose what to do, whether or not you can skip ignore or overwrite them. And that's pretty common in other file managers. So that's nice to see that added window animations have been tweaked a little bit so that they're a little bit more simple and don't take nearly as much time. They have a new configuration options for workspace notifications and window list applets here in the bar. So if we look for applets, we can search for work if I can spell. So the workspace switcher applet now has an option to disable scrolling. So if we want to look for search here, we can actually see we can disable or reverse scroll here for the scroll bar. That means when you're hovering over it, it doesn't go between workspaces if you use the scroll wheel. You can just disable that if you want to. The notification applet has a new setting to hide the counter and the window list applet now has an option to remove labels. And then if we take a look at some of the things that aren't new, we can test see what the kernel is here if I can type, which I apparently can't. This is 5.4.0. So this is still a boon to 20.04. So this is going to be pretty old. This isn't even the most recent LTS of a kernel. So we're not expecting a kernel update to Linux Mint until we get to the 21 series, which will be released probably sometime this year, I guess, because it's usually based on the new LTS. So we won't see any new kernels there. We can see if htop is installed, which is not. And I can remember we've been going through and opening stuff up. So this isn't going to be all that accurate, but it's using about 786 megs, which isn't bad for, again, opening up a ton of stuff. It's running 96 tasks, 219 threads, which is about normal. It's way less than GNOME. So that's a win there. And this is obviously way less than GNOME because GNOME is usually well over a gigabyte. And like I said, we've gone through and opened stuff up. So there's probably stuff running in the background. We can close this terminal here now and we can open up in Firefox and see what version of Firefox we get. So this is version 95.01, which I believe that's the latest or at least close to the latest. So you are getting some updated files or updated applications here.  She won't stop talking. When I'm doing videos, she was doing it on the last video I recorded too. So all right, anyways, I don't know why she decided to start barking. Always does. Anyways, so that is Firefox. So as is usual with Linux Mint, these dot releases, you're not expecting to get a ton of new features. These are more refinement stuff where they're going through and making the theme look a little bit better, going through and making sure that each of the applications kind of are more refined. So the additions to things like Nemo and the file transfer dialogue are examples of the kind of updates you'll expect in a Linux Mint dot release, because these are just small refinements to make the existing version of Mint even better. Now, there are probably other changes with the XFCE and Monte versions. You'll have to definitely check those out if you're more interested in those desktop environments. I chose Cinnamon because I'm assuming that it's the most popular version of Mint out there because a lot of people use Mint and it's their flagship. So that is Linux Mint. Anyway, so that is it for this video. If you're going to try Linux Mint 20.3, you can leave those comments in the comment section below. I'd love to hear from you. You can follow me on Twitter at LinuxCast. You can support me on Patreon at patreon.com. SlashLinuxCast. Before I go, I would like to take a moment to thank my current patrons. Sid, Devon, Chris, East Coast Web, Gen2's Fun2, Patrick O, Primus, Marcus, Megalyn, Jack Snipetul, Steve, A, Sabria, LinuxGaric, Mitchell, ArtCenter, Carmen, David, Sean, Jeremy, Odin, Merrick, Camp, Joshua, Lee, J-Dog, The Beasties Rock, Peter A, Crucible, and Dark Bandit 6. Thanks everyone for watching. I'll see you next time.


We are going to start with a quick demo because the Wi-Fi here is not fast enough, so we're running this remotely, and so we're going to begin that right now. Yeah, so we have a UI built up. It's pretty primitive, but the idea is that it, we know ZK is not efficient now, so it's going to take a couple of minutes to run this proof, so hopefully it works. I don't know if this internet is going to, oh, it did click nice. So we're going to let this proof run, and then we'll come back to it some point later and see if it's generated. And we'll explain everything that we just did. But yeah, I'm Sampriti. I've been hacking with 0xpark for the last couple of months on your knowledge proofs. I'm Ayush. I'm also hacked with 0xpark for a while, and now I help run Persona Labs. And I want to say this project has a lot of people behind it. We've used our work from a lot of open source libraries, a lot of people who've helped us behind the scenes. And these are some of the names who are also in the crowd, but we can't mention all of them, so thank you to everyone again. So today we're going to talk about trustless email verification on chain. It's trustless in the sense that we don't run our own server, so we don't see any of your private data. But at the same time, we are trusting, because this is an interoperability protocol between Web 2 and Web 3, we are trusting mail servers and DNS to be operating as they should. But we do not operate any of our own infrastructure. So what exactly is proof of email, or a ZK email? Well, every time you receive an email, you have to know that it came from the source that it claims to be coming from. And so I might imagine a great way to do this is signatures. So what they effectively do is every email you receive is RSA signed with the SHA-256 of the from address, the to address, the subject, and a body hash, along with, and this entire hash is RSA signed with the key belonging to the email mail server domain. So you can imagine that if a user provides this header or the signature of an email, then, and we verify it in zero knowledge, then no one, including the mail server or a key stroke tracker on someone's computer, can verify that someone is using this protocol. There's some small email quirks, not everything works like this. Gmail doesn't sign self-emails and didn't even do this till 2016. Hotmail doesn't include it to field. And mail servers have slightly different bit keys. So the specific demo that we have prepared today is trust us Twitter verification on chain. The way it works is you get a Twitter reset email into your email from twitter.com. We then create a ZK proof of this email. We effectively reveal only the sender domain, which is something like verified twitter.com. The RSA modulus, which would be from the DNS record of Twitter. And the masked email body, which only has in zero knowledge the specific keys that we want to release. So like in this case, it would be, for example, it says this email was meant for use G right here. So we could kind of use that to extract that part and like use that as like the username. The things we want to keep private are all the information that does not relate to what the user wants to release. That is specifically the entire decim signature would denonymize them because the mail server would know who they are. The length of the pre-hash message data or general lengths that we pass around to ensure that computation is efficient. And all of the raw data. So the raw message data, the raw sender data, the identities that everyone involved. In the circuit, what we do is we check that that decim signature that we showed you earlier verifies the shot hashes verify the RSA signature is verify and that all of the text is well structured in the message. And this requires a little bit of reg X parsing. Finally, in the smart contract, we verify all the things that are very either very expensive to do in a snark or have to be done on a decentralized layer. So things like verifying the sender domain is actually the sender domain that people trust and verifying the claimed RSA key is an RSA key that people trust. Let me go see if the demo is done. So it's still going on. So I'll just talk about some of the innovations that we did. So obviously, one of the things you noticed was reg X.  Now, since we want this to run in the browser, obviously, we don't want people to have to send their email to a private server that we own and then we run the proof. So everything has to be done in the browser, which means it has to be very efficient. So we had to use some tricks to make sure our proof runs within a reasonable amount of time. So one of the things was shadow 56 hashing. So we have this really long email body. Let's say the one that Twitter sends us is 16 kilobytes. And if we try to just hash that entire thing in, it'll take millions of constraints. So what we realized was we could only take the part of the message body that contains the username we want, which is, for example, the Twitter username, which is at the end of the circuit. And we can only do that part of the hash inside the circuit. And we can hash the first, let's say, 10,000 bytes of the message outside the circuit and pass it as a private input. Now, this doesn't really break any security guarantees since we still check that the final hash is equal to whatever is signed by the mail server. And if you could break this, then you would basically be calculating a preimage for the hash. So it's the same security properties, but we don't have to do as many computations. The other one is obviously verifying regex. So email headers and email protocol is a very tricky thing. So email is a very tricky thing where it can be in many different orders and there's no specific structure. So it's hard to verify that within a snark and just using if-else checks. And obviously the first thing that comes to mind is kind of like when you try to parse the email addresses to use a regex. So that's kind of the most simplest thing that would provide more security. But there's no obvious way to do a regex inside a snark in an efficient way. So the thing we used was there's a way to convert all regexes into deterministic finite automator, so which is basically like a graph. And it's kind of like an automator graph and you traverse the state. So for example, each edge has kind of like a letter with it. So if the letter is h, then you go from one to two. And if there's a e after that, then you go from two to three. And obviously at any point, if a letter doesn't exist, then you kind of fail and you just go back to the beginning. So in this case, if we get to the last state, which is 12, then we accept. So this is obviously like a very simple regex for hello world. But we can kind of build a more complicated regex which is for like checking an email header. So for example, checking that there's a to and a from and it is like valid according to the SMTP protocol. And we can kind of check that and make sure everything matches. So and using this also, we can kind of use regex like what is it called? Catch groups or something like that to reveal what we want. So in case we just want to reveal the domain which is in this case, 0xpark. But in the demo we want to reveal the Twitter.com. So we'll see how that happens. So the regex for this thing is like a huge graph. So obviously I'm not manually coding that in Sercom. So we did some tricks to like automatically generate Python Sercom code given like a graph. And you can see in that slide on the right side auto-generated Sercom code. It works. I don't know how it works, but it works. All right, let's go back to the demo. Hopefully it's done. Oh no, I have to type my password on screen. All right, maybe we don't do this. All right, I still have a like kind of like a video showing the same thing. Because trust me, this is exactly what happens. So after we go through all of this. Okay, I'll type my password if you guys don't believe it. Okay, but maybe at the end. So anyways, as you can see, the proof got generated at the end. And this proof is obviously something you can send to the smart contract. And it also gives some extra data, which is like the public data that we're talking about. So I'll just let this play here. If this, so as you can see, like we have all the extra data masked out and only the things we want to show. So like for example, Twitter.com to Gmail.com. And then if we go down to the end, we have the username, which is usually username from the circuit. So those are the things that only the public input from the circuit and everything else remains private. And since all of this was verified using a proof, you can kind of, if you submit this to a smart contract, you can verify that this was indeed actually something that happened. So some precaution of this technology before we dive into specific use cases are that this enables a tragedy of the comments on institutional reputation. Now what this means is that using ZK email, you can prove trustlessly that you're part of some organization and post or act on behalf of the organization without spending your own personal reputation. And as a result, for the first time effectively ever, you can spend institutional reputation and have no cost to yourself and no personal accountability. It is quite dangerous. And so we do think it's important to have something like ZK nullifiers or different mitigations to think about how to release this technology safely so that we don't enable this degenerate spiral. One second thing to think about is liability. It can be argued that you want to be able to argue at some point in time that you can deny that you sent an email. And so the way that a lot of mail servers do this is every year or six months, they'll rotate their mail server keys and release their past keys. And some of them will even release the past secret keys, meaning that if you get an email more than a year old that someone could have easily forged it using that secret key that was released. And so this poses problems both for the scheme, but also is a good question of do we want to enable and encourage this or do we think that this is something that we should hold people accountable to for a long period of time? And finally, one interesting thing is that if we want a nullifier, that is something that would avoid people from claiming again and again and again their identity on chain or possibly selling this identity even, then we have to allow a nullifier which is derived from the information in the email. But this would allow the sending mail server to de-anonymize someone. And so there's a trade-off here where you can either have uniqueness and anonymity or you can have the mail server able to de-anonymize the people who are interacting with the protocol. So I'm gonna talk about a couple of different applications you can build that require no server. You can build something like proof of personhood. And one way you could do this is you can verify in zero knowledge that someone received an email from a KYC provider that checked their KYC, but you don't reveal any of the information about their personal information or the KYC information. And thus you can prove that someone was an individual human but not reveal who they are. You can do something like have Edward Snowden release the NSA emails on chain and prove that they came from the NSA but not that he was Edward Snowden. You can do something like proof of company where you prove that you work at a certain company or a certain domain and you mask out all the rest of the information enabling something like ZK Glassdoor or ZK Blind. You can do oracles. If oracles send emails to you with information say price feeds or any other information that you want on chain, you can simply verify these email headers on chain and not have any centralized server that you trust or decentralized network of verifies that you have to trust to accurately represent this data. I can keep going on and on but you can imagine that any data that you can have in an email you can verify on chain using this primitive. This is extremely powerful for decentralized and anonymous applications and we think this is gonna enable a whole new era of ideas. Proof of residence you can do by proving for instance you have a gas bill or a water bill, the oracles, Glassdoor. And the number of anonymous groups you can create is also quite unlimited. You can prove for instance groups of people who have 10 million Twitter followers or people you can prove that you made some call option on Robinhood that went really well or you can prove that you have some dollar bill bank account, dollar bills in your Chase account because Chase actually sends your balance to you in plain text if you request it. I just wanna point out one thing is like right now the one thing we have to rely on is DNS so either we hard code the DNS keys the keys in the DNS in the contract where we get it from chain link. Now if only we had something called DNSSEC which had actually taken over we could have actually done all of this in a contract because we could have just verified the certificate like to the root trust but unfortunately nobody ended up using DNSSEC so we can't do that. So if you're interested in any of these primitives we're working on them at Persona Labs and we'd love if people reached out and were able to help us or we're interested in talking more we think this is a very fascinating interesting space and it's gonna rapidly change how we think about decentralized identity over the next year or two. If you want to see more updates about proof of email including. It's not that weird but eventually. Eventually. If you wanna see more updates about proof of email including our website or open source code and experiments as we release them we recommend following us on proof of email and our front end where you can generate your own email and your own ZK proof from an email is live at zkemail.xyz. The user flow is you have to go through these four steps but you'll notice that there is no sending to server involved. And we had a great brainstorming session in the morning in which we got a ton of these ideas together so kudos to all the people who came to the morning session and helped us come up with the ideas that you saw earlier. Awesome thank you so much and we'll take any questions. Thank you. Do we have any questions? So the NSA example is cool because it's like oh Edward Snowden could have done this without revealing his identity. But on the flip side a Russian spy within the NSA could also just reveal all of the NSA's information and never reveal who they are. How are you guys thinking about how to prevent stuff like this from happening or what safeguards can we build? Yeah this is a great question and this kind of comes back to the tragedy of the comments point that we brought up. I think part of this is that you have to enable some amount of accountability ideally in these situations and this can come in the form of say like upvotes and downvotes where if certain, if you have like say an LFR associated with a certain account or certain address and this account gets a certain number of downvotes then you can hide this from feeds that are being shown to users. So although the data will forever be immutable on chain from the perspective of users who might benefit from this or get harmed by this you can at least do your best to shield them from it. But part of it is that it might be very difficult to solve these problems and it requires a lot of thought to think about how to do this very carefully. That's a great question though. Who's there one over here? Okay thank you. I'm from Unipass and finally somebody discovered the emails. We are also using emails as a proof of ownership of the smart control wallet and my question is how is the cost of the ZKP on chain? Like you know you have to verify RSA signatures, you have to verify ZK proof. So we are building the same solution so I wonder what's your benchmark now? Yeah. So right now since we are hard coding the DNS keys we don't actually have to verify any signatures on chain. So the only thing we verify is obviously the verification of the ZK proof which is a grad 16 proof and usually that takes about I think like 400, 500 K gas. It's a constant time thing. Yeah 400 K right? Yeah 400 K gas. Including the RSA verification. Which RSA verification? You have to verify the DKM signature right? It's RSA signature. Oh that's verified already inside the circuit. From the VP. Yeah. ZKP covered this right? Yeah that's all verified inside the circuit. But why you have to put the DKM public key on chain? Because then anybody could just take any random like RSA key and just use that to sign their own header. So it's just like a DPKI right? Availability purpose? So what do you say DPKI? DPKI is a centralized public key infrastructure. It means you just put the public key on chain to like others can verify. Yeah yeah exactly. And the contract also. They can verify with a simple HTTP request actually. Yeah so like our front end just makes a DNS request to just check that. But yeah but like on the smart contract we have to hard code it or we could use a chain link or a code to fetch the DNS as well. So I won't take too much time. We can talk later. Yeah.