Paper 2021/1621

Alpha-Rays: Key Extraction Attacks on Threshold ECDSA Implementations

Dmytro Tymokhanov and Omer Shlomovits


In this paper we provide technical details on two new attack vectors, relevant to implementations of [GG18] and [GG20] threshold ECDSA protocols. Both attacks lead to a complete secret key extraction by exploiting different parts of the Multiplicative-to-Additive (MtA) sub-protocol the parties run during signing. Our first attack applies to the setting of ”fast” MtA, which runs the protocol with no range proofs. We leverage a powerful oracle, much stronger than originally anticipated in [GG18], to reveal a part of the secret key with each signature we run. The number of required signatures depends on the implementation under attack and the number of parties controlled by the attacker. Our proof of concept demonstrates a full key extraction by a single malicious party using eight signatures. Our second attack deals with the more common setting of “full” MtA, that is, including ZK proofs. The only requirement for mounting a successful attack is to use a small Paillier encryption key. The key size check was not specified in the protocol and therefore missing from most existing threshold ECDSA implementations, making them vulnerable. As we show, choosing a small key completely eliminates a specific hiding property in one of the values sent from the victim to the attacker during one of ZK proofs. This allows a single malicious party to extract the full secret key after a single valid signature. We provide a proof of concept for this attack as well.

Available format(s)
Publication info
Preprint. MINOR revision.
threshold cryptography
Contact author(s)
omer shlomovits @ gmail com
2021-12-14: received
Short URL
Creative Commons Attribution


      author = {Dmytro Tymokhanov and Omer Shlomovits},
      title = {Alpha-Rays: Key Extraction Attacks on Threshold ECDSA Implementations},
      howpublished = {Cryptology ePrint Archive, Paper 2021/1621},
      year = {2021},
      note = {\url{}},
      url = {}
Note: In order to protect the privacy of readers, does not use cookies or embedded third party content.