New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Unlock Web2 Data with TLSNotary: Hands-On Workshop

Devcon 7 SEATue, Nov 19, 2024, 04:26 PM · 1:25:23

Join our hands-on workshop to master **TLSNotary**! Dive into multi-party-TLS and learn to prove and verify online data authenticity to a third-party verifier while ensuring privacy. We’ll start with small examples in Rust and build up to custom browser extensions in TypeScript to collect and verify private user data. Bring your laptop, bring a friend, and learn together. Get ready to unlock and compose Web2 data in innovative ways.

Transcript

Thank you. How about now? There we go. So transport layer security, TLS is an old protocol. It's ubiquitous.

It's all over the Internet. Basically everything supports it. If you're not using it, you probably should be. And the important thing is that all websites already support it. And so, yeah, basically, it's a protocol between your computer and a website that you're connecting to.

It's using cryptography. So you can query data from a website and know that you're talking to the website you expect and your communications are protected. But one thing that it can't do for you is you can't query data from a website and then present it to another party. There's reasons for this that I won't really go into, but you can just know safely that it's not possible to just take a TLS transcript and send it to someone else. They won't know whether or not the data is actually authentic.

But TLS, there are signatures there. There's cryptography there. And maybe we can plug into it and somehow leverage it for what we want to do, which is to allow people to privately prove data to a third party. I'm not sure if you've come across this jargon before. There's multiple different terms, multiple different approaches for generally the same thing.

MPC TLS, CKTLS, web proofs, TLS middle boxes, Windows proxy. They're all essentially trying to do the same thing. We've implemented MPC TLS, and this leverages multi-party computation and zero-knowledge proofs in order to allow a prover to privately disclose data to a verifier in an implicitly secure way. And then there's other approaches, like a proxy approach, which kind of switches up the topology here, which puts the verifier in between the prover and the website. But, oh, right.

One thing to note here is that both these approaches, both the MPC TLS approach and the ZK TLS proxy mode, whatever you want to call it, these are both designated verifier protocols, which means that it's really between two parties, and the only party who really receives cryptographic assurances is the verifier that's actually running the protocol itself. So sorry for everyone that wants to do things on-chain. This does not give you trustless oracles, but it does give you a trustless off-chain designated verifier protocol. And yeah, all approaches kind of all go towards the same affordances, which is that it allows you to basically compose with any application. If there is data on the Internet, which is queryable using TLS, you can trustlessly compose with it and without asking for permission.

So all servers are already running TLS. So you can basically take our protocol Wired into your application And now users can just Prove arbitrary data to you In a privacy preserving manner And just to Elaborate on the Privacy part there, user can Query data from some arbitrary data Source and present it to your application While redacting their secrets Such as their cookies and their HTTP request. They can redact data in the response. And we're probably not going to get into it today, but you can also do zero-knowledge proofs over the top of that data, such as hiding your address but proving you're not in the United States, and then the classic example of proving that you're above some age without revealing your exact birth date. Yeah, so those are the general affordances that these protocols provide.

TLS Notary is free, open source. The core protocol is written in Rust. We have TypeScript bindings. We're going to demo a browser extension slash plugin system, which is just one way of distributing the TLS notary protocol. And yeah, it's Apache, MIT, dual licensed at your option.

Do whatever you want with it. Yeah, so that's an introduction to generally what TLS notary is and what it does. And yeah, let's just hop straight into building something. So good afternoon. I'm Hendrik, also from the TLS Notary team.

And this is our schedule for the workshop today. We are plenty of members of the TLS Notary team. So if you have questions, there's Tanner, Ryan. Who else do I see? Thomas in the back, Chris.

And then Tsukino and Sinu. So just if you run into any questions, just ask. So we just had this great introduction to TLS Notary. We'll start with coding part one. So that will be mainly on your own machine, everything offline so that we don't run into any network problems.

Then we'll do some experiments with TLS Notary where you work together with your neighbor. So just distribute the roles. And then we'll also switch to the browser extension. Where we'll do a demo first, and then Tsukino will give an overview of how all browser setup works. Then we'll switch to coding part two, where we'll build our own plugins.

And then we'll do a short, an extra slide with some, where we go into the future of TLS Notary and discuss what comes up next. And then there's some play time where we invite you to build your own plugins or build on top of TLS Notary and we're here to help you. And then we're also very open to hear all your questions. So some tips and tricks for the workshop. So don't rush through all the items.

We have time. There is a HackMD document. It allows for adding comments. So if you run into things that don't make sense or you see typos or whatever, just comment so that we can improve it for next time. Also, check the Wi-Fi.

So there is a local Wi-Fi network here that allows us to connect to each other. So make sure you're on the, yeah, I can't read the name, but I think it's a classroom network. The network, the password is also over there. Also for the web devs that will do a little bit of rust, but it's only reading Rust code, so don't be intimidated. You should be fine.

And also, as I said, the TLS Notary team is here, so if you have questions, just ask them. So, if you go to this URL, you will find the classroom notes. And yeah, if you have any issues, just call us and then we will help. So maybe a quick overview of what we will do there. So we will start with the most basic setup of TLS Notary, where we just have a server, a prover, and a verifier, where everything is on the same networks on your local computer.

So we'll start with starting all the necessary services. And then the prover will do the request to the web server with the cooperation of the verifier. This will return in an attestation. We will then create a presentation where we redact some information, and then the verifier will verify the info. And then the second part, we will work with a neutral notary, so where the roles of the verifying parts are split up.

So this is all in Rust. And then in the third part of the example, we will run the prover in the browser. And then in the nodes, you will see that then we will also distribute the roles. So you could run the prover and your neighbor could be the test server and another neighbor could be the verifier. Should be fun.

Any questions so far? So the question was which repository for the first item, so that's the TLS and repository Sorry, so if you didn't bring your laptop, this will be a very boring workshop, I'm afraid. So maybe then just chat with some of us and ask us your questions. Vielen Dank. Thank you.

Thank you. Amen. Vielen Dank. Thank you. If you have an error message running the last command, don't stress, that's for further in the workshop.

So the prerequisites is mainly to have all the dependencies on your laptop so that you can go through the following steps. Thank you. Thank you. All right. Thank you.

If you run into a Rust C error, check your Rust compiler version and then just do Rust update to get the latest Rust compiler. Thank you. Thank you. Vielen Dank. Thank you.

Thank you. Thank you. Thank you. Vielen Dank. Thank you.

So they couldn't install the PDK. Thank you. Thank you. Thank you. Vielen Dank.

Thank you. Thank you. Thank you. Thank you. ¶¶ ¶¶ Thank you.

¶¶ Thank you. ¶¶ Thank you. Thank you. Vielen Dank. Thank you.

Automatic transcript — names and jargon may be misspelled.