# Implementation and Security Test of Zero-Knowledge Protocols on SSI Blockchain
## 1 Introduction  
The Internet has taken on an essential role in today's society; thanks to the Internet of Things (IoT), it is encompassing areas of our day-to-day lives that could never have been imagined in its initial conception and, thanks to advances in technologies such as Artificial Intelligence and Big Data, its functions and capabilities are also reaching far beyond expectations. At the same time, digital identity and user data privacy have become major concerns in today's digital age. With the increasing use of the internet and technology, individuals and organizations alike are becoming more vulnerable to security breaches and identity theft. For example, in 2017, Equifax, one of the largest credit reporting agencies in the US, suffered a massive data breach that compromised the personal information of over 140 million people [1]. This breach included sensitive information such as social security numbers, birth dates, and addresses. Another example is the Cambridge Analytica scandal, where the data of millions of Facebook users was harvested without their consent and used for political purposes [2]. These incidents highlight the importance of protecting our digital identities and personal information online. As we continue to rely more and more on technology, the number of people concerned about the security of their personal data on the Internet is also increasing. In response to this situation, the use of technologies that provide greater control to the user and seek to eliminate the need to rely on third parties to protect their information is becoming increasingly popular. This is the case of blockchain, whose applications today gobeyond decentralized digital currencies and, more recently, Zero-Knowledge Proof systems. Blockchain technology is a way of recording information in a secure and tamper-proof manner. It works as a digital ledger that keeps track of transactions, contracts, and other information that can be shared among a network of users. What makes it special is that it uses cryptography to ensure that the information is protected and can only be accessed by those who have the proper permissions. The ZKP or Zero-Knowledge Proof systems are cryptographic techniques that allow a prover to demonstrate knowledge of a particular fact or statement to a verifier without revealing any additional information beyond the fact or statement itself. This is achieved by having the prover generate a proof that satisfies a specific set of criteria, which the verifier can then use to verify the claim without learning anything else about the statement. Therefore, they allow the minimization and limitation of accessibility to data in distributed contexts, such as Internet services in general, cloud computing, etc. [3] In particular, by combining blockchain technology with ZKP protocols, it is possible to create systems that provide both the transparency and security of a blockchain with the privacy and confidentiality of ZKPs. This can be achieved by storing encrypted data on the blockchain and using ZKP protocols to prove the ownership or validity of the data without revealing the actual data itself. ZKP is already in use in cryptocurrencies such as Zcash, which uses a ZKP protocol known as zk-SNARKs [4] for transaction verification even once encrypted; however, the purpose of this work is to study the use of ZKP in Self-Sovereign Identity (SSI) blockchain solutions. SSI supports the idea that each individual should have control over their online identity, as opposed to identity authentication handled by a centralized authority. The goal behind using ZKPs in SSI is to be able to verify our identity without giving out our personal information. At the same time, blockchain technology provides us with an immutable, secure, and auditable means of sharing public information, eliminating the figure of a third party (a certification authority) that verifies the validity of the identification.