You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Jun 6, 2024. It is now read-only.
If you have two UTXOs using the same key, and you did not check ALL the utxos being using in the signed message, then your partial signature for one UTXO can be reused to also sign off inclusion of another UTXO.
Solution for aggregation-by-verifier
The MuSig paper's appendix A.3 describes a solution:
The total signed message is formed with ordered pairs (pubkey, item) where item is a specific message signed by the given pubkey (e.g. a unique utxo id or contract id - see also zkvm: make contracts unique #172).
Each party generates their own Fiat-Shamir challenge corresponding to their index.
The per-party F-S challenges effectively cover the "delinearization" factor applied to each pubkey, so there is no need to apply it to pubkeys in prior steps.
The verifier needs to see each individual pubkey and individual message for this to work.
Key aggregation by provers
In the cases when the verifier does not see individual keys, that is, when they were compressed under n-of-n rule offline into a single predicate, each signer is supposed to be fully aware of a message they are signing.
This works fine in case of delegate (provided the contract's anchor is unique and covered by signature: #172).
For signtx, the signer must be "aware of" not just txid, but the specific pair of (pubkey, item) which is normally a (predicate, utxo_id). They usually would ignore txid and only verify proofs of certain outputs to belong to the txid that they sign, since the txid itself and other signers' outputs are not relevant to the given signer.
API
The multi-message API is inherently different from single-message API, since each key's delinearization factor is effectively an individual fiat-shamir challenge bound to the specific (key-submessage) pair.
This should be composable over the regular musig protocol for nested Multikeys via API for cumulative multiplicative adjustment factor (#236).
The text was updated successfully, but these errors were encountered:
oleganza
changed the title
musig: mitigating Russell's attack against reused/related keys
musig: multi-message API for mitigating Russell's attack
Mar 21, 2019
1. Merges `Output` type into `Contract` type, and stores precomputed `ContractID` within the contract.
2. Adds multi-message API from Musig to be used with `signtx` with the use of contract ID.
3. Adds contract ID to the transcript in `delegate` instruction.
4. Added `UnsignedTx` type returned by the zkvm::Prover. See also #146.
5. All tx-related types are placed into `tx.rs` module: TxHeader, UnsignedTx, Tx, VerifiedTx, TxID, TxEntry, TxLog.
Closes#176
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Background
See appendices A.2/A.3 in the MuSig paper.
TL;DR
If you have two UTXOs using the same key, and you did not check ALL the utxos being using in the signed message, then your partial signature for one UTXO can be reused to also sign off inclusion of another UTXO.
Solution for aggregation-by-verifier
The MuSig paper's appendix A.3 describes a solution:
(pubkey, item)
whereitem
is a specific message signed by the given pubkey (e.g. a unique utxo id or contract id - see also zkvm: make contracts unique #172).Key aggregation by provers
In the cases when the verifier does not see individual keys, that is, when they were compressed under n-of-n rule offline into a single predicate, each signer is supposed to be fully aware of a message they are signing.
This works fine in case of
delegate
(provided the contract's anchor is unique and covered by signature: #172).For
signtx
, the signer must be "aware of" not justtxid
, but the specific pair of(pubkey, item)
which is normally a(predicate, utxo_id)
. They usually would ignoretxid
and only verify proofs of certain outputs to belong to the txid that they sign, since the txid itself and other signers' outputs are not relevant to the given signer.API
The multi-message API is inherently different from single-message API, since each key's delinearization factor is effectively an individual fiat-shamir challenge bound to the specific (key-submessage) pair.
This should be composable over the regular musig protocol for nested Multikeys via API for cumulative multiplicative adjustment factor (#236).
The text was updated successfully, but these errors were encountered: