Zero-Knowledge Proofs

From P2P Foundation Wiki
Jump to navigation Jump to search


Description

From ChatGPT, prompted by Michel Bauwens:

A **Zero-Knowledge Proof (ZKP)** is a cryptographic method that allows one party to prove to another party that a statement is true **without revealing the underlying information that makes the statement true**.

The party making the claim is called the **prover**. The party verifying it is the **verifier**.

For example, Alice could prove to Bob that she knows the password to a particular account without telling Bob what the password is.

The key idea is:

> **Prove that you know something without revealing what you know.**

Zero-knowledge proofs are useful wherever systems need to establish trust while minimizing the amount of information that must be disclosed.


Characteristics

The Three Properties

A zero-knowledge proof generally aims to provide three important properties:


1. Completeness

If the statement is true and the prover follows the protocol correctly, an honest verifier should accept the proof.

In other words:

    • True statement + honest prover → proof is accepted.**


2. Soundness

If the statement is false, a dishonest prover should have only a negligible probability of convincing the verifier that it is true.

This prevents someone from generating a convincing proof for something they do not actually know or possess.


3. Zero-Knowledge

The verifier should learn **nothing beyond the validity of the statement itself**.

For example, suppose someone wants to prove:

> "I am over 18."

A zero-knowledge system could allow them to demonstrate that fact without revealing their exact date of birth.


Typology

Interactive vs. Non-Interactive Proofs

An **interactive proof** involves multiple rounds of communication between the prover and verifier.

A **non-interactive zero-knowledge proof (NIZK)** allows the prover to produce a proof that can subsequently be verified without an ongoing back-and-forth conversation.


SNARKs and STARKs

Two important families of modern zero-knowledge proof systems are **SNARKs** and **STARKs**.

    • SNARK** stands for:
    • Succinct Non-interactive Argument of Knowledge**

A zk-SNARK generally produces a relatively small proof that can be verified efficiently.

Some SNARK constructions require a setup phase involving cryptographic parameters.

Different SNARK constructions have different security assumptions and setup requirements, so "SNARK" does not describe one single protocol.

      1. zk-STARK
    • STARK** stands for:
    • Scalable Transparent Argument of Knowledge**

STARKs generally use hash-based cryptography and can avoid the trusted setup required by some SNARK constructions.

They tend to produce larger proofs than many SNARKs, but can offer attractive properties around transparency and post-quantum considerations.