Zero-Knowledge Proofs (ZKPs) are cryptographic primitives allowing a party to prove to
another party that the former knows some information while keeping it secret. Such a premise can
lead to the development of numerous privacy-preserving protocols in different scenarios, like proving
knowledge of some credentials to a server without leaking the identity of the user. Even when the
applications of ZKPs were endless, they were not exploited in the wild for a couple of decades due
to the fact that ...
Zero-Knowledge Proofs (ZKPs) are cryptographic primitives allowing a party to prove to
another party that the former knows some information while keeping it secret. Such a premise can
lead to the development of numerous privacy-preserving protocols in different scenarios, like proving
knowledge of some credentials to a server without leaking the identity of the user. Even when the
applications of ZKPs were endless, they were not exploited in the wild for a couple of decades due
to the fact that computing and verifying proofs was too computationally expensive. However, the
advent of efficient schemes (in particular, zk-SNARKs) made this primitive to break into the scene in
fields like cryptocurrencies, smart-contracts, and more recently, self-sovereign scenarios: private-by design identity management and authentication. Nevertheless, its adoption in environments like
the Internet of Things (IoT) remains unexplored due to the computational limitations of embedded
systems. In this paper, we introduce ZPiE, a C library intended to create ZKP applications to be
executed in embedded systems. Its main feature is portability: it can be compiled, executed, and
used out-of-the-box in a wide variety of devices. Moreover, our proof-of-concept has been proved to
work smoothly in different devices with limited resources, which can execute state-of-the-art ZKP
authentication protocols.
+