fld-ecc-vec icon indicating copy to clipboard operation
fld-ecc-vec copied to clipboard

Making E(Fp) point operations public

Open fhajji opened this issue 5 years ago • 0 comments

As far as I can see, there is currently no public interface for $E(\mathbb{F}_p)$ Point operations, but this is a highly desirable feature alongside the excellent $\mathbb{F}p$ API, and the ECDH and ECDSA APIs. Here are some applications that need e.g. (scalar) point multiplications:

  1. Computing Pedersen Commitments over Elliptic Curves, one needs to compute $Com(s, r) := sA + rB$ where $s \in \mathbb{F}_p$ is a (small) message, and $r \in \mathbb{F}_p$ is for blinding.
  2. For longer messages $(m = s_1 || s_2 || ... || s_n)$, one computes Pedersen Commitments as $Com(m, r) := s_1A_1 + s_2A_2 + ... + s_nA_n + rB$
  3. Implementing a Seed-Homomorphic PRG, one selects n random points $P_1 \cdots P_n$ as fixed system parameters, and then on input $s \in \mathbb{F}_p$, one computes $PRG(s) := (sP_1, sP_2, \cdots, sP_n)$. Of course, precomputation for those (fixed) points would be a good idea too, since the $P_i$ are being reused all the time for many different seeds $s$.

While Seed-Homomorphic PRGs are not that common (but useful), Pedersen Commitments are hugely popular. In general, computing $(s_1P_1 + s_2P_2 + ... + s_nP_n)$ is needed in many cryptographic applications.

Sadly, functions like src:edwards255.c:point_multiplication_ed25519() are static for internal use only, and are hidden deeply inside the bowels of the library.

fhajji avatar Nov 04 '19 02:11 fhajji