# Implementation and Security Test of Zero-Knowledge Protocols on SSI Blockchain
## 2 Background
### Related Work  
The currently available bibliography on Zero-Knowledge is extensive and varied. There are numerous ZKP implementation projects accessible in public repositories:  
* The ING group published ZKKrypto, a library of ZKP algorithms based on different hash algorithms and elliptic curve cryptography. It is written in Kotlin, a programming language interoperable with Java. Although instructions on how to install the library are provided, it does not explain the operation of the implemented protocols and it is difficult to analyze for a person who is not an expert in the field. * NoKnow is a Python library [13] that implements the Schnorr protocol in its non-interactive version based on the elliptic curve logarithm problem. It is based on the implementation described by [PERSON] et al. [14]. It provides a simple and intuitive API, but it is still too high a level for a first approach to the Zero-Knowledge world. In general, there is an effort in the scientific community to reach a standard regarding the implementation of Zero-Knowledge Proof protocols. However, they are not very friendly for people with less expertise on the subject. On the other hand, there are also numerous publications explaining the fundamentals and advantages of using this methodology, specifically in application to Self-Sovereign Identity. [PERSON] et al. [15] analyze the weakness of the NTRF key exchange protocol against Man-in-the-Middle attacks even after ZKP has been applied to the algorithm, finding that it is indeed vulnerable. They explain what the attack steps would consist of one by one, but without actually showing a specific practical example. [PERSON] et al. [16] make a comparison of the efficiency of the Feige-Fiat-Shamir and Guillou-Quisquater protocols as authentication protocols on a web server. They explain the steps of the protocol without going into the mathematical details or why they work. They carry out an analysis of the efficiency of the protocols by measuring the time spent by the Proper and the Verifier, but do not provide a tool that the reader can use to carry out their own experiments. [PERSON] exposes in [17] an implementation of the Feige-Fiat-Shamir protocol, exploring its possible use in the implementation of an alternative SSH authentication scheme. He does not carry out a study of the possible vulnerabilities of this protocol, referring only to its weakness against MITM attacks. The goal of the study of the sovereign management of identities decentralized with Blockchain [18] is to create a system that can manage our digital identities in a similar way to how we manage our physical ones. This system would allow us to prove our identity online just like we do in the real world. The authors achieve this by building a virtual environment within the Sovrin Blockchain and leveraging the Hyperledger Indy protocols to create a practical example of this innovative identity management system. The authors of this work have chosen to exclude IoT devices from their study. There are works on Self-Sovereign Identity that address the issue from a legal perspective. That is, looking at the way in which such a system could be implemented in public entities such as, in this case, the Spanish government and the European Union (EU). This is the subject of the article by blockchain lawyer [PERSON] [19]. In this article, the author talks about the main system of digital identity in the Spanish Public Administration, Cl@ve system, which involves several entities and third parties. In the article, the author already anticipates the benefits of SSI versus Cl@ve: in a Self-Sovereign Identity system, given that the data subject already possesses the identity data and other authenticated attributes, the user can identify themselves without the intervention of the identity issuers (p. 5). The author then discusses the two main regulations on the electronic relationship between citizens and the Public Administration.