Submind YouTube summaries
Thumbnail for NorthSec 2025 - Christian Paquin - Enhancing Identity Credential Privacy with Zero-Knowledge Proofs

NorthSec 2025 - Christian Paquin - Enhancing Identity Credential Privacy with Zero-Knowledge Proofs

Watch on YouTube

Video summary

Christian Paquin opens his presentation at NorthSec 2025 by reflecting on how public perception of zero-knowledge technologies has shifted dramatically over the last quarter-century. He recalls early skepticism regarding companies named "Zero Knowledge Systems," noting that while such concepts once sounded counterintuitive, they are now foundational to established architectures like Zero Trust. This resurgence in privacy interest drives his work at Microsoft Research, where he explores advanced cryptographic methods five to ten years ahead of commercial product teams. The core focus is enhancing online identity credentials to protect user data without compromising the ability to verify essential attributes, effectively bringing strong privacy principles back into mainstream digital life. The talk addresses a critical flaw in current electronic identity systems: they often force users to disclose excessive information or create permanent links between their activities and specific locations. Paquin illustrates this with the example of proving one's age at a bar; while physically crossing out unnecessary details on a driver's license works, doing so digitally is impossible because standard tokens like JSON Web Tokens (JWTs) cannot be modified without invalidating their cryptographic signatures. Furthermore, these digital credentials often contain unique identifiers or "correlation handles" that allow verifiers to track users across different sessions and services. To solve this, Paquin introduces the concept of unlinkable proofs using Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge (zk-SNARKs), which allow a user to prove statements like being over 18 without revealing their exact birth date or linking that proof to any other transaction in the ecosystem. To demonstrate practical viability, Paquin presents "Crescent," an innovative project designed to add privacy layers on top of existing credential infrastructures rather than requiring complete system replacements. The technology utilizes a two-phase approach where computationally intensive preparation happens once when a user obtains or updates their credentials, while the actual presentation phase is nearly instantaneous and can be performed directly in a web browser without heavy hardware requirements like specialized secure elements. During his live demo, he shows how an employee named Alice can seamlessly verify her age for social media access or prove current employment to a healthcare provider without revealing sensitive details such as her full name, specific email address, or exact location within the company network, ensuring that even if logs are inspected by colluding parties, individual identities remain protected. In conclusion, Paquin argues that while we cannot control every aspect of the broader internet ecosystem's business models regarding data collection, cryptographic tools can ensure that what is voluntarily disclosed remains unlinkable and minimal. He acknowledges limitations such as revocation mechanisms relying on underlying token lifecycles rather than proof expiration, but emphasizes that these are manageable within existing frameworks like Mobile Driver's Licenses (MDLs). The ultimate goal of this work is to build a practical layer where users maintain control over their digital footprint, allowing them to prove necessary facts about themselves without leaking private information or creating permanent trails that could be used for surveillance.
Read the full video transcript
Hopefully my voice will last for the duration of the talk. It's great to be back in my native Montreal and to be invited at Nord sect again. And I'm surprised by how many people uh showed up on a post-launch Friday afternoon, sunny like in in a beautiful Montreal like this to come hear about zero knowledge technologies. It's funny because um my first job when I graduated here uh was for a company called Zero Knowledge Systems back when we used to party like in 1999. And at the time I was talking to a few people and they always you know told me things like why is this company called zero knowledge system? Like that sounds stupid sounds like you're you don't know anything. Why would we work with you? And now it feels that almost 25 years later where things as established as zero trust architectures and these type of things then people get it. It's like okay we don't have to trust you and then in this case we don't have to trust you with our data. So privacy is back a big comeback in the the the last few years. So that's been a an interest of mine for at at the early stage of my career and I'm happy to to get back to it and try to provide more privacy specifically in in the world of online identities. So yeah, I I I've been in this field a lot. uh and in in our team at Microsoft research, we do things that are 5 to 10 years ahead of of the product teams and and try to explore technologies um that could become practical and use in to solve today's problems and this is very much what we'll be discussing today. Okay. So when we say identity, that's one of the first thing that could come to mind. If you live here in Quebec, you probably have one of these in your in your wallet. This is a I got that from the SLQ website. So, it's like a it's it's it's a sample uh driver's license, and we use it, of course, to prove that we're allowed to drive, but it has a lot of other uh uses. And specifically, for it's very common to say if you want to go walk into a bar or there's some some some alcohol, they they need to ask you, okay, are you over 20 over 18? Sorry. Over 21 is my new American mentality. So, if you're over 18, and of course, we just show our driver's license to do that. Of course, I'm providing way more information than I need to do when I do that, right? Because I'm actually showing my name, my address, a lot of information that uh the person asking doesn't need to know. But because this is an ephemeral uh transaction and the barman doesn't have photographic memory and won't like record all this information in the log, it's fine for our, you know, personal day-to-day threat model. But when we're starting to migrate these identity credentials online, uh things are quite different, right? We be very kind of wary to present an electronic version of this credential to a website. And we've seen in the news, it's it's it's been discussed a lot that a lot of websites they want to know or they're forced to they're forced to to check the age of their participants, social networks as well. And not just that, but all the other information that they are on your credential, state of residence or province of residence, these type of things. Okay, so let's imagine how that would work. So, if in real life I would like to only be able to show that I'm over 21, what could I do? Well, I could take a, you know, a marker pen and just cross out all the information that I don't want to share. And that's still authentic. I the plastic of the card and the security, you know, protection is still intact. My face is still there. Let's just forget about the face identity for now. And now I just leave the date of birth. So, I was like, okay, great. Now, the person can let me in with a minimal set of information, but it's not actually quite minimal because I am disclosing more than the fact that I'm over 18. I'm showing my full date of birth. It's losing my age and I I should I could should should go a step further and just cross out the month and the uh the day of my birth and just show the year and say, "Okay, you know, now you're convinced I'm over 18." And I still need to show that this document is valid. So I can cross out the specific um day and time of the validation period. But again, that's not minimal, right? the real minimal information is a booleans like yes or no are you over 18 and that's what zero knowledge type technology is what can help us do and just have an equivalent of just having a magic marker that says yes the date that I'm not disclosing to you is such that I'm over 18 so we know how to do that cryptographically uh this problem has been a long uh it's been there for a long time and we uh we will see how we're going to apply that to this use case. But before we do that, let's get a little summary of how online identity works today. So there are two main types of identity credentials. We have X509 certificates which have been around forever and they haven't changed much uh in the last couple of decades. And these you you get them issue there's associated private key so you can lock it in in hardware in a very secure system and you present it and you can prove like okay I'm the person who I say am identity certificates that's not or attribute certificates which have not been really popular but these exist as well and the far more common uh credential types today is called a JSON web token or a jot And these are used everywhere in open open ID in in oath in all sorts of protocols and they kind of replace the SML WS trust type protocols that we had uh a couple of decade ago. And how does these things work? So an issuer certifies some claims or attributes about you and gives you this token this credential. It is signed cryptographically so you cannot modify it. It can be tied to a private key. So nobody else can present it on your behalf without access to the private key. And then when you present that to a verifier they can check if they trust the issuer. That works and so long certificates you get them in advance and then you can present but you can't modify the content. You cannot take the black marker pen and erase some attributes otherwise that would invalidate the signature. you need all the data to see it. And if you only want to show your data birth, what would you would need to do in modern like oath type accesses is that I'm going to just ask for these attributes to the issuer. on demand in real time. I need to go to the issuer get the token specifically for the access I'm trying to get and present that which is better for privacy on what about what I'm disclosing but it means that I need to ping the issuer and therefore maybe they learn where I'm going and they get a bit more information that they would need because when I show my driver's license to get into a bar the government doesn't magically get notified of that fact. So in a way we we kind of want a system that's that would take the best of both worlds to be able to cater what we're showing with the independence of not once the the credential is issued to me I I have the control and I can do what I want with it without having to contact the issuer. Okay. So there's a new generation of credentials that provide what um we call selective disclosure. So this ability to cross out some attributes. So how do do do these work? The first one is well I'll start with the second bullet point. It's the mobile drivers license uh specification. It's developed in ISO. It's been developed for for many years. And uh after that the Jot ecosystem the JSON web token kind of replicated some of these features in a new profile that's called selective disclosure uh JSON web tokens or SD jots and how it works is that instead of encoding your attributes directly in your credential you take a random salt and then you ash the data in the digest of that you um you encode in the credential. So what goes in your certified token is just gibberish. It's a bit like you know the the password file. So you put your password that's not in clear what's in on the server. It's a a a mix with some ash uh with some salt random salts to prevent brute forcing these values. And then when I want to present this token what I do is here it is. It's a certified set of gibberish by the issuer. I did not modify it. And by the way, attribute number two is my last name. And here's the pre-image um and and and the salt that was used to to create this value. So if I didn't know that, I would not be able to present it. And if that was I couldn't pro prove a wrong value because I would not be able to come up with a pre-image to that hash that would result in the same digest that's in the credential. So MDLs are being pushed a lot these days. I was trying to look at the state of deployments in Canada and AMVA is the association I forget the acronym what it stands for but you can see at this URL uh it's it it's the organization that defines mobile driver's license profiles in North America that's why you can go in the US present your driver's license they they know how to read it it's all the same schema so it's going to carry over in the electronic world and we see that in the states the purpleish states It's already have deployments. Actually, I have one from the state of Virginia where I live. Uh that's it's standard uh trial periods and trial settings. I'll try to use it at a TSA and it didn't work uh because their reader didn't work. But it's it's getting there. So, these things are are real and they're coming and they're they're coming fast. Okay. So, that sounds like a good news. There's only one little problem and is the notion of the unlinkability. So what I was saying, so when I present my driver's license to go in a bar, the government doesn't know that I went there when it's when it's paper. But electronically, this um credential has a lot of what I call correlation handles, little unique fingerprints. So it could be personally identifiable information in the credential that you're disclosing. It could be the public key that's always you cannot present the token without showing this value and that's a unique number. So is the signature. So when you're presenting this you're leaving digital fingerprints everywhere. And after that, if even if you didn't ask for token from the issuer, you could an issuer looking at these logs could find out where you went or the ads, you know, ecosystem could do that or collusions between verifiers being uh malicious or just that's their business. Let's not forget that the web 2.0 that we know today has been built on a business model of tracking users. So we'd like to avoid our digital life to become a game of where's Charlie or where's Waldo and you know so okay where did Christian go today let's look at all the logs and he's been there and there and there of course that's less than ideal again cryptography comes to the rescue with some magic technologies that can prevent this these linkages we have what's known as unlinkable signature There's two flavors. One is blind signatures and the other one is signatures with proof protocols. And essentially is that the credential you get gets randomized by the user either uh at issuance or at presentation. That's the different between these two types of protocols. And then you can also do that black marking but in a different way than just providing the hashbased mechanism that I said earlier. It's a stronger cryptographic uh mechanism that provides uh the perfect privacy we call you cannot enumerate the salt and figure it out. You cannot brute force it. It's just if you don't know you will never be able to figure out what's under that black marker pen. Okay. So that seems like a good best of both world way to deploy that to to solve that problem. And when I do that, nobody in collusion even and maliciously can try to track and trace me wherever I went online. But again, the problem is like cryptographers, we like to work in ideal systems that typically do not exist in real life. So deploying these things have been hard for the last 20 years and nobody had great success. Um and mostly because hardware uh requirements are not there like this the TPMs the secure elements on the phones they don't support these types of signatures and changing the issuance infrastructures like all the DMVs the the the let's like the SQ equivalent in the US that that would be very difficult. So now let's switch gear a little bit. I I'll talk about this new project that we've been working on to work on this assumption. So let's just assume we can't change any of these systems today. And what we're going to do is use this new types of zero knowledge proofs to work on top of these existing credentials. And in a sense, so when a user you get a a a credential of any of these types, you could create a proof that says something like, "Yeah, I'm over 18 or I reside in Virginia or I work for this company." Any type of real true statements that you can make out of the claims that are encoded in the token, you're you're you're able to do with zero knowledge. The question is, how practical is it? Is it just science fiction or can we actually deploy that in real life? And that's what our project is is hoping to demonstrate. I don't want to scare anybody, but just a few kind of behind thes scenes look of of keywords of of things that we're using. If you know what these things are, good. You might look uh and try to learn more about it. If you uh if you don't, then uh I hope you learned something. So since the 80s the zero knowledge protocols have been you know studied and they were quite efficient until this this new things called ZK snarks uh came about and really made things more practical and more efficient and really okay so this the the very long acronym of ZK snark zero knowledge means when you prove something you don't leak more information as my initial example when I showed my I'm over 18 by showing my date or my year of birth, I'm leaking information. I'm leaking my age. If I just prove a boolean, I'm not leaking any more information. So that's zero knowledge part. Suent means small. It's very compact. A few bytes, it's like 200 bytes to to be able to show very complex statements uh and very efficiently or at least the val the validation is very efficient. Non-interactive it means I don't have it's not a protocol. I can just create it and present it to a website. So it's very useful like to log in to websites these type of of scenarios. And the arguments of knowledge means that I need to know what I'm proving. I cannot uh pro prove false statements. And we're using uh this grut 16 u proof system which has been around for a long time and it's been kind of battle tested. It's used what's that was used in Zcash if you know what that is the anonymous kind of bitcoin system. And we have the innovation that we created in in crescent versus these other uh grout 16 type systems is that if you know anything about that you might have heard that it's very inefficient to create proofs. It takes a long time you know uh and it's not very practical. But a lot of this circuitry is to prove things like I have a credential and I'm uh going to prove that all the hash data I had like the shot 256 things ash the things that signed by the issuer. I'm going to prove that I have a valid signature and that the signature is correct but I'm not going to show it to you. I can prove that I own the private key associated with the public key in the token and uh I can I'm going to sign a challenge by the verifier but I'm not going to disclose the signature value but I can all prove that I did that work without disclosing it to you and you create a bunch of of constraints but these things you kind of have to do kind of once like the the issuer signature doesn't change so I don't have to prove that a lot so I can pre-process a lot of that work in a prepare phase and that's the inefficient one and we're able to keep only the live things like to answer the challenge of the verifier and this deciding what I'm disclosing uh in the second very efficient phase that we can do on you know on a phone or something like that. So that's the if you're a zero knowledge aware person uh the innovation that we have in crescent is make the showing phase very efficient and um think I'm just going to skip that uh but some you know little Peterson vector commitment there if you're crypto aware and and and you like to see some of the details but um that we're we're able to kind of split off And now I'll show the demo and explain that uh live but essentially it's a modular way to plug in different things I want to prove. So we'll do kind of disclosure one attribute and a range proof to show that the dates expiry date is smaller than than or further away than the date of today. Okay, I'm going to skip that and just show the demo directly. And I'm tempting the demo gods by doing a live demo with like three Rust servers here on my my machine. So let's see if it works. Okay, I'm going to play the role of Alice and she works for Kontoso, which is the Microsoft default sample company that we have. So that's the name. And she logs into her administrative account. And then all right, welcome. And now this is you can get your employment verification JSON web tokens. So this is a weird UI. It's just so it can show things on the on on the screen. So let's say she gets her token and it looks something like that. Threepart B 64 of of a JSON web signature. Great. So what she's going to do now is she has a wallet that we've we've built the crescent sample wallet. It's in the browser and it says, "Oh, do you want to import this JSON web token?" Like, let's do that. And you notice she already has her mobile driver's license in there that she obtained before. Perfect. So, now it's the preparing. So, now it's doing that one time long proof. It's going to take a minute or so, but once it's in your wallet, you can use it very efficiently. So, let's that work. Let's go to another thing. She decides to join this social website. It's a very cool, edgy um social network. I wouldn't know anything about it because I'm not that cool, but they do ask to verify your age. In this case, it's 18. It could be 16. Okay. Well, she can do that with her mobile driver's license. So, if she opens the Crescent um wallet here, she sees, oh, this website would like to verify your age. Do you want to disclose that you're over 18 to social? Let's do that. And that's that the whole point of demo is just to show that the presentation and the verification of these things. It's it's for the user experience is is transparent. It's it's very fast. And now she can go and and sign up. So what happened there? I took the MDL. I didn't send the MDL directly. I just create a proof saying I have a valid mobile driver's license from the state of Virginia. And um I've demonstrated the the position of the private key without showing you the equivalent public key that's in there. And I've demonstrated that the signature of the issuer is valid without showing it to you. So there's no linkage linkable elements in the proof that I presented. And the only thing that the uh verifier needs to trust is knowing about kind of the custom the crescent system parameters which would be shared by you know the full ecosystem. AMVA there would be one for North America and trusting the original issuer which is the DMV system. They have their own PKI there. So you have to trust that as always. Perfect. Now because she did a lot of social networking, Alice would like to now need some mental counseling just to counter uh the effect of all this social networking. and her employer provides a service access to a mental health uh practitioner. But of course, you know, you might want to do that and access it to talk about sensitive issues, personal issues, and you might not even want your employer to know that you did that, right? Uh depending on what the issues. So, what you can do is present your employment credential. So just my my work credential and just disclose that okay my email address that's in the token. I'm not disclosing my full email address but just the domain part and it's from a current JSON web token and I'm also going to disclose the the US location because the the website asked for it and I'm like fine. And then again I'm logged in immediately and I don't have a relationship with this service provider. The only thing they know is that oh that's a current employee. So you know we can uh as as the the contract we have with the employer but I don't know which one of their employees and even if the employer you know IT admins and and the the the verifiers admins get together inspect all the logs they would not be able to figure out that this is Alice. It's one of the many current employees of the company. So that's um that's a demo. I'll link to the slides uh on my uh on my socials afterwards. So uh if you want to get the details, but um which I'm running out of time now, so I'm just going to open the floor for questions if anything. So that's in conclusion that's coming technologies these MDLs and all these things and the interesting thing is can we built the layer to have like the privacy that we would like as you know as a society on top of that. Thank you. >> Oh that's good. Thanks. >> I'm happy to answer any questions if any comments. Yes. So there must be a an expiry time not even a day because it should be shortlived when you present is generated every time. >> So the question is is your proof valid like forever or is there expiry date uh time to um to the proof that you're creating? Yeah, it's it's configurable is however you want as a deployer. So uh yeah, right now like we have a default of like five minutes or whatever, but it's it's it's a config that you set in in your proof system. Yes. Second topus validation. >> Yes. Okay. So the question is that prepare phase how you know how long live can it be because it's uh at some point your token will be expired. You will not be able to create a valid proof. That's fine. So the the prepare phase is valid forever because you're proving you know uh the the signature of the issuer signed that that's going to be true forever and then when you try to present it you will not be able to create a valid proof that it's not expired anymore because the the today is like part of the of the second phase because that changes every time. So everything that's dynamic is part of that second phase. Everything that's static is uh in the first phase. And the the the good thing is that that's the long part. So we're we're able to premp compute a lot of that very long thing which only took a minute you know on my laptop. Um but still it's not a good experience to wait for a minute for user experience but the second phase is really instantaneous. Is there any way? >> Ken, is there a way to prevent people to what? >> To prevent like service providers to >> ask things. Ask me things. Yeah. >> Uhhuh. Right. So the question is how can we prevent relying parties or fires to ask for too many things like I mean we can't. It's just that's their policy, right? It's just you need to show us this to access and so I mean it's it's kind of a a business problem. It seems like if privacy is important for people and you know a lot of companies are marketing privacy more and more these days. So uh it's going to be kind of a choice dictated by by the ecosystem. What the system does is that the user has to explicitly kind of view what's being asked and agree to it and present these things actively. It's not behind the scenes in you know a lot like JB tokens that you don't even know what's being disclosed. So at least there's a benefit there's a user centricity to it. Question >> maybe >> when you revoke access yeah okay so the question is how do you revoke access when somebody leaves the job? So the thing is you only prove true statements about your current credential. So if the credential itself has a revocation mechanism, you would also need to kind of prove that you're not currently revoked based on that one. So in these examples, uh we don't want like the the MDL, I think their model is that they they want to avoid that and they uh they want to have like monthly your driver's license valid for 5 years, but you're going to have monthly renewal of these MDLs or things like that. So uh depending on how they revoke the the classic token is we just follow that with with these type of proofs. >> Yes. As that number likelihood of the two are separated. >> Yeah. So you're asking uh if I may paraphrase, you're asking like timing correlation between getting a token and presenting it. Yeah. So now that's getting very nitty-gritty and I love these like analysis. So this in it's the these are all kind of side channels that you can attack if you really want to track somebody or a group of people you can measure a lot of things. That's how you know the tax on tour and these type of things work like who gets in the network and who gets out you can correlate a lot of that. So with these type of longive credentials long liveish that's why you want to get it in advance and then use it as you need. So if you just request it and present it one way that that that could leak information. But yeah, so we we live in the real world and there's a lot of ways that that you can leak this type of data. At least what we're working on is that the crypto itself, the crypto wrapper of these tokens do not leak anything. That's what the best we can do in a practical manner here. And then the rest of system of course needs to be built according to whatever threat model you're trying to achieve. Any other question? Was that a question? No. Right. All right. Well, thank you every everybody for your time. Enjoy the rest of the conference.