Zero Knowledge Proof – protecting your own privacy17-12-2021 Author: Jan Tissler
Zero knowledge proof is a method of proving knowledge about something without revealing the knowledge itself. This can be used, for example, to log in to a service without having to transmit the password. We explain how this works here.
There may well be a technical way to better protect users' privacy and data. One example is the "zero knowledge proof" model described by Shafi Goldwasser, Silvio Micali and Charles Rackoff in their paper «The knowledge complexity of interactive proof systems»
Applied example: passwords
The model aims to solve one problem in particular: How do I prove that I have knowledge about something without revealing the knowledge itself? A practical example: passwords. We have all created dozens of login credentials for the most diverse services. In order to be able to log in, we transmit the password to the service in question, which then compares it with the information it has stored.
This procedure opens up to various points of attack, for example on the user's own device, on the provider's server and along the transmission path. While it is true that security measures exist such as an encrypted connection, which generally offer a high level of protection, it is also true that with an equally strong motivation, ways and means can be found to circumvent them. One example is a «man-in-the-middle-attack», in which exchanged information is intercepted and possibly manipulated by a third party.
Last but not least, people themselves are often the weakest link in the security chain, and in the case of valuable targets, attackers rely on sometimes surprisingly sophisticated tactics.
In the case of particularly critical access points, it would wiser to be able to log in without revealing a password. This is what happens, for example, in the «"Secure Remote Password" protocol, which relies on zero knowledge proof. In this case, a different method is used to prove you have the necessary knowledge, thus granting you authorisation to access.
But how does it work?
Zero Knowledge Proof explained simply
To illustrate the idea of zero knowledge proof, one story in particular can be used, told by Jean-Jacques Quisquater, Louis Guillou et al in «How to explain zero-knowledge protocols to your children».
In a nutshell, it goes like this: There is a fork in a cave, and no matter which of the two paths you choose to follow, you will eventually end up at a door. If you could open it, you would see that behind it lies the other path which you didn't choose. The two paths of the fork are thus connected, interrupted only by a closed door.
If person A now claims that they can open the door, they could prove it by simply taking person B with them. But at that point they would reveal how they open the door. But how can they prove that they have this knowledge without revealing it at the same time?
In the story above, this is how it works: Person A goes into the cave and randomly chooses one of the two paths at the fork. Person B initially waits outside, then comes in and calls out to person A which side of the fork to come back from. If person A is already on the right side, they can simply come back. If they are on the wrong side, they have to open the door to use the other path.
This process is repeated by both until person B is convinced that person A is not choosing the right side by chance but can actually open the door in between. The more often this is repeated, the more likely this becomes.
Person A in this example is called the "prover" in Zero Knowledge Proof, and person B the "verifier".
Challenges with zero-knowledge applications
One major difficulty is in developing and implementing an appropriate test. Another challenge might be in tracking down errors: After all, the processes are purposefully designed not to be easily visible.
Another problem is of a practical nature: if a user loses their password, there is no way for the provider to recover or change it. You are solely responsible for keeping it safe.
It turns out that with a good dose of resourcefulness and effort, a solution can definitely be found without transmitting any data that could potentially be intercepted and exploited by a hacker. In this respect, "Zero Knowledge Proof" and its related architectures and applications are a good example of particularly secure and data-saving solutions.