ZK Paris: Leo Sayous - Sismo Connect Sovereign SSO using ZK Proofs

4 Aug 2023 · 15:29

Recorded at ZK Paris, Leo Sayous presents Sismo Connect, a sovereign single sign-on system built on zero-knowledge proofs. The talk, part of a Zero Knowledge Podcast event produced with Geometry and ZKValidator, covers how Sismo is designed to let users prove credentials and reputation across applications without exposing the underlying data.

Speakers

Topics

Transcript

okay so next up we have sismo connect Sovereign SSO using ZK proofs by Leo Samus at cisma okay okay cool hey um so hello I'm Leo I'm from sismo and I'm very happy to be here so at sismo we are doing applied ZK and we enable we are leveraging zero knowledge proof to enable users to

aggregate their identity and selectively disclose some piece of personal data to Applications so here you can see we have a different account 0x1 and 0x2 and using cismo and sismo connect users can aggregate this data these identities and only disclose some piece of personal data to application with a zero knowledge proof basically so to explain further how it works we are going to a demo so I wanted to do it live here but I don't have a computer so I try to to take a video I hope it will be good otherwise you can do go to apps.io with your phone

um we have and click on demo and you will be able to try it out so for a bit of context we last year when there was this tornado cache issue we printed the tornado cache code in in artwork basically it's two meters high artworks and two months ago Emiliano came to our office and a lot of people ask us to have a version of this artwork so what we did we printed it in 10 version 10 yeah 10 different version and we wanted to do a lot free to be able to gain it and the problem here is that we wanted

that only users of tornado cache was able to basically enter the slot 3 and into another cache you have like you can deposit and withdraw a lot of different times so it's highly ancible uh also your cash address is a very private address you don't want to reveal at all so what we are what we we have done is to add another uh requirement to enter this level 3 is to prove that you have a Bitcoin passport with a score more than 15 so it's common than 15 in a Bitcoin respond mean that you are a civil resistant human basically um and here for instance me I have my

git gun passport which is a bit doxing on my public DNS because I linked my Twitter account which is docs and my GitHub accounts so given password analyze all what I have done in Bitcoin and uh sorry in GitHub and in Twitter and and give an activity like a score of CPU resistance but my tone address is a very private one so here I don't want to link the metal and I will use sending with sismo so here sismo connect as a SSO flow to prove this effect and enter the lottery so here we we were in zero three we click on sending with sismo here we can see what we call the sismo data world so it's uh like a password manager where

you import all your different identities and here you can see what you are going to share to the lottery registration as a data so you see that you are going to prove that you are part of the tonight depositor groups and and that you have a gitken passport with a value that is more than 15. um so you generate your CK proof in the browser all happen in the browser uh only and this CK proof is sent back to the applications and can verify it and this verification can happen of chain in the backend in the server basically or on chain uh we have a solidity library to verify it because it was a bit like uh a bit like faster sorry

so yeah that's how it works too so you can trade by by going to absolutely so let's dig more into the system data world to to see how it works so basically in this system data world it's like a password manager so all happen in the browser only in local where you can import your different accounts so here we can see I have my Liu 21 address or their address and also a Twitter address to do this I will do what we call a enough chain commitment so this commitment is the hash of a vault secret and assault I will link this account to

this commitment and store the results of this in two miles is more data world and that means that all my accounts will be linked somehow to these World secrets this commitment has a hash of the world secret and the salt and I they are all stored only in locally in my browser so my voltage is only in locally in my browser so then in zero knowledge proof I can prove that I know this whole secret hash it again and prove that I made my commitment and then use these different icons in general knowledge proof directly so that means that I can use GitHub account Twitter accounts and also a cdsa address very easily into a zero Niche proof

so this is made using what we call a committed mapper so there is an option interested service in its two works um so with all of this I can prove ownership of my different data sources so my different data sources are my different accounts that I have inside my system data world and to do this I just do a proof a zero knowledge proof and send back this image proof to the application then can verify it we are using circum so uh we have the circle prover that is that run in the browser and the second verifier that run in the application to verify this is a key proof so with second we can have a

typescript verifier and a solidity verifier basically so also we have another type of datas also I show you here all the GitHub Twitter ethereum type of data sources but we have what we call Vault ID basically we share we do like we should put to an application and an application have an app ID so when you create your application into sismo you have to you you will have a random number that will be assigned to your application and by hashing in zero knowledge proof Your World secrets with this app ID you

will generate what we call the Vault ID which is a unique identifier for your application it can be seen as a as a user ID that represents yours is more datable to the application and so for instance here we can see a lot of different type of data source ownership that we can prove with seismo connection with zero knowledge proof so ethereum account Twitter account GitHub account but also a volt ID for app id1 volt id2 for app id2 that will be different so each time I connect to this different type of application I have a different user ID for the application so it can be seen as different identities a bit for this application

and they are all linked together thanks to This World secrets so with I have at the end only one volt secrets that allow me to prove ownership of all these accounts and this is this is interesting because I can use this this different fault ID as a newly fire into my different application basically let's say I do a nerdrop I prove membership of different groups like toner docage depositors and passport and then I have this unique volt ID for the application I can store on chain so I won't be able to do it again and again um so I I was the Run rage proof uh basically like we we saw that we've made

some proof of ownership of data sources but now we can do proof of ownership of groups membership so for that we have um a wall infrastructure where we have different what we call the data groups of each type of a group have their own knuckle tree it's Poseidon hash Markle tree to be very easy to verify into zero knowledge proof and this local tree have a value um so it's like a bit like a a key Value Store that you will be able to do to bring this data inside your zero knowledge proof and those predicate or statements around this data

for instance when I did Bitcoin passport holders with a score more than 15 that means that my group I think it's maybe this one oh no sorry that means that my my group had a value I had my real value inside like let's say you score for 42 but I was only sharing that I have a score that is more than 15. by bringing this data directly into my different image proof so here we can see different type of data group so you see we can for instance encode different level and use this level to gate access to application only if you are more than level three the level 4 and and so on we can also do data group of volt ID

so for instance for the Privacy now is normally free I show you with a demo at the end when you do the flow you store only the word ID I generated for this application this will create a group of here I have all the group of the lottery winners it's a group of all the Vault IDs for this application that have been made and later on I can come again and prove that I own this fault ID and claim the fact that I win effectively my tornado cache print so in this process there is no trusted of chain service at all because you are just doing the hash of your Vault secret

on the web ID to prove ownership of your voltages or your identity so we have a wall and Merkel 3 as a service infrastructure to scroll and update these groups these data groups at a daily frequency so we have around uh 1000 groups for now the community has created what we call data providers to fetch data from different uh sources and it's automatically computed and sent on chain whenever it's updated we do we are proving ownership of data sources we are proving inclusion of

these data sources in a data group and then we are verifying some requests on the value basically is is this value equal or greater than or equal to be able to do these predicate around the value so you have more than 15 so you have exactly three as a value inside the group sismo connects is also a developer experience you have on top of the easy Runner is proof so it's the goal is to be very easy to integrate to your application as a developer that don't know anything about zero noise proof basically uh so what you have like this is a flow you have a button here we see

it to claim with the small button then the user is redirected to his system of that level generates the proof the proof is sent back to the application that verify it so to integrate system um the user needs to to do a request of the data he wants basically an authentication or a group membership proof and then he need to verify it in his backend or his math contract so here we can see an option integration so basically we have this button that is integrated in the front end of the application and you have a piece of code in the back end of the server to verify the zero noise proof and that's a

request the zero knowledge proof corresponds to the request that was made so here you can see the code is very simple you just have a button where you declare your different authentication you want your your claims you want to do so proof of group membership and the corresponding backend here's a typescript backend to verify the proof so now you can do exactly the same uh flow but on chain so it will be very similar the button will be exactly the same but in the your contractor you will have solidity and you will use a device that is like this one to verify your zero knowledge proof and then do operation with your the result of the wave side proof

thank you and thank you awesome thank you do we have any questions for Leo going once going twice great presentation thank you um just a question perhaps I missed earlier where are the vaults hosted off chain yeah so the volt the system data voltage like a password manager so basically uh you have it's like a Json file uh which is encrypted in your browser so it

happens only in the in your browser and the encrypted blob of data is stored on the database of hours and then you have so I didn't show this but you have owners that you choose that can decrypt this blob of Secrets and so basically you can have web 3 type of owners and we have what we call recovery key also so you need to save this recovery key or to have your Wi-Fi account to be able to decipher it so if you yeah no that makes sense thank you any other questions thank you thanks thank you

[Applause]