When Peggy Met Victor in Go

--

The demo of the method defined is given here.

So how does Peggy prove her password to Victor, without Victor knowing what her password is. With this we need to define the concept of proof of knowledge, Peggy (the prover) must verify to Victor (the verifier) that she can solve a difficult problem. we must then have:

  • An honest prover who can verify themselves to the verifier (completeness).
  • A high probability that prover cannot cheat, and thus guess the solution (soundness).
  • The prover cannot guess the secret from the proof (zero knowledge, witness hiding and minimum-disclosure).

A standard proof in discrete logs, is to show that Peggy still knows the value of x given that the prover knows (X) and where q is a prime number:

X=g^x (mod q)

The following [taken from here]. In this case we will create:

X=xB

Y=yB

R=xB+yB

and where B is a base point on the elliptic curve, and x and y are secrets. We will then prove that X=xB and R=xB+yB, but that X=yB is false [here]:

package mainimport (    "fmt"
"go.dedis.ch/kyber"
"go.dedis.ch/kyber/group/edwards25519"
"go.dedis.ch/kyber/proof"
"go.dedis.ch/kyber/xof/blake2xb"
"encoding/hex"
)

--

--

Prof Bill Buchanan OBE FRSE
ASecuritySite: When Bob Met Alice

Professor of Cryptography. Serial innovator. Believer in fairness, justice & freedom. Based in Edinburgh. Old World Breaker. New World Creator. Building trust.