Commit Graph
42 Commits
Author SHA1 Message Date
Jonas Nick cc07b8f7a9 musig-spec: remove it 2022-04-05 22:47:17 +00:00
Jonas Nick c1640b7049 Merge elementsproject/secp256k1-zkp#166: musig-spec: Add naive Python reference implementation
c235e5055f musig-spec: Add naive Python reference implementation (Elliott Jin)

Pull request description:

ACKs for top commit:
  jonasnick:
    ACK c235e5055f
  real-or-random:
    utACK c235e5055f

Tree-SHA512: f0ff8b84730a82d8eab15ac5c46b190af125a87c0c8b3eef88fa5f67c4b7cd88e3d981cae857a99456b72a0edb56ef7f0593e7ed488914f2f4cd070efb579de8
2022-04-05 22:28:18 +00:00
Elliott Jin c235e5055f musig-spec: Add naive Python reference implementation 2022-04-05 18:18:18 -04:00
Elliott Jin 67247e53af musig-spec: More minor cleanup 2022-04-05 15:30:28 -04:00
Jonas Nick 9a1645f0ef Merge elementsproject/secp256k1-zkp#184: musig-spec: minor fixups
bf615193ce musig-spec: minor fixups (Jonas Nick)

Pull request description:

ACKs for top commit:
  robot-dreams:
    ACK bf615193ce, thanks!

Tree-SHA512: dff21e4f68640de6087426af934d882146f53392166fb9826bc15fc13490bbb20b4ae94410604567df451ac5875fa3cf17be5f2cc7f7d2ae135aff91b17f3754
2022-04-05 18:47:11 +00:00
Jonas Nick bf615193ce musig-spec: minor fixups 2022-04-05 18:39:27 +00:00
Elliott Jin 0940575215 musig-spec: Clarify negation for signing and verification 2022-04-05 12:47:36 -04:00
Tim Ruffing 1b292cdb52 Improve writing in Signing flow 2022-04-05 15:01:09 +02:00
Tim Ruffing a86bfa991a Merge ElementsProject/secp256k1-zkp#181: musig-spec: clarify hashing in noncegen by converting ints to bytes
376733b58b musig-spec: clarify hashing in noncegen by converting ints to bytes (Jonas Nick)

Pull request description:

ACKs for top commit:
  real-or-random:
    ACK 376733b58b

Tree-SHA512: c4708c476094d242fe7312177e345932bd40b52549007b43d2e5e4efc094101624d8583647f305bcbd042692a9d0117eda38f71e22fee0e0f49d677d9f512a8e
2022-04-05 10:42:02 +02:00
Jonas Nick b7f8ea2f2a musig-spec: address robot-dreams' comments
- KeyAggCoeff' -> KeyAggCoeffInternal for consistency
- In Sign, add mod n when calculating d
- In Tweak, reorder the parameters to (Q, gacc, tacc, tweak, is_xonly) because
  the first three are "state" arguments
- Rename Tweak function to ApplyTweak to avoid confusion with tweak (the
  vector). This becomes apparent in the python reference code.
2022-04-04 22:39:38 +00:00
Jonas Nick 376733b58b musig-spec: clarify hashing in noncegen by converting ints to bytes 2022-04-04 21:48:38 +00:00
Tim Ruffing d903c09fd2 musig-spec: Improve writing in Motivation, Design 2022-04-04 22:11:58 +02:00
Jonas Nick fd51a6281e musig-spec: add authors 2022-04-04 11:57:00 +00:00
Jonas Nick f56e223a7a musig-spec: explain NonceGen and tweaking in signing flow context 2022-04-04 11:57:00 +00:00
Jonas Nick e463ea42bb musig-spec: mention stateless signing in signing flow 2022-04-04 10:42:09 +00:00
Jonas Nick a29b961eb7 musig-spec: add acknowledgements and improve abstract 2022-04-04 10:42:09 +00:00
Jonas Nick 1a086ba9c9 musig-spec: add optional arguments to strengthen nonce function
This is a defense-in-depth measure that may help if the value is not drawn
uniformly at random. The handling of sk is similar to BIP340.
2022-04-03 09:58:44 +00:00
Jonas Nick 8d04ac318f musig-spec: remove unnecessary and inconsistent input paragraph 2022-04-01 21:26:00 +00:00
Jonas Nick c715407b4f musig-spec: fix partial sig verification note in intro 2022-04-01 13:12:28 +00:00
Jonas Nick 11fb8a664b musig-spec: expand on signing flow
Also move signing flow before specification because it is slightly more natural.
2022-04-01 13:12:20 +00:00
Jonas Nick 802b7daf23 musig-spec: add motivation and design sections 2022-03-31 09:25:25 +00:00
Jonas Nick 686d96222d musig-spec: various cleanups
- add BIP header & abstract
- rename MuSig to MuSig2 because some people may want to use the 3-round version
- remove applications because we don't need to motivate an informational BIP
- x-only -> X-only
- remove overly repetetitive "The algorithm [...] is defined as"
- move "Remarks" and "Design" out of "Description" section and move "Test
  vectors and ..." into "Description" section. The idea is that the Description
  contains everything that is absolutely required to implement the BIP (safely).
2022-03-27 21:44:10 +00:00
Jonas Nick ef537b2065 musig-spec: fix unnecessary O(n^2) KeyAgg runtime 2022-03-27 13:30:39 +00:00
Jonas Nick 57eb6b4167 musig-spec: move description of secret key negation to spec
Also fix bug in description that resulted in a wrong definition of t.
And rename keyagg coefficient from 'mu' to 'a' since we don't use the term "musig
coefficient" anymore and a is what is used in the paper.
2022-03-21 22:10:24 +00:00
Jonas Nick 633d01add0 musig-spec: add x-only and ordinary tweaking to musig 2022-03-21 22:10:24 +00:00
Jonas Nick aee0747e38 musig-spec: add general description of tweaking 2022-03-21 22:10:24 +00:00
Jonas Nick fb060a0c4e musig-spec: add Session Context to simplify sign/verify/sigagg
Besides reducing the number of arguments, this also removes the R argument from
PartialSigAgg which was not defined precisely:
* The final nonce ''R'' as created during  ''Sign'' or ''PartialSigVerify'': a point

Moreover, this paves the way for adding the tweaking, which requires
PartialSigAgg to also have access to challenge e and can now be easily computed
from the Session Context.
2022-03-21 22:10:24 +00:00
Jonas Nick 3aec4332b5 musig-spec: move remarks on spec below specification section
We will need more of these explanations and it's better if they do not interfere
the specification section. The remarks section is intended for content that's
not required for implementing the spec.
2022-03-21 22:10:24 +00:00
Jonas Nick 628d52c718 musig-spec: fix title/abstract and make algo names bold 2022-03-21 22:10:24 +00:00
Jonas Nick 5b760cc172 musig-spec: consistently call partial sigs psig 2022-03-21 20:47:32 +00:00
Elliott JinandTim Ruffing aa1acb4bd1 musig-spec: improve security argument for handling infinity
Co-authored-by: Tim Ruffing <crypto@timruffing.de>
2022-01-27 05:23:15 -08:00
Jonas Nick 69b392f3cb musig: move explanation for aggnonce=inf to spec 2022-01-24 15:50:42 +00:00
Jonas Nick 4824220bb7 musig-spec: describe NonceGen, NonceAgg, Sign,PartialSig{Verify,Agg} 2022-01-24 15:50:42 +00:00
Jonas Nick 3c122d0780 musig-spec: improve definition of lift_x 2022-01-24 15:50:42 +00:00
Jonas Nick e0bb2d7009 musig-spec: improve KeyAgg description
It's easier to identify a signer with a public key instead of an index in
KeyAggCoef because it doesn't force the signer to know its index.
2022-01-24 15:50:39 +00:00
Jonas Nick b8f4e75d89 musig-spec: move to doc directory 2022-01-24 15:45:51 +00:00
Jonas Nick 3ed0d02bf7 doc: add CHANGELOG template 2021-12-23 14:47:15 +00:00
Jonas Nick 6f42dc16c8 doc: add release_process.md 2021-12-23 14:47:15 +00:00
Elliott Jin dc9b6853b7 doc: Minor fixes in safegcd_implementation.md 2021-11-15 21:16:00 -06:00
Pieter Wuille 277b224b6a Use modified divsteps with initial delta=1/2 for constant-time
Instead of using eta=-delta, use zeta=-(delta+1/2) to represent
delta. This variant only needs at most 590 iterations for 256-bit
inputs rather than 724 (by convex hull bounds analysis).
2021-04-13 11:59:11 -07:00
Pieter Wuille 376ca366db Fix typo in explanation 2021-04-13 11:58:54 -07:00
Pieter Wuille d8a92fcc4c Add extensive comments on the safegcd algorithm and implementation
This adds a long comment explaining the algorithm and implementation choices by building
it up step by step in Python.

Comments in the code are also reworked/added, with references to the long explanation.
2021-03-08 09:56:07 -08:00