Interep, a method of bringing identity into the web3 world. - Geoff
Learn & Share with PSE · 2 Aug 2023 · 1:00:59
Explores Interep, a method of bringing identity into the web3 world. and how privacy-preserving identity systems can prove useful claims without exposing the underlying person or account data.
Speakers
Topics
From Learn & Share with PSE, hosted by Privacy Stewards of Ethereum.
Transcript
okay so hi everyone uh this this talk will be based on the talk we presented at um devconnect uh but um I feel like I've got a little more time to delve into a few aspects uh this time around so we'll it'll it'll be some some new new content and um also a new set of slides that Rachel uh Rachel um uh well she she adapted the slides I use and they're much more fun and um interesting so uh thanks to Rachel for that that's great
um so interrupt um interrupt is uh anti-civil service um uh uh next slide please um so there are our aims with interrep I think that first line should say like Bridge identity to ethereum or something um we're yeah we're providing a bridge from um from uh digital identity sources to the ethereum world uh we we plan to in we integrate with sources of digital identity
and we add to that privacy guarantees using semaphore framework um next slide okay okay well perhaps before we go into this um I should talk a bit about identity identity management systems so um what we're trying to do with identity management if you read the literature you'll come across two terms one is Unicity which is
um that an identifier is you is is associated with one person and anytime you you use that identifier it's going to refer to that same person and never a different person the other term is singularity which is [Music] which is the the property that if you have a person they have one unique identifier and they never used another identifier so uh think about that in in Real World um things we're familiar with if
your name has good properties of uh Singularity you know whether it's the name in your password you will always use that name you know if we if we exclude like nicknames and pseudonyms and so on um your name has has has good Singularity properties but for you Unicity properties um because you know especially if you've got a fairly common name um uh there's there are hundreds of thousands of John smiths in the world um and even if you've got an unusual name in a population of billions the
first chance of a collision so the names have have Singularity but not Unicity um and think of something else we're familiar with ethereum addresses they have good Unicity uh an ethereum address is very likely nearly always controlled by a single person um so uh uh Unicity if we have an ethereum address we can we can be fairly confident that there's a single there's a unique person behind that address but they have poor Singularity properties because one person can create
hundreds or thousands of addresses so if you haven't addressed there's no guarantee whatsoever that you're uniquely identifying a person because they can just create another address and um and hence we have the problem with spam Bots and and those sorts of things so um so when we when we build an identity system those are the things we're aiming to achieve is there's both of those properties Unicity and singularity so we have to look at our identifiers and consider them and see how well they they
um achieve those properties um so that's the background on identity um the the slide back to the slide where um it shows how we build an application and where interrupt fits in to that uh to that application um we uh interrep provides the identity identity management layer if you like you know there's we're interacting with the with identity sources um and we maintain
groups uh with um well on behalf of semaphore so semaphore is based on on groups of uh identified people um standard form provides the Privacy guarantees to make sure those identifiers uh uh hidden from the from the public and so your application can fit into that framework use the Privacy properties of of semaphore and use the identity properties in the interrupt layer to associate it with a unique individual in the real world
and all that's rooted in the ethereum blockchain so um to add groups uh maintained in such a way and just the their remarkable tree but the root of the Merkel tree is is stored in the blockchain so that's another view of where where at your application what your application will look like if you build with interrupt and uh clearly can we have the next slide please okay so um let's think about the identity sources we're going to be dealing with
um what we're trying to achieve is to try and uh we we want when we have an identifier we want that to be associated with a unique singular individual in the real world um real world's identity is is kind of a fuzzy fuzzy kind of thing it's hard to say exactly what what our brain uses to identify someone like if we see someone in the street maybe somewhere we're just kind of vaguely uh someone we've kind of vaguely know we would um we would identify them but from their
face or their heightened body build and Gates and their voice and whatever a bit of all those characteristics but if they've you know they've just shaved their beard you might not recognize them straight away and those kinds of things so you know the brain's got this kind of fuzzy logic coming into play too to apply identifiers um [Music] and our identity their real world identities are mirrored in our interactions in the digital world um particularly like social media [Music] every time we put a comment there or a
picture of your your lunch or um or you know uh um any any kind of uh content in in social media you're you're kind of adding to your story you're adding to your digital identity borrowing from your real world um so what we're really doing with interrep is um is is making use of that property to to utilize digital uh digital identifiers
that we have in things like our social media platforms um and and so we we're building that link from The Real World to the digital worlds in web 2 applications and then we bridge that over to our web 3 application so that we we have that link that chain running through the whole process um but of course in the digital world even web 2 Worlds that'll learn web free um that problem of sock puppets and Bots is um is something we need to overcome so we need when we look at our digital
identity sources we need to find ways to to filter out those Bots uh it's the next slide please um let's think about the the sources where where using um these are really just samples of the the sources we could potentially use so the way we've built into rep so far we've looked at the kind of things we can use for identity and we've really built um kind of proof of Concepts uh around
each of those things um with the idea that you know this can be used if an application has a particular identity Source in mind then they just borrow from the ones we've built and and build it uh it should be a small increment from from from what we've built um so we have existing uh identity sources based on Twitter and Reddit and GitHub so um they those sources uh have a few uh handy things that we um that that lend themselves to to using them
for this purpose um think about Twitter uh Twitter is prone to bots there's plenty of Twitter Bots out there so we can't just use any old Twitter ID so we apply um we apply some rules um but uh but we have oauth in all of these sources we have awards that we can uh we can link an individual to make sure they control a particular handle um so um and then we can look at their profile and using the apis and um we can make an assessment on whether we
think that's a real person or a bot uh Twitter is is um particularly useful in that respect because we can run bottom at uh you can run it yourself if you go to botometer forget what the URL is but Google it um and put in your profile and see what your score is and see whether it thinks you're about or not um uh and yeah being interesting to see what um if you're not a regular Twitter user what your score might be I I'm not a a huge Twitter user but I do sort of have
have enough there to give me a pretty good score so bottom tells me I'm a human which is reassuring um but that's one of one of the tricks we use to uh to to filter out but we we have some basic criteria and I think to be top tier in Twitter you need like 7 000 followers and uh um some other things like a blue chick and I forget the exact criteria but number of followers number of tweets the length of time your account's been opened those sorts of factors come into play um
with Reddit it's kind of similar you have um what is it karma scores and and so on um so we again have a set of criteria that applies to Reddit um to to place people in a in a tier in tier is kind of a level of confidence we have um to about whether that account is a bot or a human uh we'll go more into those details later on so um yeah so these are our these are the
um these are the uh uh social media sources we've used so far uh can we go to the next slide please okay and in addition to [Music] um in addition to a social media accounts we have loads of sources of digital identity so we thought yeah we can we can we can use those to you know to um well as identity sources uh and you know not all great quality but we don't
insist on being we don't claim to be a perfect uh you know to perfectly identify whether someone is human or not even using Twitter and botometer and everything it's it's never going to be 100 perfect but it's going to be good enough for many applications um the the other kinds of identity sources we've looked at uh We've looked at building and in many cases built uh email um um emails a tricky one because it is easy to um
uh it is the in some cases to to create to have many I mean any individual will often have many indiv many email accounts but if we apply some extra rules like if it's a DOT edu domain then that's given out to yeah staff in it in the University um and there's a good chance that that's a fairly unique uh uh fairly unique identifier so let's use that now if someone can prove that they can they earn an email address and that's a good that's that can be a good indication of of uh is it the dot edu
email address or even um Corporation you know if uh that would be a reasonably reasonably sound um indication of unique Humanity um and even a Gmail there are hurdles to overcome in in obtaining your Gmail account I think you need a unique phone number or something uh so that's somewhat useful in in for the purpose um so yeah email we can prove we can prove an email address and use that as
an identity source we've thought about government authorities yeah um not everyone has a social media accounts an email account uh and if you think of um you know whether your grandmother might might have one of those things maybe not you know um but uh more and more of these days the governments are um uh opening up their databases um and in particular I'm thinking of AD power in India which is uh digital identity course for that um that is very widespread in India most
Indians I believe um have or are in that database and it's a like a condition if you're going to register for a school or various other things um so India has this great source of you know huge population and um a lot of people who may not have the the conventional digital you know conventional social media um accounts and so on but um they have an ad hire account so and add her opens up their API and um we we could potentially use that and have and reach a population of [Music]
um yeah a very large population that would otherwise be underserved um the we haven't built those because they're somewhat there's a barrier to entry so that's that's conceptual stage and there's lots of lots of work directions we could go there most a lot of countries um are opening up their um their IDs or their uh driver's license um uh databases to uh with with apis so there are things we could access um
yeah curated groups would be something like uh telegram group where you could add people to that telegram group uh administrators would add them to the telegram group and there's our source of identity um so that administrator is is um is betting people that they're adding to that group so if we um if someone can prove they're a member of that group then that's a that's uh a source of identity with good proof of humanity um that might be useful in some some cases so we can uh we can do that kind of thing
um other ID projects there's a lot of a lot of effort going into this area and I'm thinking of things like Bryce ID and World coin now worldcoin is using Biometrics to identify people um uh bright ID has a different approach but I mean the useful databases with um with a a good source of identity that we can integrate with um and what we're doing in those cases we interrupt and thermophore will provide the Privacy aspects that might otherwise be the um
no the well not be present in that application um and think about on-chain sources of identity um something like uh a poet a poet nft that's issued for a physical event is because those those codes are issued [Music] um person to person as you go through the door at the conference especially if you've been to a Devcon conference um do you you pick up you know you get your pull up um there's people walking around handing
them out so it's a person-to-person interaction so it's a very strong guarantee of humanity um and particularly every minute it's possible to uh the egg submit that poet nft and then transferred to someone else and but especially if we if we were to apply a rule that only poets that uh that hadn't been transferred or you know some rule like that then that would be quite a strong guarantee of humanity um but in any case it's um it's that kind of thing is it is useful
uh useful identity source that might be good for some applications and it's already Unchained so we don't but you know it's easier easy for us to to interact with um excuse me okay let's go to the next slide please um I'm going to talk a bit about xenophore uh possibly many people here familiar with Singapore but let's just go through the basics um semaphore is based on membership stats um
the members in so in abstract terms members signal on a topic but that's an abstract framework that's used in many different applications and when we look at an application say private voting then then with with private voting you want you want to guarantee that a vote has been cast by someone from an approved group that in other words they're eligible to vote and you want to guarantee that they haven't voted before
so um so relating that to a signal a signal is the vote the topic is the particular proposal that they're voting on and so that signal or semaphore will guarantee that they are in uh they are a member of of a predefined set of accounts and and they haven't voted on this topic before that they haven't voted on that proposal before and then it's given uh the identifiers are uh and and the vote is
is put through a zero knowledge circuit um and using that the identifier is get private but the voters get is is made public and can can then be used to Telly Telly the results uh without revealing who voted uh which for which in which uh were which where they voted so uh so we have those privacy guarantees we have those um guarantees that the vote hasn't been passed twice and that they are eligible to vote so that's the classic sort of application of semaphore but there are many others there are
uh whistleblower applications or um uh think of rln and unirp and all these applications uh um built using the symbol framework um interesting uh World coin which I mentioned a little earlier is is built on the semaphore framework as well um so so there we have uh providing the the zero knowledge the privacy and the guarantees of of uh uniqueness of uh you know the guarantees about upvoting twice and so on um and because I suppose based on
semaphore groups um it's it's easy to integrate with with interrep and have interrupt uh manage the groups on behalf of the semaphore framework um and uh then we link to Identity so so we we're building that link to have identity built into these Summit bog groups and let's go to the next slide right so so what we're building with interrep is seven four groups um we we will have a group for each
identity source so Twitter has its groups and GitHub has a group and emails dot edu domain has has a group [Music] an application can choose which group they belong to uh or which group they want to use as as their source which which one provides the right to guarantees of that well the guarantees they need for that application and every application is going to be slightly different in their criteria um and within um
within one identity Source we will have tiers of um is that represent uh broadly a level of confidence that the the identifier is um is a unique human so um so gold to your in Twitter would be the strongest guarantee of humanity and silver would be a moderate moderate guarantee but perhaps a larger group of people and bronze would be a a weaker guarantee but still somewhat better than a bot like if if the bottom
underscore it says they're very likely to be a bot then they'll probably probably not even get into the bronze group um so when when interacting with the interrep application uses improve their membership of improved their ownership of the application handle your Twitter handle whatever using oauth this is happening in the browser in the in the users users environment they don't want to Twitter we obtain their their handle
we then do an assessment to see whether which theater in have um much confidence do we have the best it's a unique another um and [Music] and um to me then we just one thank you
for the Canada use uh and stuff build their or if uh hit next please oh okay okay um okay okay I'm trying to get it back
as the sand right now okay okay well um yeah so just to recap that previous slide uh the first step in in interrupt when using interrupt is to um to link to the identity Source the social media application it's an oauth check that that guarantees that the user controls that account and we then Mark that account as having been used uh yeah so um and and during that process once we
once we know the oauth once the oauth has gone through we will assess the the level of uh confidence and assign them to a tier gold silver bronze okay so next slide now so the user has proved their membership with the id id Source we've assessed them into a tier um the next step is to um well they marked that handle is marked off as having been used and we now ask them to sign a message with their ethereum address in their in their
browser wallet um to proof they own it and if that ethereum address and from that we construct a semapho identifier that link between the social media handle and the ethereum address is kept private the public doesn't is not aware of that of that of that link so um so that's the first sort of layer of privacy that we're we're applying in interrupt we once we have an ethereum address we construct a semaphore ID commitment and that's been used uh in the semaphore
application so we will we will mark off the Twitter the social media handle as having been used so it can't be used again we will mark off that ethereum address so it can't be used at least not in a Twitter group again that with those things that in our internal database but that link is never made public um uh and with those things we can guarantee that a user can't reuse their their social media profile and create a new and create a a different link with a different ethereum account and they
can't reuse that ethereum account so that we know that uh ethereum count is always uniquely linked to that to that social media handle without ever revealing the link the um the interesting thing about um this in the in the framework of a semaphore application with uh um a conventional plain vanilla semaphore Standalone application has has the it constructs identity commitments using a random key
is generated in the user's environment from that is constructed the identity commitment and that's used to build and nullifiers that are then used to when when using the same before replication um so that's a standalone that's a standalone semaphore application and that that key is preserved on the user's environment survey when they come back to that application at a later time they reuse that key to um or we use the identity commitment to [Music]
um you know to continue using the application what we're doing in interrep we're making we're taking advantage of the fact that what we can do with with a browser wallet is asked an ethereum address to to sign a message through ownership of it and then that stands in for the random for the random key that was generated in conventional semaphore and from that ethereum address we can construct or from the sign message we construct reconstruct the semaphore identity
commitment so instead of constructing it from a random key we're really building it up from the ethereum private key um and from then on the identity commitment and the nullifiers look much the same to the semaphore application as if they were constructed from a random key so we've kind of diverted the um diverted the process to uh to link it to an ethereum address and that's how we that's how we make internet work um
and so let's go to the next slide okay so uh everything we've talked about so far with social media and email and so on is uh is off-chain identity sources we do have a concept of on-chain groups um with an off-chain identity sources we would keep we would construct a miracle tree as required by semaphore and when using when using um the semaphore application the user will retrieve the local path
and use that to as the to uh group a membership of a set and um so we we interrupt provides those those with apis um we can and that's all obtain the only thing that's on chain there is the root of the Merkel trees kept there to keep keep it honest um we can we do have this concept when we have uh on chain groups such as um oh nfts any other nft could be used I suppose
[Music] um or a white list in in a in a smart contract wait list of approved accounts um in which the data is already on chain and so the process is going to be slightly different um so yeah we do we do have a slightly different process for Unchained groups uh but I'm not going to do go too much in into more details on that at this point uh so let's go to the next slide um yeah so uh so we've built
we have our application we have an identity source um the uh the user has come along and done an initial sign in to link their their identity source with an ethereum account from that is constructed the semaphore identity commitment and um from that point on it's it's uh that that's a one-off process that that's uh that joining the fit from then on the user is in the set they can prove their membership anytime just retrieve their local tree path and the identity commitment and um
feed that into the application to to use that application uh so the the use of the application would be if we thought if we think about an application like private voting uh every time you cast a vote on The Proposal you retrieve your identity commitment um and pass it to the uh to the application which will verify that it's a genuine member of the set and you'll you'll also retrieve some nullifiers so they can use use it in that vote um and uh
that's that's sort of the end to end overview of how how the uh how interrupt interact with the semaphore application um so yeah it's a one-off sign in process and then reusing is just retrieving the local tree parts and nullifiers and um using them in the application and um that's that's how it goes so let's think about the kinds of applications we can build um private voting is kind of a um sort of a classic use case for semaphore
um but think about social networks private personal networks or social networks that have some privacy guarantees if you want you want uh we want um we want guarantees that a particular handle is is the unique human um but we want to we might want to have some privacy so that we don't know who that human is we just know they're a particular member of a set um so you can build an application like that with all the with all the Privacy guarantees and so on anti-spam greatly limiting nullifier is
a is a great use case um and uh uh you can watch the talks on that to find out more about it um but yeah that's again using uh using the anti-civil properties that that interrupt can um can provide um so you know with anti-spam don't necessarily 100 um interesting guarantees of unique Humanity but you want reasonable guarantees uh someone with a a bot account can't just create hundreds of of accounts and abuse
the you know abuse the application [Music] um and send lots of spam so it's going to be a useful uh filter spam filter uh we could build things like Fair airdrops where you know it uh you want to with with an airdrop you want to be able to suppose you want to be able to um assign an airdrop to humans unique humans who who would um who have contributed to a to a system in some way or other but you don't want you
want to guard against uh those who just create a new account um uh just to uh just to clean the airdrop so um so so yeah so interrupt could could step in there and provide guarantees of humanity and similarly if you have a faucet uh you might want to uh have have rate limiting but then you're assigning to an account you're sending the the funds tokens to to a particular account and um without the anti-sibil someone could bypass the rate limiting by by just creating a new account so we can
provide the anti-civil properties there as well um so they're just a sample of the application and some of you are building using internet which is great and we've had uh we've spoken to some other people in doing devconnect and around that who are interested in the project so um so yeah we think it's uh it's it's a useful excuse me a useful application to have in the ecosystem I guess uh yeah it's um there are different ways that it could develop in the future
um once we have a core set of accounts that are guaranteed to be humans we can kind of build on that and um and you know use a web of trust kind of things spreading out from those accounts to to to build quite comprehensive identity system uh but those kinds of ideas uh are there for the future um can we just go to the next slide please in devconnect we did a demo at this point I don't have that so um but if you want to Emma's done a great little demo that shows a voting
application using um using uh interrupt and um uh you can just download that from the repo and um or else look at that video and you'll see Omar doing that demo a neat little application that just joins joins a group and then cuts a vote on a topic um and I think next slide okay there's our links documents uh repo and we have a Discord chat and Discord server
um if anyone wants to chat to us there but we're also we also have our interrupt group in the PSE Discord um at that point I think I've said all I need to say I'm just going to go back to the question there wasn't there Eureka an idea in adding school email address is another type of identity source yeah so uh school email address yeah that's a great source of identity because you have to you know you get one you get an account
um and it's an edu domain so it's uh easy to identify um and it's the it's a reasonably good guarantee I mean some people might have to either you accounts I suppose so there's never going to be 100 perfect but it's pretty good guarantee of humanity uh so yeah that's a great one that's one we have actually built emails we have thought about we could use a similar concept with phones and do an SMS check to make sure they own their phone number and um but I mean
that's not such a great a great unique Source because then you know one person can have more than one for another but they're not going to have thousands probably because these things are always um uh what you have to which we have to take into account is that if you put something really valuable that's based on this then the incentives are there to to abuse it um so even if we go back to that example of collapse I mean perhaps are a pretty good guarantee of humanity but if we put some application together
and just said we're we're just using people who have poets from a Devcon event or say it was Devcon or Dev connect or one or a physical conference um that might be a great source of humanity but if we put something valuable at the end of that then the incentives are there to to hack it and people would start trading you know offering money for a type nfts and um so it would kind of self-defeating in a way so we have to guard against that kind of thing uh yeah the question that created
curated groups um GitHub Twitter are built in built-in in Internet um yes yeah we have we have built the interfaces to Twitter and Reddit and uh Twitter Reddit and GitHub and we've applied rules that we think made sense um of course you've seen you've seen a survey and hopefully you've responded to that we're trying to we're trying to um come up with you know a better basis for
for you know what the criteria is for for uh for each of those platforms um but yeah for um so so then we'll we'll refine those criteria and that'll be sort of an ongoing process I imagine um but for for curated groups the one we have built is based on telegram groups um so you've put in a uh create a telegram group and then the administrator of that telegram group anyone can do that the administrator of the telegram group um will will be the curator they will add telegram handles to the group
and our API will or our [Music] um yeah our uh error application will will just interact with the telegram API to query uh the telegram group membership list and if someone can prove they have a telegram handle they control a telegram handle and they're in that list then we can add them to the group the questions are so the curator telegram curator uh group curator is there in the position of administering that group and then once once they they can add or delete according to their [Music]
um yeah add it'll delete numbers as they wish and then once once that's happened the rest of the process is just uses our our error application uh our chemical groups it would be a new semaphore group for that particular telegram group and then the end application can just refer to that group so yeah anyone can can build a telegram group and um uh and and do that kind of thing um it could also be done on chain using a smart contract which has a white list of addresses that it will accept it's
another way of doing it um so hopefully that is Charlie's question is it possible to construct composite ideas where group membership depends on various criteria multiple identity providers yes um I think in that case the way to do it would be the thing we have to guard against is um if one person has a Twitter Twitter handle and a Reddit handle then we don't we want to make sure they don't join three times um so the way we'd probably do it is have a single group
um a single group that can draw from any of those sources um yeah so we'd have to think about how we exclude those if it's important to exclude it some notifications might be okay with having three different identity commitments um but yeah there's a catch there I'm not sure we've totally thought that through yeah but we we have had the idea before um anyone can have an AC pattern domain
maybe we can you use that restricts with uh the are we talking about an email ending in dot AC um that doesn't seem to be a very good guarantee of uniqueness to me um it would be possible it would have to look at the uniqueness guarantees and that's in that scenario if a user could generate multiple valid signatures for the same message from the same if address could the user sign
multiple times uh the the message is very specifically constructed um it does have the the name of the group they're using or at least not the name of the group but the name of the identity source so it'll be something like Twitter um and the message is just that I want to join a Twitter group or something like that it's very specifically maintained uh very specifically constructed I should say um so that the one if address will always produce a unique uh signature and we can do an ecd easy recover to to
find the address behind that and that's the address we mark off so so I think we're we're fairly silently preventing multiple users uh multiple uh yeah I'll put three use of ethereum account using net mechanism [Music] um yeah yeah so um wait do you use EC recover like inside of solidity easy recover is now it's not in solidity it's in um uh it's in uh
uh so we we asked metamask to sign the message we construct the message we ask metamask to sign it we get the signed the sign message and we do AC recover in distant brother JavaScript JavaScript okay so um something we've been wrestling with so ecdsa signatures aren't deterministic they have a random value but in metamask they use the hash of the message as the random value so theoretically you could just use any random value and generate multiple valid ecdsa signatures for the same message um and so that's sort of a problem we've been solving in another project and so I
just wanted to see if um you guys had an approach to that yeah well uh I'm not too familiar with the details on that but I'll I should check it out yeah I can follow up a message about this for sure yeah Emma Emma would uh would have those details um yeah it's interesting yeah we'll follow up and okay the Eureka's question I wanted to ask possible obstacles that you guys can think of um
yeah well uh is as I say we're we're not um we're not claiming to be 100 to provide 100 guarantees of unique Humanity most of our identity sources there's always going to be um there's always going to be avenues that are really dedicated uh um the one who really wants to create a second account they'll find a way to do it but but for many applications think of something like rln you know that's probably okay okay if if one thousand do that and they
only come up and they only get to do it with a a handful of accounts they're not creating thousands of accounts um so um yeah there are ways to hack it it's never never going to be perfect but it's probably going to be good enough yeah well other obstacles um yeah so [Music] um uh I mean there's going to be obstacles um
yeah I don't know um sorry I didn't catch that oh yeah do you guys hear me now yeah um yeah so this is not a question but a little bit of context that why I asked this question is yeah I wanted to build like a private voting system for local school community so I wanted to like verify all this my students who have who have
um school email address and connect that person digital identity as Nolan's email address to um ethereum address and let them vote on on chain yeah that's cool um so yeah if you can find uh um some kind of so you could do that with a curated group I suppose and just put members of the community into a into a big telegram group or a some other way of identifying that that members of that Community then the rest of it
gonna fall into place that's great yeah thank you foreign that's been great everyone Thanks for
thanks for attending and thanks Charlie for for the slide thanks for presenting it was good okay thanks thanks guys bye-bye bye guys bye foreign