A JavaScript framework for applying the Fiat-Shamir transformation to sigma protocols correctly, with proofs of knowledge of a discrete logarithm, of equality between logarithms, and of disjunctive equality as worked examples.
A zero-knowledge proof convinces us of some claim's validity without revealing specifics. For example, you can prove possession of a private key without leaking any information about your key. Zero-knowledge proofs are typically derived by application of the Fiat-Shamir transformation to sigma protocols. Unfortunately, the transformation is commonly misapplied, introducing security vulnerabilities. Herein, I present a JavaScript framework for correct transformation.
@unpublished{Smyth25-implementing-Fiat-Shamir,
title = {{Hooking up with Fiat-Shamir}},
year = {2025}, author = {Ben Smyth},
url = {./},
url-pdf = {./files/implementing-Fiat-Shamir.pdf},
url-bib = {./files/implementing-Fiat-Shamir.bib},
url-yaml = {./files/implementing-Fiat-Shamir.yml},
url-md = {./files/implementing-Fiat-Shamir.md}
}