-
Notifications
You must be signed in to change notification settings - Fork 503
Threshold Signature Validator Client Spec Application #273
Threshold Signature Validator Client Spec Application #273
Conversation
Threshold Signature Validator Client Spec Application
…idator-spec Revert "Threshold Signature Validator Client Spec Application"
I think doing a threshold schnorrkel VRF makes sense eventually, but depends upon both (1) adding some threshold secret key type ala w3f/schnorrkel#5 before (2) doing threshold multi-signatures well ala w3f/schnorrkel#11 as well as (3) a proper implementation for the DKG being developed in w3f/PSPs#7 using session types. I suppose multi-signer or threshold VRFs leak the VRF output before the signature completes, which sounds fine, but maybe tweaks the threat model slightly. I'll contribute to (1) myself when I find time. We've outsourced (2) and (3) which might hopefully yield fruit later this year, but any further work should wait until those reach our standards for cryptography code. In particular, all multi-party computations must be expressed using session types like the musig algorithm in https://github.com/w3f/schnorrkel/blob/master/src/musig.rs which could require closer work with the contractor. Also.. I noticed the code https://gitlab.com/polychainlabs/threshold-ed25519/-/blob/master/pkg/ed25519.go looks abysmal:
All these require session types for compile-time correctness, but you'd need runtime checks for an implementation in Go. I'd surely find more problems if I kept digging but the above show just how far that go code lies from acceptable cryptography. |
We'd need similar threshold code for ed25519 for GRANDPA too, not just schnorrkel. I think kzen has code for this in https://github.com/KZen-networks/multi-party-eddsa which beats that polychain labs garbage, but still sucks and should not be used by substrate. Ideally, one might port whatever code emerges from (1-3) above into an ed25519-dalek fork, which avoids the timing attacks, etc. |
After all this, we face two more serious longer term challenges:
|
We're more than 12 months away from anything like this, but I'll attempt to keep HSM and threshold operation in mind during upcoming crypto churn. |
@burdges |
We were speaking about a DKG grantee I think. I've heard nothing from that grantee afaik, although maybe the grants team did. At this point, there is one respectable DKG implementation around that should be ported to schnorrkel, or more likely made generic, and at least one cool new DKG paper that improves things, so we'll just do it in house or ask for help from those folks. We also finished our security proof for doing the two round version https://eprint.iacr.org/2020/1245 and blockstream https://eprint.iacr.org/2020/1261 independently produced another security proof concurrently, so now the two round protocol is basically cast in stone. We'll get this done within the next six months I'd think, although not before parachains get working since that consumes much of my time. |
@mikereinhart this has been open for a while without any updates. Are you still interested in working on something along these lines? |
@alxs stepping in here for Mike, yes we would still be interested in this effort. I'm less familiar with the grant program than I'd like to be so if you could help me navigate the next step(s) I would greatly appreciate it. |
Good to hear that. You may have noticed that we're in the process of deprecating the General Grants Program in favour of an overarching Grants repository, so as a first step I'll go ahead and close this PR. It's also been open for a little too long so it probably won't hurt to start afresh. Then the next steps would be:
If you have any questions, you're welcome to reach out to us under [email protected]. |
@alxs thanks! |
Hmm... |
Grant Application
This application is (select one):
This application is (select one):
Abstract
We intend to specify and design a threshold signature validator client for Substrate blockchains in the form of a PSP. We view this as an important step in advancing validator security and aligning development teams around a common goal.
Checklist