Blind Schnorr Signatures#98
Conversation
|
227b6f2 is an attempt to make this secure (still almost certainly insecure -- do not use). To safely sign, the signing server should use I doubt this API is ideal (particularly if async), but it's somewhere to start |
LLFourn
left a comment
There was a problem hiding this comment.
Nice work. Left some comments. The big picture comment I have is whether we can via the API prevent a user from opening more parallel sessions than they should be allowed to given the difficultly of the modified ROS problem. e.g. if you try and open one when you already have too many open you get an None back.
1bb2f18 to
48a0e28
Compare
6151810 to
f5c6f45
Compare
|
I'd like to clean up the multiple uses of "blinded" and "tweaked". The |
35461a6 to
2409363
Compare
4ead9f4 to
a06a8d1
Compare
|
These changes have introduced a The Users' requests are processed with sequential calls to I have made it so that you can set |
4274181 to
e2e47e5
Compare
|
Latest commits make steps to more safely handle state and a clearer distinction between parallel and single-call execution. There is now a |
eeaf933 to
ac7fcc8
Compare
ff9edc9 to
1aec1c0
Compare
1aec1c0 to
99f278c
Compare
* Disconnect on 1 of N sessions, unless N=1 * Use up nonces when signing. * Expire sessions when we have given out too many nonces * Store already signed signatures for polling * Store already_signed as None for closed sessions * serde_json Serialize, Deserialize * Separate sign_all_but_one function for immediate signing
99f278c to
28e4458
Compare
Blind schnorr signatures
Todo:
fn BlindingTweaks::from_values(alpha, beta)needs_negations?Move frost and musigJustnonce.rsstuff tobinonceand introduce a singularnoncethat generates with even-Y (don't have to manually negate in tests & everywhere)derive_nonce!()for nowwrapper. Instead follow: Blind Schnorr Signatures and Signed ElGamal Encryptionin the Algebraic Group Model .
Nonewhen sessions are maxed out. Do not give out any signatures until all N sessions are connected.t)sign()1and whether to immediately sign (never concurrent)already_signedis appropriate.BlindSigner::drain_signor something to sign remainingmaybe insecure -- do not use