Theorem 1. Assume that there exists a -forger against the multi-signature scheme MuSig with group parameters where is -bit long and hash functions are modeled as random oracles. Then, there exists an algorithm which -solves the problem for with where is the time of an exponentiation in and
The security game involving an adversary (forger) proceeds as follows:
In addition, if we work in the Random Oracle model, the adversary can make arbitrary random oracle queries at any stage of the game.
Let KeyGen, Sign, Ver be a multi-signature scheme. We say that an adversary is a -forger in the random oracle model against the multi-signature scheme if it runs in time at most initiates at most signature protocols with the honest signer, makes at most random oracle queries, and wins the above security game with probability at least the size of in any signature query and in the forgery being at most .
Group parameters are fixed and a key pair is generated for the honest signer. The target public key is given as input to the forger . Then, the forger can engage in protocol executions with the honest signer by providing a message to sign and a multiset of public keys involved in the signing process where occurs at least once, and simulating all signers except one instance of . More concretely, it has access to an interactive signature oracle working as follows: the forger sends a multiset of public keys with (we assume the oracle returns if and a message to sign; the signature oracle parses as draws a random computes and sends to the forger which sends back commitments the signature oracle then sends to the forger which answers with the signature oracle aborts the protocol if for some otherwise it computes
and returns to the forger.
Note that the remaining steps of the protocol, where sends to the signature oracle which outputs can be omitted since the signature oracle's behavior does not depend on and can be perfectly simulated by the forger.
The crux of the proof is how to extract the discrete logarithm of the challenge public key . The standard technique for this would be to "fork" two executions of the forger in order to obtain two valid forgeries and for the same multiset of public keys with and the same message such that was programmed in both executions to the same value was programmed in both executions to the same value for each such that and was programmed to two distinct values and in the two executions, implying that
where is the number of times appears in This would allow to compute the discrete logarithm of by dividing the two equations above.
However, simply forking the executions with respect to the answer to the query does not work: indeed, at this moment, the relevant query might not have been made yet by the forger, and there is no guarantee that the forger will ever make this same query again in the second execution, let alone return a forgery corresponding to the same query. In fact, it is easy to see that the forger can only guess the value of the aggregated public key corresponding to at random before making the relevant queries for so that the query can only come after the relevant queries except with negligible probability.
In order to remedy this situation, we fork the execution of the forger twice: once on the answer to the query which allows us to retrieve the discrete logarithm of the aggregated public key with respect to which the adversary returns a forgery, and then on the answer to which allows us to retrieve the discrete logarithm of .
Lemma 1: The Generalized Forking Lemma
Fix integers and Let be a randomized algorithm which takes as input some main input and -bit strings and returns either a distinguished failure symbol or a pair out where and out is some side output. The accepting probability of denoted is defined as the probability, over the random draw of (according to some well-understood distribution), and the random coins of that returns a non- output. Consider algorithm taking as input . Let frk be the probability (over the draw of inp and the random coins of ) that returns a non- output. Then
Security Proof
We first construct a "wrapping" algorithm which essentially runs the forger, simulating and uniformly at random and the signature oracle by programming , and returns a forgery together with some information about the forger execution, unless some bad events happen.
In particular, we must exclude the case where the adversary is able to find two distinct multisets of public keys and such that the corresponding aggregated public keys are equal, since when this happens the forger can make a signature query for and return the resulting signature as a forgery for . Jumping ahead, this will correspond to bad event KeyColl defined in the proof of Lemma 2 .
Then,we use to construct an algorithm which runs the forking algorithm a (where the fork is w.r.t. the answer to the query related to the forgery), allowing him to return a multiset of public keys together with the discrete logarithm of the corresponding aggregated public key.
Finally, we use to construct an algorithm solving the DL problem by running (where the fork is now w.r.t. the answer to the query related to the forgery)
Assume that there exists a -forger in the random oracle model against the multi-signature scheme MuSig with group parameters and let Then, there exists an algorithm that takes as input a uniformly random group element and uniformly random -bit strings and and, with accepting probability at least
outputs where is a multiset of public keys such that is a tuple of -bit values such that for any such that and
Strings resp. will be used to answers queries to resp. We need answers for each random oracle because one query to and one query to may be incurred by each signature query and by the final verification of the validity of the forgery.
:
We construct algorithm as follows. It initializes three empty tables and for storing programmed values for respectively , and and two counters ctr and ctr (initially zero) that will be incremented respectively each time an entry of the form is assigned and each time an assignment is made in . It also initializes six flags BadCom, BadProg, BadOrder, and KeyColl (that will help keep track of bad events) and a special flag Alert to false. Then, it picks random coins and runs the forger on input the public key , answering its queries as follows.
Hash query If is undefined, then randomly assigns then, it returns
Hash query Recall that by assumption and If is undefined, increments ctr, assigns and randomly assigns for all Then, it returns
Hash query If is undefined, then increments and assigns , Then, it returns
Signature query If then returns to the forger. Otherwise, it parses as If is undefined, it makes an "internal" query to which ensures that is defined for each sets and computes
Upon reception of from the forger, checks that for all (making internal call(s) to if we were in case 2 above) and aborts the signature protocol if this is not the case. (Note that does not halt returning in this case since this is just the expected behavior of the honest signer.) If Alert true and for all then sets BadCom true and halts returning Otherwise, sends to the forger, completing the simulation of the honest signature oracle.
If returns outputs as well. Otherwise, the forger returns a purported forgery for a public key multiset such that and a message . Then, parses as and checks the validity of the forgery as follows. If is undefined, it makes an internal query to which ensures that is defined for each sets and computes If is undefined, it makes an internal query to and lets If i.e., the forgery is invalid, outputs otherwise it takes the following additional steps. Let be the index such that and be the index such that If the assignment occurred after the assignment sets BadOrder : = true and returns . If there exists another multiset of public keys such that, at the end of the execution, is defined for each and the aggregated keys corresponding to and are equal, sets KeyColl true and returns Otherwise, it returns where By construction, for each such that and the validity of the forgery implies
Assume that there exists a -forger in the random oracle model against the multi-signature scheme MuSig with group parameters and let Then, there exists an algorithm that takes as input a uniformly random group element and uniformly random -bit strings and, with accepting probability at least
outputs a tuple where is a multiset of public keys such that is a tuple of -bit values such that for any such that and is the discrete logarithm of in base
: Algorithm runs with as defined in Lemma 2 and takes a few additional steps described below. The mapping with notation of Lemma 1 is as follows:
In more details, picks random coins and runs algorithm on coins group element and -bit strings and where are drawn uniformly at random by (recall that are part of the input of and will be the same in both runs of . If returns returns as well. Otherwise, returns a tuple where and Then, runs again with the same random coins on input and where
are uniformly random. If returns in this second run, returns as well. If returns another tuple where and proceeds as follows. Let and denote the aggregated public keys corresponding to the two forgeries. If or and then returns Otherwise, if and , we will prove shortly that necessarily
which implies in particular that By Lemma the two outputs returned by are such that
which allows to compute the discrete logarithm of as
Then returns .
It is easy to see that returns a non- output iff does, so that by Lemma 1 and Lemma and letting
the accepting probability of is at least
In the following, we let Algorithm runs with as defined in Lemma 3 and takes a few additional steps described below.
The mapping with notation of Lemma 1 is as follows:
In more details, on input picks random coins and runs algorithm on coins group element and uniformly random -bit strings If returns returns as well. Otherwise, returns a tuple Then, runs again with the same random coins on input and
where are uniformly random. If returns in this second run, returns as well. If returns another tuple proceeds as follows.
Let and Let also be the number of times appears in
If or and returns Otherwise, if and , we will prove shortly that necessarily
By Lemma 3, we have that
Thus, can compute the discrete logarithm of as
Clearly, is successful iff Fork returns a non- answer. By Lemma 1 and Lemma and letting
the success probability of is at least