This repository has been archived by the owner on May 8, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 2
[cosi] Add more discussion topics #3
Open
nikkolasg
wants to merge
1
commit into
master
Choose a base branch
from
fix_discussions
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -372,7 +372,6 @@ commitment from a child at index j in N, the node sets the j-th of its bit mask | |
Z_i to 1. The node also performs an OR operation between all the received | ||
bitmasks from its children and its own bit mask, and let the result be B'. | ||
// XXX Should we reject invalid messages, like too-long-bitmask or so? | ||
// XXX Bitmasks should be signed and checked? | ||
If the node is an intermediate node, it sends the aggregated commitment R' | ||
alongside with the Z' bitmask to its parents. If the node is the root node, it | ||
executes the challenge step. | ||
|
@@ -556,6 +555,31 @@ the bitmask B described in the Commitment section XXX. | |
|
||
# Discussions | ||
|
||
## Related-Key Attacks | ||
|
||
The cost of having verifiers to verify the self signatures of all signers public | ||
key may be too high in certain circumstances. In that respect, a proper | ||
mechanism to avoid the related-key attack mentioned in section 8.5 may be | ||
necessary. There are ways to increase the signing scheme's robustness to such | ||
related-key attacks even if parties relying on the collective signatures do not | ||
check self-signed certificates for all members of a collective signing group. | ||
See for example ["Schnorr Multisignatures for | ||
Bitcoin"](https://www.docdroid.net/CNSEbvn/aggregates.pdf.html) by Pieter | ||
Wuille. There are multiple such potential related-key-attack-hardening designs | ||
to be considered, with different tradeoffs. | ||
|
||
## Knowing the full list of public keys upfront | ||
|
||
In the current, simple scheme, the verifier must have a complete list of the | ||
public keys of the members of a collective signing group, in order to adjust the | ||
verification to the particular set of members that actually signed according to | ||
the bitmask. For large collective signing groups, this public key list could get | ||
large and hence be a storage burden for verifiers. An alternative is to assume | ||
the verifiers only know the root hash of a Merkle tree of public keys, at the | ||
cost that actual signatures would need to be variable-size and include Merkle | ||
inclusion-proofs of the public keys of missing cosigners. See section IV.B of | ||
the [CoSi](https://arxiv.org/abs/1503.08768) paper for more information. | ||
|
||
## Hashing the Public Keys in the commitment | ||
|
||
Either do H(R || A || msg) with A being the collective public key OR | ||
|
@@ -565,15 +589,51 @@ active participant subset Q. | |
|
||
## Hashing the bitmask in the commitment | ||
|
||
To truely bind one signature to a set of signers, the bitmask can be included in | ||
To truly bind one signature to a set of signers, the bitmask can be included in | ||
the challenge computation such like H(R || A || bitmask || msg). The signature | ||
verification process could detect any modifications of the original signature | ||
before proceeding the computationally expensive process. | ||
|
||
## Failure between the challenge and response phase | ||
|
||
There exists collective signing protocol variations that would eliminate a DoS | ||
vulnerability where malicious signers go offline during the challenge/response | ||
phase. The only way for the protocol to suceed is to restart without that | ||
malicious signer. If there are F colluding malicious cosigners in the group, | ||
then they can go offline one-by-one in this way, forcing up to F successive | ||
restarts, before the honest members of the cosigning group can successfully | ||
create a valid collective signature. This is of course a limited and potentially | ||
tolerable DoS attack, “only” O(N) in the group size. It is therefor important | ||
to consider whether the scheme should tolerate cosigners failing between the | ||
"challenge" and "response" phases without requiring restart from scratch. This | ||
would be another nice-to-have robustness refinement, at the cost of added | ||
complexity. One possible solution is to make use of Merkle tree for the | ||
commitments. The leader form all the individual Schnorr commits into a Merkle | ||
tree, and make the real commit c be the root of that Merkle tree. In this way, | ||
the leader is committing not so much to a particular collective Schnorr commit | ||
but rather to *all possible* Schnorr commits that can be composed from any | ||
subset of the individual Schnorr commits within that Merkle tree. See section | ||
IV.D of the [CoSi](https://arxiv.org/abs/1503.08768) paper for more information. | ||
|
||
## Exception Mechanism | ||
|
||
XXX What to do in case a node goes offline, doesn't sign, or doesn't relay up etc. in the tree approach. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Expand this into at least a readable sentence or two. :) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What exactly is an "exception mechanism"? State the problem: e.g., "Graceful Mechanism to Decline Cosigning", or something like that? |
||
|
||
## Pairing based cryptography | ||
|
||
Probably as more of a long-term roadmap item, it would be worth considering | ||
similar collective signing schemes based on other cryptosystems, e.g., BLS | ||
instead of Schnorr. BLS in particular is attractive because it supports | ||
collective signing in just one phase rather than two, eliminates the restart | ||
issue above when cosigners disappear between the challenge and response phases, | ||
and potentially supports completely organic, asynchronous aggregation of partial | ||
signatures in gossip fashion, which maybe particularly attractive to | ||
Bitcoin-type systems in which most communication happens via a peer-to-peer | ||
gossip network. But since BLS is pairing-based and quite recent, there is a need | ||
for standardized pairing-based curves before one can realistically standardize | ||
BLS signing. For further details see section IV.E of the | ||
[CoSi](https://arxiv.org/abs/1503.08768) paper for more information. | ||
|
||
# Acknowledgements | ||
|
||
Many parts of this document were inspired by RFC8032 on EdDSA. | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Issues and Questions for Discussion