Implements the Schnorr identification protocol and a simplified Zero-Knowledge Password Proof (ZKPP) over the discrete logarithm problem, letting a prover authenticate by demonstrating knowledge of a secret without ever revealing it to the server. Use when designing or building password-less or password-secret-free authentication, or when a server must verify a user's credential without learning or storing the underlying secret.
Start a fresh conversation. Replace the highlighted placeholders.
Use implementing-zero-knowledge-proof-for-authentication to design and implement a Schnorr-based authentication proof for [application], using [chosen language and test/lab environment], with [security requirements] including unpredictable challenges, replay resistance, and TLS.
Required inputs
[application]
[chosen language and test/lab environment]
[security requirements]
User-approved starter prompt based on a pinned source version; check current skill requirements before running. Task evidence ↗
SKILL.md
name: implementing-zero-knowledge-proof-for-authenticationdescription: Implements the Schnorr identification protocol and a simplified Zero-Knowledge Password Proof (ZKPP) over the discrete logarithm problem, letting a prover authenticate by demonstrating knowledge of a secret without ever revealing it to the server. Use when designing or building password-less or password-secret-free authentication, or when a server must verify a user's credential without learning or storing the underlying secret.domain: cybersecuritysubdomain: cryptographytags: - cryptography- zero-knowledge-proof- authentication- privacy- zkpversion: '1.0'author: mahipallicense: Apache-2.0nist_csf: - PR.DS-01- PR.DS-02- PR.DS-10mitre_attack: - T1600- T1573- T1553
Implementing Zero-Knowledge Proof for Authentication
Overview
Zero-Knowledge Proofs (ZKPs) allow a prover to demonstrate knowledge of a secret (such as a password or private key) without revealing the secret itself. This skill implements the Schnorr identification protocol and a simplified ZKPP (Zero-Knowledge Password Proof) using the discrete logarithm problem, enabling authentication where the server never learns the user's password.
When to Use
When deploying or configuring implementing zero knowledge proof for authentication capabilities in your environment
When establishing security controls aligned to compliance requirements
When building or improving security architecture for this domain
When conducting security assessments that require this implementation
Prerequisites
Familiarity with cryptography concepts and tools
Access to a test or lab environment for safe execution
Python 3.8+ with required dependencies installed
Appropriate authorization for any testing activities
Objectives
Implement Schnorr's identification protocol for ZKP authentication
Build a non-interactive ZKP using Fiat-Shamir heuristic
Implement zero-knowledge password proof (ZKPP)
Demonstrate completeness, soundness, and zero-knowledge properties
Compare ZKP authentication with traditional password verification