Skip to main content

SDZKP: A zero-knowledge proof using subgroup distance problem

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sdzkp-0.0.5.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

SDZKP-0.0.5-py3-none-any.whl (34.3 kB view details)

Uploaded Python 3

File details

Details for the file sdzkp-0.0.5.tar.gz.

File metadata

  • Download URL: sdzkp-0.0.5.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for sdzkp-0.0.5.tar.gz
Algorithm Hash digest
SHA256 7f9bcd8f7e0943a7a810eb25a911062b34b21023442aab41e4664237568edcaf
MD5 80ed5cca82784004160705d0c25dab3d
BLAKE2b-256 f30367612e63072340b31c647f75184b7f7f39d09e9133dd08554be108f8ac33

See more details on using hashes here.

File details

Details for the file SDZKP-0.0.5-py3-none-any.whl.

File metadata

  • Download URL: SDZKP-0.0.5-py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for SDZKP-0.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 84d57fea69dba70646b394732756e9fc9a9da177742cbdbddbf83df2c964a6c0
MD5 8881f1f4ebe54cf080608b195be6195c
BLAKE2b-256 6f3d4186810e33833d8f84e46763632f07c0a0e3bc557d84cb5631ee32f32428

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page