It uses MPC and ZK to prove some data from a server (that uses TLS) is authentic given some request.
One of the simple demos is proving you received a DM from someone on twitter, without sharing your session token or login credentials with the other party.
Another idea is proving you know some exploit (think sql injection) without revealing how you did it.
Or proving you purchased some item off a website so you can review it on a neutral platform (amazon reviews but without amazon being able to manipulate the votes)
This is amazing. Cryptography is truly the sorcery of our age.
FYI its in rust, and its very much in alpha, but if you like diving in and are comfortable with rust, come play 😁
Having to have a trustworthy notary interactively as part of the protocol during the TLS request seems like it shuts out a lot of applications.
I wonder if it could be done with zk-STARKs, with the session transcript and ephemeral keys as secret inputs, and a CA certificate as a public input, to produce a proof of the property without the need for the notary. That would then mean the only roles are TLS server, prover, and verifier, with no interactive dependency between the prover and verifier (i.e. the prover could generate the proof first, that can non-interactively verified at any time later by any number of verifiers).
Considering data is secured from the notary, it might be that large companies (Google, Microsoft, Apple, other foundations) might run free notaries.
Like how LetsEncrypt does free TLS certs for websites, or how Google (and many others) provide free STUN servers for webrtc. I imagine it’s fairly low traffic, and fairly light encryption (being TLS, it’s pretty optimised and hardware accelerated).If it picks up as a “widely useful thing” like STUN signalling did, there might be things like browsers being able to configure a Notary server (so you can self host if you want, or use one provided by your email provider or your ISP or whatever)
Wait, is this sort of like an SSH tunnel?
Its a bit more complicated than that. There is a fair bit of cryptography that happens where you basically cooperate with another party to communicate with the server in a way where you cant cheat.
Yeah, I’m not being reductive, just trying to understand the mechanics. The notary is making requests on behalf of the other, right?
I will quote the devs directly: “This Verifier is not “a man in the middle”. Instead, the Verifier participates in a secure multi-party computation (MPC) to jointly operate the TLS connection without seeing the data in plain text.”
Yeah, I don’t think SSH tunnel can snoop either, but maybe I misunderstand them.