Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add blaming to pseudocode #67

Merged
merged 3 commits into from
Sep 14, 2022
Merged

Add blaming to pseudocode #67

merged 3 commits into from
Sep 14, 2022

Conversation

jonasnick
Copy link
Owner

No description provided.

This error stems from a failed rebase that resulted in
ef9d89a reverting the changes of 9fcd841.
Also,
1. consistently use term "invalid" instead of "incorrect".
2. honest signers "will" not necessarily identify the dishonest signer. If a
   third party nonce aggregator is used, then they may have to go to through
   additional steps to obtain the unaggregated nonces.
@@ -141,10 +141,10 @@ Stateless signers may want to consider signing deterministically (see [[#modific

=== Identifying Disruptive Signers ===

If the signing session fails to output a valid signature, each honest signer will identify at least one disruptive signer, who sent incorrect contributions in the session.
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive signer, who sent invalid contributions in the session.
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could also say that this is only the case if nonce aggregation is honest.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this make sense?

Suggested change
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive signer, who sent invalid contributions in the session.
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive party (either a signer or the aggregator) who sent invalid contributions in the session.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could also say that this is only the case if nonce aggregation is honest.

Yes, I think that's a good idea.

But I'm not entirely sure how to phrase the property in a nice way. @robot-dreams is right, we also blame the aggregator but this can be misleading because there's no guarantee that we can do so. (As you point out, if nonce aggregation is dishonest, then the partial signatures are all "valid" but they just won't add up to a valid signature).

And we should say that all of this works only if the messages received from the other parties are authentic. This is said in the next paragraph but I feel both of these should be reworked.

Suggestion, please improve further if necessary:

The signing protocol makes it possible to identify malicious signers who send invalid contributions to a signing session in order to make the signing session abort and prevent the honest signers from obtaining a valid signature. This property is called "identifiable aborts", and it ensures that honest parties can assign blame to malicious signers who cause an abort in the signing protocol.

Aborts are identifiable following for an honest party if these conditions hold in a signing session:

  • The contributions received from all signers have not been tampered with (e.g., because they sent over authenticated connections).
  • Nonce aggregation is performed honestly (e.g., because the honest signer performs nonce aggregation on its own or because the aggregator is trusted).
  • The partial signatures received from all signers are verified using the algorithm ''PartialSigVerify''.

If these conditions hold and an honest party (signer or aggregator) runs an algorithm which fails due to invalid protocol contributions from malicious signers, then the algorithm run by the honest party will output the index of exactly one malicious signer. Additionally, if the honest parties agree on the contributions sent by all signers in the signing session, all the honest parties who run the aborting algorithm will identify the same malicious signer.

==== Further remarks ====

Some of the algorithms in this specification may also assign blame to a malicious aggregator. While this is possible for some particular misbehavior of the aggregator, it is in general not guaranteed that a malicious aggregator can be identified. In other words, a malicious aggregator (who violates the second condition above) can always make signing abort and make honest signers responsible for the abort (e.g., by claiming that it received an invalid contribution from a particular honest signer.)

The only purpose of the algorithm ''PartialSigVerify'' is to ensure identifiable aborts and it is not necessary to use it when identifiable aborts are not desired. [Insert the disclaimer about partial sigs here]

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I just realized that this would probably solve most of #9.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @real-or-random. That's a great way to phrase this. When I made this PR and looked at this section I thought that I was missing the real explanation of identifiable aborts somewhere else in the BIP because this section was just not quite right. I pushed a commit with your suggestion.

Copy link
Collaborator

@robot-dreams robot-dreams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK, confirmed one-to-one correspondence between pseudocode changes and raise InvalidContributionError in the implementation.

@@ -141,10 +141,10 @@ Stateless signers may want to consider signing deterministically (see [[#modific

=== Identifying Disruptive Signers ===

If the signing session fails to output a valid signature, each honest signer will identify at least one disruptive signer, who sent incorrect contributions in the session.
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive signer, who sent invalid contributions in the session.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this make sense?

Suggested change
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive signer, who sent invalid contributions in the session.
If the signing session fails to output a valid signature, each honest signer is able to identify at least one disruptive party (either a signer or the aggregator) who sent invalid contributions in the session.

Copy link
Collaborator

@real-or-random real-or-random left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK mod the style nit in my text


Some of the algorithms in this specification may also assign blame to a malicious aggregator.
While this is possible for some particular misbehavior of the aggregator, it is not guaranteed that a malicious aggregator can be identified.
More specifically, a malicious aggregator (who violates the second condition above) can always make signing abort and make honest signers responsible for the abort (e.g., by claiming that it received an invalid contribution from a particular honest signer.)
Copy link
Collaborator

@real-or-random real-or-random Sep 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
More specifically, a malicious aggregator (who violates the second condition above) can always make signing abort and make honest signers responsible for the abort (e.g., by claiming that it received an invalid contribution from a particular honest signer.)
More specifically, a malicious aggregator (whose existence violates the second condition above) can always make signing abort and wrongly hold honest signers accountable for the abort (e.g., by claiming to have received an invalid contribution from a particular honest signer.)

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed nit

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants