# Implementation and Security Test of Zero-Knowledge Protocols on SSI Blockchain
## 2 Background  
As Internet users, there are many occasions when we need to identify ourselves to access a service. In the case of registering on a social network, it is common to use aliases to protect our privacy and hide our personal information. However, when applying for a bank credit, we need to provide digital proof to verify our physical identity. As a result, the level of trust placed in our identification is different in each case.  
In the physical world, a person can prove their identity with their ID, driver's license, or similar documents. These have in common that:  
* They are issued by a trusted authority; whether it is a Public Administration, an autonomous body or a private company, the validity of the certificate is directly related to the trust granted to this third party.
* They are difficult to falsify; the measures taken to prevent the copying or modification of these documents are numerous and increasingly elaborate.
* They are recognized on a large scale; for example, the Spanish DNI is a valid identification document within the entire European Union.
* They have the above three properties which characterize physical identification methods that are difficult to replicate in the digital world.
* Technology facilitates the falsification of documents; a bank would not accept a photograph of a DNI, as it may have been edited.
* There is no single valid identification method for all services; users are forced to create a specific account for each website where they want to log in.  
The problem of digital identity has been present since the Internet was made public, and as such has evolved throughout history. We can speak of three models of digital identity [5]:  
* Centralized Identity: This was the first model to be used and the most similar to physical identity models. An identity is established by creating an account with a service, web, or application. If the account on the provider is deleted, or if the provider suffers an attack that causes a loss of information, our identity disappears. This model has several disadvantages:  
* Forces the user to remember their credentials for each site they want to access, possibly with different security requirements.
* Identity profiles are not transferable or reusable.
* Centralized user databases are attractive targets for cybercriminal attacks.  
The administration of a user's accounts in all of the different services where they are registered can become a real challenge, especially if all of the security recommendations on password policies are considered.  
* Federated Identity: This model aims to improve the multiple-accounts problem of the centralized model by inserting an intermediate agent: the Identity Provider (IDP). The idea is that multiple services trust an IDP in such a way that the user proving their identity to the latter is enough to access the former. Protocols such as SAML, OAuth, and OpenID Connect have successfully implemented this identity model. However, there is no global IDP that works with any application or web, and a new problem arises related to privacy and the monitoring of user activity: the position of the IDPas an intermediary in our relationships with different services gives it privileged information about our online activity.
* Decentralized Identity: The third identity model stems from the idea of eliminating the need to trust an identity provider authority, allowing the user to be the owner and creator of their own identity. This is where the concept of SSI arises. The user does not have to register an account in each of the services that they wish to use, but rather has the power to manage their different identity credentials via their virtual wallet, equivalent to the identity documents of the physical world, and use them to establish a reliable connection with the other parts. These virtual credentials are one of the main pillars of SSI and are known as Verifiable Claims.