Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Making E(Fp) point operations public #1

Open
fhajji opened this issue Nov 4, 2019 · 0 comments
Open

Making E(Fp) point operations public #1

fhajji opened this issue Nov 4, 2019 · 0 comments

Comments

@fhajji
Copy link

fhajji commented Nov 4, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant