crypto-snippets
A bunch of schemes, constructions, and definitions for (my) quick reference.
Schnorr Signature
\(\gdef\system{\mathsf{Sig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}Sign}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\) \(\gdef\msgspace{\mathcal{M}}\) \(\gdef\group{\mathbb{G}}\) \(\gdef\gen{g}\)
\(\gdef\order{q}\) \(\gdef\hash{\mathsf{H}}\)
\(\keygen: (\gen^{x}, x)\)
\(\sign: (R, s)\)
\(\verify: g^s \stackrel{?}{=} RX^c\)
Group Signature Syntax
\(\gdef\system{\mathsf{GSig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}GSign}}\) \(\gdef\verify{\mathsf{\systemprefix{}GVerify}}\) \(\gdef\open{\mathsf{\systemprefix{}GOpen}}\) \(\gdef\msgspace{\mathcal{M}}\) \(\gdef\msg{\mathcal{m}}\) \(\gdef\sig{\mathcal{\sigma}}\)
\(\gdef\gsk{gsk}\) \(\gdef\gmsk{gmsk}\) \(\gdef\gpk{gpk}\)
\(\keygen(1^\lambda, n) \to (\gpk, \gmsk, \{\gsk_i\}^n)\)
\(\sign(\gsk_i, \msg) \to \sigma\)
\(\verify(\gpk, \msg, \sig) \to \{0, 1\}\)
\(\open(\gmsk, \msg, \sig) \to \{1, .., n\}\)
EdDSA ZoKrates
\(\gdef\system{\mathsf{Sig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}Sign}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\) \(\gdef\hash{\mathsf{Hash}}\) \(\gdef\msgspace{\mathcal{M}}\) \(\gdef\group{\mathbb{G}}\) \(\gdef\generator{G}\) \(\gdef\modulo{q}\)
\(\keygen : (h \generator, h)\)
\(\sign : (R,s)\)
\(\verify : s \generator \stackrel{?}{=} R + Y S\)
Ed25519
\(\gdef\system{\mathsf{Sig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}Sign}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\) \(\gdef\hash{\mathsf{Hash}}\) \(\gdef\msgspace{\mathcal{M}}\) \(\gdef\group{\mathbb{G}}\) \(\gdef\generator{G}\) \(\gdef\modulo{q}\)
\(\keygen : (h \generator, h)\)
\(\sign : (R,s)\)
\(\verify : s \generator \stackrel{?}{=} R + Y S\)
Commitment Syntax
\(\gdef\system{\mathsf{Com}}\) \(\gdef\systemprefix{}\) \(\gdef\setup{\mathsf{\systemprefix{}Setup}}\) \(\gdef\commit{\mathsf{\systemprefix{}Commit}}\) \(\gdef\check{\mathsf{\systemprefix{}Check}}\)
\(\setup(1^n) \to pp\)
\(\commit(pp,u) \to (c, r)\)
\(\check(pp, c, u, r) \to \{0, 1\}\)
Digital Signature Syntax
\(\gdef\system{\mathsf{Sig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}Sign}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\) \(\gdef\msgspace{\mathcal{M}}\)
\(\keygen(1^n) \to (pk, sk)\)
\(\sign(sk, m) \to \sigma\)
\(\verify(pk, m, \sigma) \to \{0,1\}\)
SNARK Syntax
\(\gdef\system{\mathsf{SNARK}}\) \(\gdef\systemprefix{}\) \(\gdef\setup{\mathsf{\systemprefix{}Setup}}\) \(\gdef\prove{\mathsf{\systemprefix{}Prove}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\)
\(\setup{}(ecs, src) \to (pk, vk)\)
\(\prove{}(ecs, x, x', w, pk) \to \pi_{ecs}\)
\(\verify{}(\pi_{ecs}, x, vk) \to \{0, 1\}\)
BLS Signature
\(\gdef\system{\mathsf{Sig}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\sign{\mathsf{\systemprefix{}Sign}}\) \(\gdef\verify{\mathsf{\systemprefix{}Verify}}\) \(\gdef\msgspace{\mathcal{M}}\)
\(\gdef\gone{\mathbb{G}_1}\) \(\gdef\genone{g_1}\) \(\gdef\gentwo{g_2}\) \(\gdef\gtwo{\mathbb{G}_2}\) \(\gdef\gthree{\mathbb{G}_T}\) \(\gdef\order{q}\) \(\gdef\hash{\mathsf{H}}\)
\(\keygen: (\genone^{\alpha}, \alpha)\)
\(\sign: \hash(m)^{\alpha}\)
\(\verify: e(\genone, \sigma) \stackrel{?}{=} e(pk, \hash(m))\)
Elgamal Encryption
\(\gdef\system{\mathsf{Enc}}\) \(\gdef\systemprefix{}\) \(\gdef\keygen{\mathsf{\systemprefix{}KGen}}\) \(\gdef\msgspace{\mathcal{M}}\)
\(\gdef\enc{\mathsf{\systemprefix{}Enc}}\) \(\gdef\dec{\mathsf{\systemprefix{}Dec}}\) \(\gdef\msgspace{\mathcal{M}}\) \(\gdef\group{\mathbb{G}}\) \(\gdef\generator{g}\) \(\gdef\modulo{q}\) \(\gdef\rgets{\stackrel{\$}{\gets} }\)
\(\keygen: (\generator^{x}, x)\)
\(\enc: (\generator^y, \generator^{xy} m)\)
\(\dec: c_2 \cdot c_1 ^ {-x}\)