Abstract
ECDSA is a widely adopted digital signature standard. A number of threshold protocols for ECDSA have been developed that let a set of parties jointly generate the secret signing key and compute signatures, without ever revealing the signing key. Threshold protocols for ECDSA have seen recent interest, in particular due to the need for additional security in cryptocurrency wallets where leakage of the signing key is equivalent to an immediate loss of money.
We propose a threshold ECDSA protocol secure against an active adversary in the honest majority model with abort. Our protocol is efficient in terms of both computation and bandwidth usage, and it allows the parties to pre-process parts of the signature, such that once the message to sign becomes known, they can compute a secret sharing of the signature very efficiently, using only local operations. We also show how to obtain guaranteed output delivery (and hence also fairness) in the online phase at the cost of some additional pre-processing work, i.e., such that it either aborts during the pre-processing phase, in which case nothing is revealed, or the signature is guaranteed to be delivered to all honest parties online.
Introduction
A hot topic of the 80s was threshold cryptography [15,16]. This notion covers encryption and signature schemes where the key is secret shared among a number of parties in a way that lets the parties sign or decrypt messages despite the fact that the key remains secret shared. The key remains protected as long as at most a certain threshold t of the parties are corrupted.
Threshold cryptography, being a special kind of secure multiparty computation, is stronger than simply secret sharing the key, since it allows to sign or encrypt without any one party reconstructing the key. Threshold cryptography therefore increases security by ensuring that an attacker must compromise
The elliptic curve digital signature standard ECDSA [27,30] has recently become very popular. It has for example been adopted by TLS, DNSSec, and popular cryptocurrencies such as Bitcoin and Ethereum. This has caused a growing need for a threshold version of ECDSA. In particular, its use in cryptocurrencies implies that loss of the secret signing key immediately translates to a loss of money.2
For this reason Bitcoin uses multisignatures [1]. But as discussed in length in e.g. Gennaro et al. [21] threshold signatures are in several ways more suited.
However, while efficient threshold versions of e.g. RSA, ElGamal encryption, and Schnorr signatures have been proposed early [38,40], efficient threshold variants of DSA/ECDSA have proved harder to achieve, mainly due to the fact that this involves both computing
Threshold DSA/ECDSA signatures can of course be computed using general MPC [3,11,26,42], but until recently this has been regarded as too inefficient.
In 1996 Gennaro et al.proposed a specialized threshold protocols for DSA signatures in the model with honest majority [22–24].
MacKenzie and Reiter later proposed the first DSA/ECDSA threshold scheme for two parties [33]. From 2016 and on, motivated by the application of threshold ECDSA in cryptocurrencies, there have been many results [4,9,10,17,18,20,21,31,32], all in the dishonest majority setting. The first of these were not really practical, especially due to a heavy key generation procedure. But the most recent are quite practical and works for any threshold
Concurrent work
Non-interactive online signing. It turns out that threshold ECDSA is well-suited for the online/offline setting, since most of the work can be done before the message to sign is known (offline). The result of the offline phase is sometimes called a presignature. This can help spread out the overall work more evenly, e.g., by computing presignatures offline a higher signature throughput can be obtained during peak hours (online).
In some cases, the online phase can even be non-interactive. This means that when both a presignature and the message are available, the parties can locally compute shares of the signature, which they can then send to the intended receiver of the signature. Non-interactive online signing is useful in practice because the signature receiver can just collect the shares from the servers one at a time. The servers need not be online at the same time. In addition, it is common in the context of cryptocurrencies to increase security by keeping the key shares (and presignatures) in “cold” storage, i.e., on external media that is not directly accessible from the network, e.g. on a USB stick or even in a bank box. With non-interactive online signing only a single round-trip to the cold storage is required to produce a signature.
Recent concurrent work of Canetti et al. [8] adapts existing protocols in the dishonest majority setting [20] to achieve non-interactive online signing along with other properties such as proactive security.
Threshold signatures with large numbers of parties. Recently, a use case has been proposed by the Keep Network3
for interoperability between different cryptocurrencies. This solution requires large amounts of cryptocurrency being held by a central party. To maintain the distributed nature of exisitng blockchains, it has been proposed to replace this trusted party with a threshold signing protocol. This means that the number of parties in the signing protocol must be large, e.g., not just a few parties, but perhaps 500 or 1000.As discovered by Keep network, this leads to a problem when using the recent ECDSA solutions for dishonest majority [10,18,20,32]. These protocols all have the property that a single malicious party taking part in the signing may cause the protocol to abort, without being identified as the malicious party. Suppose that there are, e.g., 500 parties and 400 are required to sign. With no identifiable abort it can be hard to pick a subset of 400 honest parties even if only a small fraction of the parties are malicious, and so the signing will in effect be blocked. With identifiable abort the malicioius parties can be excluded from further signing attempts.
This insight has motivated recent concurrent work on threshold ECDSA with identifiable abort [8,19]. Canettie et al. [8] extend earlier results [20] to obtain both identifiable abort and non-interactive online signing. Gagol et al. [19] adapts the protocol of Lindell & Nof [32]. They require multiple rounds of communication online and participation of all parties in the offline phase, but on the other hand they achieve not only identifiable abort in the online phase, but also the property that the online signing has guaranteed output delivery if more than
Signing with general MPC. Recent results [14,39] show how to do threshold ECDSA efficiently, based on schemes for general MPC over a large field. This of course involves the full machinery of general MPC, but it also gives flexibility since one can achive different trade-offs between performance and security by choosing differnt schemes for general MPC. In particular, as shown by Dalskov et al. [14], when plugging into their solution the currently fastest protocol for general MPC in the honest majority model with abort [12], this leads to a practical protocol with performance similar to ours (only a few heavy curve multiplications per party, leading to a throughput of thousands of signatures per second).
We provide a practical and efficient threshold protocol for DSA and ECDSA signatures in the honest majority model with abort. It is secure against an active adversary and works for any number of parties n and security thresholds t as long as
The protocol is accompanied by a full proof in the UC model [7]. The proof shows that our protocol (perfectly) realizes the standard ECDSA functionality, and it relies on no additional assumptions.
The protocol is well-suited for the online/offline model: Most of the work can be done in an offline phase before the message to be signed is known. Doing so, the protocol achieves excellent online performance. In particular, when the parties receive the message to be signed, they can compute a sharing of the signature non-interactively, using only local operations.4
Note that threshold ECDSA with a non-interactive online phase is only possible under a slightly stronger assumption than the standandard ECDSA assumption, where the adversary sees
We show how to extend our basic protocol with a little more work in the offline phase in order to achieve a non-interactive online phase with guaranteed output delivery.
We demonstrate practicality by benchmarking in the LAN as well as the WAN setting. Using a close-to-real-world deployment with load balancers and authenticated channels we show that our protocol achieves both low latency and high throughput.
Our protocol compared to existing dishonest majority protocols. The ECDSA protocols for dishonest majority [4,9,10,17,17,18,20,21,31–33] all rely on computationally heavy primitives such as Paillier encryption and zero-knowledge proofs, or they are based on oblivious transfer [17,18] which incurs high bandwith. In comparison, our protocol is considerably simpler and efficient in terms of both computation and bandwidth usage, leading to a higher overall signature throughput.
In addition, except from Doerner et al. [18], these protocols somehow relax security, either by relying on assumptions not implied by ECDSA itself, such as decisional Diffie-Hellman [32] or the quadratic residuosity assumption [20,31], or they implement relaxed versions of the ECDSA functionality [17]. In contrast, for our basic protocol we provide a proof in the UC model that our protocol (perfectly) implements the standard ECDSA functionality without additional assumptions.
That said, all of these protocols of course achieve stronger security in the sense that they can tolerate up to
Our protocol compared to the GJKR protocol [
22
–
24
]. The protocol of Gennaro et al. [22–24] achieves full security in the honest majority model, i.e., including fairness and guaranteed output delivery. Their protocol assumes a consistent and reliable broadcast channel and uses Pedersen’s verifiable secret sharing [35]. Correctness of the multiplication of secret sharings is ensured using error correcing codes, and the authors give a simulation-based proof of security against a static, malicious adversary corrupting at most t out of n parties for
Gennaro et al. [24] also sketches a variant of their protocol that works for
We present a simple and efficient protocol that is built specifically for the
While not directly mentioned in Gennaro et al. [24], their variant for
In particular, we avoid using Pedersen VSS and we use a new trick for verification of the multiplication that is simpler and more efficient. (It leaks one of the factors in the exponent, but this is fine in our context of ECDSA as
As a result our protocol allows non-interactive online signing, and requires only two long exponentiations online. For
In addition, we show how to extend our protocol with additional work in the pre-processing phase, such that once it succeeds, we get guaranteed output delivery in the online phase, in the sense that any
Signature schemes
Recall that a signature scheme is defined by three efficient algorithms:
Correctness. With overwhelmingly high probability (in the security parameter κ) it must hold that all valid signatures must verify.
Existential unforgeability. This is modeled with the following game Run On Return On If
The signature scheme is existentially unforgeable if for any PPT A the probability
A correct and existentially unforgeable signature scheme is simply called secure.
The DSA/ECDSA standard
An instance of the DSA signature scheme [27,30] has the parameters
For
A key pair is generated by sampling uniformly the private key
In DSA G is
ECDSA has been proved secure in the Generic Group Model assuming that computing the discrete log in G is hard, and assuming that H is collision resistant and uniform [6].
Our protocol works for both DSA and ECDSA. In particular, it is suitable for ECDSA with the “Bitcoin” curve
Shamir’s secret sharing
Recall that in Shamir’s secret sharing scheme [37] a dealer can secret share a value
If the dealer is honest, any subset of
For
We will also need to interpolate the value
Recall that Shamir’s secret sharing scheme is linear. This means that once sharings
Joint random secret sharing
We will need a protocol
If one or more parties are malicious, the resulting sharing
Similarly, a random Shamir sharing of zero can be created if each party
Our threshold ECDSA protocol
In this section we describe our basic protocol and the overall strategy for its simulation. To keep the description simple, we focus on the basic protocol and consider pre-processing and guaranteed output delivery later.
Technical overview
At a high level, we follow the scheme of Gennaro et al. [24]. The parties first generate the private key
When signing a message M, the parties generate a sharing of the nonce
If ok, the parties compute
Computing powers of a point
A central building block in our protocol is a subprotocol that given a sharing
The protocol works as follows:
Each party
When
If so,
Since
Intuitively, seeing the values
A notable feature of
Simulation. Consider how to simulate
Simulation is possible since the simulator knows an additional point on f “in the exponent”, namely
Key generation
The aim of key generation is to have the parties generate a sharing
Regarding correctness: We use plain Shamir sharing and not verifiable secret sharing (VSS). This means that a single malicious party
An important part of the protocol is that no honest party
The protocol guarantees that if two parties output a public key, they output the same public key y. In addition, all subsets of
By having all parties send an ACK message to the others once they have succeeded, and require that parties only continue once an ACK have been received from all other parties, we get the property that the adversary can decide to abort or not, but if an honest party delivers output then so do all honest parties.
Regarding simulation,
Signature generation
Assume that key generation has been done without abort, such that the parties hold a consistent sharing of a random key
First a random sharing
So we let the parties generate
Recall that
Note that there is not enough shares for any error detection on w: A single corrupt party could reveal a bad share
Finally, given
Note that this boils down to another multiplication of two degree t sharings, which can be done locally since
As before when opening
Coping with message disagreement. To obtain a practical protocol we must make sure that the protocol aborts and no information leaks even if the honest parties do not agree on the message m to sign. Suppose that honest party
To avoid this, the parties could of course send the message to each other and abort if there is any mismatch, and then proceed by opening s. But for efficiency, we would like a protocol that only requires one round once the message is known. To achieve this (assuming
Simulation. The simulator uses the same simulation strategy when simulating
We emphasize that the simulation is in fact perfect as it relies on no computational assumptions and works even when
Security. This completes our informal description of the protocol and we can state our result as follows.
The described protocol for ECDSA signatures achieves perfect UC-security with abort against a static, malicious adversary corrupting at most t parties if the total number of parties n satisfies
(Informal).
Security analysis
In this section we give a full proof of security of our basic protocol (with abort) in the UC model [7]. For completeness we also formally prove that re-running the protocol a reasonable number of times if it aborts is secure.
The formal ideal functionality and protocol
For simplicity we consider the case where the parties generate a single key pair and use this for multiple signatures. Security in the case with multiple keys follows immediately by the UC composition theorem [7]. Also, we will not divide the protocol into pre-processing and online parts. Extending the proof to handle this is straight-forward, but tedious. Finally, we will implicitly assume standard UC bookkeeping. We e.g. assume that session ids and party ids are sent along with the messages so that the ideal functionality knows to which instance a message belongs, and we assume that the functionality aborts if a party tries to reuse session ids or sends messages out of order. We also leave implicit that the functionality and the protocol are both parameterized by a single DSA/ECDSA instance
We use a subscript I (as in
The ideal functionality for ECDSA,

The ideal functionality
We continue to describe the protocol

The protocol

The protocol
To prove Theorem 1 we must prove that for any adversary A there exists a simulator S such that for any environment E the value
We will in fact prove that
Consider first an execution
For example,
For any A, E it holds that
The events
Assuming none of the events
If Let Assuming correctness of
If
Output ⊤
This models that
Note that we make the (realistic) assumption that
We claim that for any adversary
But this contradicts the fact that
Let A be an adversary. Recall that our goal is to prove that there exists a simulator S such that for any environment E the value
From Proposition 4.1 we know that
Assume w.l.o.g. that
We assume t corrupted parties. If less, the simulator can simply choose to corrupt additional parties in the simulation.
Recall that we use subscript I for values within
The simulator S works as follows: It runs internally an instance of the real execution consisting of A and the parties (and
When S receives
During the simulation the simulator acts as follows: In
In
In
In
Consider the simulation of
In
Regarding the distribution of the individual shares
In
Assume for a moment that all honest parties agree on the message M to sign (and recall that we proved
Recall that when the honest parties agree on M, S receives
But if
In fact, since it is not guaranteed at this point that
Consider then the case where the honest parties do not agree on the message to sign. We claim that in this case S can simply use uniformly random values
The values
The success of the simulation in
Finally, consider how to simulate abort.
To see this, note that honest parties only abort in these cases:
If
If
If
If
If
If
If
If
If
If
In all of these cases the values are known to the simulator (such as
The simulator is summarized in Fig. 4. Note that its running time is polynomial in the running time of the adversary

The simulator for
This completes our argument that
Theorem 1 states that the protocol
Consider the following game
Run an instance of
Provide input to and receive output from the parties
Provide the allowed adversarial input (such as
Let
On
If
else, output ⊥ and halt
We say that
Assuming that the ECDSA signature scheme used by
Proposition 4.2 is proved by the following simple reduction. Assume that When Whenever On It is clear from this construction that the running time of
Recall that contrary to Gennaro et al. [22,24] we allow a single corrupt party to abort the protocol at any time, and that this ability is also built into
In practice, when key generation aborts, the parties will usually start from scratch, trying to generate a new key. And if signing aborts, they will usually retry signing with the same key, but with a fresh randomizer k. Only after retrying a reasonable number of times will the protocol be aborted totally. In this sense,
Recall that the adversary learns
However, it can be shown that retrying a reasonable number of times on abort, thereby allowing the adversary to decide a few bits of
Consider the game
For any
The reduction is simple: Given
We finally consider the even more realistic setting where the protocol may also be rerun up to M times during key generation. We model this by the following game
As
We could also have defined this game such that it restarted keygen on abort (as in the real setting), but it is just as powerful to simply allow the adversary to reset the functionality using an explicit command.
At this point in the real execution, each honest party knows that the key generation was successful and that all honest parties holds the correct public key, so they can safely refuse any rerun of keygen at this point.
As in
We say that
For any
Let
We construct an The only situation where
Let E be the event that
If the DSA/ECDSA signature scheme used by
Assume that some adversary
Since by Theorem 1 the ideal execution with
Unlike Gennaro et al. [22] (but like the ECDSA protocols for dishonest majority [17,20,31–33]) our basic protocol described above has no fairness or guaranteed output delivery. So the adversary gets to see the signature
This is of course not a forgery, since it can only happen with messages that the honest parties actually intended to sign. But it may nevertheless be unacceptable in some applications. For example if presenting a fresh signature allows to transfer a certain additional amount of money from someone’s bank account.
Since we assume an honest majority it is indeed possible to achieve guaranteed output delivery (and hence also fairness). In fact, our basic protocol can be extended with just a few additional pre-processing rounds in order to achieve this. The main idea is that in addition to R and
The extended protocol works as follows. Let
To create a verifiable secret sharing
Using this in the context of our threshold signature protocol, we can assume that we have
So we do the following:
At the start of the entire protocol, each party will send his contribution to create one VSS of a random value
In the following round, the object
Now, each
If the set of opened differences are consistent with a degree t polynomial, we continue, else we abort. Adjust the commitments to shares in
Using suitable Lagrange coefficients
Finally, each party broadcasts a hash of his public view of the protocol so far (i.e., all the messages that he received and which were supposed to be sent to all parties) together with “OK” if he thinks the protocol went well so far. Each party aborts unless he gets an “OK” from all other parties and the hash of his own public view matches the hashes he receives from all other parties.9
Note that a real broadcast is required here, since all honest parties need to agree that the pre-processing went well. Otherwise, we risk that a few honest parties may proceed to the online phase which will then abort, and so we no longer have guaranteed output delivery in the online phase.
Given this, once the message M is known, the parties can compute
In other words, we get the desired property that either the protocol aborts during pre-processing and neither the adversary nor any other party gets the signature, or intended receiver(s) are guaranteed to get the signature.10
It still holds that no interaction is required among the parties in the online phase. But the trick used in our basic protocol of blinding
In this section we elaborate the performance of our basic protocol (with abort).
The protocol requires four rounds of interaction between the servers to generate a signature. But the first three rounds can be executed before the message to be signed is known.
We let a presignature denote the value R and the sharings
The protocol is designed to run with any number of
For a small number of parties, unless special hardware acceleration is available, the computational bottleneck is likely to be the “long” curve exponentiations, i.e., computing
In addition, in POWOPEN a party uses the first
Comparing to the (implicit) protocol in GJKR that works for
Concrete performance
Concrete performance
For large n, since the protocol is constant round, the
For small n we can save bandwidth and one round by computing the sharings
In order to determine the actual performance of our protocol we have implemented it and run a number of benchmarks. We have done several things to ensure that our benchmarks best reflect a real deployment scenario.
First, we benchmark the client-server setting where we include the time it takes for an external client to initiate the protocol by sending a request to the parties and receive a response when the operation is done. Also, we ensure that the parties are connected with secure channels. Note that this requires an additional round trip and computation for key agreement using mechanisms from the Noise Protocol framework [36]. We also let each party store its key shares in encrypted form in a PostgreSQL database. For elliptic curve operations we use OpenSSL v1.1.1b which provides the required timing attack resistant implementation for long curve multiplications. However when no secret values are involved we use the faster version also provided by OpenSSL. In the latter case we use precomputation to speed up the curve multiplication when using the default generator for the given elliptic curve.
Finally, as mentioned above, we split the protocol up in pre-processing and online processing. Hence we benchmark the individual operations (1) keygen, (2) presig, and (3) sign.
Latency. For a threshold signature scheme to be useful in practice it is important that a user should not be forced to wait for minutes before his key is generated or before he receives the signature that he requested.
To measure the latency we deploy each party on a separate
We then let a single client issue a single requests to the servers, causing the servers to generate a single key, presignature or signature. In this benchmark, the servers are configured to use a single worker thread, i.e., each server uses only one CPU core for executing the protocol (including computing the long curve multiplications).
We run this benchmark for various combinations of parties and security thresholds, in both the LAN setting and the WAN setting. In the LAN setting all servers are located in the same Amazon region, where the network latency is usually less than 1 ms, whereas in the WAN setting the servers are located in different regions (Frankfurt, California, Tokyo) where package latency is often in the order of 50-200 ms.11
In the WAN setting, since we use only three different regions, with
Table 2 shows the average time it takes for the keygen, presig and sign requests to finish in these settings after a number of warm-up requests. In the keygen operation, a client sends a keygen request to the servers, which run the keygen protocol and return a key id to the client. In the presig operation, a client sends a presig request to the servers which then generate the presignature and return a presignature id to the client. In the sign operation, the client sends a key id and a presignature id to the servers (for a key and a presignature that have previously been generated), and the servers then compute and return their signature shares to the client who recombines and verifies the signature.
It can be seen that in the LAN setting the latency increases with the number of parties and the security threshold. This is because the amount of work, especially the number of long curve multiplications that each party must compute, increases (quadratically) with the number of parties, and with low network latency, this is significant for the overall latency. In the WAN setting, however, the network latency is high enough that it almost completely dominates the overall latency. (At least for up to 9 parties. Adding parties, the latency caused by local computation will eventually dominate also in the WAN setting.)
Latency per operation
Throughput. In realistic deployments, as mentioned above, a threshold signature scheme like ours will often run in the client-server setting with many concurrent key generation and signature protocol instances on behalf of clients. We therefore measure the throughput, that is, the number of operations that the servers can handle per second in this setting.
It is likely that signing will happen more often than key generation. If for example BIP-32 key derivation [41] is used, key generation is only run once to obtain a sharing of the master key whereas subsequent keys are derived in an efficient non-interactive manner.
Also, given already computed presignatures, generating the final signature is a lightweight operation for the servers, since signing for the servers then only imply a few local operations in
We run this benchmark with tree servers (
Figure 5 illustrates this deployment: A client requests a presignature by contacting the three servers. Based on the given key id, one worker at each server is assigned the task (marked with bold lines). These workers then execute the presignature generation protocol and returns the presignature id to the client.

A deployment in the client-server setting with three servers and two workers per server.
To benchmark, once the servers are ready, we spin up enough clients, each client sending a lot of presig requests to the server, such that the servers are completely busy and no increase in throughput is achieved by adding more clients. Table 3 shows the resulting throughput in the case where each client requests a single presignature per request as well as in the case where each client requests 100 presignatures in per request.
Throughput for presignature generation
As expected, throughput scales almost linearly with the number of workers used by each server.
On
In the batched setting where 100 presignatures are computed per client request, we are close to this limit and the bottleneck clearly is the CPU required to do the long curve multiplications, getting a throughput of roughly 600 presig/s. Thus, for each additional
In the case where only a single presignature is computed per request, the throughput is lower, since the servers must spend a larger fraction of their resources by handling the many active sessions. In this case each worker can handle roughly 150 additional presigs per second.
