-
Notifications
You must be signed in to change notification settings - Fork 16
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
Question: is point at infinity signature valid for Aggregate
inputs?
#31
Comments
You may run into an interesting case if you prevent Take the example a user creates We can create two signatures for any message So when we aggregate them we have Hence, if we disallowed infinity as a signature we could end up with two valid secret keys, two valid signatures but an invalid aggregate signature. Now this could also be applied for any combination of Secret Keys which when summed are a multiple of the curve order. So it is possible (albeit negligible) that there may be a genuine case where users may have randomly chosen signatures which when summed are infinity. |
@kirk-baird is correct. The point at infinity is a valid aggregate signature because it is the sum of two valid signatures. I believe this answers (2) above, but please let me know if I am wrong. With respect to (1), @hwwhww, I am not sure what you mean by "deadlock," and I do not see any issue with the definition of Aggregate as written. It is not true that any octet-string is valid, because the output is given by Does this help? Happy to chat more. |
Thank you @kirk-baird and @kwantam for the great clarification! By deadlock I meant, if I want to validate the valid input parameter format before I call The ambiguity to me is that we see the Thanks! |
Well, this is not true. It is possible to reason statically (i.e., without knowing specific values) about valid inputs to and outputs from this function. In particular, by construction Aggregate will only output a correct encoding (because of the call to Whether or not you have to check the lengths of inputs to procedures, etc., is implementation dependent. Some implementations can guarantee well formed inputs with typing rules plus, potentially, some small number of run-time checks. Other implementations, lacking type annotations, may require dynamic checks as part of the Aggregate implementation. The standard is silent on this because it is an implementation detail. Does this clarify? I may be misunderstanding your questions, in which case I apologize. In any event, happy to chat more. |
I can understand and admire that it's elegant to define a function with another well-defined function. (it's much less verbose!) but when implementing it, we are translating it into API documents so we want to ensure we didn't miss anything.
Could you confirm that "the valid signature input of
Agreed! Another example, the
Does that mean the
? |
I think this is the right idea, but I'm not 100% sure what you mean by "pass". So I'll try to restate back to you what I think you mean:
Does this make sense? Does it look like I am missing an invariant that you were expecting? The PK input to CoreVerify just needs to be in the format that SkToPk outputs. If PK is the point at infinity, CoreVerify will return INVALID because of the call to KeyValidate in step 4. |
Correct, that's what I meant. :)
Got it. 👍 Thank you @kwantam! |
Thanks to @kwantam for the previous response in #27! While we are creating more edge cases test vectors, we want to get confirmation from the standard writers if the point at infinity signature (0xc0....00) is valid for
Aggregate
inputs or not, especially for the proof of possession scheme.In https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-04#section-2.8,
Aggregate
'ssignatures
input is defined asAggregate
ineither CoreSign or Aggregate
, I read it as any octet strings are VALID, so the point at infinity signature is also VALID.either CoreSign or Aggregate
to onlyCoreSign
, it seems the point at infinity signature is INVALID sinceCoreSign
disallows SK=0?Thank you for your time again. :)
The text was updated successfully, but these errors were encountered: