-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Choose a cryptographic scheme #19
Comments
I implemented a VRF using Ristretto in https://github.com/w3f/schnorrkel/blob/master/src/vrf.rs for use in Polkadot. |
@burdges cool! curve25519-dalek is nice to use, right? :) |
Yes. I quite like the dalek ecosystem. :) Afaik, there is no third-party aggregation per se without pairings, but schnorrkel's VRF permits signers to produce a single proof of multiple VRF outputs' correctness. We might use this to permit block producers to produce compact proofs of when they did an did not win blocks. This batching is implemented in the We also support batch verification similar to Schnorr/Ed25519 batch verification, although it should be further optimized into only having one multi-scalar exponentiation equation, instead of two. Right now, it does not do verifiable shuffles, multi-secret same-signer VRFs, or multi-party VRFs, but.. |
We have 4 different methods we can use:
We have to choose one, depending on a few criterion:
While the pairings solution is interesting, it is quite slow (cf the benchmarks results at https://github.com/CleverCloud/biscuit/tree/master/code#benchmarks-summary ). Also, there's no guarantee of finding high quality crypto libraries to use in various languages. So I think we'll eliminate right away.
The other solutions are fast enough, and based on the Ristretto group. There's a good implementation in Rust, curve25519-dalek, and a new one in Java, curve25519-elisabeth. Using this group reduces the risk of implementation errors.
The challenge token solution makes fast and small tokens, but its behaviour has an annoying tradeoff: when we want to verify the token, an additional operation must be performed, that prevents further attenuation. This might not be what we want for the token.
The gamma signatures solution produces short signatures and is faster than ost other schemes
The text was updated successfully, but these errors were encountered: