IDEN3: Scalable distributed identity infrastructure using zero-knowledge proofs to guarantee privacy
Devcon·Wed, Oct 9, 2019, 12:00 AM
Visit the https://archive.devcon.org/ to gain access to the entire library of Devcon talks with the ease of filtering, playlists, personalized suggestions, decentralized access on IPFS and more. https://archive.devcon.org/archive/watch/4/iden3-scalable-distributed-identity-infrastructure-using-zero-knowledge-proofs-to-guarantee-privacy IDEN3 is NOT an ICO. It has no token at all. It is an open source permissionless identity layer built on top of Ethereum that we expect many projects will be able to use as a foundational layer for their own identity solution. It is a simple system that allows any identity to make a claim about any other identity. Our talk at DevCon4 will cover these topics: - We will introduce the idea of a decentralised identity management system and the challenges and needs for this solution. We will explain how IDEN3 can deploy millions of identities on blockchain without almost any expenditure of gas, allowing the system to scale to become a global solution with Ethereum as it is today. We will show how the claims are managed off-chain and validated on-chain and off-chain. We will explain how to generate proofs to validate claims that are valid only for a specific recipient and not reusable. We will show how to create proofs of those claims anonymously without revealing unnecessary data by using zero knowledge proofs. Finally we will talk about the status of the current development, our roadmap, milestones, the team, etc. Speaker(s): Jordi Baylina Skill level: Intermediate Track: Privacy Keywords: identity, zkproofs, proofs Follow us: https://twitter.com/efdevcon, https://twitter.com/ethereum Learn more about devcon: https://www.devcon.org/ Learn more about ethereum: https://ethereum.org/ Devcon is the Ethereum conference for developers, researchers, thinkers, and makers. Devcon 4 was held in Prague, Czech Republic on Oct 30 - Nov 2, 2018. Devcon is organized and presented by the Ethereum Foundation, with the support of our sponsors. To find out more, please visit https://ethereum.foundation/
Transcript
we live in a world where there are very few certification authorities most of them are banks government's big corporations but we want that each of you each of us can be a certification Authority that's the main goal of the island free project we want to democratize democratize the certification part the claiming part when we are doing a claim not matter if is done by a government or if it's done by your fake identity when they are doing a claim cryptographically this claim is exactly the same it's a claim that can be proved tomorrow or any day in the future before going deep in what technically we were doing in iron 3 I would like first to introduce three concepts I want to introduce what we understand as an identity what we understand as a claim and when what we understand as a proof identity I don't want to go deep I don't want to enter in philosophical philosophical definitions and all that I will put you some examples an identity can be a person but can be a company can be an organization can be a dau can be a government or if you want even can be a thing you know can be a microphone or can be a chair or can be this room half an identity or a bought okay in we in an or system when we talk about the identity mainly we refer to identities as accounts we represent identities by accounts in general they are going to be smart contracts okay so the address of a smart contract is going to be or identifier of that identity the next concept is about claim claim is understand me if you want and and not rightist a statment okay so something that an identity is saying most of the times these talents refer to other identities for example when a university is saying that this a student make it make the degree this is a stand man this is a claim that the university is doing over that student but if you think a little bit you will see that almost anything that we are saying can be not rights can be converted as a claim examples an invoice that's making a company I like in a facebook can be an endorsement to somebody else or if you want even a single message a single email at the end is a claim that I'm doing as you can see there are claims that can be public but there are so claims that can be private claims is something that we are just saying okay and the next and why we want to do claims why we want to not write claims mainly because we want to prove those claims sometime in the future and here is these three actor parties they have the claimer this game could be the university that's doing the claim over a student and then the student when goes to for a job and is proving to the employee that he already had this degree and because there is this relationship this truce Ness between the employee and the university this proof is valid for him okay these proofs can be many kind of proof we will talk a little bit later but can be on chain proof if you want to prove to a smart contract of chain proof when you want to prove peer-to-peer public proof when you want to prove to everybody there are many kind of proof but the system at the end works about - we're talking about this kind of in area 3 what are the road or goals what we won we won a system that first of all must be private by design and by default privacy is an important value of iron 3-1 self sovereign identity we want to address the key management we want to be accessible usable we need to be scalable and we also want to be universal that is interoperable between the systems ok let's go step by step first cell sovereign identity what does it mean with that that means that any of you can create as many identities as they won and this should be I would say free creating an identity should be as easy as creating a normal account it does not need to have any gas and ether or anything like that and we say that self-serving because you full control that and the same that the same way that happened with when you hold a normal account in Bitcoin you need these responsibilities of keeping the keys if you lose the keys in some way you can lose the responsibility the same way that in Bitcoin or in ether you if you lose the keys you lose that you lose that so because this responsibility we need to work a lot in the key management ok and this here we share a lot of the problems that any wallet have here as you can assume as you can imagine the key should be revocable recoverable we are thinking that we don't want the keys to go around that belief among the that leave the devices we are sharing a lot of the concepts and we are a fully alignment with I don't know if you saw yesterday the Alexander's are a universal login we work in that direction one keeper application so the key management is an important part of these of this project accessibility I think we want to create a system that's made that goes mainstream that everybody should be able to use it so be easy to do so be easy for anybody to start working in the system this is for example and I'm going and start into entering a little bit technical how we are doing we are using this when you are creating an identity mainly what you are doing is creating this contractual or if this identity contract that you don't actually deploy when you are creating that identity but once you create this contract that's not deployed yet they already have an address so these already have an address so this identity is created already so you the people can start doing claims on that and all that without the user having to do anything else that just running at random dies at some point and creating that identity scalability and here is what we are going to go deep we want a system where everybody can create as many identities as they want but we want a system also that anybody can create as many claims as they want and to scale that in a global basis so that we are there are millions of claims in the world we need to apply some techniques that I'm going to describe next to explain that how we anchored the claims in the blockchain what we are doing mainly is if I want to create many claims I put all those claims in a database I take this database I construct a miracle tree of that database and I just publish with a transaction the root of that of that miracle tree in the chain every time that I have new claims I have changes I could change the route or I will change the route of the database as one chain as you can see this is scales very well for identities that may a lot of claims example a government in the government there are many things that happen in a country there is people does get born people that die people that get married people that change their addresses so the government just with a single transaction per day could abate the full database if you want instead of one per day one per hour or one every five minutes but this is quite cheap for the government just to keep a millions of claims database okay but what happens when an individual user a normal user just wants to do one two three ten transactions per day should they do pen transactions should they do ten transactions if they want to make just ten claims and here is when we introduce the indirect claims what's the indirect claims here we introduce a relay so when a user wants to create a claim let me for example saying okay I like this picture okay this is a claim that I want to do but instead of creating a transaction abating my route of claims what times what I do is I'm telling to our layer let's think for a moment that this is a trusted relay we will see that that that's not necessary necessarily but if it's a trusted layer and telling to the relay er a relay er I want to say I want to claim that I like this picture so the relay what could say you say Oh Jordi makes a claim that says Jordi is saying that he likes that picture okay this would be an indirect claim but instead of doing claim by claim what I'm really asking to the relay is just to update my wrote my route of claims a relay er please update my fruit of claims so the relay er just take that route of claims and publish as a claim inside that and you see this miracle tree that depends on the other on the other America tree okay but this system as you can imagine quite a truce nests between the between the user and the relator so in order to solve to solve that what we are working is in the truth less relayer so what's a trusted relay a truce less relay here is several layer that can match it so layer that I can tell to the river layer and the layer cannot publish anything in the unchain to ensure that the relay when the relay is publishing when the relay is publishing that on chain it's also besides that besides the route it also adds zero knowledge proof that warranties that disclaim or if you want all the claims that are updated in this change follows a specific rules so in this way the user have the warranty that the relay err will not what we means with that of course the relator can stop working maybe we have maybe or maybe you don't get any proof from the earlier of course the users also can always can change offer a layer and maybe change another to server layer but if you get a proof from the layer you know that this proof is valid valid means that if this proof says that you claim it something you can be sure that this user claim it something or the other way around if the proof says said that you didn't claim something then you can be sure that the user didn't claim didn't claim that okay so and as I told you to use that to work with that we need to create this zero knowledge proof as you can imagine if you want to if you want to scale that we need to create this big constraint circuit to create as many claims per transactions and this is where we are working later will explain little bit the update on the zero knowledge proof state let's go to the privacy part because here we are also using zero knowledge proof but this is just to to prove things without revealing the full identity in for example that I want to enter to a nightclub I want to prove that I'm 18 years old but I don't want to tell to the entry people Who am I where I live and all the information about that so I can make a zero knowledge proof that prove that I really hold the key that according to the government I'm 18 a year years old but without revealing anything else about my identity the same thing happened for example with anonymous voting if I when I want to vote when I want to vote I don't want to reveal my identity I want to vote I need but I need to ensure that I can vote but I can vote that I can that I am that somebody claim it that I can participate in that voting okay this can be used in this can be use in in in this can be used so this can be used for a for a voting system another example that implies for example as Marc contract would be an IC o---- may be an IC o---- requires that the people that participate in this in that IC o---- is authorized by a third party because somehow I see from some legal stuff I can't create an IC o---- a smart contract IC o---- that accepts zero knowledge proof that warranties that the people that participate that it's okay it's in the list it's now to write this person but without revealing exactly what I Who am I or even how much money I spend on that on that on that IC o---- another interesting things that we are doing is this concept of non-reusable proofs what's a non-reusable proof imagine that i belongs to a political party according to the political party so the political party maybe makes a private claim on me that I belongs to a political party I want to prove him that I'm from that political party but what happened if he just published this proof to everywhere in the world everybody would know that I am from that political party a non-reusable proof is a proof that I can't send it to him and I have the warranty that if he published that it will not prove nothing of course he can always say that I'm from that political party and his information that he knows but he will not be able to prove how we do that mainly is we're taking the proof I'm from that political party okay and I'm creating like another proof that says okay I'm proving to you that I am from that political party or I know your private key of course I don't know his private key so he is sure that I am from that political party but what happened now when he published that to everywhere else he's saying his proof is saying Jordi is from that political party or I know my I know my private key so because you know everybody knows that he knows that he knows the private key is obvious that he can generate as many proof of those faking even if I'm or I'm not from the political party so this part this proof is not usable anymore so here is more or less the technical details of what we are doing of course identity systems like this are required in if not all most of the applications in the space there are many uses to use cases from reputation systems directory systems signals saying simple sang ons many I would say that almost any application that you think that there is like a login password will require an identity system like that what's the status of the project well we have him working very hard for the last four five months so it's a very young project right now but what what we have a chief right now we already have a fully functional wallet wallet four four identities where you can see where you can create your identities you can do start doing claims checking the claims proving the claims and so on we have a relator right now is still a trusted for layer and we have been working also in the zero-knowledge technology for the zero-knowledge technology we just live right now just created a couple of tools one is a circuit compiler it's a compressor well it just is a it's a language where you can create zero-knowledge circuits and you can and and then we have another tool that's called snarky I guess it's just a simple JavaScript implementation of the of the Zetas narcs right now currently we are working hard in trying to scale the generation of Zika snarks proof we are working with different people in the community and so on mainly the idea is to try to or goal right now is to create 1 billion constraints in 10 seconds that's our goal and we are working with different technologies GPU FPGAs and different technologies and seeing and trying to check which one is the best one for that and that's mainly my presentation here are some takeaways self sobering and identity should be a scalable privacy by design have we have this wallet and this key management early version if any of you is interested in checking and having a demo here there is a bunch of people with my shirt there we'll be glad to explain it to you and also focusing in standardization centralization is something that we have not talked very much but yeah we believe that the the system should be very standardized that's why we are just an association it's an open-source project and we want to work and contribute as much as we can to a world where everything is more or less than the rights and the system's connects one each other and that's my presentation thank you yeah we have a fair amount of time for questions if anyone has to me yeah I just came back from the internet identity workshop in California and it was great it seems like a lot of these conversations are happening around identity in the internet right now it's awesome I was curious if I'd entry has an D ID method so be compatible with the ID spec yeah the ID is just standard for referring to the identities of course it's absolutely compatible because even there are some specific standards for a theory based kind identities so yes it's I would say that the current standards are appliable the main problem of the current standards is that all these zero knowledge technology is not it's not very much on their mind and you know for example it makes no sense at all to put a jsonparser inserted inside the cosmic circuit so I would say that there are some modifications and some adoptions to those standards that we we need to take with we need to take B in account in order to adapt to this new kind of identities so for application developers what can we use yeah we have a we are building III think it's quite ready but we're building mainly an SDK where all these all these basic functions of you know creating an identity creating a claim very proving a claim all that should be embed as a black box so we are working in this library in this SDK where applications will be able to build on that or goal for example or applicator that but the wallet application is just a reference application we are working very much in in you know in the in the protocol in the standard so that you know even if anybody wants to create an application that horse identity is in that side that should be perfectly possible i cost revere Anahuac imagine the use of Zika starts to alleviate this sort of trusted relayer set up ZK starks require the trusted set up is that a concern editor is there anything like malicious you could do if there was an issue with the generation ceremony yeah Zika stars we all of us this is a concern you know this is the big pretty I would say that the cars are quite perfect except for that which is a huge issue so yeah just set up is a problem that you have once we are thinking in of course it's something that we are start thinking and things and solutions on that we have thinking for example in using for example some trusted hardware to do these these ceremonies of course there is these multi-party computations on that we need to automate in some way or the other but the nice thing of the truce is set up is that once you have done that and if you very worried believes in that ceremony it's valid then the system is good forever so yeah we are just analyzing different options of that and yeah that's one of the weak problems there are there are also all these new technologies hysterics for example that we are also very interested in on that that they don't require these true state ceremonies yeah they are quite better except that when you want to go on chain now they are huge I think minimum was kilobytes of that and putting that on chain at least right now is quite a problem so that's why we are sticking a lot in in the snarks but clearly starks is technology that we are start looking at and it's a another zero knowledge technologies that are coming from the research world there was a someone had a question in the back who has a mic no eats kid oh hi maybe this is a longer answer but I was actually unsure how when the receiver of the identity he exposes the information his private keys you were saying the if he publishes the identity the his private keys were exposed or he were saying the sender of the identity their private keys were exposed no the private keys are not exposed and we are even the private keys should not even leave the device so private key is something that only you hold and it's of I would say that's it's very important in any cryptographic system that private key is keep keep sacred the only thing that we are transferring from one side to the other mainly are proofs of if you want requests for proofs a please prove me that you are 18 years old here comes the proof okay so that's mainly what what the data that's moving is about it's about it's about proofs I want to mention something that's important we have not talked about where all these miracle treats and all these data is stored okay the data each user each user should be responsible for their data so if I'm doing claims all the claims that I'm doing with all the miracle the miracle notes all the notes of the miracle tree I should care about that data I can store that data maybe there is some people that's comfortable in storing that in a Google cloud maybe there are some governments that they have their own premises maybe there are solutions that people that want to store those data in an IP FS in an encrypted way ipfs and maybe using no say no cipher just to access so there are many options about where the user keeps that data but in a cell sovereign system ajusshi user have to take care of his data of course we can provide tools for in order to have the users but it's important that we understand that when they when you have a censoring identity you own your identity and that means you own your data question so as a developer obviously I'm very interested in what you're doing I'm gonna take a look at your library I'm over here okay I'm gonna take a look at your github libraries as well as your documentation one thing just to help me when I start that journey is you know compared to what is being developed by you port in the etherium space or you know sovereign or hyper ledger indie on their own chain how would I think about this effort in this technology in comparison to those yeah well we are different different projects that maybe we have different views we are all of us working together we are connected on each other and we are just working I would say more or less in the same direction but if even if there are different projects that are trying to do a little bit the same at the end end users the developers the people will just you know be the the are they were they will say which is one the the one more the one was useful to them so it's a what do you mean by connected though is there an interrupt just looking to do just connected mean that I'm connected with most of the people that's developing and we are trying to you know for example the three magicians and in different environments there is to try to generate those standards and those standards that we are aligned on that and trying to get consensus in what are those protocols that appear the main problem here is that now the technology is not clear yet so I would say first we need to the develop the technology develop some applications see how the people how the people is using that how the system works and once the reason adoption of those technologies we can start thinking very much in what what what what are the best standards if we define the standards prematurely we have women it's possible that maybe the standards would not be working and maybe we will have having another de facto standards so here the tempos are very important I think it's important that there are many many teams that are working in in in solutions like that or sort of solutions similar to that and keep working and being aware of what all the other teams are doing just being transparent and you know the nice thing of open-source is that we don't have to hide anything just just talk and if they are battery there's as an example alex van der Sar is doing an incredible job in the login we are just going in that direction maybe there is some security issue that we are not what we don't see it clear okay we will tell them we're attack him hey what happened with this and there is will be a talk and there is a feedback I really mean our limitation between the teams and if we work that way mmm I'm sure that we can get a good we can get a good consensus of that and if we don't get the consensus maybe it's because there is two approaches that make sense and at the end the people the market the community will decide which one is the best one last question all right Jordi thank you for work really appreciate it right here I was hoping you'd indulge us a little more I'm very curious about how you made it a one-time use proof with the private key could you really reiterate that one more time the one-time proof the proof that not reducible proof you mean yeah okay yeah okay that is imagine that I want to prove that I am from a specific religion okay I don't want you just you understand that you I don't want you that you are able to prove to everybody else that I'm from that pollution but actually I want to prove you okay so the proof that I'm sending to you is a proof so I am proving to you that I either I'm from that religion or either I'm I hope I have your private key which I run okay so I will be able to create a valid proof if I have your private key or I am from that I'm and I'm from that religion because I don't have your private key the only way to generate a proof of that kind is by really having the having so happy having the claim that says that I'm from that religion okay so when I send you that proof you have the warranty the time from that religion because I don't hold your private key what happened when you take that proof out outside when you publish that proof you are saying to the people world surely is either from that religion or I hold my private key so everybody knows that you hold your private key so this you can't generate as many proofs even as you want if I'm from that religion or not so this proof to the people is not valid anymore it's not a valid proof other thing is that you can do a claim saying Jordi's from that religion but then it's according to you that I am from that religion not according to the church the time from that religion that's the difference of course when I proving something to you I am giving some piece of information okay but I'm giving to you I'm not giving a proof so what I'm not giving is the capacity to prove that that information is valid okay and that's that's very I think that's very tricky here I have to thank you a lot here to Vitalik because the rare comes from him in instances but I think it's a cool idea you
Automatic transcript — names and jargon may be misspelled.