Skip to main content
Log in

Fast Secure Two-Party ECDSA Signing

  • Research Article
  • Published:
Journal of Cryptology Aims and scope Submit manuscript

Abstract

ECDSA is a standard digital signature scheme that is widely used in TLS, Bitcoin and elsewhere. Unlike other schemes like RSA, Schnorr signatures and more, it is particularly hard to construct efficient threshold signature protocols for ECDSA (and DSA). As a result, the best-known protocols today for secure distributed ECDSA require running heavy zero-knowledge proofs and computing many large-modulus exponentiations for every signing operation. In this paper, we consider the specific case of two parties (and thus no honest majority) and construct a protocol that is approximately two orders of magnitude faster than the previous best. Concretely, our protocol achieves good performance, with a single signing operation for curve P-256 taking approximately 37 ms between two standard machine types in Azure (utilizing a single core only). Our protocol is proven secure for sequential composition under standard assumptions using a game-based definition. In addition, we prove security by simulation under a plausible yet non-standard assumption regarding Paillier. We show that partial concurrency (where if one execution aborts, then all need to abort) can also be achieved.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Notes

  1. We base this estimate on an OpenSSL speed test that puts the speed of the entire ECDSA signing operation for P-256 (which consists of one EC multiplication and more) at more than 10 times faster than a single RSA2048 private-key exponentiation. Note that for P-521 and RSA4096 the gap is even larger with the entire ECDSA signing operation being more than 30 times faster than a single RSA4096 private-key exponentiation.

  2. In the basic model of sequential composition for which we prove the security of this protocol, there is only one sign execution at a time, and when a party aborts then no further executions are carried out. If executions are run concurrently (which can be achieved when using properly instantiated zero-knowledge and other sub-functionalities, as discussed in Sect. 4.3) then one must implement a mechanism to enable halting all concurrent executions immediately (which is possible, for example, when one application runs multiple threads for signing). We remark that this is needed for the proof, since the simulator guesses where the first abort occurs, and cannot continue the simulation beyond that point.

  3. As before, this is true in the \({{\mathcal {F}}}_\mathsf{zk},{{\mathcal {F}}}_{\mathsf {com-zk}}\)-hybrid model; by using UC-secure protocols for \({{\mathcal {F}}}_\mathsf{zk},{{\mathcal {F}}}_{\mathsf {com-zk}}\) the result is computationally indistinguishable. There is also a difference due to the fact that the zero-knowledge proof for \({L_{PDL}}\) is simulated and not real; however, this is computationally indistinguishable.

  4. Note that for every valid ECDSA signature (rs), the pair \((r,-s)\) is also a valid signature. Nevertheless, since the “smaller” of \(s,-s\) is always taken, the value is unique.

References

  1. M. Bellare, A. Palacio, The knowledge-of-exponent assumptions and 3-round zero-knowledge protocols, in CRYPTO 2004. LNCS, vol. 3152 (Springer, Berlin, 2004), pp. 273–289

  2. O. Blazy, C. Chevalier, D. Pointcheval, D. Vergnaud, Analysis and Improvement of Lindell’s UC-Secure Commitment Schemes, in ACNS 2013. LNCS, vol. 7954 (Springer, Berlin, 2013), pp. 534–551

  3. D. Boneh, R. Gennaro, S. Goldfeder, Using level-1 homomorphic encryption to improve threshold DSA signatures for bitcoin wallet security, in LATINCRYPT 2017

  4. F. Boudot, Efficient proofs that a committed number lies in an interval, in EUROCRYPT 2000. LNCS, vol. 1807 (Springer, Berlin, 2000), pp. 431–444

  5. C. Boyd, Digital multisignatures, in Cryptography and Coding (1986) pp. 241–246

  6. E. Brickell, D. Chaum, I. Damgård, J. Van de Graaf, Gradual and verifiable release of a secret, in CRYPTO’87. LNCS, vol. 293 (Springer, Berlin, 1988), pp. 156–166

  7. R. Canetti, Security and composition of multiparty cryptographic protocols. J. Cryptol. 13(1), 143–202 (2000)

  8. R. Canetti, Universally composable security: a new paradigm for cryptographic protocols, in 42nd FOCS (2001) pp. 136–145. Full version available at http://eprint.iacr.org/2000/067

  9. A. Chan, Y. Frankel, Y. Tsiounis, Easy come–easy go divisible cash, in EUROCRYPT 1998. LNCS, vol. 1403 (Springer, Berlin, 1998), pp. 561–575.

  10. R.A. Croft, S.P. Harris, Public-key cryptography and reusable shared secrets, in Cryptography and Coding (1989), pp. 189–201.

  11. I. Damgård, M. Jurik, A Generalisation, a simplification and some applications of Paillier’s probabilistic public-key system, in Public key cryptography 2001. LNCS, vol. 1992 (Springer, Berlin, 2001), pp. 119–136

  12. Y. Desmedt, Society and group oriented cryptography: a new concept, in CRYPTO’87. LNCS, vol. 293 (Springer, Berlin, 1988), pp. 120–127.

  13. Y. Desmedt, Y. Frankel, Threshold cryptosystems, in CRYPTO’89. LNCS, vol. 435 (Springer, Berlin, 1990), pp. 307–315

  14. A. Fiat, A. Shamir: how to prove yourself: practical solutions to identification and signature problems, in CRYPTO 1986. LNCS, vol. 263 (Springer, Berlin, 1986), pp. 186–194.

  15. M. Fischlin, Communication-efficient non-interactive proofs of knowledge with online extractors, in CRYPTO 2005. LNCS, vol. 3621 (Springer, Berlin, 2005), pp. 152–168.

  16. E. Fujisaki, Improving practical UC-secure commitments based on the DDH assumption, in SCN 2016. LNCS, vol. 9841 (Springer, Berlin, 2016), pp. 257–272.

  17. R. Gennaro, S. Jarecki, H. Krawczyk, T. Rabin, Robust threshold DSS signatures, in EUROCRYPT’96. LNCS, vol. 1070 (Springer, Berlin, 1996), pp. 354–371

  18. R. Gennaro, S. Goldfeder, A. Narayanan, Threshold-optimal DSA/ECDSA signatures and an application to Bitcoin wallet security, in ACNS 2016 (2016), pp. 156–174.

  19. S. Goldfeder, Personal communication (2016).

  20. O. Goldreich, Foundations of Cryptography: Volume 2—Basic Applications (Cambridge University Press, Cambridge, 2004).

  21. C. Hazay, Y. Lindell, Efficient secure two-party protocols: techniques and constructions (Springer, Berlin, 2010).

  22. C. Hazay, G.L. Mikkelsen, T. Rabin, T. Toft. Efficient RSA key generation and threshold Paillier in the two-party setting, in CT-RSA 2012. LNCS, vol. 7178 (Springer, Berlin, 2012), pp. 313–331. See http://eprint.iacr.org/2011/494 for the full version

  23. J. Katz, Y. Lindell, Introduction to Modern Cryptography, 3rd edn (Chapman and Hall/CRC Press, Cambridge, 2020)

  24. Y. Lindell, Highly-efficient universally-composable commitments based on the DDH assumption, in EUROCRYPT 2011. LNCS, vol. 6632 (Springer, Berlin, 2011), pp. 446–466.

  25. H. Lipmaa, On diophantine complexity and statistical zero-knowledge arguments, in ASIACRYPT 2003. LNCS, vol. 2894 (Springer, Berlin, 2003), pp. 398–415.

  26. P.D. MacKenzie, M.K. Reiter, Two-party generation of DSA signatures. Int. J. Inform. Secur. 2(3–4), 218–239 (2004). An extended abstract appeared at CRYPTO 2001

  27. P. Paillier, Cryptosystems based on composite degree residuosity classes, in EUROCRYPT’99. LNCS, vol. 1592 (Springer, Berlin, 1999), pp. 223–238.

  28. C.P. Schnorr, Efficient identification and signatures for smart cards, in CRYPTO 1989. LNCS, vol. 435 (Springer, Berlin, 1990), pp. 239–252.

  29. V. Shoup, Practical threshold signatures, in EUROCRYPT 2000. LNCS, vol. 1807 (Springer, Berlin, 2000), pp. 207–220

  30. V. Shoup, Private communication (2019)

  31. V. Shoup, R. Gennaro, Securing threshold cryptosystems against chosen ciphertext attack, in EUROCRYPT 1998. LNCS, vol. 1403 (Springer, Berlin, 1998), pp. 1–16.

  32. Porticor, www.porticor.com.

  33. Dyadic Security, www.dyadicsec.com.

  34. Sepior, www.sepior.com.

Download references

Acknowledgements

I would like to thank Valery Osheter from Unbound Tech for the implementation of ECDSA protocol and for running the experiments, and Claudio Orlandi for pointing out some minor errors. I also thank Rosario Gennaro for pointing out that the oracle in Sect. 5.2 needs to be defined so that it halts the first time that it returns 0. Finally, I thank the Stanislaw Jarecki who as a referee contributed significantly to making the presentation much clearer and more accurate.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Yehuda Lindell.

Additional information

Communicated by Tal Rabin

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

An extended abstract of this work appeared at CRYPTO 2017.

Much of this work was done for Unbound Security Ltd.

Zero-Knowledge Range Proof

Zero-Knowledge Range Proof

For the sake of completeness, in this appendix, we present the ZK-proof that \(x\in {\mathbb {Z}}_{q/3}\) where \(c=\mathsf{Enc}_{pk}(x)\). The value sid is a unique session identifier obtained from the application. Our proof is based on the proof described [4, Section 1.2.2], with adaptations as required for our setting here. We will prove for \(x\in \{0,\ldots ,\lfloor \frac{q}{3}\rfloor \}\) that it is in the range [0, q). Let \(\ell =\lfloor \frac{q}{3}\rfloor \). Stated differently, the input is \(x\in \{0,\ldots ,\ell \}\) and the proof guarantees that \(x\in {\mathbb {Z}}_q\).

  • Input: The prover P has input (cxr) where \(c=\mathsf{Enc}_{pk}(x;r)\) and the Paillier key-pair \((N,\phi (N))\); the verifier V has input c and the Paillier public key N. Both parties have q and \(\ell =\lfloor \frac{q}{3}\rfloor \).

    Both parties have a parameter \(t=40\).

  • The protocol:

    1. 1.

      \({\varvec{ V}}\)s first message: V chooses a random \(e\leftarrow \{0,1\}^t\), computes \(com=\mathsf{commit}(e,sid)\) and sends com to P. Denote \(e=e_1,\ldots ,e_t\).

    2. 2.

      \({\varvec{ P}}\)s first message:

      1. (a)

        P chooses random \(w_1^1,\ldots ,w_1^t\leftarrow \{\ell ,\ldots ,2\ell \}\) and computes \(w_2^i= w_1^i-\ell \) for every \(i=1,\ldots ,t\).

      2. (b)

        For every \(i=1,\ldots ,t\), P switches the values of \(w_1^i\) and \(w_2^i\) with probability 1/2 (independently for each i).

      3. (c)

        For every \(i=1,\ldots ,t\), P computes \(c_1^i= \mathsf{Enc}_{pk}(w_1^i;r_1^i)\) and \(c_2^i=\mathsf{Enc}_{pk}(w_2^i;r_2^i)\), where \(r_i^1,r_i^2\leftarrow {\mathbb {Z}}_N\) are the randomness used in Paillier encryption.

      4. (d)

        P sends \(c_1^1,c_2^1\ldots ,c_1^t,c_2^t\) to V.

    3. 3.

      \({\varvec{ V}}\)s second message: Upon receiving \(c_1^1,c_2^1\ldots ,c_1^t,c_2^t\), V decommits to com, revealing (esid) to P.

    4. 4.

      \({\varvec{ P}}\)s second message: For \(i=1,\ldots ,t\):

      1. (a)

        If \(e_i=0\) then P sets \(z_i=(w_1^i,r_1^i,w_2^i,r_2^i)\).

      2. (b)

        If \(e_i=1\) then P sets \(z_i\) as follows. Let \(j\in \{1,2\}\) be the unique value of j such that \(x+w_j^i \in \{\ell ,\ldots ,2\ell \}\). Then, \(S_1\) sets \(z_i=(j,x+w_j^i,r\cdot r_j^i\bmod N)\).

      3. (c)

        P sends \(z_1,\ldots ,z_t\) to V.

  • \({\varvec{ V}}\)s output: V parses \(z_i\) appropriately according to the value of \(e_i\). Then: For \(i=1,\ldots ,t\):

    1. 1.

      If \(e_i=0\) then V checks that \(c_1^i=\mathsf{Enc}_{pk}(w_1^i;r_1^i)\) and \(c_2^i=\mathsf{Enc}_{pk}(w_2^i;r_2^i)\) and that one of \({\hat{w}}_1^i,{\hat{w}}_2^i\in \{\ell ,\ldots ,2\ell \}\) while the other is in \(\{0,\ldots ,\ell \}\), where \(z_i=(w_1^i,r_1^i,w_2^i,r_2^i)\).

    2. 2.

      If \(e_i=1\) then V checks that \(c\oplus c_j^i = \mathsf{Enc}_{pk}(w_i;r_i)\) and \(w_i\in \{\ell ,\ldots ,2\ell \}\), where \(z_i=(j,w_i,r_i)\).

    V outputs 1 if and only if all of the checks pass.

Security. We sketch the proof here:

  • Completeness: As long as there exists a \(j\in \{1,2\}\) such that \(x+w_j^i \in \{\ell ,\ldots ,2\ell \}\), for every i, it is clear that V will accept. In order to see why this holds, observe that by the way \(w_i^1\) and \(w_i^2\) are chosen we have \(w_i^1\in \{\ell ,\ldots ,2\ell \}\) and \(w_i^2\in \{0,\ldots ,\ell \}\).

    There are two cases. If \(x+w_i^1< 2\ell \) then since \(x+w_i^1\ge w_i^1\ge \ell \) we have \(x+w_i^1\in \{\ell ,\ldots ,2\ell \}\). In contrast, if \(x+w_i^1 \ge 2\ell \), then \(w_i^2 = w_i^1 - \ell \ge \ell \). Since \(x+w_i^2 \le 2\ell \) (since both \(0\le x \le \ell \) and \(0\le w_i^2 \le \ell \)), it follows that \(x+w_i^2\in \{\ell ,\ldots ,2\ell \}\), as required.

  • Soundness: Let \(c=\mathsf{Enc}_{pk}(x)\) and assume that \(x\notin {\mathbb {Z}}_q\) and so in particular \(x \ge q\) (note that if x is negative then modulo q this is the same as \(x\ge q\)). We need to prove that V accepts with probability at most \(2^{-t}\). Let \(P^*\) be the cheating prover. We show that if \(P^*\) can provide an accepting answer for both \(e_i=0\) and \(e_i=1\) for the ith ciphertext, then \(x\in {\mathbb {Z}}_q\). This suffices since it implies that \(P^*\) can answer at most one of the \(e_i\) queries for each i, and thus the probability that it answers all is at most \(2^{-t}\).

    Fix i and assume that \(P^*\) can provide an accepting answer for both \(e_i=0\) and \(e_i=1\). Since \(P^*\) can answer for \(e_i=0\), this implies that \(c_1^i=\mathsf{Enc}{pk}(w_1^i)\) and \(c_2^i=\mathsf{Enc}_{pk}(w_2^i)\) and \(w_1^i\in \{\ell ,\ldots ,2\ell \}\) and \(w_2^i\in \{0,\ldots ,\ell \}\). Furthermore, since \(P^*\) can answer for \(e_i=1\) this implies that for some \(j\in \{1,2\}\) we have that \(c\oplus c_j^i = \mathsf{Enc}_{pk}(w_i)\) for some \(w_i\in \{\ell ,\ldots ,2\ell \}\). Note that by the perfect decryption correctness of Paillier (under the assumption that the Paillier key is valid, which is proven during key generation), it holds that \(w_i\in \{w_1^i,w_2^i\}\). We consider two cases:

    1. 1.

      Case 1\(j=1\): In this case, we have that \(x+ w_1^i=w_i\) where \(w_1^i\in \{\ell ,\ldots ,2\ell \}\) and \(w_i\in \{\ell ,\ldots ,2\ell \}\). Since the minimal value of \(w_1^i\) is \(\ell \) and the maximal value of \(w_i\) is \(2\ell \), it follows that \(x\le \ell \).

    2. 2.

      Case 2\(j=2\): In this case, we have that \(x+ w_2^i=w_i\) where \(w_2^i\in \{0,\ldots ,\ell \}\) and \(w_i\in \{\ell ,\ldots ,2\ell \}\). Since the minimal value of \(w_2^i\) is 0 and the maximal value of \(w_i\) is \(2\ell \), it follows that \(x\le 2\ell \).

  • Zero knowledge: The simulator \({{\mathcal {S}}}\) extracts e from the commitment provided by the potentially cheating verifier \(V^*\). Then, for every i, if \(e_i=0\) then \({{\mathcal {S}}}\) generates \(c_1^i,c_2^i\) like the honest prover does. In contrast, if \(e_i=1\), then \({{\mathcal {S}}}\) chooses a random \(j\in \{1,2\}\), a random \(w_i\in \{\ell ,\ldots ,2\ell \}\) and a random \(r_i\in {\mathbb {Z}}_N\). Then, \({{\mathcal {S}}}\) sets \(c_j^i=\mathsf{Enc}_{pk}(w_i;r_i)\ominus c\) and sets \(c_{3-j}^i\) to be an encryption of 0. Finally, \({{\mathcal {S}}}\) hands \(V^*\) all of the encryptions, receives back the decommitment and provides the answers appropriately.

    We argue that the view generated by \({{\mathcal {S}}}\) is computationally indistinguishable from the view of \(V^*\) in a real proof. In order to see this, first observe that the ciphertexts are given in random order in a real proof. Next, observe that for every i for which \(e_i=1\), the ciphertext opened is an encryption of a value that is uniformly distributed in \(\{\ell ,\ldots ,2\ell \}\). This holds because \(w_1^i\) is uniformly distributed in \(\{\ell ,\ldots ,2\ell \}\) and \(w_2^i\) is uniformly distributed in \(\{0,\ldots ,\ell \}\). This implies that \(x+w_1^i\) is uniformly distributed in \(\{x+\ell ,\ldots ,x+2\ell \}\) and \(x+w_2^i\) is uniformly distributed in \(\{x,\ldots ,x+\ell \}\). Thus, the distribution over the subset of values between \(\ell \) and \(2\ell \) is uniform.

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Lindell, Y. Fast Secure Two-Party ECDSA Signing. J Cryptol 34, 44 (2021). https://doi.org/10.1007/s00145-021-09409-9

Download citation

  • Received:

  • Revised:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s00145-021-09409-9

Keywords

Navigation