2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC
Large-Scale MPC
1 Introduction
The Elliptic Curve Digital Signature Algorithm (ECDSA) is one of NIST’s
standards for digital signing. Much effort has been made for thresholdizing
ECDSA in the past years [GGN16, BGG17, LN18, GG19, DKLS19, CGG+ 20,
DOK+ 20, DJN+ 20, GKSS20, CCL+ 20, ANO+ 22, BMP22, DKLS23, ZYP23,
WMYC23], and threshold ECDSA schemes have been widely deployed. This
is mainly due to its widespread use as an authentication scheme in Bitcoin,
Ethereum and alike, in which the signature constitutes a proof of ownership of
the funds. Threshold signature based solutions flourish in the cryptocurrency
industry, and focus on two main types of use cases: distributed custody (e.g.,
2 Authors Suppressed Due to Excessive Length
Fireblocks, Zengo, and Qredo) and decentralized bridges (e.g., Thorchain, Keep
Network, and the Internet Computer). Distributed custody leverages threshold
signature protocols to mitigate the self custodial risks of loss and theft, by
distributing the secret signing key of the client, who is the legal owner of the
funds, between multiple signers. Typically, the key is shared between the client
and a (potentially distributed) custodian in a way that requires the active
consent of both in order to produce a signature. A decentralized bridge consists of
a network of nodes who distributively manage multiple signing keys for different
wallets, each holding a pool of funds on different blockchains used to form cross-
chain liquidity pools. This enables a single entity (the network) to permissionlessly
own, manage and transfer funds (and information) across different blockchains.
When a client owning wallets on two different blockchains wishes to transfer
funds between them it can send funds to one end of the bridge’s liquidity pool
and request a withdrawal of an equivalent amount to the client’s wallet on
the the other end. The bridge network then creates and distributedly signs a
corresponding transaction that can then be broadcasted by the client to the
other blockchain, to complete the exchange.
Due to inherent limitations of existing threshold signing protocols, all real
world networks we are aware of are deployed with a rather small number of nodes
– in the order of 10-20. This is not on par with the vision of decentralization,
since when the number of nodes is small it is difficult to argue that these nodes
are not colluding.
In this paper we address the question of whether we can achieve an efficient
massively decentralized network for concurrently servicing numerous clients, and
propose the first threshold signature protocol that can truly scale to practically
any number of nodes. Our protocol enjoys properties that are very important
in real-world deployments. This includes UC-security – which is necessary when
multiple instances of the protocol should run concurrently, and public-verifiability
– which is necessary in public (permissionless) networks with financial rewards
and punishments, so that that parties who misbehave need to be identifiable.
To date, all practical threshold ECDSA schemes were designed to work over
unicast channels, assuming secure point-to-point (P2P) channels between every
pair of parties. While secure point-to-point channels can be constructed in theory
(under an appropriate PKI setup), in practice they inherently incur a high
network load (i.e., maintaining a high number of sessions concurrently) and a
message complexity of Ω(n2 ), as each party computes and sends a message in
private to every other party. When aiming for a large scale protocol, it is not
reasonable to rely on such pairwise channels. Therefore there is a need for a new
design, relying on a broadcast channel instead.
Generic MPC protocols in the broadcast channel model are ubiquitous, and
oftentimes enjoy extra desirable properties like identifiable abort (IA) and public
verifiability (PV). The broadcast channel itself may either be implemented in-
house by the protocol’s participants or rely on an external implementation. In
recent years the use of a blockchain as a broadcast channel has surged, as it offers
immutability of messages (which enables easy recovery from failures) as well
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 3
Thus, it is sufficient for the service provider to collude with only a single member
of the organization in order to steal all the client’s funds.
These issues motivate the need for a decentralized service provider, meaning
that the service provider’s share of the signing key is now shared among a
network of n participants that emulate the operation of the provider. This,
however, requires a distributed signing protocol for an access structure that is
different than the usual threshold access structure that is addressed in (almost
all) previous works. The new access structure requires half of the signing key to
be in posession of the client, whereas the network, collectively, possesses the other
half. To produce a signature the client along with at least t + 1 honest parties
must collaborate, keeping the client safe even in the extreme case that all network
participants are compromised. Similar to the usual access structure discussed
above (for decentralized bridges), a protocol for the new access structure must
be proven secure under universal composition (UC) in order to concurrently serve
many clients. The only work that addresses a similar access structure in the UC
framework is [BMP22]; in that protocol, however, each party must separately
verify zero-knowledge proofs from every other party and so it is not practical for
networks as large as we envision.
Capturing that special access structure can take different approaches. For
instance, one may model the client as n virtual parties (as done in [ZYP23]
against a semi-honest adversary), so its power is equal to that of the service
provider. This approach incurs a high computation and communication complexity
on the client, that is dependent on the network size. An alternative would be
to use an hierarchical threshold secret sharing scheme [Tas07] with two levels
of hierarchy – the client is at the top and the network participants are at the
bottom, such that reconstruction is possible only by a collaboration between the
client and at least t + 1 network participants.
In this work we take a novel approach, named 2PC-MPC, that is reminiscent
to the hierarchical structure. Specifically, the client and each network participant
possess only one share, however, in contrast to the hierarchical secret sharing
scheme the client in our protocol is agnostic to the fact that it interacts with
a distributed party. Rather, it follows the protocol as if it is interacting with a
single party only (hence 2PC), which is emulated by the network via an MPC
protocol. We stress that being agnostic to the network structure does not imply
that the structure is hidden from the user, and when deployed in a permissionless
setting it is public. The benefit of our 2PC-MPC approach is that the client
can always refer to the network as an abstract second-party. Thus, allowing the
network to evolve, by adding new parties, removing old parties, or even changing
its internal access structure, without involving the client at all.
precise size of the network. From the client’s point of view, it is interacting
with a single party and hence its computation and communication overhead
remains low. The network almost perfectly emulates the second party in a 2-
out-of-2 ECDSA protocol (the client is the first party), where messages from the
network’s participants are aggregated into a single message which is effectively
the only one received and processed by the client. This notion is important in
case the network operates as a blockchain, where we cannot expect a client to
directly interact with the blockchain’s nodes. Instead, it broadcasts its messages
to be processed by the blockchain and being notified whenever the blockchain
has a response. This communication model reduces the attack surface of the
system in a real deployment, since the user does not know the identities of the
participants’ endpoints over the network. We believe that our ideas may also
find use in devising a topology hiding protocol, in which the network’s properties
(e.g., size and topology) are hidden from the user. Such a notion was recently
addressed in theory for general MPC ([MOR14] and follow ups), but has never
been tackled in the context of threshold ECDSA, and we leave it to future
work. Following the discussion above, in Table 1 we provide a comprehensive
comparison of threshold ECDSA protocols.
are simply summed together, and this sum is the only information required for
the next step of the protocol. Protocols of this form are particularly efficient
since it requires minimal processing of the other parties’ messages. We show
how to achieve this for our 2PC protocol, which enjoys a convenient structure
for this purpose.
Minimizing Computational Complexity. We leverage the fact that all messages
are public and present two ways to reduce the computational complexity of
processing these messages to practically O(1).
then combined locally by each party to get the final plaintext – incurring
Ω(n) exponentiations per party.
Instead, we show that this can be done by a single designated party only,
who can inform the others about the resulting plaintext in a verifiable
manner. When many executions of threshold decryption are run in parallel,
picking a different designated party for each ciphertext reduces the amortized
complexity to O(1) exponentiations per party per ciphertext.
2. Aggregation. The security and correctness of the protocol are ensured by
the fact that the messages broadcast by the parties are accompanied by a
zero-knowledge proof. Then, the parties separately verify a proof broadcasted
by any other party before proceeding to the next protocol step. Identifying
the verification of these proofs as one of the computationally heaviest operations
in many threshold ECDSA protocols, we again use the aggregateable nature
of our zero-knowledge proof system as follows. We first aggregate the n
proofs into a single aggregated proof, and then verify only one aggregated
proof. While verification of the aggregated proof remains a heavyweight
operation, the aggregation operation is orders of magnitude lighter. Thus,
the overall computational complexity consists of a simple aggregation of n
proofs (n multiplications in a group) followed by only one proof verification
(O(1) exponentiations) and so, even considering thousands of parties, the
computational complexity is reduced to practically O(1).
2 Preliminaries
where cti ← Enc(pk, pti ; ηi ), and the probability is over the coins used by Eval
and the random coins of A and S.
Remark on the use of Paillier’s AHE. When using the Paillier’s AHE the
‘actual’ plaintext space (ZN ) does not match the ‘effective’ plaintext space (in
our case, this is Zq , in order to match the order of the ECDSA group), it is
required to keep track on the upper bound on the effective plaintexts within
the larger domain. To this end, the Enc function, in addition to the ciphertext,
outputs the upper bound PT = q as well. Then, any ciphertext resulting from
applying an ℓ-ary function on ℓ+1 ciphertexts (ct0 , PT0 ), . . . , (ctℓ , PTℓ ) is accompanied
Pℓ
with the upper bound PT = i=0 PTi . This will come into play later, when
proving that the Paillier’s AHE has secure function evaluation, as well as when
proving the security of the zero-knowledge proofs.
Threshold AHE. Let B = {B1 , . . . , Bn } be a set of parties and U ⊂ B, where
|U | ≤ t < n, be those parties under the control of the adversary. A threshold
AHE FTAHE is defined in Functionality 1. The functionality is parameterized
with an AHE scheme AHE = (Gen, Enc, Dec, Add) with semantic security and
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 11
secure function evaluation. The parties in B can generate a key and prove its
validity to the certifiers. In the context of our 2PC-MPC protocol, the certifiers
are the users (represented by party A) who engage with B. Finally, any set of
t + 1 honest parties can decrypt a ciphertext using a previously generated key,
unless the adversary decides to abort.
FUNCTIONALITY 1 Threshold AHE: FTAHE
The functionality interacts with B = (B1 , . . . , Bn ), an adversary, and a set of certifiers.
It is parameterized with AHE = (Gen, Enc, Dec, Add), κ and t < n.
– Upon receiving (keygen, sid) from all parties in B, for a fresh sid, run (pk; sk) ←
AHE.Gen(1κ ), send pk to the adversary and receive the adversary’s response
(continue, U ′ ). If continue = 1 or U ′ ∩ U = ∅ then send (pubkey, sid, pk) to
all parties in B and store (sid, pk; sk), otherwise send (pubkey, sid, ⊥, U ′ ∩ U ).
– Upon receiving (certify, pk) from some party, if (·, pk; ·) is stored then return 1 to
that party, otherwise return 0.
– Upon receiving (decrypt, pk, ct) from at least t + 1 parties, if (sid, pk; sk) is stored
for some sid and sk, compute pt = AHE.Dec(sk, ct), send (decrypted, pk, ct, pt) to
the adversary and wait to the adversary’s response (continue, U ′ ). If continue =
1 or U ′ ∩ U = ∅ then send (decrypted, pk, ct, pt) to everyone, otherwise, send
(decrypted, pk, ct, ⊥, U ′ ∩ U ) to everyone.
P
(·, (x, ∀i R(xi , wi )) where x = i xi . In our protocols we choose to work with the
ideal functionalities for (stand-alone, batched or aggregateable) zero-knowledge
proofs as it makes it easier to work with. Our instantiation of the zero-knowledge
proof is proven as a secure sigma protocol, given any range proof in the hybrid
model, which in turn is shown to be sufficient to securely compute the aforementioned
functionalities [HL10, Theorem 6.5.2].
Languages used in our protocols.
The notation we use to describe the relations follows: the language associated
with relation R is the set LR = {x | ∃w : (x, w) ∈ R}; we write L[params] =
{S; s | f (params, S, s)} to denote a language {x | ∃s : f (params, S, s) = 1} where
params typically refers to global parameters (e.g., a public-key of an encryption
scheme, or a global verification key), S refers to a set of public values and s refers
R
to a set of secret values. Note that in Fzk (Functionality 9) we implicitly require
‘knowledge’ of the witness s from the prover P . Note that we may omit params
from a language specification when it is clear from context. The languages in
our protocols are listed below:
– Knowledge of decommitment.
– Ratio between committed values is the discrete log. (Recall that Mpp = Zq .)
Proving relation to this language is used as a building block for proving more complex
relations that involve range claims, that is, Languages 7,8.
– Committed affine evaluation. This language is later on specified for the Paillier
encryption scheme, see Appendix D.
Threshold Signature. Following the works by Canetti et al. [CMP20, CGG+ 20]
and follow ups [BMP22, Mak22], we use the threshold signature from Functionality
14 (Appendix F), which is not defined specifically for ECDSA; rather, it is a
generic one, and the ECDSA part only comes to play whenever a signature has to
be verified (in case it is not already stored in the functionality’s repository). We
refer the reader to [CMP20, CGG+ 20] for a thorough discussion about the choices
made in the functionality. An important observation in the aforementioned works
is that if the environment cannot break the unforgeability of the signature scheme
after the execution of (potentially multiple instances of) the protocol, then a
‘trivial’ simulation is perfect, where a ‘trivial’ simulation refers to the situation
where a simulator samples all values for the honest parties as prescribed, and
follows the instructions of the protocol. To complete the proof then, one has to
show that indeed the environment cannot break unforgeability, which is done
via a reduction, which in turn builds on a standard stand-alone simulation. This
means that we can use some useful techniques like rewinding the adversary,
and avoid expensive primitives like UC secure zero-knowledge proofs, when
constructing the simulator. This simulation is formalized by the notion of G ∗ -
simulatability as defined below, G ∗ is an enhanced signing oracle that processes
requests for key-generation, presigning and signing.
Signing Oracle. An enhanced signing oracle is modeled as a functionality
with key generation, presign and sign commands. A secure implementation of
the oracle in Functionality 2 is analogous to enhanced existential unforgeability
security definition of the ECDSA signature (where the adversary has information
about the randomness before seeing the signature, see [BMP22] for a discussion).
Definition 2.2 is for unforgeability in the context of an enhanced signing
oracle G ∗ , as given in [BMP22, Def. 3.2]. Note that the definition is described
for ECDSA rather than a generic signature scheme, nevertheless, we note that
the ECDSA scheme is proven (in [BMP22]) to be G ∗ -existential unforgeable.
Definition 2.2 We say that Sig = (Gen, Sign, Verfiy) is G ∗ -existentially unforgeable
∗
ECDSA scheme if for every adversary A there exists µ ∈ neg such that Pr[ExpGEU (A, 1κ ) =
∗
1] ≤ µ(κ), where ExpGEU is defined in Experiment 3.
14 Authors Suppressed Due to Excessive Length
The following theorem [BMP22, Theorem 5.5] is in the heart of the proof
technique that was introduced in [CMP20]. The theorem states that, for a
signature scheme Sig that has enhanced unforgeability, if Π is G ∗ -simulatable
then it is UC-secure. Proving G ∗ -simulatability is a much easier task as it can
leverage non-UC primitives and in particular may involve rewinding of the
adversary. A proof of the following theorem is given in Appendix G.
Theorem 2.4 For a signature scheme Sig and a threshold signature protocol
Π for Sig, let G ∗ be an enhanced signing oracle as defined above. Then Π UC
realizes Ftsig (Functionality 14) in the strict global random oracle model if
of two components: a Schnorr proof and a range proof (that share the same
statement and witness). Previous works [GGN16, CGG+ 20, BMP22] use a
designated verifier range proof. Namely, the proof parameter is comprised of a
bi-prime that is a product of safe primes that are generated separately by each
verifier, and so in order to prove a statement to the public one has to prove
the statement to each verifier individually. Instead, in our zero-knowledge
protocol we treat the range proof abstractly, which enables plugging any
range proof implementation. This way, one can plug and play any range proof
implementation, depending on the needs. In our case, to obtain the 2PC-
MPC effect, it is important to use publicly verifiable aggregateable proofs. To
this end, we use Bulletproof [BBB+ 18] for range statements as their proofs
are aggregateable and have a trustless setup. Specifically, to prove a range
statement to multiple verifiers in a single shot, we enhance the statement
to include a commitment to the witness as well. The prover then sends (1)
a Schnorr proof of knowledge for the enhanced statement, from which an
extractor can extract a witness (but not necessarily in the adequate range),
and (2) an independent range proof of knowledge on the committed value,
from which an extractor can extract a witness in the specified range. Since
the commitment used in both proofs is the same and the commitment scheme
is computationally binding, we must have that the extractor extracted the
same witness. The above, however, is not sufficient because it only states that
the witness is in the right range Mpp , namely, it is in the right range after
a reduction to some modulus. To solve this, a range check is added to the
response of the range proof, which essentially ensures that the two extracted
witnesses are in fact the same over the integers. This is true as long as the
claimed range is much smaller than the commitment space Cpp . When this is
not the case we decompose the witness w = i wi ∆i such that ∆ is much
P
smaller than Cpp , and then proving, using a batch proof, that all wi ’s are
smaller than ∆. The formal description of the proof appears in Section 5.2.
Presigning and Signing. From A’s perspective, the presign is almost the
same as the two-party protocol in Appendix I, except that A also gets Enc(γ)
and Enc(γ · xB ), for some unknown γ. Consequentially, at the signing phase,
A will homomorphically compute an encryption of its share of the signature
multiplied by γ. Meanwhile, the parties B1 , . . . , Bn distributively generate their
signature nonce share kB as well as that masking value γ. These values are
securely multiplied and only their product, γ · kB mod q is being exposed via
threshold decryption, but this is deferred to the signing phase. By this, when
the parties obtain A’s encrypted signature share in the signing phase, the can
eliminate γ by multiplication with (γkB )−1 , to derive the signature. See a formal
description in Protocol 5 and 6.
PROTOCOL 4 Key-Generation Πkeygen : KeyGen(G, G, q)
The protocol is parameterized with the ECDSA group description (G, G, q). The
protocol interacts with n + 1 parties A, B1 , . . . , Bn , where all parties hold pk as input.
The parties agree on a fresh sid and do as follows:
PROTOCOL 5 Presigning Πpres : Presign ((G, G, q), sid)
The protocol interacts with A, B1 , . . . , Bn where everyone has pk and ctkey as input.
Before proceeding, all parties verify that sid has never been used before. Then they do
as follows:
1. A’s message:
(a) A samples a random kA ← Zq and computes KA = Com(kA ; ρ1 ).
L
(b) A sends (prove, sid, pidA , KA ; kA , ρ1 ) to FzkDCom .
2. Bi ’s message:
(a) First round:
L
i. Bi receives (proof, sid, pidA , KA ) from FzkDCom , if not, it aborts.
∗ P
ii. Bi samples ki ← Zq and computes Ri = ki · G. Denote kB = i ki .
i i i i
iii. Bi samples γi ∈ [0, q), ηmask1 , ηmask2 , ηmask3 , ηmask4 ∈ Rpk , and computes
A. cti1 = AHE.Enc(pk, γi ; ηmask
i
1
),
i i
B. ct2 = AHE.Eval(pk, fi , ctkey ; ηmask 2
) where fi (x) = γi · x,
i i
C. ct3 = AHE.Enc(pk, ki ; ηmask3 ).
L [pk,ctkey ]
iv. Bi sends (prove, sid∥“γ”, pidi , cti1 , cti2 ; γi , ηmask
i
1
i
, ηmask 2
EncDH
) to Fagg−zk .
i i LEncDL
v. Bi sends (prove, sid, pidi , Ri , ct3 ; ki , ηmask3 ) to Fagg−zk .
(b) Second round:
LEncDH [pk,ctkey ]
i. Bi receives (proof, sid∥“γ”, ct1 , ct2 ) from Fagg−zk and
LEncDL
(proof, sid, R, ct3 ) from Fagg−zk .
L [pk,ct ]
ii. Otherwise, if Bi receives (malicious, sid, U ′ ) from Fagg−zk EncDH key
and/or
′′ LEncDL
(malicious, sid, U ) from Fagg−zk , it records the malicious parties (M
and/or M ′ ) and aborts.
iii. Bi computes cti4 = AHE.Eval(pk, fi′ , ct1 ; ηmask i
4
) where fi′ (x) = ki · x.
LEncDH [pk,ct1 ]
iv. Bi sends (prove, sid∥“k”, pidi , cti3 , cti4 ; ki , ηmask
i
3
i
, ηmask 4
) to Fagg−zk .
(c) Proof verification:
LEncDH [pk,ct1 ]
Bi receives (proof, sid∥“k”, ct3 , ct4 ) from Fagg−zk . Otherwise, if Bi
L [pk,ct ]
receives (malicious, sid, U ′ ) from Fagg−zk
EncDH 1
, it records the malicious
parties and aborts.
3. A’s verification
LEncDL
(a) A receives (proof, sid, RB , ct3 ) from Fagg−zk , if not, it aborts.
L
EncDH [pk,ct
key ]
(b) A receives (proof, sid, ct1 , ct2 ) from Fagg−zk , if not, it aborts.
4. Output
(a) A records (presign, sid, RB , ct1 , ct2 ; kA , ρ1 ), where ct1 and ct2 are encryptions
of γ and γ · xB .
(b) Bi records (presign, sid, RB , KA , ct1 , ct2 , ct4 ), where ct4 encrypts γ · kB mod q.
Functionality 14. This enables using tools like non-UC zero-knowledge proofs
and the rewinding technique.
PROTOCOL 6 Signing Πsign : Sign ((G, G, q), sid, msg)
1. A’s message:
−1
(a) A computes R = (kA )−1 · RB (= kA kB · G) and r = R|x−axis mod q; denote
−1
k = kA kB .
(b) A samples ρ2 ∈ Rpp and computes UA = Com(kA · xA ; ρ2 ).
(c) A sets a1 = r · kA · xA + m · kA and a2 = r · kA .
(d) A homomorphically evaluates ct1 , ct2 , on its private function fA (x1 , x2 ) :=
a1 x1 + a2 x2 :
– ctA ← AHE.Eval(pk, fA , ct1 , ct2 ; ηeval )
(e) A sends the following proofs:
L [pp,(G,R,q)]
– A sends (prove, sid, pidA , KA , RB ; kA , ρ1 ) to FzkDComDL .
– A sends (prove, sid, pidA , KA , UA , XA ; kA , xA , ρ1 , ρ2 ) to
L [pp,(G,G,q)]
FzkDComRatio .
– A computes C1 = (r ⊙ UA ) ⊕ (m ⊙ KA ) and C2 = r ⊙ KA , and sends
(prove, sid, pidA , ctA , C1 , C2 ; a1 , a2 , r · ρ2 + m · ρ1 , r · ρ1 , η) to
L [pp,pk,ct1 ,ct2 ]
FzkDComEval .
2. Bi ’s verification and output:
(a) Bi receives the following proofs, otherwise, it aborts.
L [pp,(G,R,q)]
– (proof, sid||pidA , KA , RB ) from FzkDComDL .
LDComRatio [pp,(G,G,q)]
– (proof, sid||pidA , KA , UA , XA ) from Fzk .
L [pp,pk,ct1 ,ct2 ]
– (proof, sid||pidA , ctA , C1 , C2 ) from FzkDComEval .
(b) Bi verifies that the values used in the proofs are consistent with values obtained
previously by Bi , specifically:
– There are records (keygen, XA , X, ctkey , pk) and (presign, sid, RB , KA , pt′ ),
and
– C1 = (r ⊙ UA ) ⊕ (m ⊙ KA ) and C2 = r ⊙ KA , where r = R|x−axis .
(c) Bi sends (decrypt, pk, ctA ) and (decrypt, pk, ct4 ) to FTAHE and waits
for its response. Let the responses be (decrypted, pk, ctA , ptA , UA ) and
(decrypted, pk, ct4 , pt4 , U4 ) respectively; if ptA = ⊥ or pt4 = ⊥ then output
UA ∪ U4 and abort; otherwise compute s′ = pt−1 4 · ptA mod q (which is equal
to (γkB )−1 · ((rkA xA + mkA )γ + rkA γxB ) = k−1 (rx + m) mod q as required)
and output s = min{s′ , q − s′ } (to ensure uniqueness of the signature).
3. Output: Bi outputs σ = (r, s).
Due to space limit, we defer the full proof to Appendix H and give here only
the intuition. We separate the proof of G ∗ -simulatability to two cases, where in
the first case all parties in B are corrupted (and A is honest) and in the second
A, together with n − 1 parties in B are corrupted (and Bi for some i is honest).
In the first case, the simulator can produce a signing key and presignature in
exactly the same distribution as when produced by G ∗ . The only difference is
that the simulator encrypts the partial signature sA directly (which is then
multiplied by (γkB )−1 to get the final signature), whereas in the real protocol
party A encrypts some partial signature that is equal sA only after a reduction
modulo q. In addition, the simulator commits to zero, instead of the actual
commitment UA . However, the two cases are indistinguishable thanks to the fact
that the AHE scheme has secure function evaluation and that the commitment
20 Authors Suppressed Due to Excessive Length
scheme is perfectly hiding. In the second case, the simulator uses an encryption of
zero instead of the actual ciphertexts ctkey , ct1 , . . . , ct4 . The simulation is shown
indistinguishable to the real execution (where these ciphertexts decrypt to values
different than zero) using a series of hybrids, each changes one of the ciphertexts
to be computed just like in the real execution. Then it is argued that consecutive
hybrids are indistinguishable thanks to the semantic security of the AHE scheme.
On instantiation with the Paillier encryption scheme. The protocol described
above impacts the parameters to be chosen by the underlying encryption scheme.
Specifically, note that by the Definition of Paillier.Eval (in Appendix D) and by
the constraint implied by the zero-knowledge protocol for language LDComEval
(in Section 5), the size of N , the bi-prime modulus of the encryption scheme’s
plaintext space (before reduction modulo q) must be treated carefully. Given that
n < σ (i.e., the number of participants is smaller than the statistical security
parameter), we have that N > q 7 is sufficient to ensure the security of our
protocol.
Pr[ϕ(w) ⃗ θ(w,
⃗ =X, ⃗ ,w
⃗ ⃗v ) = Y ⃗ ∈ Hm , ⃗v ∈ Km
⃗ Y
⃗ ⃗v ) ← E(1κ , X,
| (w, ⃗ , X A , Y A , E, Z, Z ′ )] ≥ 1 − ε.
Upon receiving zi′ and zi′′ from Pi′ for all i′ ∈ [n], the verifier V:
′ ′
P P
1. computes z = i′ ∈[n] zi , z = i′ ∈[n] zi′ and verifies that z ∈ nS and
′
′
z ∈ K. Qm e Lm
2. verifies that ϕ(z) = X A j=1 Xj j ∈ G and θ(z; z ′ ) = Y A ⊕( j=1 ej ·Yj ) ∈ C
(recall that ⊕ denotes homomorphic addition in C).
3. If one of the above checks fail, validate them again per each j, to identify
the set of malicious provers U ′ .
4. If no cheater detected then output accept.
Proof. Completeness of the protocol is trivial and omitted for lack of space.
The proof for zero-knowledge follows from the HVZK property of the single
prover protocol, as follows:
1. S samples a random value r ← {0, 1}2κ and broadcasts (sid, pid1 , r).
2. S emulates H and receives from A the values it commits to.
3. S sets X⃗ 1 = X/ ⃗ Q′ X ⃗ ′ κ
v1 ∈ Km and computes
i ̸=1 i , and samples u1 ← {0, 1} , ⃗
⃗1 = θ(⃗0, ⃗v1 ).
Y
4. S defines H′ ≡ H except for H′ (sid, pid1 , X ⃗ 1, Y
⃗1 , u) = r, and thereafter
′
answers oracle queries according to H (rather than H).
5. S opens the commitment.
6. S runs the simulator for a single prover, on statement (sid, pid1 , X ⃗ 1, Y
⃗1 ) and
A A ⃗′ ′′ ′ ′′ ⃗ ⃗1 , X A , Y A ) =
obtains (X1 , Y1 , ⃗e, ⃗z, z ). It defines H ≡ H except for H (sid, pid1 , X1 , Y 1 1
⃗e, and thereafter answers oracle queries according to H (rather than H′ ).
′′
Consider LDComEval in Equation (7). We will instantiate AHE with the Paillier
encryption scheme, in order to extract the randomness η in the final stage of the
knowledge soundness proof. Recall that Paillier.Eval is defined in Appendix D.
In particular, we stress that randomizers in Rpk are represented as pairs (ω, η).
Furthermore, any homomorphic commitment scheme Com as in Definition C.1
with a sufficiently large message space suffices. Depending on the range proof
implementation, Com may be a batched-Perdersen commitment, a list of Pedersen
commitments per each ai (as Bulletproof [BBB+ 18] requires), or a single Pedersen
bit-commitment as in [DPLS19]. Our proof is indifferent to the particular instantiation.
Furthermore, we set the following:
– ϕ(⃗a, ρ, ω, η) = Paillier.Eval(pk, f⃗a (⃗x), c⃗t; ω, η), Com(⃗a, ρ)
– H = Zℓ+1 × Rpp × Z × Rpk
– G = Cpk × Cpp
– E = [0, 2κ )
Pℓ
– R = [0, q)ℓ+1 × Rpp × [0, 2s i=1 PTi ) × Rpk
Pℓ
– S = [0, q2κ+s )ℓ+1 × Rpp × [0, 22s+κ i=1 PTi ) × Rpk
HVZK. We need to show that for every (ctEval , C; A, ρ, η) ∈ RDComEval [pp, pk, c⃗t]
there exists a PPT simulator S, such that
s
Spp,pk,c⃗t (ctEval , C) ≡ {View(Ppp,pk,c⃗t (A, ρ, η) ↔ Vpp,pk,c⃗t (ctEval , C)}
≡ {⃗v∆ · B ⊙ ⃗c ⊕ Enc(0; ξ), Com(B; ν),
(proof, Com(B; ν)), e, B + e · A, ξ + eη, ν + eρ}
over the random variables B ∈ [0, ∆ · d(ℓ + 1 + ℓω ) · 2κ+s )d×(ℓ+1+ℓω ), ξ ∈ Z∗N and
ν ∈ Rpp .
Consider the following simulator S:
PROTOCOL 7 ZK proof for LDComEval
– Using (e, Z, z Com ) and (ê, Ẑ, ẑ Com ), apply Eq. 14 as follows. Compute:
(e − ê)A = Z − Ẑ (19)
In particular, the equation holds modulo Ppk , that is, modulo N in case of
the Paillier AHE cryptosystem.
Denote ct0 = ⃗v∆ ·A⊙⃗c. Subtracting (⊖) (e− ê)ct0 from both sides, by Eq. 19,
we get
Lemma 5.1 Suppose that y N = xk mod M , where k and N are co-prime and
x, y ∈ Z∗M . Then, there exists η ∈ Z∗M , such that η N = x mod M . Furthermore,
η can be computed efficiently given x, y, N, k.
Proof. Since k and N are co-prime, there exists u, v ∈ Z such that ku + N v = 1,
and u, v ∈ poly(||M ||2 ). Thus: x = xku+N v = (y u · xv )N mod M and therefore,
η := (y u · xv ) satisfies the equation η N = x mod M .
6 Optimizations
Presign batching. Instead of running multiple instances of the presign protocol
in parallel, we can use batched Schnorr proofs, in which one proves statements
that belong to multiple sessions at the same time. This is done by having each
party sampling m nonces and following the same protocol as in Protocol 5,
except that instead of sending a proof to Fzk , sending a proof of m statements
in one shot to Fbatch−zk . Then, in the signing Protocol 6, the parties use a fresh
nonce on each invocation. A proof by simulation of this modified protocol works
exactly the same as the one with a single-nonce presign. Instantiating Fbatch−zk
is done via batched enhance Schnorr protocol as shown in Section 4 in general,
and in Appendix K for the specific language LDComEval .
We note that the proof of language LEncDH in Step 2(b)iv (in the second
round of Protocol 5) cannot be batched with our technique, as ct1 is part
of the public parameters and it is different in each presign instance. In this
case Fbatch−zk is realized by invoking Fzk multiple times in parallel. From A’s
perspective, however, the presign ends after the first round (i.e., in Step 3 A
does not verifies the aforementioned proof), and so this does not impact its
latency or communication overheads. We remark that since the computation
and communication overheads incurred by the zero-knowledge proof is similar to
that of computing the statement itself, protecting against a malicious adversary
is about 2× more expensive than protecting against a semi-honest adversary.
Optimized Threshold Decryption Intuitively, in order to realize FTAHE ’s
decryption, each party will have to send its decryption share of a threshold
AHE scheme, validate all decryption shares from each other party, then combine
all decryption shares to get the plaintext and derive the signature. Although
Tiresias [FMM+ 23] demonstrate that validating decryption shares can be scaled
by batching multiple sid’s, in our case, batching multiple signing requests from
multiple users, combining the decryption shares is still computationally heavy,
and scales at least linearly by the number of parties.
To resolve this issue, we observe that it is enough for a single party Bi
to compute the plaintext and derive the signature. Therefore, when getting n
signing requests from n different sid’s, each party Bi could be responsible for
decrypting a different ciphertext. Overall, each party will compute one decryption
share per ciphertext, and will derive only one plaintext out of n, resulting with
an amortized cost of only O(1) exponentiations.
We refer to Appendix E for the detailed proof and below explain the proof
sketch. To simulate the new protocol, S first extracts the adversary’s secret
28 Authors Suppressed Due to Excessive Length
decryption shares ski for the TAHE scheme. Then, to simulate the honest party
decryption shares for ct4 , ctA , it uses these key shares and the corresponding
plaintexts (which are simulated in the same way as in Simulation 19). Then, it
calls the adversary which then outputs s′ , and there are two options:
1. (r, s′ ) is a valid signature on m. Since there is only one correct value for s
given r, m, this is the only message it can send to avoid the next round.
2. It sends s′ ̸= s, and therefore the signature doesn’t verify. In this case, the
parties fall back to the heavy protocol, and send their decryption shares with
zk proofs. S can simulate those proofs for the honest parties.
1. In key generation, the user A also has to generate the required public parameters
for the above commitment, namely N̂ , and send it to Fcom−zk . Therefore,
when opening the commitment, A has to prove in zk that N̂A is valid (in
particular, composed of safe primes).
2. When realizing Fagg−zk , the parties in B will generate two proofs: one with
Bulletproofs, and the other one respect to A’s bi-prime N̂ A .
3. Lastly, the above range proof is a gap sigma protocol. This means that while
correctness and zk are ensured only for a prover that uses a witness in the
correct range, knowledge soundness will extract a witness in a potentially
larger domain, namely S, rather than R as in Definition 4.1. Therefore, the
user will treat ct1 and ct2 as encryptions of plaintexts in the broader domain
S, and will therefore use a mask ω in a proportionally larger domain (×2κ+s )
as well, to mask its secret linear evaluation function.
Three Rounds Protocol Below we show how to transform the 7-round 2PC-
MPC Protocol described in Section 3 into a 3-round protocol for a typical
threshold access structure. Intuitively, proof aggregation costs an additional
round, as the parties run the protocol interactively. This aggregation is crucial for
a 2PC-MPC access structure, as the parties must mimic a single party. However,
for a threshold access structure, such aggregation is not strictly required and
therefore a trade-off is presented between round and computation complexity.
Therefore, two changes are made. First, the user’s secrets become public,
e.g., xA = 0 and kA = 1, so that the protocol only involves the parties {Bi }ni=1 .
Second, in presign, we replace the Fagg−zk functionalities with Fcom−zk . At first
glance, this results with a 5 round protocol. However, we may treat encrypted
values as commitments, as observed in [CGG+ 20]. This saves commitment rounds
and results with a 3-round protocol. In Appendix M, we specify the 2-round
presign protocol, present its simulation in detail, and prove indistinguishability.
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 29
3
https://github.com/RustCrypto/crypto-bigint
4
https://github.com/RustCrypto/elliptic-curves/tree/master/k256
5
https://github.com/dalek-cryptography/bulletproofs/tree/main
30 Authors Suppressed Due to Excessive Length
Fig. 3: Verification time of Schnorr proofs without aggregation scales linearly with n,
whereas verification of an aggregated proof remains constant. Indeed, proof aggregation
incurs a cost that asymptotically scales with the number of parties. However, the
proof time is orders of magnitude cheaper than a single verification, therefore the
computational overhead, dictated by proof verification, remains practically constant,
even for thousand parties.
6
https://ristretto.group/
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 31
References
ACS02. Joy Algesheimer, Jan Camenisch, and Victor Shoup. Efficient Computation
Modulo a Shared Secret with Application to the Generation of Shared Safe-
Prime Products. In CRYPTO, volume 2442, pages 417–432. Springer, 2002.
ANO+ 22. Damiano Abram, Ariel Nof, Claudio Orlandi, Peter Scholl, and Omer
Shlomovits. Low-bandwidth threshold ECDSA via pseudorandom
correlation generators. In SP, pages 2554–2572. IEEE, 2022.
Ban05. Endre Bangerter. Efficient zero knowledge proofs of knowledge for
homomorphisms. PhD thesis, Citeseer, 2005.
BBB+ 18. Benedikt Bünz, Jonathan Bootle, Dan Boneh, Andrew Poelstra, Pieter
Wuille, and Greg Maxwell. Bulletproofs: Short proofs for confidential
transactions and more. In 2018 IEEE symposium on security and privacy
(SP), pages 315–334. IEEE, 2018.
BDO23. Lennart Braun, Ivan Damgård, and Claudio Orlandi. Secure multiparty
computation from threshold encryption based on class groups. In Helena
Handschuh and Anna Lysyanskaya, editors, CRYPTO, pages 613–645,
2023.
BGG17. Dan Boneh, Rosario Gennaro, and Steven Goldfeder. Using level-1
homomorphic encryption to improve threshold DSA signatures for bitcoin
wallet security. In LATINCRYPT, volume 11368 of Lecture Notes in
Computer Science, pages 352–377. Springer, 2017.
BMP22. Constantin Blokh, Nikolaos Makriyannis, and Udi Peled. Efficient
Asymmetric Threshold ECDSA for MPC-based Cold Storage. Cryptology
ePrint Archive, 2022.
BPMW16. Florian Bourse, Rafaël Del Pino, Michele Minelli, and Hoeteck Wee. FHE
Circuit Privacy Almost for Free. In Advances in Cryptology - CRYPTO
2016 - 36th Annual International Cryptology Conference, Santa Barbara,
CA, USA, August 14-18, 2016, Proceedings, Part II, volume 9815 of Lecture
Notes in Computer Science, pages 62–89. Springer, 2016.
Can04. Ran Canetti. Universally composable signature, certification, and
authentication. In Proceedings. 17th IEEE Computer Security Foundations
Workshop, 2004., pages 219–233. IEEE, 2004.
CCL+ 20. Guilhem Castagnos, Dario Catalano, Fabien Laguillaumie, Federico
Savasta, and Ida Tucker. Bandwidth-efficient threshold EC-DSA. In
PKC, volume 12111 of Lecture Notes in Computer Science, pages 266–296.
Springer, 2020.
CGG+ 20. Ran Canetti, Rosario Gennaro, Steven Goldfeder, Nikolaos Makriyannis,
and Udi Peled. UC non-interactive, proactive, threshold ECDSA with
identifiable aborts. In CCS, pages 1769–1787, 2020.
CHI+ 21. Megan Chen, Carmit Hazay, Yuval Ishai, Yuriy Kashnikov, Daniele
Micciancio, Tarik Riviere, Abhi Shelat, Muthu Venkitasubramaniam, and
Ruihan Wang. Diogenes: Lightweight scalable RSA modulus generation
with a dishonest majority. In (SP), pages 590–607. IEEE, 2021.
CMP20. Ran Canetti, Nikolaos Makriyannis, and Udi Peled. UC non-interactive,
proactive, threshold ECDSA. IACR Cryptol. ePrint Arch., page 492, 2020.
DJN+ 20. Ivan Damgård, Thomas Pelle Jakobsen, Jesper Buus Nielsen,
Jakob Illeborg Pagter, and Michael Bæksvang Østergård. Fast threshold
ECDSA with honest majority. In SCN, volume 12238 of LNCS, pages
382–400. Springer, 2020.
32 Authors Suppressed Due to Excessive Length
DKLS19. Jack Doerner, Yashvanth Kondi, Eysa Lee, and Abhi Shelat. Threshold
ECDSA from ECDSA assumptions: The multiparty case. In SP 2019,
pages 1051–1066. IEEE, 2019.
DKLS23. Jack Doerner, Yashvanth Kondi, Eysa Lee, and Abhi Shelat. Threshold
ECDSA in three rounds. IACR Cryptol. ePrint Arch., page 765, 2023.
DOK+ 20. Anders P. K. Dalskov, Claudio Orlandi, Marcel Keller, Kris Shrishak, and
Haya Shulman. Securing DNSSEC keys via threshold ECDSA from generic
MPC. In ESORICS, volume 12309, pages 654–673. Springer, 2020.
DPLS19. Rafaël Del Pino, Vadim Lyubashevsky, and Gregor Seiler. Short Discrete
Log Proofs for FHE and Ring-LWE Ciphertexts. In IACR International
Workshop on Public Key Cryptography, pages 344–373. Springer, 2019.
FMM+ 23. Offir Friedman, Avichai Marmor, Dolev Mutzari, Yehonatan C. Scaly,
Yuval Spiizer, and Avishay Yanai. Tiresias: Large scale, maliciously secure
threshold paillier. IACR Cryptol. ePrint Arch., page 998, 2023.
GG19. Rosario Gennaro and Steven Goldfeder. Fast multiparty threshold ECDSA
with fast trustless setup. IACR Cryptol. ePrint Arch., page 114, 2019.
GGN16. Rosario Gennaro, Steven Goldfeder, and Arvind Narayanan. Threshold-
optimal DSA/ECDSA signatures and an application to bitcoin wallet
security. In International Conference on Applied Cryptography and
Network Security, pages 156–174. Springer, 2016.
GKSS20. Adam Gagol, Jedrzej Kula, Damian Straszak, and Michal Swietek.
Threshold ECDSA for decentralized asset custody. IACR Cryptol. ePrint
Arch., page 498, 2020.
HL10. Carmit Hazay and Yehuda Lindell. Efficient Secure Two-Party Protocols
- Techniques and Constructions. Information Security and Cryptography.
Springer, 2010.
Lin17. Yehuda Lindell. Fast secure two-party ECDSA signing. In Annual
International Cryptology Conference, pages 613–644. Springer, 2017.
LN18. Yehuda Lindell and Ariel Nof. Fast secure multiparty ECDSA with
practical distributed key generation and applications to cryptocurrency
custody. In CCS, pages 1837–1854. ACM, 2018.
Mak22. Nikolaos Makriyannis. On the classic protocol for MPC schnorr signatures.
IACR Cryptol. ePrint Arch., page 1332, 2022.
Mau15. Ueli Maurer. Zero-knowledge proofs of knowledge for group
homomorphisms. Designs, Codes and Cryptography, 77:663–676, 2015.
MOR14. Tal Moran, Ilan Orlov, and Silas Richelson. Topology-hiding computation.
Cryptology ePrint Archive, Paper 2014/1022, 2014. https://eprint.
iacr.org/2014/1022.
Pai99. Pascal Paillier. Public-Key Cryptosystems Based on Composite Degree
Residuosity Classes. In Jacques Stern, editor, EUROCRYPT, volume 1592,
pages 223–238. Springer, 1999.
Ped91. Torben P. Pedersen. Non-interactive and information-theoretic secure
verifiable secret sharing. In Joan Feigenbaum, editor, CRYPTO, volume
576 of Lecture Notes in Computer Science, pages 129–140. Springer, 1991.
Tas07. Tamir Tassa. Hierarchical threshold secret sharing. J. Cryptol., 20(2):237–
264, 2007.
WMYC23. Harry W. H. Wong, Jack P. K. Ma, Hoover H. F. Yin, and Sherman S. M.
Chow. Real threshold ECDSA. In NDSS. The Internet Society, 2023.
ZYP23. Guy Zyskind, Avishay Yanai, and Alex ’Sandy’ Pentland. Unstoppable
wallets: Chain-assisted threshold ECDSA and its applications. IACR
Cryptol. ePrint Arch., page 832, 2023.
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 33
Fig. 6: Runtime for our key-generation (a) and presignature (b) protocol for various
number of parties, n and threshold t.
For brevity, we may write P and C instead of Ppk and Cpk when the public
key pk is clear from the context. In addition, we denote homomorphic addition
of two ciphertexts ct1 and ct2 by ct1 ⊕ ct2 and a multiplication of a ciphertext
ciphertext ct by a scalar α by α ⊙ ct.
Every affine function can be efficiently computed homomorphically by an
algorithm Eval(pk, f, ct1 , . . . , ctℓ ; ηeval ). Whenever we omit the randomness in
Eval(pk, f, ct1 , . . . , ctℓ ), we refer to the process of sampling a randomness ηeval ←
{0, 1}poly(κ) and running Eval(pk, f, ct1 , . . . , ctℓ ; ηeval ). Given a public key pk, an
Pℓ
affine function f (x1 , . . . , xℓ ) = a0 + i=1 ai xi (with ai ∈ Z and ℓ, ∥ai ∥2 ∈ poly(κ)
for all 0 ≤ i ≤ ℓ) and ℓ ciphertexts ct1 , . . . , ctℓ ∈ C, Eval outputs a ciphertext ct.
where (pk, sk) ← Gen(1κ ) and cti ← Enc(pk, pti ), and the probability is over the
coins used by algorithms Gen, Enc and Eval.
Lℓ
Note that for correctness, algorithm Eval may simply output ct = Enc(pk, a0 ) i=1 ai ⊙ cti ,
however, such an algorithm may not satisfy secure function evaluation (see
below).
where (pk, sk) ← Gen(1κ ) and h refers the auxiliary information function in
possession of the adversary. The probability is over the random coins of Gen and
Enc.
Definition B.4 (Secure Function Evaluation) AHE has secure function evaluation
if there exists a PPT algorithm SEval such that for every PPT adversary A, every
ℓ-ary affine function f as above, every (pk, sk) and every plaintexts pt1 , . . . , ptℓ ∈
P and randomness η1 , . . . , ηℓ ,
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 35
where cti ← Enc(pk, pti ; ηi ), and the probability is over the coins used by Eval
and the random coins of A and S.
1. A(1κ ) outputs (pk, sk), ℓ, {pti , ηi }ti=1 , f where (pk, sk) is an AHE’s key-pair,
{pti , ηi }ℓi=1 are plaintexts and randomness from which one can obtain ciphertexts
ct1 , . . . , ctℓ , and f is a ℓ-ary affine function as above (with coefficients chosen by
A).
2. The experiment picks b ← {0, 1} uniformly at random, then
– if b = 0: compute ctEval = Eval(pk, f, (ct1 , . . . , ctℓ )), where cti =
AHE.Enc(pk, pti ; ηi ) for all i,
– if b = 1: compute ctEval = SEval (pk, f (pt1 , . . . , ptℓ )).
3. Hand ctEval to A and receive the bit b′ .
4. Output 1 if b = b′ and 0 otherwise.
C Standard Definitions
Some definitions that are standard in the literature are provided in this section
for completeness.
– Perfect hiding. For every adversary A, every pp ← Setup(·) and every m ⃗1∈
⃗ 0, m
Mpp
1
Pr[A(m⃗ 0, m ⃗ b ; ρ)) = b] = ,
⃗ 1 , Com(m
2
where the probability is under a uniform choice of b ∈ {0, 1} and ρ ∈ Rpp .
– Computational binding. For every PPT adversary A and every pp ← Setup(·),
Pr[(m ⃗ 1 , ρ0 , ρ1 ) ← A(pp) : m
⃗ 0, m ⃗ 0 ̸= m
⃗ 1 ∧Com(m ⃗ 1 ; ρ1 )] ≤ neg(κq )
⃗ 0 ; ρ0 ) = Com(m
Com(m
⃗ 1 ; ρ1 ) + Com(m
⃗ 2 ; ρ2 ) = Com(m
⃗1+m
⃗ 2 ; ρ1 + ρ2 )
R
FUNCTIONALITY 9 Zero-Knowledge: Fzk
The functionality interacts with a prover P and a set of verifiers V1 , V2 , . . . (in the
two-party case there is one verifier V).
R
FUNCTIONALITY 10 Batched Zero-Knowledge: Fbatch−zk
The functionality interacts with a prover P and a set of verifiers V1 , V2 , . . . (in the
two-party case there is one verifier V).
– Upon receiving (prove, sid, ssid, B, ⃗ ⃗ where B is the batch size, from P, if
x; w),
(xi , wi ) ∈
/ R for some i ∈ [B] or (sid, ssid, ·, ·) has been previously called then
ignore the message. Otherwise, send (proof, sid, ssid, B, ⃗ x) to the verifiers.
R
FUNCTIONALITY 11 Committed Zero-Knowledge: Fcom−zk
The functionality interacts with a prover P and a verifier V.
R
FUNCTIONALITY 12 Aggregated Zero-Knowledge: Fagg−zk
The functionality interacts with a set of provers {P1 , . . . , Pn }, and a verifier V.
= SD[X1 , Y1 ] + SD[X2 , Y2 ]
ct = (1 + N )x · η N mod N 2
and PT = q.
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 39
Correctness. For every κ, every ℓ, every ℓ-ary affine function f with coefficients
in [0, q), and every plaintexts pt1 , . . . , ptℓ ∈ Zq such that pti = Dec(sk, cti ), let
PTi be the upper bound associated with cti (again, this is the maximal value
one obtains from decrypting cti , but without reducing modulo q), as long as
PTeval < N we have:
ℓ
!
M
Dec(sk, Eval(pk, f, (ct1 , . . . , ctℓ ))) = Dec sk, Enc(pk, a0 + ωq; η) (ai ⊙ cti )
i=1
ℓ ℓ
!
X Y
ai
= Dec sk, Enc(pk, a0 + ωq + ai pti ; η · (ηi ) )
i=1 i=1
ℓ
X
= a0 + ωq + ai pti
i=1
= f (pt1 , . . . , ptℓ ) mod q
where the first equality
Pℓ holds by our definitionPℓ of Eval;
Pℓthe second equality holds
because a0 +ωq + i=1 ai pti < q +q2s i=1 PTi +q i=1 PTi = PTeval < N ; the
third equality follows from the correctness of decryption of the original Paillier
encryption; and the forth equality holds by definition of f and the fact that ωq
mod q = 0.
Semantic security. Consider a trivial reduction from an adversary A breaking the
CPA-security game for the modified Paillier scheme to an adversary A′ breaking
the CPA-security game for the original scheme. When A′ gets a random public
key pk ′ = N , it sets pk = (N, q), and queries A on pk, receiving m0 , m1 ∈ Zq ,
interpreting them as m0 , m1 ∈ [0, q). It then sends the two messages m0 , m1 , as
elements of ZN , receiving c′ = AHE.Enc(N ′ , mb ; η ′ ). Then A′ passes c′ to A and
outputs whatever A outputs. Clearly, since the encryption algorithms coincide
(only that our scheme considers a smaller plaintext space), the advantage of A′
exactly equal the advantage of A, which therefore cannot be small, assuming
DCR is hard.
Secure function evaluation. We now show that Eval is statistically secure function
evaluation. That is, for every ℓ-ary affine function f as above, every (pk, sk)
and every ciphertexts (ct1 , PT1 ), . . . , (ctℓ , PTℓ ) such that pti = Dec(sk, cti ), and
every randomness η1 , . . . , ηℓ ∈ R, we have SD(X, Y ) < 2−s for random variables
X, Y as follows
(X, PTeval ) = Eval(pk, f, (ct1 , . . . , ctℓ )) and
Y = S(pk, f (pt1 , . . . , ptℓ ), PTeval ),
and S(pk, f (pt1 , . . . , ptℓ ), PTeval ) = Enc(pk, f (pt1 , . . . , ptℓ )+ωq; η) for a uniformly
Pℓ
chosen ω ← [0, 2s i=1 PTi ) and η ← Z∗N . To see this, consider ai , pti as values
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 41
Pℓ
over the integers Z and let a0 + i=1 ai pti = ω̃ · q + f (pt1 , . . . , ptt ), where
Pℓ
ω̃ ∈ [0, i=1 PTi ) and 0 ≤ f (pt1 , . . . , ptt ) < q. Then,
1 X
SD(X, Y ) = |Pr[X = c] − Pr[Y = c]|
2 ∗
c∈Z
N2
1 X X
= |Pr[X = Enc(z; ηz )] − Pr[Y = Enc(z; ηz )]|
2 ∗z∈ZN ηz ∈ZN
1 X X
= Pr[X = Enc(f (pt1 , . . . , ptℓ ) + ωq; ηz )]
2 ∗
ηz ∈ZN
Pℓ
ω∈[0,2s i=1 PTi +ω̃)
In the above, notice that we use Enc on input z ∈ ZN ; this is valid as we consider
z as the plaintext result of some evaluation operation, before reducing modulo
q, rather than a fresh ciphertext.
For every f, {pti , ηi }ℓi=1 and ω, it holds that ηx , ηy are independent, uniformly
distributed random variables (over Z∗N ), thus:
1 X
SD(X, Y ) = Pr[X = Enc(f (pt1 , . . . , ptt ) + ωq]
2 s
Pℓ
ω∈[0,2 i=1 PTi +ω̃)
The realization of FTAHE is done using a tuple of algorithms (Gen, Enc, Add, TDec, Rec).
Gen, Enc, Add works similarly to the definition of AHE while TDec is an operation
that each party runs locally on the chiphertext and generate a decryption share.
Collecting t + 1 such decryption shares as inputs to Rec outputs a correct
decryption. Since the TDec operation is local typically one must add a ZK proof
that this was done correctly and verify all proofs before applying Rec to them.
Verifying these proofs, especially when the number of parties (hence t) is large,
can dominate the protocol’s run time. In addition, the combination in Rec itself
may be also very expensive, especially when the plaintext space is of unknown
order and so the secret decryption key is shared over the integers (as in Paillier).
One possible optimization is for one party to locally compute Rec and provide
a proof of correct recombination. Unfortunately, generation and verification of
such proofs is not efficient in general. But in the case when the encryption is
of a signature one may verify the correctness by verifying the signature. In this
section we formalize this intuition and show that in our signing protocol this is
in fact possible. Furthermore we show that in the context of this protocol it is
possible to forgo the ZK proofs when the signature validates and only use them
when it fails.
Let us first formalize the TAHE algorithms and its correctness and security
defintions.
Correctness. TAHE is correct if for every κ, every t ∈ poly(κ), every ℓ-ary affine
[n]
function f , any subset S ∈ t+1 and every plaintexts pt1 , . . . , ptt ∈ P,
where (pk, {ski }i∈[n] ) ← Gen(1κ ) and cti ← Enc(pk, pti ), and the probability is
over the coins used by algorithms Gen, Enc and Eval.
Semantic Security. TAHE is semantically secure if for every PPT adversary A
there exists a PPT algorithm S such that for every pair of PPTs f, h : {0, 1}∗ →
{0, 1}∗ , and every pt ∈ P.
LTDec = {C, ct, cti ; ρ, ski | C = Com(ski , ρ)∧cti = TDec(ct, ski )∧ski ← Gen(1κ , i)}
LTDec
We assume that there exist a realization of Fzk .
FUNCTIONALITY 13 TAHE Key Generation: FTAHE−keygen
interacts with parties B = (B1 , . . . , Bn ), an adversary A corrupting
The functionality
a set U ∈ [n]
t
of the parties, and a set of certifiers. It is parameterized by a TAHE
scheme TAHE = (Gen, Enc, TDec, Rec, Add), and a commitment scheme Com, with a
computational security parameter κ and with threshold parameter t ∈ [1, n − 1].
– Upon receiving (keygen, sid) from all parties in B, for a fresh sid,
samples (pk, {ski }i∈[n] ) ← Kκ , calculate Ci = Com(ski , ρi )i∈[n] send
(pk, {ski }i∈U , {ρi }i∈U ) to the adversary and receive the adversary’s
response (continue, U ′ ). If continue = 1 or U ′ ∩ U = ∅ then send
(pubkey, sid, pk, {Ci }i∈[n] ) to all parties in B.
– Upon receiving (certify, pk) from some certifier, if (·, pk; ·) is stored then return 1
to that certifier, otherwise return 0.
E.2 Proof
Theorem E.2 :
′ ′ ′ ′
Πecdsa = (Πkgen , Πpres , Πsign ) is G ∗ -simulatable (according to Definition 2.3)
in the (Fkeygen , Fzk , Fagg−zk , Fcom−zk )-hybrid and random oracle model.
Proof. Simulating the messages A sends Bi is the same since no changes occurred
′
between Πecdsa and Πecdsa regarding these messages. We thus focus on the case
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 45
First notice that from Semantic Security and Secure function evaluation of the
TAHE any messages generated by the original simulator by calls to AHE are still
indistinguishable in the new simulation. Further more notice that by Simulatable
Key Generation the messages sent during the key generation simulation are
indistinguishable. The only new messages except for fault detection are the
shares which are indistinguishable by the Share Security property of the TAHE.
All is left to show G ∗ simulatability is to prove that aborts happens in the real
world and the ideal world. Let us look at different cases:
1. Valid signature: If the signature is valid both the real and ideal worlds will
not abort. Furthermore since there is only one valid signature given that r
is constant there is no choice of decryption shares for the adversary that can
result in a different signature that is valid.
2. Invalid signature: If the signature is not valid i∗ ∈ U , in this case both
the real world and the ideal world will consider them cheaters and abort. If
i∗ ∈/ U we know by the simulation so far that a correct decryption would
have resulted in a correct signature. Thus the only way for a signature to
be invalid is for one of the decryption shares of the adversary to be invalid.
This will be caught in both the real and ideal world by the ideal functionality
TDec
Fzk .
46 Authors Suppressed Due to Excessive Length
We follow the same proof structure from [CMP20, BMP22]. Following [CMP20,
Lemma 7.3], we show that if protocol Π = (Πkeygen , Πpres , Πsign ) (in Protocols 4-
6) does not UC-realize Functionality 14 (Ftsig ), then there exists an environment
Z that can forge signatures for previously unsigned messages in an execution of
Π. As described in [CMP20, Section 7.4.1] and [BMP22], the simulator simply
runs the code of the honest parties as prescribed by Π, i.e. the simulator samples
all the secrets as prescribed and plays against the adversary in exactly the same
way as in the real execution. To interact with the functionality the simulator
proceeds as follows:
The above simulation is perfect unless Z can cause the ideal functionality to
output an error (errors in the functionality appear in red color). There are three
potential errors in our extended functionality: (i) Identifier – the same public key
X was certified for two different sid’s 1(c)i; (ii) Uniqueness of signatures – the
same signature σ is provided for two different sid’s 2(c)ii; and (iii) Unforgeability
– a valid signature that was never recorded before, is sent for verification. In the
functionality, a verification of an unrecorded signature always returns β = 0
(Step 3b) exactly for that reason, to reflect the fact that the signature scheme
is unforgeable.
In the following we explain why any of the above error states is reached with
only a negligible probability.
1. Reaching the Identifier state is possible only in case the environment causes
the parties in the real world to reach to the same public key in two different
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 47
Γ
FUNCTIONALITY 14 Ideal Threshold Signature Functionality: Ftsig
Parameters: P = P1 , . . . , Pn is the set of signatories and Γ ⊆ 2P is an efficient
representation of a monotone access structure over P .
1. Key-generation:
(a) Upon receiving (keygen, ssid) from some party Pi , interpret ssid = (. . . , P ),
where P = (P1 , . . . , Pn ).
– If Pi ∈ P , send to S and record (keygen, ssid, Pi ).
– Otherwise ignore the message.
(b) Once (keygen, ssid, Pj ) is recorded for all Pj ∈ P , send (newkey, ssid) to the
adversary S and do:
i. Upon receiving (newkey, ssid, X, V) from S, record (ssid, X, V).
ii. Upon receiving (newkey, ssid) from Pi ∈ P , output (newkey, ssid, X) if
it is recorded.
(c) Once (ssid, X, V) is recorded, upon receiving (confirmkey, ssid) from each
Pi ∈ P :
i. If there is no set P ′ ∈ Γ for which all Pi ∈ P are corrupted, and there is
a record of (confirmkey, ssid′ , X, . . .) with ssid′ ̸= ssid, output an error.
(Identifier)
ii. Record (confirmkey, ssid, X, V).
2. Signing:
(a) Upon receiving (sign, sid = (ssid, . . .), m) from some party Pi , send to S and
record (sign, sid, m, i)
(b) Upon receiving (sign, sid = (ssid, . . .), m, j) from S, if Pj is corrupted record
(sign, sid, m, j).
(c) Once (sign, sid, m, i) is recorded for all Pi ∈ P ′ for some P ′ ∈ Γ , send
(sign, sid, m) to the adversary S and, upon receiving (signature, sid, m, σ)
from S,
i. If the tuple (sid, m, σ, 0) is recorded, output an error.
ii. If a tuple (sid′ , ·, σ, 1) is recorded, and there is no set P ′ ∈ Γ for which all
Pi ∈ P ′ are corrupted, then record (sid, m, σ, 0). (Uniqueness of signatures)
iii. Else, record (sid, m, σ, 1).
(d) Upon receiving (signature, sid, m) from Pi ∈ P :
i. If (sid, m, σ, 1) is recorded, output (signature, sid, m, σ) to Pi .
ii. Else ignore the message.
3. Verification:
Upon receiving (sig-verify, sid, m, σ, X) from a party X, send
(sig-verify, sid, m, σ, X) to S and do:
(a) If a tuple (sid, m, σ, β ′ ) is recorded, then set β = β ′ .
(b) Else (m was never signed), if there is no set P ′ ∈ Γ for which all Pi ∈ P ′ are
corrupted, set β = 0. (Unforgeability)
(c) Else (m was never signed and there is a corrupted set P ′ ∈ Γ ), set β =
V(m, σ, X).
Record (m, σ, β) and output (istrue, sid, m, σ, β) to X .
runs of Πkeygen that engage at least one honest party (not necessarily the
same honest party in both of them). We note that this protocol is input-less,
and depends only on the random tape of the parties, which, by examining the
48 Authors Suppressed Due to Excessive Length
H Security 2PC-MPC
We separate the proof into two cases: in the first case all Bi ’s are corrupted
and A is honest, and in the second case A as well as n−1 of the Bi ’s are corrupted.
We note that a similar simulation will go through for a weaker adversary, who
corrupts less n or n − 1 parties of B, respectively.
Case 1: A is Honest The formal simulation is presented in Simulations 15-16.
To show that the simulation is indistinguishable from the real protocol, we
define two hybrids where the first hybrid coincides with the simulation (Figures
15-16) and the second hybrid coincides with the real execution. Namely:
1. Hybrid1 is similar to the simulation in Figures 15-16, except that S emulates
G ∗ locally (instead of using G ∗ as an oracle).
2. Hybrid2 is similar to Hybrid1 except that, in Step 3 in Simulation 16
the simulator S computes ctA ← AHE.Eval(pk, fA , ctkey ) using the correct
fA and ctkey , where fA ’s coefficients a0 , a1 are determined by the correct
values xA and kA . S can do this because now (when emulating G ∗ locally) it
has access to these secrets. In that case, S knows xA since it generates the
LEncDL
secret signing key x and receives B’s share when B calls Fzk in Step 3 in
Simulation 15, then, it computes xA = x − xB mod q; in addition S knows
kA since it generates the secret nonce k and receives B’s share when B calls
LDL
Fagg−zk in Step 4(a)ii in Simulation 15, then S computes kA = k −1 · kB .
Hybrid1 is identically-distributed to the simulation (in Figures 15-16) since
the only difference is that in the simulation G ∗ ’s random tape is used to sample
the secret key (which determines the public key) and the nonce, whereas in the
hybrid this is done by the simulator. Nevertheless, in both cases these values are
sampled from the exact same distribution. Note that G ∗ also produces signatures
on messages of the adversary’s choice, however, a signature is fully determined
by the message, the secret key and the nonce.
Hybrid1 and Hybrid2 are computationally indistinguishable. We reduce
indistinguishability between the two hybrids to the secure function evaluation
property (Definition B.5) of the AHE scheme: Let A be an adversary that
distinguishes between Hybrid1 and Hybrid2 with probability ϵ. We construct
an adversary A′ that breaks the secure function evaluation property with the
same probability as follows: Run Hybrid1 above except of the following modification.
In Step 3 under command Πsign in Simulation 16, engage in Experiment 8 by
handing ((pk, sk), ℓ = 1, {pt = xB , η}, f (x) = fA ) to the experiment, where xB , η
and fA ’s coefficients are extracted as explained above. Receive ciphertext ctEval
from the experiment and use ctA = ctEval for the rest of the simulation. Run
A with the resulting simulation and respond to the experiment with whatever
bit that A outputs. Observe that if the experiment’s bit is 0 then the resulting
simulation is distributed identically to Hybrid1 and if the bit is 1 then the
resulting simulation is distributed identically to distributed Hybrid2. Therefore,
A′ breaks AHE’s secure function evaluation with the same probability as A
distinguishes between Hybrid1 and Hybrid2, namely, with probability ϵ. Since
AHE has secure function evaluation, this means that ϵ ∈ neg(κ).
Finally, it is easy to see that Hybrid2 is identical to the real execution, where
S takes the role of the uncorrupted party A and runs A internally. Note that the
50 Authors Suppressed Due to Excessive Length
real-execution is run in the (FTAHE , Fzk , Fagg−zk , Fcom−zk )-hybrid model, which
are perfectly simulated. We stress that this hybrid is identically distributed to
the real execution even though in Step 2 under command Πpres in Simulation 15
the simulator commits to zero instead of the correct value, as Com is a perfectly
hiding commitment scheme. ⊔
⊓
1. Hybrid1 is similar to the simulation in Figures 17,18 and 19, except that
S emulates G ∗ locally (instead of using G ∗ as an oracle).
2. Hybrid2 is similar to Hybrid1 except that, S encrypts the correct value
xB instead of zero in Step 3c in Simulation 17. S can do this because it now
that it emulates G ∗ locally, it has access to these secrets.
3. Hybrid3 is similar to Hybrid2 except that in Step 4(a)iii in Simulation
j
18, S picks its own γi ∈ [0, q), computes cti1 = AHE.Enc(γi ; ηmask 1
) and then
L j
outputs ct1 = j∈[n] ct1 instead of an encryption of zero (recall that ⊕ is
the homomorphic addition operation of the AHE scheme).
4. Hybrid4 is similar to Hybrid3 except that in Step 4(a)iii in Simulation 18,
S computes cti2 = AHE.Eval(pk, fi , ctkey ; ηmask
i
2
) where fi (x) = γi · x, and
L j
then outputs ct2 = j∈[n] ct2 instead of an encryption of zero.
5. Hybrid5 is similar to Hybrid4 except that in Step 4(a)iv in Simulation 18,
S computes cti2 = AHE.Eval(pk, fi , ctkey ; ηmask
i
2
) where fi (x) = γi · x, and
L j
then outputs ct2 = j∈[n] ct2 instead of an encryption of zero.
6. Hybrid6 is similar to Hybrid5 except that in Step 4(a)iv in Simulation
18, S computes cti4 = AHE.Eval(pk, fi′ , ct1 ; ηmask
i
4
) where fi′ (x) = ki · x, and
L j
then outputs ct4 = j∈[n] ct4 instead of an encryption of zero.
7. Hybrid7 is similar to Hybrid6 except that in Step 4b in Simulation 19, S
computes pt4 = γkB mod q and ptA = kA · γ(r · x + m) mod q.
I.2 Presigning
The presigning protocol is formally described in Protocol 21. The goal of the
protocol is to randomly choose the signature nonce k and have the parties hold
their shares kA and kB . In the first message A commit to its random secret kA
and prove knowledge of it. In the second message B picks its random secret kB
and send RB = (kB )−1 · G to A, in addition to proving knowledge of the discrete
(k )−1
log of RB . Given RB , party A can compute the value R = RB A , which is
used in the signature protocol.
I.3 Signing
Theorem 2.4 states that in order to prove UC security of the protocol one only
has to prove that it is G ∗ -simulatable, as that property guarantees that the
adversary (the environment) cannot break the signature scheme’s unforgeability
even after an execution of (potentially multiple instances of) the protocol. In
that case, there is a ‘trivial’ simulator in the UC model: The simulator S
participates in the ideal world (with Ftsig ), and simulates the real-world protocol
Π2ecdsa = (Π2kgen , Π2pres , Π2sign ) by running A internally, taking the role of all
honest parties (and the (Fzk , Fcom ) functionalities). Specifically:
– Upon receiving (keygen, ssid, Pi ) from all parties, S initiates Π2kgen between
the simulated honest parties and the real adversary A, resulting with a key
X. Then, upon receiving (newkey, ssid), S sends (newkey, ssid, X, V) where
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 53
V is the verification algorithm for the signature in the real world (which is the
ECDSA verification algorithm in our case). Then once all (not simulated)
honest parties query (newkey, ssid), the functionality will transfer them
(newkey, ssid, X), and therefore the honest parties will output the same
public key X. Therefore, the key generation simulation is perfect by the
definition of Ftsig .
– Upon receiving (sign, sid, m, Pi ) from all parties, S initiates Π2pres and then
Π2sign , again by simulating the honest parties and oracle access to A, resulting
with a signature σ. Upon receiving (sign, sid, m), S responds with (signature, sid, m, σ).
Then, by definition, whenever an honest party queries Ftsig for the signature,
it gets (signature, sid, m, σ). Therefore, again, the simulation is perfect,
unless there was a record of (sid, m, σ, 0), in which case the functionality
outputs an error. However, there are only two ways in which (m, σ, 0) is
recorded. In both cases, some party X , potentially ̸∈ P, queried (sig-verify, sid, m, σ, X)
on a message m (note that only (m, σ, 1) is recorded in the signing phase). In
the first case, m was never signed, while not all parties in P are corrupted/quarantined.
In this case, the functionality records (m, σ, 0). The reason being that, if no
signing query on m is recorded, and not all parties are corrupted, if the
signature scheme is unforgeable, the signature must be invalid, and there is
no reason to validate it. Nevertheless, if an adversary can forge a signature,
this will result with a distinction between the real and ideal world. For the
second case, all parties in P are corrupted, in which case the adversary knows
the private key and is able to sign messages, therefore, they are validated
with V and there will be no difference from the real world in this scenario.
Thus, the view of the environment Z in the ideal world (which is comprised
of the view of A when run internally, and the outputs of honest parties in the
ideal world, where S interacts with Ftsig ) is identical to Z’s view in the real
world (which is comprised of A’s view and the outputs of honest parties in the
real world), unless A is able to forge signatures.
Therefore, theorem 2.4 states that it is only required to prove the following:
Theorem I.1 Π2ecdsa = (Π2kgen , Π2pres , Π2sign ) is G ∗ -simulatable (Def. 2.3) in
the (FTAHE , Fzk , Fcom−zk )-hybrid and random oracle model.
Proof. We will first simulate the two-party protocol in the (FTAHE , Fzk , Fcom−zk , G ∗ , H)-
hybrid model. The formal description of the simulator S is given in Figures 23,24,
simulating protocol against a corrupt A and B respectively. To show that the
above simulation is indistinguishable from the real protocol, we define two hybrids
where the first hybrid coincides with the simulation (Figures 23,24) and the
second hybrid coincides with the real execution. Namely:
1. Hybrid1 is similar to the simulation in Figures 23,24, except that S emulates
G ∗ locally (instead of using G ∗ as an oracle).
2. Hybrid2 is similar to Hybrid1 except that, when A is corrupted, S encrypts
the correct value xB instead of zero in Step 4 of command Π2kgen , in Simulation
23. S can do this because it previously got xA and now (when emulating G ∗
locally) it has access to x and thus xB = x − xA mod q.
54 Authors Suppressed Due to Excessive Length
explained above. Receive ciphertext ctEval from the experiment and use ctA =
ctEval . Run A with the resulting simulation and respond to the experiment with
whatever bit that A outputs. Observe that if the experiment’s bit is 0 then the
resulting simulation is distributed identically to Hybrid2 and if the bit is 1
then the resulting simulation is distributed identically to distributed Hybrid3.
Therefore, A′ breaks AHE’s secure function evaluation with the same probability
as A distinguishes between Hybrid2 and Hybrid3, namely, with probability ϵ.
Since AHE has secure function evaluation, this means that ϵ ∈ neg(κ).
Finally, it is easy to see that Hybrid3 is identical to the real execution,
where S takes the role of the uncorrupted party and runs A internally. Note
that the real-execution is run in the (Fzk , Fcom )-hybrid model, hence, all zero-
knowledge proofs and commitments are perfectly simulated. We stress that this
hybrid is identically distributed to the real execution even though in Step 2 under
command Π2pres in Simulation 24 the simulator commits to zero instead of the
correct value. This holds since we use a perfectly hiding commitment scheme
Com.
J Schnorr Protocols
We adapt and modify the definition from [BMP22] and describe the general
form of Schnorr protocols. We describe the protocol in a batched form, the non-
batched form is derived by simply setting the batch size to m = 1. Hereafter, let
ϕ : H → G denote a group homomorphism from (H, +), the witness group, to
(G, ·), the associated statement group, and E ⊂ Z≥0 (zero and positive integers)
denote the challenge space. It is assumed that (the description of) the tuple
(ϕ, H, G, E) is efficiently generated by a probabilistic polynomial time algorithm
given 1κ , and that ϕ is efficiently computable as a function of 1κ .
– µ-HVZK. If there exists {wi }m i such that wi ∈ H and Xi = ϕ(wi ) for all
⃗ A, ⃗e, z), where z ← H, ⃗e ← E m ,
i ∈ [1, m], then the simulated transcript (X,
Qm −ej
and A = ϕ(z) j=1 Xj , is statistically µ-close to the honest transcript.
56 Authors Suppressed Due to Excessive Length
1. P samples
computes
– ctU = ⃗v∆ · B ⊙ ⃗c ⊕ Enc(0; ξ),
– CU = Compp (B; ν),
and sends
LRange [pp,0,∆]
– (prove, C; A, ρ) to Fzk−batch , and
– (ctU , CU ) to V.
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 57
Range L [pp,0,⌈q⌉]
2. Upon receiving (ctU , CU ) from P and (proof, C) from Fzk−batch (with
the same C in both messages), V sends random challenges e1 , . . . , em ←
[0, 2κ ) to P.
Eval Com
3. P responds with P (Z, z , z d×(ℓ+1+ℓ
), where:
ω)
– Z=B+ P e
k k · A k ∈ Z ,
Eval
– z = ξ + Pk ek ηk ∈ Rpk , and
– z Com = ν + k ek ρk ∈ Rpp .
4. V verifies the following equations:
!
M
Eval Eval
⃗v∆ · Z ⊙ ⃗c ⊕ Enc(0; z ) = ctU ⊕ ek ⊙ ctk (24)
k
!
M
Com(Z; z Com ) = CU ⊕ ek ⊙ C k (25)
k
by induction:
⃗em+1 ∥1
⃗em+1 ∥1
Then for each session 1 ≤ k ≤ m + 1 it holds that:
m
!
M
Compp (Zk ; zkCom ) = ek,k′ ⊙ Ck′ ⊕ CU (26)
k′ =1
⃗e1 − ⃗em+1
..
Let ∂E = ∈ E m×m , ∂Zk = Zk − Zm+1 and ∂zkCom = zkCom − zm+1
Com
.
⃗em − ⃗em+1
for all 1 ≤ k ≤ m. Also, denote by ∂ek,k′ := ek,k′ − em+1,k′ the (k, k ′ ) entry of
∂E. By subtracting Eq. 26 where k = m+1 from Eq. 26 for any other 1 ≤ k ≤ m,
we get
m
M
Com
Compp (∂Zk ; ∂zk ) = ∂ek,k′ ⊙ Ck′ (27)
k′ =1
We can write this system of equations in a matrix-form as follows:
Compp (∂Z1 ; ∂z1Com )
C1
.. .
= ∂E ⊙ .. (28)
.
Com
Compp (∂Zm ; ∂zm ) Cm
where the RHS is a matrix-vector product. Since E ∈ V and det(∂E) = det(E),
we have that det(E) ̸= 0 modulo q and N . Thus, we can compute (∂E)−1 in Zq
such that (∂E)−1 · ∂E = id. By multiplying (∂E)−1 on both sides of Eq. 28 we
get
LHS = (∂E)−1 ⊙ .. ..
:=
. .
Com ′ ′
Compp (∂Zm ; ∂zm ) Compp (Am ; ρm )
C1 C1
−1 .. ..
RHS = (∂E) · ∂E ⊙ . = .
Cm Cm
and so we get that
′ ′ Com
A1 ∂Z1 ρ1 ∂z1
.. −1 .. .. −1 .
. := (∂E) · . and . := (∂E) · ..
A′m ∂Zm ρ′m Com
∂zm
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 59
q · Ik = ∂E · Ak − ∂Zk
holds over the integers. Next, take the ∥ · ∥∞ norm to bound the the absolute
value of entries on the RHS, and use the triangular inequality to get:
Subtracting (⊖) Eq. 24 for k = m + 1 from all other equations in 24, we get:
m
M
⃗v∆ · ∂Zk ⊙ ⃗c ⊕ Enc(0; ∂zkEval ) = ∂ek,k′ ⊙ ctEval
k′ (29)
k′ =1
m
M m
M m
M
∂ek,k′ ⊙ ct0k′ = ∂ek,k′ ⊙ (⃗v∆ · Ak ⊙ ⃗c) = ⃗v∆ · (∂ek,k′ · Ak ) ⊙ ⃗c
k′ =1 k′ =1 k′ =1
m
!
M
= ⃗v∆ · ∂ek,k′ · Ak ⊙ ⃗c = ⃗v∆ · ∂Zk ⊙ ⃗c
k′ =1
A1 ∂Z1
(since ∂E · ... = ... is established above over the integers) from both
Am ∂Zm
sides of Eq. 29 and get:
m
M
Enc(pk, 0; ∂zkEval ) = ∂ek,k′ ⊙ (ctEval 0
k′ − ctk′ )
k′ =1
60 Authors Suppressed Due to Excessive Length
Enc(pk, 0; ∂z1Eval )
Eval
ct1 − ct01
.. ..
= ∂E ⊙
. .
Eval
Enc(pk, 0; ∂zm ) ctEval 0
m − ctm
We may now use Lemma 5.1 to extract the all randomizers ηk , and get ctEval
k =
⃗v∆ · Ak ⊙ ⃗c + Enc(0; ηk ).
Lemma K.1 Let k0 , m ∈ N s.t. k0 < m, and let ⃗e1 , . . . , ⃗ek0 ∈ [0, 2κ )m+1 be
linearly independent over Zq , then the probability that ⃗e1 , . . . , ⃗ek0 +1 are linearly
independent over Zq̂ where ⃗ek0 +1 is uniformly chosen from [0, 2κ )m+1 with ⃗ek0 +1,m+1 =
1
1 is at least 1 − 2κ(m+1−k0)
.
Proof. We bound the probability that ⃗ek0 +1 ∈ span(⃗e1 , . . . , ⃗ek0 ). Consider ⟨⃗e1 , . . . , ⃗ek0 ⟩⊥ ,
the linear subspace of all vectors perpendicular to ⃗ei for all i ∈ {1, . . . , k0 }. Let
{f⃗′ k0 +1 , . . . , f⃗′ m+1 } be a Gaussian-eliminated basis of ⟨⃗e1 , . . . , ⃗ek0 ⟩⊥ . A vector
is in span(⃗e1 , . . . , ⃗ek0 ) if and only if it is perpendicular to f⃗′ i for each i ∈ {k0 +
1, . . . , m + 1}. The challenge is that the distribution of ⃗ek0 +1 is over [0, 2κ )m+1 ,
1
and not the whole space Zm+1 q (in which case the probability is exactly qm+1−k 0
).
Let pvi be the first non-zero entry of f⃗ )i , so pvk0 +1 > . . . > pvm+1 . W.l.o.g, we
′
Then observe that |S⃗u | = 2κ(m+1−k0 ) − 1, and that for any u⃗′ ∈ S⃗u , u⃗′ ̸∈
span(⃗e1 , . . . , ⃗ek0 ).Indeed, there exist some pivot entry i > k0 such that u′i ̸= ui .
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 61
Therefore, ⟨u⃗′ , f⃗′ i ⟩ = ⟨⃗u, f⃗′ i ⟩ + (u′i − ui ) · 1 ̸= 0. Indeed, ⃗u ⊥ f⃗′ i , and ⃗u, u⃗′ only
differ in the last m + 1 − k0 entries. However fj′ = 0 for i ̸= j > k0 because f⃗′ is
after Gaussian elimination. Finally, since q is prime, u′i − ui ̸= 0 and fi′ ̸= 0, the
product is also non-zero, as desired.
Therefore, for every choice of non-pivot coordinates (i ≤ k0 ) in [0, 2κ ), the
probability over the choice of pivot coordinates (i > k0 ) that ⃗u ⊥ f⃗′ i for all
1
i ∈ {k0 + 1, . . . , m + 1} is bounded by 2κ(m+1−k 0)
. Therefore:
Corollary K.2 For uniformly chosen matrix E ∈ [0, 2κ )(m+1)×(m+1) , such that
the first column is all ones, Pr[det(E) ̸= 0] =.
Proof. Denote the columns of E by ⃗e1 , . . . , ⃗em+1 , then det(E) ̸= 0 iff ⃗e1 , . . . , ⃗em+1
are linearly independent. Let Lk0 for 1 ≤ k0 ≤ m + 1 be the event that ⃗ek0 ∈ /
span(⃗e1 , . . . , ⃗ek0 −1 ), then by Lemma K.1:
The homomorphism is ϕ : H = Zq → G, x 7→ x · G.
– Knowledge of decommitment.
LEncDL [pk, (G, G, q)] = {(ct, X; x, η) | ct = AHE.Enc(pk, x; η)∧X = x·G∧x ∈ [0, ⌈q⌉)}
The languages LDComDL and LDComRatio cannot be directly derived, since they
articulate relations between the coefficients ⃗a of f . Nevertheless, these are typical
Schnorr arguments for which you can find proofs in e.g. [Ban05, Mau15]:
The homomorphism is ϕ : H = Mpp ×Rpp → Cpp ×G, (m, ρ) 7→ (Compp (m; ρ), m·
G).
– Ratio between committed values is the discrete log. (Recall that Mpp = Zq .)
Therefore:
As mentioned, the key generation and signing protocol remain intact. In what
follows, we present the 2-round presign protocol, its simulation, and prove indistinguishability.
As mentioned earlier, we don’t aggregate the proofs. Instead, each party sends
its own proof and validates the proofs from all other parties. Moreover, in the
first round, each party commits to ki · G, Enc(ki ), but already starts to work
on encrypted values, and sends Enc(γi ) and Enc(γi · xB ). In the second round,
since Enc(γ) is already known, parties can immediately send Enc(ki γ). At the
same time, they can decommit to ki · G and Enc(ki ), and proof validity with a
zk proof that ties ki · G, Enc(ki ) together via LEncDL , and Enc(ki ), Enc(ki γ) via
LEncDH [Enc(γ)].
M.2 Simulation
We define the following hybrids where Hybrid1 coincides with the simulation
(Figure 26) and Hybrid7 coincides with the real execution. Note that in Hybrid1
all the ciphertexts ctkey , cti1 , cti2 , cti3 , cti4 are decrypted to zero. These values are
gradually replaced with correct values as we transit from Hybridi to Hybridi+
1. The correct values are known to the simulators in the hybrids as the simulator
takes the role of G ∗ instead of using it as an oracle. This does not change the
distribution of the values as the simulator samples the key and the presignature
as well as computes the signature exactly the same as G ∗ would. In more detail:
PROTOCOL 20 Two-Party Key-Generation Π2kgen : KeyGen(G, G, q)
The protocol is parameterized with a group description (G, G, q), computational
security parameter 1κ , and with a session id sid. The parties do as follows:
PROTOCOL 21 Two-Party Presigning Π2pres : Presign ((G, G, q), sid)
Let ssid be a fresh sub-session identifier agreed upon by A and B. The parties proceed
as follows:
1. A’s message:
(a) A samples a random kA ← Zq and computes KA = Com(kA ; ρ1 ).
L
(b) A sends (prove, sid, pidA , KA ; kA , ρ1 ) to FzkDCom .
2. B’s message:
L
(a) B receives (proof, sid, pidA , KA ) from FzkDCom , if not, it aborts.
(b) B samples a random kB ← Zq and computes RB = (kB )−1 · G.
∗
L [G,RB ,q]
(c) B sends (prove, sid, pidB , G; kB ) to FzkDL .
3. A’s verification
L [G,RB ,q]
(a) A receives (proof, sid, pidB , G) from FzkDL , if not, it aborts.
4. Output
(a) A records (presign, sid, RB , R; kA ), where R = (kA )−1 · RB .
(b) B records (presign, sid, RB , KA ; kB ).
70 Authors Suppressed Due to Excessive Length
PROTOCOL 22 Two-Party Signing Π2sign : Sign ((G, G, q), sid, msg)
Inputs:
1. A has (X, ctkey ) from the key-generation protocol and (sid, RB , R; kA ) from the
presign protocol.
2. B has (X, ctkey ; sk) from the key-generation protocol and (sid, RB , KA ; kB ) from
the presign protocol.
3. A and B locally compute m = H(msg) and verify there is a record of sid being
used in a presign protocol which was not used before in a sign protocol.
The protocol:
1. A’s message:
(a) A computes r = R|x−axis mod q.
(b) A samples ρ2 ∈ Rpp and computes UA = Com(kA · xA ; ρ2 ).
(c) A sets a0 = r · kA · xA + m · kA and a1 = r · kA .
(d) A homomorphically evaluates ctkey , on its private function fA (x) := a0 + a1 · x:
– ctA ← AHE.Eval(pk, fA , ctkey ; η)
(e) A sends the following proofs:
L [pp,G,q]
– A sends (prove, sid, pidA , KA , R, RB ; kA , ρ1 ) to FzkDComDL .
– A sends (prove, sid, pidA , KA , UA , XA ; kA , xA , ρ1 , ρ2 ) to
L [pp,G,G,q]
FzkDComRatio .
– A computes C0 = (r ⊙ UA ) ⊕ (m ⊙ KA ) and C1 = r ⊙ KA , and sends
(prove, sid, pidA , ctA , C0 , C1 ; a0 , a1 , r · ρ2 + m · ρ1 , r · ρ1 , η) to
L [pp,pk,ctkey ]
FzkDComEval .
2. B’s verification and output:
(a) B receives the following proofs, otherwise, it aborts.
L [pp,G,q]
– (proof, sid, pidA , KA , R, RB ) from FzkDComDL .
LDComRatio [pp,G,G,q]
– (proof, sid, pidA , KA , UA , XA ) from Fzk .
L [pp,pk,ct ]
– (proof, sid, pidA , ctA , C0 , C1 ) from FzkDComEval key
.
(b) B aborts if any of the following is incorrect:
– There are records (presign, sid, RB , KA ; kB ) and
(keygen, XA , X, ctkey , pk; sk) for some X and sk; that is, the values
used in the proofs are consistent with values obtained in the key
generation and presign sub-protocols;
– C0 = (r ⊙ UA ) ⊕ (m ⊙ KA ) and C1 = r ⊙ KA , where r = R|x−axis .
(c) B computes pt = AHE.Dec(sk, ctA ).
(d) B computes s′ = kB · pt mod q and s = min{s′ , q − s′ } (to ensure uniqueness
of the signature).
(e) B outputs σ = (r, s).
2PC-MPC: Emulating Two Party ECDSA in Large-Scale MPC 71
PROTOCOL 25 2-Round Presigning Π2r−pres : Presign2r ((G, G, q), sid)
The protocol interacts with B1 , . . . , Bn where everyone has pk and ctkey as input. Before
proceeding, all parties verify that sid has never been used before. Then each party Bi :
1. First Round:
i i
(a) Samples γi ∈ [0, q), ηmask 1
, ηmask 2
, and computes
i i
i. ct1 = AHE.Enc(pk, γi ; ηmask 1
),
ii. cti2 = AHE.Eval(pk, fi , ctkey ; ηmask
i
2
) where fi (x) = γi · x,
L [pk,ct ]
and sends (prove, sid, pidi , cti1 , cti2 ; γi , ηmask
i
1
i
, ηmask2
) to FzkEncDH key
.
∗ i
(b) Samples ki ← Zq , and ηmask3 .
(c) Computes Ri = ki · G and cti3 = AHE.Enc(pk, ki ; ηmask i
3
) and sends
i i LEncDL
(com–prove, sid, pidi , Ri , ct3 ; ki , ηmask3 ) to Fcom−zk .
2. Second round:
(a) Receives for each party index j:
L [pk,ctkey ]
i. (proof, sid, pidj , ctj1 , ctj2 ) from FzkEncDH ,
ii. (receipt, sid, pidj ) from Fcom−zk ,
(b) Computes ct1 := ⊕j ctj1 , ct2 := ⊕j ctj2 .
LEncDL
(c) Sends (decom–proof, sid, pidi ) to Fcom−zk .
i
(d) Samples ηmask4 ∈ Rpk ,
(e) Computes cti4 = AHE.Eval(pk, fi′ , ct3 ; ηmask i
4
) where fi′ (x) = ki · x.
i i i i L [pk,ct1 ]
(f) Sends (prove, sid, pidi , ct3 , ct4 ; ki , ηmask3 , ηmask4 ) to FzkEncDH .
3. Proof verification:
Bi aborts if one of the following is not received:
(a) (decom–proof, sid, pidj , Rj , ctj3 ) from Fcom−zk ,
L [pk,ct ]
(b) (proof, sid, ctj3 , ctj4 ) from FzkEncDH 1
4. Output:
Bi records (presign, sid, R, ct1 , ct2 , ct4 ), where:
(a) R = R1 + . . . + Rn .
(b) ct1 is an encryption of γ mod q.
(c) ct2 is an encryption of γ · xB mod q.
(d) ct4 := ⊕i cti4 is an encryption of γ · kB mod q.
74 Authors Suppressed Due to Excessive Length