Skip to main content

Introduction

Zero-knowledge proof (ZKP) systems help principals to verify the veracity of a piece of information without sharing the data. They are widely used to preserve confidentiality and ownership of data. ZKP can be seen as a reusable building block for making the future internet trustworthy and secure. In this project (0KNOW) we aimed to develop a lightweight group-theoretic zero-knowledge proof system that can be employed as a cryptographic primitive in many security protocols such as identification, authentication, or credential ownership.

In 0KNOW, we have studied NP group-theoretic problems and selected the search version of the subgroup distance problem within the Hamming metric. Breifly, for given distance $k$, given element $g$, given subgroup H from the symmeric group of degree $n$ ($S_n$), problem asks to find an element h from the subgroup H which is at most $k$ distance from $g$. Our choice as platform subgroup is an elementary abelian subgroup. We have designed a novel black-box 3-round statistical zero knowledge proof of knowledge protocol called the Subgroup Distance Zero Knowledge Proof (SDZKP). It can be seen as a Stern-type protocol. It has 3-special-soundness property which assures knowledge soundness with error $\frac{2}{3}$.

All in all, we present a new zero-knowledge identification scheme rooted in the complexity of the subgroup distance problem within the Hamming metric. SDZKP incorporates a cryptographically secure pseudorandom number generator to obscure secrets and employs a Stern-type algorithm to ensure strong security features.

Articles

  • Cansu Betin Onur, ``Intractable Group-theoretic Problems Around Zero-knowledge Proofs,'' arXiv:2206.13350 [cs.CR] [@onur2023intractablegrouptheoreticproblemszeroknowledge]
  • Cansu Betin Onur, ``A Zero-Knowledge Proof of Knowledge for Subgroup Distance Problem,'' arXiv:2408.00395 [cs.CR] [@onur2024zeroknowledgeproofknowledgesubgroup]

Acknowledgement

This work is partially supported by the NLnet foundation under the MoU number 2021-12-510.

Installation

We present the details for installing SDZKP using pypi package or using the source code.

Installation (Package)

Create a project folder, in that folder preferably create a virtual environment:

python3 -m venv venv

source venv/bin/activate

Prerequisites

SDZKP is an interactive zero-knowledge protocols and we use gRPC.

pip install grpcio

pip install protobuf

You can easily install the required packages by pip install -r requirements.txt.

SDZKP package

Install the latest SDZKP package

pip install sdzkp

You can then copy sdzkp_verifier.py and sdzkp_prover.py from GitHub and run them in two terminals (do not forget to source venv/bin/activate in both terminals).

Installation (from source)

To install sdzkp from source, checkout the latest version from GitHub by

git clone https://github.com/cansubetin/sdzkp
cd sdzkp
pip install -e .

If you change the gRPC proto definitions, sdzkp/api/sdzkp.proto then under root project folder, run

pip install grpcio-tools
./compile_api.sh

Release files for SDZKP 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for SDZKP 0.1.0
File Size Uploaded
sdzkp-0.1.0.tar.gz 31.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for SDZKP 0.1.0
File Interpreter ABI Platform
SDZKP-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.1 kB

Release files / sdzkp-0.1.0.tar.gz

Download URL sdzkp-0.1.0.tar.gz
Size 31.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8fb9fe756d5e3e0e7df6d4be9e9d6be9da53fb71a63da5969231d9d658eb8f96
BLAKE2b-256 checksum
How to use checksums
caea8dbc76215d5ce03a3ae29dd50cb5d544b70b2b4b239d61faaedf04a0fe0a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / SDZKP-0.1.0-py3-none-any.whl

Download URL SDZKP-0.1.0-py3-none-any.whl
Size 34.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2e8d2f741274dfefabef720015c0b353eb817d91ab2f2e880f221d2945e43ab7
BLAKE2b-256 checksum
How to use checksums
dc7b6ca35abf7fb3666f4a58b2131fe0397838fba61ffd6bdb241d82e70f26aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page