Skip to content

Making E(Fp) point operations public #1

@fhajji

Description

@fhajji

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions