Building a crypto-native SSO with ZKPs

ETHCC 6 · July 2023 · 26:30

Hadrien Charlanes presents Sismo Connect, a zero-knowledge-based single-sign-on system. The speaker explains how applications can request proofs about personal data such as NFT holdings, GitHub contributions or DAO participation.

Speakers

Topics

From ETHCC 6, hosted by Ethereum France.

Transcript

[Music] foreign my name is Adrian and I'm going to talk about sismo today sismo connect the history we had starting with ZK Badges and then this system connect that is a crypto native SSO that is built with the online proofs so as an introduction let's talk a bit about identity and what we're trying to do here with sismo in real life the the way you share data is uh is really Sovereign meaning that

you have a professional life you have some family memories and and something that you do in your family same with your friends and you have the ability depending on the context to choose actually what you reveal so with your boss you must you you might just share things about your professional life maybe one or two things about your private life but you don't want to share everything similarly with your grandma you might want to share more but again you want to share everything and that might be with your best friend that you you are more entitled to to share more with what I want to say with this is that it's really uh natural to human to do things in different contexts and then share

what they want and we'll see that in the digital world we don't have this property at all and that's the core of what we're trying to do at sismo want to make the digital world more natural to humans and give this ability so in web 2 how it works the data is not ours so it's it's in web 2 servers so you interact with Twitter you interact on LinkedIn you interact with on Google and Facebook and then you create a side load data that you can't really share actually you can share them A bit but you need to ask permission and also they can share it without your consent so it's really different from the real life and it's because uh we need we needed centralization but now we no longer so

when you use something like Google connect when you're getting into a new context so let's say an application with friends you might want to share things from Twitter Facebook and Google a bit like in the real life but you are not able to because basically first they don't want you to so they let you share just a piece of data your email or some some small things but that's all now in web 3 we could think that it's better because we own our data so this time it's better we are on the Forefront of the identity we own our wallets and then we bring our identity to Applications so that's already way better and the way we do so is like from our wallets we can reveal our wallet to an

application we do so we do so with signatures so if we're using a non-chain app so a smart contract we send a transaction and by sending a transaction the smart contract knows or message sender is this wallet so I know that all the data that is in the wallet I'm aware of this so in web3 you're able to share your entire wallet so data is no longer trapped into servers and you can bring it to an app so I can bring my let's say 0x1 that is my public wallet my UNS daydream.is and I'm able to connect to let's say lens or forecaster with it bringing my uh yeah public profile I am also able to choose another wallet let's say 0x2 that's my private wallet with all my nfts all my

my net worth and I'm able to use let's say uni swap with this um and yeah again I'm able to bring all my assets they are not trapped into servers or stuff like that I'm actually also able to aggregate my data meaning that I can actually sign two messages one from my first wallet my public one from my private one and I'm able to bring it to an app by the way it can be on channel of change you just need to verify the signature to know that I'm the owner of those words but here in web3 the issue is that you either bring it all or nothing let's say that I just want to bring to my lens profile some data about my private wallet I'm not able to do that because in web3 today whether it's on

chain off chain we bring our entire wallets with it so it's a big like in real life you are only allowed to share things about your personal life to work if you ever if you share it all so it doesn't work either we recreated the same silos and the conclusion of this is that we have one one wallet for this type of use case one wallet for the other one so with this move what we allow you to do we have this data voltage like an identity aggregator before we'll go get into that but you able to with sticky proofs actually pick exactly what you want to do from your aggregated data so we're able to aggregate all your data and then selectively reveal to the application or it's a social app I want to pick this from that wallet with this

from that wallet this from that wallet so that's really what we're trying to do at tismo and make it available for for all this so first there's one part the identity aggregation in this movie you have what we call a Data Vault it's like a wallet an identity wallet um on which you will aggregate all your accounts or your your wallets your Twitter your GitHub your Telegram and once it's imported in your virtual able to generate DK proofs of granular data that are part of of those identities and then the SDK proof will be sent to an app that will verify it and then it is convinced okay this this one is a nft owner of a of a known this one has voltage in the Dow or stuff like that

so just a bit of technical I won't spend much time on it but the data volt is like a wallet it has a seed it's called The Volt secret and the way you do secure proofs with other wallets that are external you map them to this data world so what you do is that when you're importing a wallet or underground in system you map it to your world so here I'm mapping I'm I'm creating a link of course private and so rain only me can see this noises one I'm saying okay daydream.is is now inside this world my private wallet also and my Twitter is here only me see this aggregated view only me see this and from that point on

my accounts are zekified I'm able to generate zika ZK proofs out of them the way it really works is that actually I will be able now from now on by proving the knowledge of the secret of the world I'll be able to prove the ownership of each wallet that has been imported so that's the basic uh ZK idea in csmo is that you import your icons in your data world and then you prove that you know the world secret and that actually is proving that you own all accounts so yes so in your words ziki proofs from this word secret you send it to an application that verifies these Decay proof

so again our mission is really to create a new design space for application Builders so that they can finally leverage your aggregated data in a sovereign way uh and this is used especially for Access Control let's say that you want to create an airdrop that is gated uh to uh data that is both private and public let's say Okay I want to get this airdrop to people that interacted a lot with polygon and it shows like usage this usually happens on private wallets another time same time I want to get the airdrop to some to to people that have an Indians or a git coin passport that is usually on public wallets we want to give you this ability similarly reputation you can think about credit scores and under characterized

loans that benefit from this aggregation property that needs privacy is that okay I want to create a platform under characterized and to get a better interest rate you need to prove me okay financial data but also social data and so we are tool to let you leverage this uh yeah aggregated data so now a bit about the story how it started last year we released the ZK badges so basically you take a proof let's say a proof that I'm I voted in nasdao we create so I import my account to my world I create a ZK proof and then I get this tokenized attestation that is a ERC

1155 nft it's non-transferable and so when I have this nft that means that I was able to generate a city proof and so that means that I'm in this water uh so yeah we were super happy to release this for let's let's HTC uh we had uh more than 50k users they enjoyed it but we'll see in this talk like that we want to do more with sismo connect we want to to do more so last technical things so when I say uh I'm able to prove that I voted on enso how it works week traits a data group of all people of all wallets that voted in years Dao so here you can

see a list of wallets it's just a small part of it and you can see that I'm part of it you see daydream.cismo that is we saw valued 17 and the value corresponds to the number of votes that I submitted so now since I imported daily notice to my world I'm able to prove that I'm part of this group and that I watch it more than five times more than 10 times the average exactly 17 times and so that's the GP proof that we are actually doing a in sisma so we could have like many other groups here it's the the mintels of a Stanwood script or NFC that was released by coinbase and here interestingly it's a hybrid data group our system Community data group all people that use this more

are helped us build it and you can see that we have in these groups on Twitter accounts some telegrams some githubs some wallets and each of these wallets or the Twitter telegram intervals will be able to prove hey I'm a seismo Community member so the ZK batch meeting how it happens it's done by a zika tester it's a smart contract that verified SDK proof that you generated and uh yeah so let's talk about the executive first so this proof is really okay I know the whole secret so uh I'm the owner of daydream.is because it has been creating that there was a link that was

created between they do not eat and this world secret this trick is private only me can see it but I'm able to prove it so I'm able to prove okay I own the internet then as the group was put in a Merkel tree I'm able to give by the way they do not East is part of the group I bring the knuckle pass and you'll see that I generate a volt ID it's a hash of volt secret and ens water group ID it will allow me to nullify this so the gcat is so what it does okay verify the ZK proof I know that digital proof was created by this Vault ID it's a unique Anonymous identifier over my world and for this group I did that is the ens group

so uh the artist of smart contract verify this okay that went well and so I meet the the adjuster means the ens the ozk badge that represents in the end this group membership and high level it represents just that I voted and during the process neither the original.is is revealed neither my vote Secrets nothing can be learned there's just as an output this volt identifier that is used as a way to make sure okay this volt ID I store it and I cannot accept another timer as you can perform it so I can just meet one GK badge per Volt or address that is eligible so that's the

that's the technical view of ZK Badges and so we get quite a lot of learnings with it first we know that it's really great to create your permanent identities so it's great see if I want if I let's say two public identities one that is docs they do not eat and another one that is my unknown Twitter account where I should post maybe I want to prove online.eth that I have some reputation from my public profile and reverse so here I can bring on anal that is without them knowing anything more than I voted on in Sao on the reverse I can bring private data from another East

will say that I'm big jgn I can proven they do notice that I used I spent more than a 10 ether as gas or something like that so that's the why the ZK badge are great but our mission is more than that it's more than a flexing our ability to create your identities we really Target app developers so that they can leverage this in the applications as access control so let's think about a voting application um let's say okay I want voters of my watching system to only be allowed to vote if they proved that devoted onions but I wanted privacy preserving I don't want to know who they are exactly

so here since we minted the ZK Badge of the ens devoted on anon.is and this doesn't reveal any more than I'm over there I can connect to this voting system with anode.is it checks okay you have the badge so it's good I give you access to the what you can vote but this is very limited actually because badges cannot be really reused across apps for instance let's say that there is an nftr drop but this time it's exactly the same gated to ens voters but I want to receive the airdrop on my data.is because it's my public profile this I cannot do because as we said you can only meet one ZK batch so yeah that's the issue is that aziki

Badger even all associations that are written they are tied to one wallet and so if you want to use this piece of information in several apps you need to always connect with the same wallet but that's that's really really limited actually you might want to yeah with the energy that want to access this app with a new Fresh wallet to another app or with my own identity to this app so that's uh one of the limitations of course is the this the other limitation of re-writing the attestations is that they are written in a database here it was mainnet and so if I want to vote on optimism with anon.is I don't have the battery so I need to First mean the badge then access

the app so all of this made us understood what applications really need what they really need is the ability to do what like how the cataso does just okay I get a GK proof it's logically proof that it's a ens Dao voter I verify it and then I get access to my app and there's no badge involved it's just off chain users in the other generators you can proof and I'll be able to verify it so the voting app is okay giving the proof okay I register your vote airdrop is okay give me this proof I give you tokens you can also think about option apps like a Discord bot give me this proof I do to a private Channel and so if you think about it what applications really need it's at

execution time when they need the check so it's when an action occurs the voting the the Wardrobe or the bot they need to have access to a proof and a way to verify it and this is way more scalable because the proof is off chain you can send it anywhere so you don't need to meet a badge or anything it's optional as a user I can send it anywhere on the back end in a in any chain and do verifier function it's either a library on solidity that is deployed all typescript typescript package for instance so if we think again uh the our job how it would work um it's okay I get the ZK proof first I verified the GK proof through the system connect solidity library and

then uh I send the token are the things that then I store the nullifier that is the hash of the voltage thread apigee and group ID and here what is powerful is that the nullifier depends on the app so here it's linked to the airdrop app and so if I do exactly the same ZK proof but for another another app let's say this time a voting app my nullifier is different the unifier again is the thing that you store to make sure that a user cannot bring it use the SDK proof Trace here the nullifier is different across apps so you can from the same data legend.heath with my volt I can access and Unchained app as in a none this time as a daily note is or with a new wallet and nobody

will be able to infer that is the same users that use all these apps of course they cannot know that his stadium that is but that makes it very scalable and you can just okay I verify it wherever I want and I store this nullifier that doesn't looks anything so that's the the Big Value prop that we have in a in system connect and so this cardboard is the same okay this time it's a back end I verify in the back end the GK proof and I store okay this user cannot join again my my channel so now if you think about it the ziki badges

the Z characters are presenting before it's just one specific application of this scheme it's an application that takes a proof and tokenize it and so that's why we're saying that now we're trying to move away from ZK badges we think that it's up to other applications to leverage our tool to build attestation in the standard that they want but when you think about project like ethereum attestation service or things like that they could very well okay give me this proof and I write an attestation that corresponds to this proof so now well I'll present system connect at full it's really simple so it looks like that as an app that I integrated system connect I have in my frontender button

climb with ismo users are redirected to the volt to generate the CK proof that I I requested and then they verify it on chain or of chain depending on what apps it is so again we have the seismo volt with my data sources I'm able to prove anything from it and I'm able to do two types of DK proof one that is not privacy preserving I can still reveal okay I own this Twitter I own that evm account I own that telegram so that's not privacy preserving but that is using ZK proofs and the other types of requests that you can make as an app developers like okay prove me that you have this nft prove me that you voted in this dial prove me that you contributed to this GitHub repository and underwriting actually we

know now that technically there's a data group and you prove that you're a member of it so that's the two types of requests that you can make and uh an off-chain injection looks like that in your front-end you import our library to make a request and you know by can you verify it it's exactly similar to everything that we do today today in that application you have buttons to send transaction you have the metamask pop-up that say okay I send this transaction or the other the second action is send this message and metamaskable web send this message which is more it's a button and this time is review this data Creator GK proof so it's exactly the same kind of tool that the wallet connects but instead of getting the full wallet information you get just the precise

data that you want and so it enables you to ask many data from many different many different types of wallets like private public many things so that's the really real power of it is not just privacy preserving as a end it's as a tool to get any data that you want so again a button in your front end you you request data and then you verify it on chain option so it's really simple to integrate and that's what we want to provide as a team it's a set of developer friendly libraries so that in the end and good is that you just say Okay I want this data this data you don't understand you don't have to know about groups about GK and stuff

like that you just know that you can request any data from your users and that it's safe for them to do so so and again that was never possible before this kind of Technologies because before when you ask data on digital what you were doing is like I asked access to the database and I can see it all here is really okay prove me that you used to only LoCash but I don't know who you are so that's the thing we can do also on chain so it's the same thing okay I request this data you give me a ZK proof I verify it on chain I just share one case study that we did with ACI ACI it's a big delegate of Ave and here the app was okay prove me that

you dedicated to me but I don't want to know your wallet because I want to send you swags physical address and of course they didn't want to have access to the link because between a physical address that dedicated some big amount of aviso with some networks so they didn't want to create this link so they say okay I request this EK proof that you delegate it to me and okay you generate the ZK proof as a user and then I verify it and if it's good I give you access to a form to give me your physical address and I'll ship this swag to you so yeah that's it I want if there's something to remind is that privacy is not on your end I mean I mean it's it would be really cool that the

community stops doing NFL ownership check by requesting the entire data that's in the wallet that's what happens today they don't need that if you want to check nft ownership just request the GK proof so privacy is great but there's so much moist this is like one percent the the real power of privacy is to enable developers to access data that was never accessible before because of privacy reasons and so you are finally able to access as a developer the aggregate data from all your users and so as a user this time it's really like in the physical world oh I go to this new app what do I want to bring or I want to bring data mode 2018 I want to

to bring that I'm have 10K followers on Instagram I want to bring this this and you pick up what you you read to the app and that's a big design space and we're going to keep building for this so thank you a lot for for your attention and and we're hiring hi thank you very much um I love the tech I have a question about the adoption like what's the strategy I mean you got to convince projects to integrate that button to log in with system right at the same time you got to convince users to generate the proofs

what's your how do you think about how to get enough adoption to make this tag actually apply like I would love to uh ditch Guild dot XYZ for my Discord because it kind of doxes me aggregating all my wallets but how do you how do you convince projects to use sismo instead of connect my wallet or our Guild yeah with ACI do delegates actually it was a we have a unique value prop and it's 10x better than anything it will be hard it will demand a lot of Education and hopefully it might also need to have some hacks that happen on databases like Guild or stuff like that we hope that it doesn't come to this but

we are very long-term uh oriented so for now our goal is with crypto natives that should be able to more easily see the value prop that we have that they leverages and we already have like in production use case for instance the the swag drop or stuff like that and just like today you can use git coin passport in a privacy preserving way so we bring CB resistance to any app now so now it's up to us to make it easy to use and to inspire and uh but we have I think we provide the 10x Improvement to social apps if they use zero noise proof then you do not have any more time for the

questions so it's the end of the presentation sorry you have to meet him afterwards thank you guys [Applause] [Music] thank you

foreign