webmaster128 / private-voting

A JavaScript implementation of the BeleniosRF e-voting scheme
Apache License 2.0
1 stars 1 forks source link

Open questions BeleniosRF paper #1

Open webmaster128 opened 5 years ago

webmaster128 commented 5 years ago

When implementing BeleniosRF, the following questions arose

pyrros commented 5 years ago
webmaster128 commented 5 years ago

Thanks a lot for the feedback, @pyrros. I will be busy implementing the feedback/changes for some time and get back to you when something is unclear.

dagacha commented 5 years ago
webmaster128 commented 5 years ago

Regarding 2: I am looking at the possible proofs for pairing product equations in the GS paper (Page 4, Figure 1; orange means private, green means public):

Bildschirmfoto 2019-08-02 um 15 44 41

When I want to prove e(g_1^{m_i}, g_2^{1-m_i}) = 1 and hide m_i/1-m_i, I need to set X_1 = g_1^{m_i} and Y_1 = g_2^{1-m_i}, right? In this case, don't I need commitments to X_1 and Y_1? This formular does not seem to support secret scalars. How do commitments to m_i help?

webmaster128 commented 5 years ago

Regarding 5: I'm not sure if I understand this correctly, but right now I set

pi_T := proof that ( X_1^\overline{r} == \overline{w} )
      = proof that ( X_1^\overline{r} == value committed in C_T )
      = proof that ( X_1^\overline{r} == T )
      = proof that ( linear equation in G_1 with constant A = [X_1], secret y = [\overline{r}] and public righ-hand side T holds )

and in order to verify a multi-scalar equation in G_1, I need X_1, C'_2(r) and the public righthand-side T. This is the same approarch I do for pi_r and pi_V. Is the approach correct at all or am I running in the wrong direction?

webmaster128 commented 4 years ago

Happy new year everyone! I'd really love to complete this BeleniosRF implementation. However, I'm stuck at the question how to prove that m_i is 0 or 1. I don't see how the commits to the scalar m_i in G1 and G2 helps me doing that. See also https://github.com/webmaster128/private-voting/issues/1#issuecomment-517712002

Could you help out with a little more guidance for that question @pyrros @dagacha?

pyrros commented 4 years ago

The idea is that m_i is a bit if and only if m_i *(m_i-1) is 0. This is something we can check for, once we have it committed to in both groups (the subtraction of 1 is easy to do).