Good morning Nick,

Love the direction of this.

> We can achieve this compatibility by having the server sign under a single 
> nonce (not a binding nonce-pair like usual FROST), which is later blinded by 
> the nonce contributions from other signers.

Can you say more about this? It sounds like the blinding is happening 
post-signing? Or is it happening during the normal nonce commitment trading?

Rijndael

On Mon, Aug 28, 2023 at 3:35 PM, Nick Farrow via bitcoin-dev 
<[bitcoin-dev@lists.linuxfoundation.org](mailto:On Mon, Aug 28, 2023 at 3:35 
PM, Nick Farrow via bitcoin-dev <<a href=)> wrote:

> Hello all,
>
> Some thoughts on private collaborative custody services for Bitcoin.
>
> With multiparty computation multisignatures like FROST [0], it is possible to 
> build a collaborative custodian service that is extremely private for users.
>
> Today's collaborative custodians can see your entire wallet history even if 
> you never require them to help sign a transaction, and they have full liberty 
> to censor any signature requests they deem inappropriate or are coerced into 
> censoring.
>
> With FROST, a private collaborative custodian can hold a key to a multisig 
> while remaining unaware of the public key (and wallet) which they help 
> control. By hiding this public key, we solve the issue of existing 
> collaborative custodians who learn of all wallet transactions even if you 
> never use them.
>
> Further, in the scenario that we do call upon a private collaborative 
> custodian to help sign a transaction, this transaction could be signed 
> **blindly**. Being blind to the transaction request itself and unknowing of 
> past onchain behavior, these custodians have no practical information to 
> enact censorship requests or non-cooperation. A stark contrast to today's 
> non-private collaborative custodians who could very easily be coerced into 
> not collaborating with users.
>
> Enrolling a Private Collaborative Custodian
>
> Each signer in a FROST multisig controls a point belonging to a joint 
> polynomial at some participant index.
>
> Participants in an existing multisig can collaborate in an enrollment 
> protocol (Section 4.1.3 of [1], [2]) to securely generate a new point on this 
> shared polynomial and verifiably communicate it to a new participant, in this 
> case a collaborative custodian.
>
> The newly enrolled custodian should end by sharing their own *public* point 
> so that all other parties can verify it does in-fact lie on the image of the 
> joint polynomial at their index (i.e. belong to the FROST key). (The 
> custodian themselves is unable to verify this, since we want to hide our 
> public key we do not share the image of our joint polynomial with them).
>
> Blind Collaborative Signing
>
> Once the collaborative custodian controls a point belonging to this FROST 
> key, we can now get their help to sign messages.
>
> We believe it to be possible for a signing server to follow a scheme similar 
> to that of regular blind Schnorr signatures, while making the produced 
> signature compatible with the partial signatures from other FROST 
> participants.
>
> We can achieve this compatibility by having the server sign under a single 
> nonce (not a binding nonce-pair like usual FROST), which is later blinded by 
> the nonce contributions from other signers. The challenge also can be blinded 
> with a factor that includes the necessary Lagrange coefficient so that this 
> partial signature correctly combines with the other FROST signatures from the 
> signing quorum.
>
> As an overview, we give a 3rd party a secret share belonging to our FROST 
> key. When we need their help to sign something, we ask them to send us (FROST 
> coordinator) a public nonce, then we create a challenge for them to sign with 
> a blind Schnorr scheme. They sign this challenge, send it back, and we then 
> combine it with the other partial signatures from FROST to form a complete 
> Schnorr signature that is valid under the multisignature's public key.
>
> During this process the collaborative custodian has been unknowing of our 
> public key, and unknowing as to the contents of the challenge which we have 
> requested them to sign. The collaborative signer doesn't even need to know 
> that they are participating in FROST whatsoever.
>
> Unknowing Signing Isn't So Scary
>
> A server that signs arbitrary challenges sounds scary, but each secret share 
> is unique to a particular FROST key. The collaborative custodian should 
> protect this service well with some policy, e.g. user authentication, perhaps 
> involving cooperation from a number of other parties (< threshold) within the 
> multisig. This could help prevent parties from abusing the service to "get 
> another vote" towards the multisig threshold.
>
> Unknowingly collaborating in the signing of bitcoin transactions could be a 
> legal gray area, but it also places you in a realm of extreme privacy that 
> may alleviate you from regulatory and legal demands that are now impossible 
> for you to enforce (like seen with Mullvad VPN [3]). Censorship requests made 
> from past onchain behavior such as coinjoins becomes impossible, as does the 
> enforcement of address or UTXO blocklists.
>
> By having the collaborative custodian sign under some form of blind Schnorr, 
> the server is not contributing any nonce with binding value for the aggregate 
> nonce. Naively this could open up some form of Drijvers attacks which may 
> allow for forgeries (see FROST paper [0]), but I think we can eliminate given 
> the right approach.
>
> Blind Schnorr schemes also introduce attack vectors with multiple concurrent 
> signing requests [4], one idea to prevent this is to disallow simultaneous 
> signing operations at the collaborative custodian. Even though Bitcoin 
> transactions can require multiple signatures, these signatures could be made 
> sequentially with a rejection of any signature request that uses anything 
> other than the latest nonce.
>
> Risks may differ depending on whether the service is emergency-only or for 
> whether it is frequently a participant in signing operations.
>
> -------
>
> Thanks to @LLFOURN for ongoing thoughts, awareness of enrollment protocols, 
> and observation that this can all fall back into a standard Schnorr signature.
>
> Curious for any thoughts, flaws or expansions upon this idea,
>
> Gist of this post, which I may keep updated and add equations:
> https://gist.github.com/nickfarrow/4be776782bce0c12cca523cbc203fb9d/
>
> Nick
>
> -------
>
> References
>
> * [0] FROST: https://eprint.iacr.org/2020/852.pdf
> * [1] A Survey and Refinement of Repairable Threshold Schemes (Enrollment: 
> Section 4.3): https://eprint.iacr.org/2017/1155.pdf
> * [2] Modifying FROST Threshold and Signers: 
> https://gist.github.com/nickfarrow/64c2e65191cde6a1a47bbd4572bf8cf8/
> * [3] Mullvad VPN was subject to a search warrant. Customer data not 
> compromised: 
> https://mullvad.net/en/blog/2023/4/20/mullvad-vpn-was-subject-to-a-search-warrant-customer-data-not-compromised/
> * [4] Blind Schnorr Signatures and Signed ElGamal Encryption in the Algebraic 
> Group Model: https://eprint.iacr.org/2019/877.pdf
> * [5] FROST in secp256kfun: 
> https://docs.rs/schnorr_fun/latest/schnorr_fun/frost/index.html
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Reply via email to