Threshold Signature
In this chapter, we give an overview of threshold signatures and describe the threshold ECDSA construction of Canetti et al in CGGMP21 and the FROST threshold signature scheme in KG20, which is a threshold version of Schnorr signature scheme, including its EdDSA (or ed25519) instatiation. The chapter is separated into major parts below:
-
First, we give a brief introduction to threshold signatures and state its syntax and security properties in Introduction.
-
Second, we state the syntax and security properties of threshold signatures in Definition and Security.
-
Third, we describe the threshold ECDSA construction of CGGMP21 in Canetti's Construction to support the threshold ECDSA version for the curve secp256k1.
-
Fourth, we describe the FROST threshold signature construction of KG20 in FROST Construction to support the threshold signature version of ed25519 and sr25519.
-
Finally, we briefly specify our instatiation and analyse the security for the threshold ECDSA construction of Canetti et al using secp256k1 parameters and FROST threshold signature construction using ed25519 and sr25519 parameters as follows:
-
In Threhold signature for secp256k1, we discuss and analyse the security of the threshold ECDSA signature of Canneti et al. when instatiated using the parameters of secp256k1.
-
In Threhold signature for ed25519 we discuss and analyse the security of the FROST threshold signature when instatiated using the parameters of ed25519.
-
In Threhold signature for sr25519 we discuss and analyse the security of the FROST threshold signature when instatiated using the parameters of sr25519.
-
Author(s): phamnhatminh1292001
Introduction
A threshold signature protocol allows distributed signing among participants such that any group of participants can produce a valid signature, while any group of fewer that participants cannot. The goal is to produce signatures that are compatible with an existing centralized signature scheme so that we can verify the signatures without any modification in the existing digital signature algorithms. Compared to an ordinary signature scheme, the setup and signing algorithms are replaced by interactive protocol between participants, while the verification algorithm remains identical to the verification of a signature issued by a centralized party.
With the advance of blockchain technology, threshold signature has received increasing attention from the community. This is because transactions in blockchain are made possible via digital signatures, and it is dangerous to trust the whole signing process in a single individual, who might be compromised, leading to single point of failure. Hence many stakeholders are looking to perform signature generation in a distributed way. In a threshold signature scheme, an adversary cannot learn the actual secret key if it does not control enough number of participants, and any participants will be able to deliver a valid signature, hence preventing the "single point of failure" attack above.
Definition and Security
In this section, we describe the syntax and security properties of a threshold signature scheme.
Definition
We describe the syntax of a threshold signature scheme. A threshold signature consists of two interactive protocols KeyGen, Sign and an algorithm Verify as follows:
: This is an interactive protocol between participants . If the interaction suceeds, each participant receives a partial secret key . In addition, all participants output a common public key .
: This is an interactive protocol with common input between a set of participants , where each participant holds a partial secret key only known to him. If the interaction suceeds, the protocol outputs a signature .
Verify: This is an algorithm run by an external verifier to check the correctness of the signature. On input a message , a signature , a common public key , it outputs a bit indicating the validity of the signature.
Security Properties
A threshold signature scheme should satisfy the following properties:
Correctness: For any set with , if follows the protocol for all and Sign, then it holds that Verify.
Unforgability: A threshold signature scheme is unforgeable if for any adversary who corrupts up to participants and given previous signatures of previous messages , the probability that can produce a signature on an unsigned message such that Verify is negligible.
Canneti et al's Construction
In this section we briefly describe the threshold ECDSA protocol of Canneti etal in CGGMP21, in which we assume that the readers have some familiarity to ECDSA signature scheme. Recall that the ordinary ECDSA signature scheme of a message is generated as follow
where and is the signer's secret key. Canneti's protocol aims to provide a valid ECDSA signature of above via a threshold manner. In addition, the protocol also provide the following features:
-
Universal Composable Security: Canneti etal's protocol achieve security in the Universal Composable Security framework. The framework is better in realizing the security of protocol, compared to traditional game based definitions.
-
Proactive Key Refresh: Canneti etal's protocol allow participants to refresh their partial secret keys after every epoch while not changing the grand secret key and public key. The goal of key refresh is to achieve security against proactive adversaries, who might corrupt participants for a certain period of time during the execution of the protocol.
-
Non Interactive online phase: Canneti etal's protocol achieves non-interactive in the following sense: The signing protocol consists of a preprocessing phase before the message is known, followed by a non-interactive signing phase, where each participant can generate his own signature of using the preprocessed information.
-
Identifiable Abort: The protocol contains additional mechanisms that allow participants to detect any signers who fail to participate in the signing process, or deviate from it. Identifying misbehaving signers can be crucial for some applications. In most applications, being able to identify rogue servers is a convenience, allowing reboot the whole system.
To see how the protocol achieve the abovementioned properties, we now move to the actual construction of Canneti and describe it.
Key Generation
In this section, we describe the key generation process in the construction of Canetti et al. The key generation process is divided into two sub protocols: the initial key generation process and the key refresh process. The initial key generation process is executed exactly once to produce a public-secret key pair , while the key refresh process is executed whenever participants would like to change their partial secret keys in the way that and remains the same. Before moving to the protocol, we provide several notations that will be used in the protocol description below.
Notation: Let to be the security parameter. Let to be a cyclic group whose order is a prime number. Let to be the order of and let to be two generators of . We denote to be a secure binding and information theoretic hiding commitment scheme and to be a cryptographic hash function. For any set and for any we denote to be the Lagrange coefficient w.r.t .
Now, the initial key generation and key-refresh process are as follows:
Keygen :
Initial Key Generation: The initial key generation is executed once at the beginning.
-
Each participant selects and compute .
-
Each participant broadcasts . The public key is set to be . then performs Feldman's Verifiable Secret Sharing scheme (see Supporting Protocols) to share to other participants. Each add the secret shares received as his secret key, i.e, . The values are the shares of a Shamir secret sharing of the secret key .
-
Finally, each participant uses Schnorr's protocol S91 (see Supporting Protocols) to prove in zero knowledge that he knows the secret key ,
Key Refresh: The key refreshment process is executed after a certain number of epochs whenever participants have to reset their partial secret keys.
-
Each participant samples , the public key of Pallier Cryptosystem P91 satisfying .
-
Each participant performs Feldman's Verifiable Secret Sharing scheme to distribute the shares of to other participants. Each participant set his new secret key to be . The secret key remains the same and are unknown to other participants and the values are still the shares of a Shamir secret sharing of the secret key
-
Finally, each participant does the following:
-
Use Schnorr's protocol to prove in zero knowledge that he knows the new secret key .
-
Prove that is a product of two primes s.t and admits no small factors (see Supporting Protocols)
-
Prove that generates the same multiplicative group modulo using Schnorr protocol for Ring (see Supporting Protocols).
-
By the property of Feldman's VSS, it can be proven that the public key is also equal to , hence the key pair generated using the key generation protocol above has the same form of a key pair in an ECDSA signature scheme.
Note: Note that after the key generation process, we see that each is now equipped with a Pallier encryption scheme with public key , which we denote the encryption and decryption algorithm by and respectively. The encryption algorithm receives two inputs: the message and a randomness . In most cases, for simplicity we will ignore the input randomness in our description. The encryption scheme will be used in the signing process.
Signing
In this section, we describe the signing process of the protocol. For any set of participants who participate to sign a message , let . Note that by Feldman's VSS, . Note that since is public after the key generation process, hence the value can also be publicly computed. The signing protocol follows a steps process below:
Sign:
-
Each participant choose and does the following:
-
Compute
-
Compute a proof certifying (see Supporting Protocols).
-
Send to all participants.
-
Define and . We see that and .
-
For each , each participant does the following:
-
Verify the validity of . If any check fails, the protocol aborts.
-
Sample
-
Comute and
-
Compute , , and a proof which proves that , and . The generation of can be seen in Supporting Protocols
-
Compute the proof which prove that satisfy the following relations
The generation of can be seen in Supporting Protocols.
- Compute the proof , which prove that satisfy the following relations
The generation of can be seen in Supporting Protocols.
- Send to all participants.
-
-
For each , each participant does the following:
-
Verify the validity of . If any check fails, then the protocol aborts.
-
Compute and . Note that and .
-
Set and . Note that and .
-
-
Each participant computes , and send to all participants.
-
Each participant sets and verify that . If any check fails, the protocol aborts. Otherwise, set and .
-
Each participants computes , then broadcasts . and set . If Verify then is a valid signature of , otherwise aborts.
Verification
Recall that the verification algorithm in threshold ECDSA remain identical to an ordinary ECDSA verification algorithm. Hence, it is sufficient to describe the Verify algorithm of the threshold ECDSA below.
Verify: This is just the standard ECDSA verify algorithm, which can be publicly run by anyone. It works as follows:
-
Compute .
-
Compute and .
-
Compute .
-
Check if . If the check passes, return , otherwise return .
One can see that, if is a valid ECDSA signature scheme, which has the form and , then the verification algorithm above returns since . The converse direction also holds, i.e, if the verify algorithm above return , then must be a valid ECDSA signature which have the form above.
Supporting Protocols
In this section, we specify the supporting protocols that support the signing protocol described in the previous section.
Feldman's VSS
Recall that in Step 2 of the key generation protocol, each participant has to perform Feldman's VSS to share his secret to other participants . The process of Feldman's VSS is described as follow:
-
generate a random degree polynomial such that , then broadcast for . Finally secretly send the share to the -th participant .
-
Each participant can verify the correctness of his share by checking . If the check fails, broadcasts a complaint to . If receives a complaint he will be disqualified.
Zero Knowledge Proofs
Schnorr Protocol:
In Step 3 of the initial key generation process, a participant who broadcasts must prove the knowledge of using Schnorr protocol. Schnorr protocol can be described as follow:
-
The prover chooses and sends .
-
The verifier sends a challenge .
-
The prover sends .
-
The verifier checks if .
Schnorr Protocol for Ring:
In Step 3.3 of the key refresh process, a participant who broadcasts must prove that there is a value such that The protocol can be described as follow:
-
For each , the prover chooses and sends to the verifier.
-
The verifier sends a challenge for each .
-
For each , the prover sends and send to the verifier.
-
The verifier checks if for each .
Proof of Product of Two Primes:
In Step 3.2 of the key refresh process, a participant must prove that the RSA modulus is a product of two primes such that and and . The protocol process as follow:
-
The prover samples s.t where denotes the Jacobian symbol.
-
The verifier samples and send them to the prover.
-
The prover proceed as follows:
-
Set where such that is well defined.
-
Compute
-
Send to verifier.
-
-
The verifier checks that is not a prime, and . Accept if and only if all checks pass.
Pallier Encryption Range Proof:
In Step 1.2 of the signing process, each participant given has to provide a proof certifying . The protocol for providing proceeds as follow:
-
The protocol chooses to be the auxiliary set-up parameter for the protocol, where is a product of two safe prime and generate the same multiplicative group modulo .
-
The prover samples , , ,
-
The prover computes , and
-
The prover sends to the verifier.
-
The verifier chooses a challenge and sends to the prover.
-
The prover computes , and
-
The prover sends to the verifier
-
The verifier checks if and
9 The verifier checks that
Proof of Paillier Encryption given Group Commitment:
In Step 2.4 of the signing process, each participant has public input and secret input and has to provide a proof which proves that , where
. The protocol for providing proceeds as follow:
-
The protocol chooses to be the auxiliary set-up parameter for the protocol, where is a product of two safe prime and generate the same multiplicative group modulo .
-
The prover samples , , ,
-
The prover computes , , ,
-
The prover sends to the verifier.
-
The verifier chooses a challenge and sends to the prover.
-
The prover computes , and
-
The prover sends to the verifier.
-
The verifier checks that , and
-
The verifier check that
Proof of Paillier Operation given Group Commitment:
In Step 2.5 and 2.6 of the signing process, each participant has public input and secret input and has to provide a proof which proves that , where
The protocol for providing proceeds as follow:
-
The protocol chooses to be the auxiliary set-up parameter for the protocol, where is a product of two safe prime and generate the same multiplicative group modulo .
-
The prover samples , , , , and
-
The prover computes , , , , , ,
-
The prover sends to the verifier.
-
The verifier chooses a challenge and sends to the prover.
-
The prover compute , , , , ,
-
The prover sends to the verifier.
-
The verifier checks that , , , ,
-
The verifier check that and
Commitment Scheme
In Step 1 of the Key Generation protocol, we require participants to commit their messages using a commitment scheme . In practice, one can use a cryptographic hash function and define the commitment of to be where is chosen uniformly.
Identifying Aborts
Identifying misbehaving participants efficiently is a key contribution of “CGMP21”. An abort will happen if any player deviates from the protocol in a clearly identifiable way by not complying with instructions. In the case of such an abort, the guilty party would have to be identified and removed. In this section, we analyse how the protocol can identify abortion and remove mmisbehaving participants.
Abort Instances
Within the signing protocol, there are 3 instances that the protocol can abort. They can be summarized as follows:
-
In step 2 of the signing process, when an invalid proof is detected.
-
In step 3 of the signing process, when an invalid proof or or is detected for some .
-
In step 5 of the signing proces, when
-
In step 6 of the signing process, when is not a valid signature of
How to Identify Abortions
Now, we show that how to identify the misbehaving participants that cause the protocol to abort in each cases above.
-
The first and second instances are straightforward. Whoever submits the wrong proof will be identified as malicious.
-
The third and fourth instance are much more complicated. At a high level, the identification of these two instances proceed as follow:
-
Each participant is asked to reprove that the ciphertexts are well formed for each .
-
Each participant is asked to reveal and and prove their correctness given and .
-
Each participant prove that is the plaintext obtained via the ciphertext
-
Similarly, each participant prove that is the plaintext obtained via the ciphertext
-
Whoever fails to prove will be identified as the malicious participant.
-
Security Consideration
Finally, since there has been numerous pracical attacks performed on threshold ECDSA implementations, we would like to discuss several concerns that should be noted when implementing the threshold ECDSA protocol.
-
Proving the Discrete Log Relation in Composite Modulus: Recall that in Step 3 of the key refresh process, we require the participants to prove the discrete log relation between and in modulo . This can be done using Schnorr's protocol for Ring, as specified in (see Supporting Protocols). The protocol uses binary challenge , which has soundness error . It is repeated times to achieve soundness error . When the order of the group is a prime number , one can extend the challenge set to be and execute the protocol only once, this is the case of an ordinary Schnorr protocol. However, we cannot do the same thing for the group , since its order is divisible by . Verichain showed that doing so can leak the secret key of the protocol. Hence, we need to repeat the Schnorr protocol for Ring times when proving the discrete log relation in modulo for each .
-
The Requirement of Range Proof: Recall that in step 2 of the signing protocol, we require that each participant has to prove that some of their secret range must lie in a specified value (we require and ). The range proof might looks unnecessary at the first glance, however it is shown in TS21 that the lack of these range proofs can break the security of the protocol. The reason for this is that range proofs ensure that the encrypted values are within a specified range, and prevent attackers from tampering with the values or sending invalid data. Hence it is necessary to ensure that these range proofs are done in the protocol.
FROST's Construction
In this section we briefly describe the FROST threshold Schnorr protocol in KG20, in which we assume that the readers have some familiarity to Schnorr signature scheme. Recall that the ordinary Schnorr signature scheme, the signature of a message is generated as follow
where and is the signer's secret key. Note that the EdDSA signature scheme also produces the signature with the exact form above, with the only difference is that the nonce is produced deterministically. FROST aims to provide a valid Schnorr signature (as well as EdDSA signature) of above via a threshold manner. Compared to its threshold ECDSA counterpart, the FROST threshold Schnorr signature is much simplier, has much less features to describe and analyse. We now move to the actual construction of FROST and describe it.
Key Generation
In this section, we describe the key generation process in the construction of FROST below.
Notation: Let to be the security parameter. Let to be a cyclic group whose order is a prime number. Let to be the order of and let to be two generators of . We denote to be a secure binding and information theoretic hiding commitment scheme and to be a cryptographic hash function. For any set and for any we denote to be the Lagrange coefficient w.r.t .
Keygen :
The key generation process is executed once at the beginning.
-
Each participant selects and compute .
-
Each participant broadcasts . The public key is set to be . then performs Feldman's Verifiable Secret Sharing scheme (see Supporting Protocols) to share to other participants. Each add the secret shares received as his secret key, i.e, . The values are the shares of a Shamir secret sharing of the secret key .
-
Finally, each participant uses Schnorr's protocol S91 (see Supporting Protocols) to prove in zero knowledge that he knows the secret key ,
By the property of Feldman's VSS, it can be proven that the public key is also equal to , hence the key pair generated using the key generation protocol above has the same form of a key pair in a Schnorr signature scheme.
Signing
In this section, we describe the signing process of the protocol. For any set of participants who participate to sign a message , let . Note that by Feldman's VSS, . Note that since is public after the key generation process, hence the value can also be publicly computed. The signing protocol follows a steps process below:
Sign:
-
Each participant chooses and broadcasts . Denote .
-
For each , each uses Schnorr protocol (see Supporting Algorithms) to check the validity of . If any check fails then the protocol aborts.
-
Each computes for all . Each then computes the group commitment and the challenge , then broadcasts .
-
Each computes and broadcasts .
-
Each computes and broadcasts .
-
For each , participants check if and . If any check fails, report the misbehaving and the protocol is aborted. Otherwise, compute and returns .
Verification
Recall that the verification algorithm in threshold Schnorr remain identical to an ordinary Schnorr verification algorithm. Hence, it is sufficient to describe the Verify algorithm of the Schnorr signature scheme below.
Verify: This is just the standard Schnorr verify algorithm, which can be publicly run by anyone. It works as follow:
-
Compute .
-
Compute .
-
Check if . If the check passes, return , otherwise return .
One can see that, if is a valid Schnorr signature scheme, which has the form and , then the verification algorithm above returns since . The converse direction also holds, i.e, if the verify algorithm above return , then must be a valid Schnorr signature which have the form above.
Supporting Protocols
In this section, we specify the supporting protocols that support the signing protocol described in the previous section.
Feldman's VSS
Recall that in Step 2 of the key generation protocol, each participant has to perform Feldman's VSS to share his secret to other participants . The process of Feldman's VSS is described as follows:
-
generate a random degree polynomial such that , then broadcast for . Finally secretly send the share to the -th participant .
-
Each participant can verify the correctness of his share by checking . If the check fails, broadcasts a complaint to . If receives a complaint he will be disqualified.
Zero Knowledge Proofs
Schnorr Protocol:
In Step 3 of the initial key generation process, a participant who broadcasts must prove the knowledge of using Schnorr protocol. Schnorr protocol can be described as follows:
-
The prover chooses and sends .
-
The verifier sends a challenge .
-
The prover sends .
-
The verifier checks if .
Threshold Signature Instantiations
In this section, we are going to discuss our concrete instatiations for the construction of Canneti et al and FROST. More specifically, we will discuss and analyse the security when instatiating the construction of Canneti et al using secp256k1 parameters and FROST with ed25519 and sr25519 parameters to support the MPC version for these concrete variants.
Threshold signatures for secp256k1
Bitcoin, the first and most well-known cryptocurrency, relies on the curve secp256k1 for its public key cryptography. Specifically, it uses the ECDSA algorithm with secp256k1 as the underlying elliptic curve. Many other cryptocurrencies, including Ethereum have since adopted this curve for their digital signature schemes. Since the curve can be used for the orinary ECDSA algorithm, it can also be used for the threshold ECDSA version as well. Below we describe the curve parameter and its security and efficiency analysis.
The secp256k1 curve parameters defined over with order , cofactor and base point are as follows:
For security analysis, this curve is chosen by Satoshi Nakamoto because unlike the popular NIST curves, secp256k1's constants were selected in a predictable way, which significantly reduces the possibility that the curve's creator inserted any sort of backdoor into the curve. In addition, it is implied in SECG1 that the curve has a security level of bits, which is considered secure.
We intend to implement the threshold ECDSA construction of CGGMP21 using secp256k1 parameters. We would like to use the library libsecp256k1 for curve operations, which has been tested extensively and undergone thorough optimitation, making it very fast to produce signatures.
Threshold signatures for ed25519
Ed25519 is the most popular instance of the Edwards-curve Digital Signature Algorithm (EdDSA) standardized in RFC 8032. In the paper, the authors instatiatied the Schnorr signature scheme with the curve curve25519 in its twisted Edward form instead of an ordinary elliptic curve such as secp256k1. The used curve in the scheme is popular due to its high speed compared to other curves without sacrificing security. Below we describe the curve parameters and its security and efficiency analysis.
The curve parameters defined over with order , cofactor and base point are as follows:
For security analysis, the provable security of the instatiation of ed25519 parameters has been well studied in BCJZ20. In addition, it has been confirmed in BDLSY12 that the curve achieves bit security level, the same security level as secp256k1, which is considered secure. However, due to having the cofactor of , the scheme could be potentially vulnerable to a double spend exploit.
Recall that ed25519 is just a variant of Schnorr signature instatiatied with a a twisted Edward curve, and its signature form is identical to an ordinary Schnorr signature scheme, we can instatiate the FROST threshold signature scheme of KG20 with the parameters of ed25519 described in to achieve the MPC version of ed25519.
Threshold signatures for sr25519
The term sr25519 refers to the instatiation of Schnorr signature using the curve curve25519, the same curve as of EdDSA, which is specified in Schnorrkel. However, it additionally employs the method of point compression due to Ristretto to make makes Schnorr signatures over the Edward's curve more secure. Below we describe the curve parameter and its security and efficiency analysis.
The sr25519 scheme supports both forms of curve25519, i.e, its twisted Edward form and Montomery form. The twisted Edward form of curve25519 has been described in the previous Section. For the Montomery form, the curve can be written as over with order , cofactor and base point are as follows:
For security analysis, recall that the curve curve25519 achieves bit security level, as specified in the previous Section. However, since sr25519 additionally uses the point compression due to Ristretto, it is safe from the bug could lead to a double spend expoit of Monero
Finally, because sr25519 is actually the Schnorr signature instatiatied with the curve25519 and FROST is a threshold Schnorr signature scheme that can be instatiated by any curve where the discrete log problem is hard, we can instatiate the FROST threshold signature scheme of KG20 with the parameters of sr25519 described in to achieve the MPC version of sr25519.