-
Notifications
You must be signed in to change notification settings - Fork 26
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
Put the challenge at the end #276
Put the challenge at the end #276
Conversation
406fc8e
to
8951a38
Compare
8951a38
to
61fe83b
Compare
Breaking Changes
|
@andrewwhitehead, I'm really sorry, but there are some more changes to review 🙏 |
|
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.
Some minor editorial comments. Implemented the update in my library (PR 23); test vectors pass.
draft-irtf-cfrg-bbs-signatures.md
Outdated
1. (Abar, Bbar, c, r2^, r3^, (m^_1, ..., m^_U)) = proof | ||
2. return serialize((Abar, Bbar, c, r2^, r3^, m^_1, ..., m^_U)) | ||
1. (Abar, Bbar, r2^, r3^, (m^_1, ..., m^_U), c) = proof | ||
2. return serialize((Abar, Bbar, r2^, r3^, m^_1, ..., m^_U), c) |
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.
Why have in inner parenthesis and have the c
out of it?
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.
Good catch! It was a typo. Fixed. Thanks!
draft-irtf-cfrg-bbs-signatures.md
Outdated
@@ -1122,7 +1122,7 @@ Procedure: | |||
7. if A_i is INVALID or Identity_G1, return INVALID | |||
8. index += octet_point_length | |||
|
|||
// Scalars (i.e., (c, r2^, r3^, (m^_j1, ..., m^_jU)) in | |||
// Scalars (i.e., (r2^, r3^, (m^_j1, ..., m^_jU), c) in |
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.
A bit confusing to have the m^_j_i
in parenthesis.
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.
Fixed. Thanks!
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.
I'm not sure why were are doing the swapping of Abar and Bbar. When I try to map this back to the Revisiting BBS paper it seems like the way we currently have it is a close match and this change seems less like the paper.
Is there another version of the paper with this changed?
Is there a reason for this change?
Note that we also don't seem to cite the "Revisiting BBS" paper in the update.
Hey Greg 👋 The swapping is mainly for readability. Note that we just want to calculate This does not go against the paper. It is just a naming convention. Another way to think of it, is instead of "swapping" The reason it is a breaking change is that we have deterministic random number generation for testing. |
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.
Implemented and confirmed all test vectors. Note the high level text description still has the parameters in the old order:
The inputted proof value must consist of the following components, in that order:
1. Two (2) valid points of the G1 subgroup, different from the identity point of G1 (i.e., `Abar, Bbar`, in ProofGen)
2. Three (3) integers representing scalars in the range of 1 to r-1 inclusive (i.e., `c, r2^, r3^`, in ProofGen).
3. A number of integers representing scalars in the range of 1 to r-1 inclusive, corresponding to the undisclosed from the proof messages (i.e., `m^_j1, ..., m^_jU`, in ProofGen, where U the number of undisclosed messages).
e90be79
to
336fdab
Compare
bde5cf3
to
4592170
Compare
Discussed on the WG call on the 10th of July. Test vectors are cross validated by multiple implementations. Merging. |
Fix #265
Move the challenge value
c
at the end of the proof value. Specifically, the proof becomesAlso change
Abar
withBbar
in ProofGen andProofVerify