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

Using only a logarithmic number of blinding scalars #302

Open
bbuenz opened this issue Nov 7, 2019 · 3 comments
Open

Using only a logarithmic number of blinding scalars #302

bbuenz opened this issue Nov 7, 2019 · 3 comments
Labels
E-medium T-optimization Making things faster/smaller T-research Open, unsolved problems

Comments

@bbuenz
Copy link

bbuenz commented Nov 7, 2019

In a recent paper (https://eprint.iacr.org/2019/944) Hoffmann, Kloß and Rupp show how to reduce the required blinding scalars to only a logarithmic number. This could be a nice prover speedup.
The main idea is that for each value send in the inner product argument only a single blinding scalar is needed. The blinding vector s therefore only needs 2 log(n) random entries at specific positions. It's explained in section 3.4.3 of the paper.

They also have an implementation here: https://github.com/emsec/QESA_ZK

CC: @devhoffmann

@hdevalence hdevalence added E-medium T-optimization Making things faster/smaller T-research Open, unsolved problems labels Nov 7, 2019
@hdevalence
Copy link
Contributor

Cool! Thanks for pointing this out. We should check

  1. whether this optimization can be done transparently by the prover;
  2. an estimate on how much time it actually saves – I think the dominant part of the prover's work is the group operations in the inner product argument, so if it only saves a few scalar operations it may not be worthwhile.

@bbuenz
Copy link
Author

bbuenz commented Nov 8, 2019

I think the main advantage is that it reduces the number of prover operations that need to be done with constant time exponentiations. It would cheapen the computation of S. But obviously if it's only a minor save then it's not worthwhile.

@kenshamir
Copy link

kenshamir commented Nov 8, 2019

For anyone looking to verify the prover performance, you can use the code at https://github.com/crate-crypto/qesa/blob/master/src/ipa/no_zk.rs

It was specifically made to mimic the Dalek bulletproof IPA API to test performance. However naively, only verifier performance was tested.

As stated on Pg39 "Optimised verification performance of Bulletproofs and our proof systems is almost identical" in the multiexponetiation setting.

Evidence: https://github.com/kenshamir/qesa/blob/nozk-verifier/src/ipa/no_zk.rs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
E-medium T-optimization Making things faster/smaller T-research Open, unsolved problems
Projects
None yet
Development

No branches or pull requests

3 participants