May the Proof Be With You: Fighting Sybils with Self Protocol | Marek Olszewski, Celo |ETHTaipei2025
ETHTaipei 2025 · 19 Apr 2025 · 35:32
Sybil attacks and bot impersonation remain open problems, and Self Protocol tries to answer them using the NFC chip in biometric passports. Marek Olszewski of Celo explains that a zero-knowledge proof checks the passport's certificate authority signature chain without exposing its data, after which a user can selectively disclose facts such as not being on a sanctions list, tied to addresses that cannot be linked to each other. Proofs are generated inside a trusted execution environment because phones are too slow, which leaves users trusting the hardware vendor. Questions cover lost secrets, varying passport signing schemes and the effort needed to register twice.
Speakers
Topics
From ETHTaipei 2025, hosted by ETHTaipei.
Transcript
[Music] Um, so today we're going to be talking about something slightly different. Um, uh self protocol. I'm really, really excited to share this with you today. Uh, amazing. Looks like we're all done. Let me just hide the little thing at the bottom. Can I hide it? You know what? I'll just leave it.
[Music] Um, self protocol is a new protocol that we just launched uh a few weeks ago at ETH Denver. And so you you're seeing this hot off the press. Uh, so it's really really exciting. Uh, and if you like this talk, um, you can follow me at on Twitter. My DMs are open. Happy to answer any questions. Uh, and you can learn more at self.xyz. Uh, and also at self-protocol on Twitter. Um, and so the talk today is, you know, may the proof be with you, uh, fighting syibles, uh, with self-protocol. And, you know, I couldn't help myself. I had to get in on this Giblly craze, uh, and create some AI art for you. Uh, but I think the metaphor is
is actually quite fitting. Um, you know, if you think about, uh, civil attacks, um, and if you think about the the clone army in Star Wars, you know, clone army is made up of clones. Uh, and so these are all symbols. And so you can think of yourself as um kind of being one of these Jedi Knights that's using the power of self-protocol to help protect you uh against uh against these civil attacks. Um but before we talk about how exactly you're going to do this, uh I wanted to introduce a little game that we're going to play uh during this talk and the game is guest country. Um, so throughout my slides, you know, it's the afternoon, it's after lunch. Uh, I want
to wake you guys up a little bit. Uh, and the way I want to do that is I've um sprinkled a few country shapes throughout uh these talks. And so if you see a country that you recognize, just yell out the name. We're going to try to make this competitive. We're going to maybe do um like left side of here and the right side of here. Try to make uh you guys compete against each other. If you don't recognize a country name, just guess. Um, you know, the idea here is to make this fun, make this interactive. And so, just to um start you guys off with an easy country, Australia. Okay, the left side's already winning, guys. What are you doing on the
right? And I should add, you know, this isn't arbitrary. Each of these countries uh is supported by self-protocol. Uh, Taiwan of course is also supported, but that would have been too easy for you guys, so it's not here on the slides. Okay, one more little warm-up. France. France. Okay, one one. Next one. Canada. Canada. Okay, right side is winning now. You guys on the left have to step it up. Okay, so now that you guys have an idea of what the game's like, again, look for country shapes. They're going to be like sprinkled on top of my slides. And if you see a country you recognize, just yell it out. Okay. So, I wanted to start by, you know, talking about some of the biggest
problems in crypto. Um, what do you guys think? What are some of the big kind of unsolved problems that are plaguing us today? Any guesses? Nothing. Are we done? Too many. Too many problems. Okay. What are some of them? I would say 100%.
Syibbles. These are real problems. Any other guesses? No problems. Liquidity fragmentation. That's a good one. Anything else? Privacy. UX. Yes. Okay. Finally, you guys are warming up. Lots and lots of problems. Any last remaining problems? Really good. A lot of the finance is collateral based. Um, a lot of lending markets require you to deposit collateral.
Um, possibly also related to uh the fact that we're using capital as a way to uh solve civil problems. Okay. So, uh I agree with you. Yes. Are you sibling is a big problem that we continue to struggle with with answering. Uh it's a little ironic because proof of work in theory uh look to solve this. Uh but it requires a lot of electricity. Uh proof of stake solves this as well, but it requires a lot of capital like those collateralbased lending markets. Uh and then WorldCoin has solved this using you know these orbs. Uh, but you have to be physically close to one of these orbs and you have to be willing to, you know, give up the privacy of your of how your iris looks. And so, arguably, um, that
hasn't solved the problem either. And so, uh, are you sibling is kind of this open question that we've really struggled with as a ecosystem to to solve completely. Anybody want to guess that country? Spain. Spain. Yes. I think that was on the left. So we're two two. Uh so it's still neck and neck. Uh another problem which I don't think anybody mentioned just now is are you a bad actor? Right? We had a a rude reminder of this a few weeks ago with the buy bit hack. You know this is something that we really struggle with as an industry and it's very very difficult in a decentralized way to offer mechanisms to try to filter out
bad actors. Um and so I would argue that this is a big big unsolved problem today. And then finally, who would have thought Singapore is right? 32 to the left side. Let's keep going. Um, are you human? Who would have thought we'd be having to worry about this question uh in today's day and age? But yet with AI agents today, you know, this is increasingly becoming a problem. I don't know, has anyone here read a tweet and wondered, did a human write that or was it just an AI agent?
Anybody? Okay, at least one person's on Twitter. Uh there's a lot of crap on Twitter lately. It's crazy. Uh and so it'd be quite useful to to be able to know if these are are bots creating this content or not. And arguably, it actually be useful for these AI agents themselves to know whether or not they are interacting with humans or not. Um, and certainly over time once hum once AI agents are doing all the work and we're all living off of a UBI um certainly it'd be useful at that point for uh for us to be able to know who's a human and who isn't uh so that only humans get those UBIs. Okay. So self protocol is really a new protocol that's designed to help
among other things to answer these exact questions and it's a new decentralized you know zero knowledge zknark based protocol that we're really excited to be sharing with you today. Again we launched it just a few weeks ago at ETH Denver and it's the um result of two teams coming together. uh the open passport team which is um a team that's been funded primarily by um uh Ethereum Foundation grants for the last year and a bit uh and uh Self Labs which is a company that's spun out of the Cell Foundation and we've come together uh to bring you uh this new protocol that we're just really really excited uh to be sharing with you which again um is is
designed to help address some of those those big open questions that we're facing together as an industry. Uh, and the way it works is by piggybacking on what I like to think is the biggest meat space um attestation of your humanood. Um, the probably the best uh such attestation that you can receive and that of course is a physical passport. Who here has a physical passport? Okay, hopefully everyone. Um, and you know, one of the really nice things about passports is that, um, they're relatively difficult to get. Uh, it's very difficult, if not impossible, to get two of them. Uh, certainly from one issuing country. Um, because you
need them for travel. You generally keep them quite secure and so they're generally uh, harder to steal. Uh, and then these new biometric passports, and I say new, but really these things have been around for 20 years. Um, these passports with that little logo, the little rectangle with a circle in the middle. Those passports uh are called biometric passports and they have a NFC chip inside them that actually stores your uh biometric data u in a way that can be machine readable uh certainly by the machines at the port of entries but also uh by your mobile phones. Uh and so that makes these um identities really quite conducive to um a new uh online
identity system um that we're going to be talking about today. Turkey is right for two. You guys had like one minute to guess Turkey. Lots of time. Come on. We got to get we got to get some points on the right side over here. Okay. Okay. And so the way that these biometric passports work is they have um your biometric data. This is a data that exists on your front page of your passport stored digitally in a microchip uh in your passport and it's signed by a certificate authority chain. And what that means is it's signed by multiple
um effectively a chain of uh signatures that uh go all the way up to this uh country signing certificate authority. Right? So the data itself is signed by this document signing certificate and then that certificate can sign about 100,000 passports before it's retired and each such certificate is then signed by a country signing certificate authority. Um and typically these country signing certificate authorities um um are long lived and so if you have uh all of these public keys to these certificate authorities there's a little bit under 200 countries. Uh each country maintains roughly two of these at any
point in time. So roughly 400 certificates. If you know these 400 certificates you can validate the authenticity cryptographically of any passport in the world. And that's really powerful. And so, um, you know, these passports, they've been introduced now, um, 20 years ago, and countries have rolled these out in order to make it really hard to forge these passports, right? It's no longer good enough for you to, you know, um, print, you know, the perfect um, you know, passport copy on the perfect paper with the perfect photo. If you don't have access to one of these keys, and you know, obviously these are closely guarded by by these countries, you can't effectively forge a
biometric passport. Um, and so that's pretty nice. Uh, but what's even cooler is we can actually verify this um just using math, just using cryptography. And we can do that um without a counterparty, right? So, who here likes sharing their passport data with third parties when you're doing KYC? You know, third parties that may get hacked, may leak your data, may sell your data. Who loves sharing that data with these third parties? Anybody? Nobody, right? So, instead, what if we could um simply prove facts about yourself or even prove that you have a valid passport? Let's
just start there. uh with just cryptography where you verify that certificate authority chain on chain. So in a smart contract you verify those signatures on a chain. Who would prefer that? Yeah, a few of you, right? But it's a trick question because if we did that we would be revealing all of your passport data to everyone in the world who can have you know who has access to that chain. And so uh instead what if we could verify that certificate authority chain in zero knowledge so that you're proving it with just math with no counterparty but without revealing your data to anyone. Who would like that? Well that's in effect self. Uh self allows you to um register um where
you're effectively again proving that certificate authority chain in zero knowledge on chain without a counterparty. And once you've done that, you can then selectively disclose um specific facts about yourself in zero knowledge. Right? So today, if you need to prove that you're from a certain country or that you are uh over a certain age, you have to share all of your passport information with some counterparty that then goes and says, "Okay, yes, that looks correct. Um yes, I can do the math. you're over 18 or over 21. Um, and but to do that, you have to share all of your information
with these counterparties. But now with ZK Snark uh zero knowledge technology, we can actually prove these statements about yourself without revealing additional information about yourself. Pardon? Yes. Checka technically. Which side are you on again? Okay, so now we're at 34. We're getting we're getting close to even. Let's keep going. Um, that was a good guess. This is probably the hardest country on the map so far. Um, so yeah, so say that you want to prove that you're over a certain age, right? Um, now with self, you don't have to actually reveal your age to
prove that you're over say 18. Uh, say that you want to prove that you're not from a set of countries. You can do that without revealing what country you are from. And better yet, say that you want to prove that you're not on the OFAC list, you can actually do that now with self without revealing pretty much anything else about yourself. Uh, and so it's pretty pretty exciting. And best of all, you can do all of that and then associate these proofs with a particular address. So say that you want to interact with some DAP that maybe uh depends on one of these proofs. Maybe it's um um a trusted DEX that only allows folks who are not OFFAC sanctioned to participate in the DEX.
You can verify that you're not on the OFAC list, associate that proof with an address and from that point on uh you can have that address be basically allow listed by that DEX and then uh that effectively unlocks access to that VEX. So you can make this proof once and then from then on be able to use that VEX using your address. And if you want to use uh another address uh maybe for a different application or even the same one, you can construct another proof uh where you can again prove that you're not on the offax list associate with the address and those two addresses won't be linkable to each other. And so each of these proofs again are done fully in zero knowledge in a way that doesn't
allow you to then link um them to your identity or even to other proofs that you've generated. Okay. So you might be wondering okay um you have a rough sense of what this is. Okay. We're proving passport data in zero knowledge selectively disclosing um you know information to third party DAPs. But what does this whole experience look like? Uh we have a little recording here of the onboarding flow. So that's the first screen when you install the app. First step is to scan the passport. Turns out the data on the NFC chip is actually uh encrypted and you need to scan the front page of your passport to be able to decrypt that data. This is a nice security feature so
that someone can't bump into you and steal your passport data. Once you've uh scanned the first page of the passport, you can uh then uh tap the passport with your phone to read that NFC data. Uh once you've read the NFC data, we can generate that proof. Uh and then you're off to the races. You're on the home screen. So, let's see that one more time. That was pretty fast the first time. So, we get started. We quickly scan the front page of your passport. This allows us to then decrypt the data on the NFC chip. You read the NFC data by getting your phone onto the NFC chip on your passport. The hardest part is actually finding the NFC chip on your passport and then you generate the snark
proof and then you're done. you've onboarded. And so once you've onboarded and I should add that you can only do this once and so um say you wanted to you know use your same passport use a different phone try to register twice again try to create a civil account uh that zcase uh that snark proof effectively wouldn't allow you uh to do that and so we basically at registration prevent these civil accounts and then once you've registered now you can start interacting with DAPs that are interested in uh in learning something about yourself.
Um and the way we do that is through QR codes. So each DAP uh we have this nice web SDK. Each DAP can generate a QR code. That QR code encodes what information the DAP would like you to disclose. um that information is shown to you on the application and if you agree to disclose it you can hold down the button generate a new snark proof uh that effectively proves that disclosure. So, this could be as little as, you know, I'm someone who owns a passport without revealing, you know, who even issued that passport all the way down to disclosing everything that's on your passport page if you would like to
disclose that. Poland is right. Okay, so I think we're at 53. Okay, this is the final inning, guys. Everyone's going to pay a lot of attention now. Okay, let's see this one more time because once again that was pretty fast. So the DAP generates a QR code. We scan the QR code with the app. We look through what the DAP is requesting. If you agree to reveal that, you hold to verify. We generate a new snark proof. If that DAP is a web two DAP, the proof is sent to that DAP through a web hook.
If it's a web three DAP, then we write the proof directly onto chain where it can be verified onchain. And so this self-supports both web two and web 3 use cases. And again, you can you can send those proofs either onchain or offchain depending on your need. Okay, so how does all of this work? Well, it starts with a passport, of course, the biometric passport with a NFC chip. We have our mobile application that reads the NFC data. Um, one thing that we we did that we um we think is very important is we generate a secret for every passport and we then back it up in in the um in the key store in the
iCloud key store and then also in a secure part of Google Drive if you're using an Android. The secret is needed effectively to keep your information private from countries that have access to your passport data. So obviously your issuing uh country uh has your passport data, but also any country that you travel to uh typically has your passport data as well and can read the NFC chip on your passport when you're going through customs and immigration. Uh and so to protect you uh from you know those uh countries seeing which DAPs you're interacting with uh we generate this secret and to prevent you from losing that secret we we back it up for you automatically. If you would like if you
don't trust you know iCloud and Google Drive then you can also write down the secret manually on a piece of paper. Um, with that secret, we can then generate these snark proofs. And unfortunately, you know, the proofing systems of today aren't really efficient enough to run on your mobile device. Um, and so rather than waiting for these proving systems to get faster, we decided to accelerate the proving uh by using a trusted execution environment. So these are these secure enclaves that are running, you know, in the cloud. Uh, and the nice thing about these things is they're, you know, tamperproof. They provide attestations that they are running very specific code. Those attestations is then sent are sent to you know your
mobile device and only once your uh mobile device receives that at the station will it send your passport data in an encrypted channel to this TE. Um and that way you can be certain that um the TE is not running any code that will you know send that uh passport data you know to some database or leak it in some way. You're always guaranteed that that passport data is going to be used only for generating that snark proof and then deleted. And so the the TE can generate those snark proofs relatively quickly.
These are big beefy machines. And then for cases where you need these proofs on chain, uh we write them, you know, to the cell chain. Uh and because we have built-in civil resistance, we can actually pay for gas for you. Uh and so the user doesn't actually need to connect the wallet to the south app. All of the gas is taken for you automatically. And again, that's something that we can do because we have builtin civil resistance, which is pretty neat. So if you're a developer, if any of this sounds interesting, um you know, we're really excited for you to test out Self.
Again, it just launched. Uh and so we're very eager to get your feedback and for you to start playing around with it. Um, so if you have any use cases where you might be interested in defending against civil attacks, uh, maybe you're also interested in preventing bad actors from using your protocol or, you know, you're in the AI space and you're struggling with, uh, knowing whether or not, you know, a human is interacting with you or an AI agent and you'd like a way for people to verify that they are in fact not AI agents. um all of these use cases, you know, recovering a multi-IG wallet, um is another use case that's commonly cited that's, you know, I think pretty exciting. Uh all the way down to, you know, these fun, you know, little um kind of more um frivolous ideas, but
you know, might might also be fun to play around with. You know, if you're uh into memecoins, you could generate a memecoin that requires you to, you know, verify something about yourself using self. So you could do like a Bob coin where only Bobs can can participate in in that meme coin. So anything you can think of you can you can play around with if you want some very concrete ideas. That's right. Chile is right. this one and then another point uh as well. Um which I think wait a minute this was on
this side. We're tied. That's amazing. Um yeah. So if you're interested in building an airdrop um or launching your own airdrop or launching an airdrop service that offers civil resistance, you can use self for that. If you're, you know, interested in creating a marketplace for AI agents and humans to trade work and you need agents to be able to confirm that they're actually paying real humans, you could do that with self. Um, if you want to do an initial DEX offering where you can give individuals some sort of discount, uh, that would be difficult before, but now you can do it. Um, we talked a lot about, you know, these OFAC filtered dexes, OFAC filtered lending markets.
Um, and then on the memecoin front, you know, uh, it's pretty cool. You can verify that it's someone's birthday. So, you could do a birthday coin where you give out, um, um, coins to people on their birthdays. Again, you can do a Bob coin where you give out coins only to people named Bob. uh pretty much you know anything that's on your passport um kind of first page you can use that information now to to do fun things uh onchain in a fully decentralized way without a counterparty so yeah that's everything thank you so [Applause] much right uh we have some time for
questions any questions Yes, sir. Running over. Thanks. Uh, interesting talk. Um, could a nation that's uh scanned your like that scanned your passport that you've gone through immigration impersonate you? Yeah, it's a great question. Um, so it depends a little bit on your passport. So newer passports have this this thing called active authentication which effectively prevents uh people from reading uh impersonating you if they've just read your your passport information. Uh so newer passports um have the technology to effectively prevent that. Not every country um
unfortunately uses this technology. Um and so the answer is um certainly for those passports yes unless you register first. So as soon as you've registered because we um derive that extra secret for you um at that point on no one can impersonate you no one can register again. And so if you're concerned about that and I suspect you know uh most countries are not going to be thinking about this right now but um if you are concerned about it certainly uh I would definitely encourage everyone to register uh ASAP and that's the best way to protect against that more there. This is like a maze.
Thank you sir. Yeah I guess I have two questions. One is what happens if you lose your seat phrase? Is it possible to still access? And the second question is um um I forget the second question now, but yeah, just the seed phrase. What happens? Exactly. Yes. So, if you lose your seat phrase, you won't be able to um and you've uninstalled the app. Um if you haven't uninstalled the app, then you can just read the seed phrase in the app itself. But if you've uninstalled the app or lost your phone and lost a seed praise, uh then you will need to get a new passport uh to be able to participate.
Uh which luckily you can do. Uh it's a lot easier than uh recovering um a wallet after you've lost a seed phrase from that wallet. So when you when you're generate generating the proof there's a business logic associated with it which typically called the proof function. So how do you specify or code up the the proof function for the proof generation? How do we specify it? Yeah well how do you code it to specify it? For example, I want to specify uh like I like to compare this string and that string and you know like very specific business logic right given the the documents for example. So if you're asking you know
how we've written these proofs we've done it all in circom uh it's all open source so you can take a look at the the code uh and then we have a detailed spec as well in in docs.sel.xyz. Okay. All right. Oh, you have a very engaging. I actually also have a question, but I'll leave it straight for folks. Does this work in every country on the planet like in Africa? So, every country that uh issues biometric passports. Um we yeah, we worked really really hard to support
um basically every country that that issues biometric passports. Now there's um unfortunately there's no standard as to which hash functions and which uh signing uh functions uh countries are using for the certificate authority chain and worse yet they sometimes change uh these functions as you go up this chain. Uh and so for every um permutation that we've observed and and that's been documented online, you know, we've we've worked really hard to support. Uh we're discovering every now and then that, you know, some country has issued some number of passports with some new permutation of these things that we weren't expecting. And so we're
actively uh updating the protocol every time we encounter that. Uh but we're feeling pretty good about the number of countries and passports we support. So I think we're yeah I think um if you have a biometric logo on your passport uh then I would expect that we will be able to scan your passport. Um you said that the passport data is encrypted before sent to the TE. Um so you're doing zero knowledge proofs on encrypted data. I was just curious what if you know what mechanism you're you're using to perform that. So it's encrypted when it goes to the TE, but then it's decrypted by the TE. Uh so it's not being proven while it's encrypted. Um and if you trust the TE, then you know
you don't need to to to keep it encrypted. Um I think longer term proving mechanisms will get faster and faster. We'll be able to generate these proofs on phones. So we won't need the TE. Uh but for now, you know, this was the the only kind of practical way to get to market and give you the benefits of self uh with, you know, arguably the only small downside that you have to, you know, trust Intel um to to not have an exploit there. But again, your passport data is is not stored on those TEES for very very long.
Uh and so I think that should give people a lot of comfort. Is the code on the TE open source in the app code? Yes. So then we don't have to trust, we just have to verify. That's right. Which is the beautiful thing here. I actually have a last question and maybe we can close it off. Oh, is there like a hand there? I'm going to give it to him and I'm I'm crying. Hopefully you asked my question, sir. Yeah. Um I finally remembered the question which is that is it possible to unscram like supposing a wallet which has registered has now done something shady. Is it now possible to unscramble and get the name of the person or is
that like since they only had to prove that they were from this country? We can't find out who this person was. That is correct. Yes, you can't reverse engineer uh the proof. you could maybe encourage the owner. Yeah. If if you're saying if there's a bad actor that somehow was able to generate some proof and now is doing something shady that's observable on chain, can we use this to figure out who that bad actor is? And the answer is probably not. It really depends what was disclosed when the user initially created that proof.
Sorry, one sec. Was it for the recording? Could you then kind of like deny list that proof and be like in the future or like put it on a specific list of being like that has been in bad actor? Yeah. So I think that the difficulty is associating that address with this identity of that user. I think because of the way that the system is designed again for everyone's privacy, it's not linkable and so we can't go backwards either. All right. All right. Um, all right.
Selfishly, I was still going to ask the last question. So, I guess like the sibil here, let's say if I want to sibble, Mhm. the effort that I need to go through is basically to have a new phone, have a new passport, and then can I register that again or is that not possible? have a new phone, have a new passport, probably also have a new Google and Apple account, which is easy to get actually, right? Yeah. If you have all those, then yes, you can create another account. But you probably you might be able to do that one or two times if you have if you're lucky enough to have a passport from multiple countries. But beyond that, you're probably not going
to be able to do it 100 times. Yeah. like certainly like increases a lot of the effort for the civil like I cannot keep losing my passport for 100 time without raising suspicions. Oh, even if you lose your passport, uh countries typically create these revocation lists. And so um it's your your lost passports uh depending on your issuing country whether or not they're maintaining these lists. I see. uh you can actually verify in zero knowledge in addition to verifying the certificate authority chain you can also verify that you don't exist in one of these revocation lists.
So there are ways to mitigate kind of the lost passport uh attack that you're referring to. Um I think realistically uh it's only going to be people with multiple passports from multiple issuing countries that are actually valid that would be able to generate multiple accounts. Awesome. Thank you so much for the fun presentation. very and also I think it's like really important like to do is finally link you know the real world stuff and then onto the blockchain and we can start adding some reputation credit base etc all those things are built on top of this and again welcome home to Ethereum and thank you Marik thank you [Music]
[Music]