-
Notifications
You must be signed in to change notification settings - Fork 18
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
nonce property #34
Comments
To either prevent replay attacks, prevent undesirable correlation, or as a component in puzzle solving (such as PoW). There may be other uses. It is a value that is intended to only ever be used once. A challenge is different from a nonce in that a challenge carries with it the semantics that it is a part of a challenge-response authentication mechanism and that the challenge value is always set by the relying party (or "verifier"). A nonce may be used as a challenge in such a protocol, but using
How a nonce is used depends on the type of proof. For example, a BBS+ nonce is not used as a challenge but to introduce randomness into a derived credential proof. Someone else like @tplooker could comment more on this.
In the usage I've seen, they are unrelated. The challenge/domain are included in authentication proofs on Verifiable Presentations and
No.
Yes, this depends on the type of proof(s) that are supported. Some proofs may use a
No.
I would defer to @tplooker or @kdenhartog to give you a more robust answer here. |
@dlongley great explanation! I think we need to add some of this wording into the spec itself. |
The issue was discussed in a meeting on 2021-10-06
View the transcript2.1. nonce property (issue vc-data-model#823)See github issue vc-data-model#823. Brent Zundel: This link should give us any issues not marked with a ... label Kyle Den Hartog: I'm not certain... we brought up an issue on BBS+, planned to link to it but couldn't find it... Dave Longley: I think they are largely asking questions - but ultimately about a property that is not part of the VC data model - it's part of the proofs Dmitri Zagidulin: We do mention challenge in the Verifiable Presentation section. Brent Zundel: We had a similar issue in the Presentation Exchange spec...
Brent Zundel: We recognized that alongside the presentation definition object, a verifier might want to specify the challenge or nonce. We put some generic language there, that might be appropriate here Dave Longley: We could certainly put something informative in the spec... but I don't know if that would resolve this person's issue... they are looking for something more concrete... Kyle Den Hartog: This would require changes to the context, which we've traditionally declared defer-v2
Brent Zundel: Label "defer v2"" and "question"? |
I think there is some confusion here as I just stumbled on this myself. I believe what is catching the OP and myself is that the JWT encoding of a VC mentions a |
My feeling is that the examples have simply included a nonce by mistake and they should be removed. There is no description of them in the text and they serve no purpose in the examples - except to confuse the reader. |
May I mention, the There is an implementation of JWT VCs/VPs using DID issuers, that explicitly uses the As for the
|
|
If |
The issue was discussed in a meeting on 2022-07-27
View the transcript5.1. nonce property (issue vc-data-model#823)See github issue vc-data-model#823. Brent Zundel: kristina and I marked it as pending closed bc we think it maybe has been dealt with but TallTed made a comment recently.... Manu Sporny: I don't think we can close this. It comes into the data integrity and VP side. It's on the edge of protocol, but I don't think we can close it. Ted Thibodeau Jr.: I'm mostly fine with that. If we're still including Nonce in the examples the we should say why it's still here, go see the spec over there. Brent Zundel: I'll remove the pending closed tag and make it DI?. Kristina Yasuda: I would say it will go in the JWT VC spec too. Brent Zundel: I can add those labels.
David Chadwick: I did add some text into the data model 1.1 so there is some text there talking about the nonce that wasn't in 1.0, but more detail needs to go into the v2 spec.
David Chadwick: but if examples are being pulled out then the text will also go. Brent Zundel: I will add the labels. |
The VC Data Integrity specification no longer defines That is the current state of the specifications, and that does not line up with the conversations above. It looks like the only entity using |
But data integrity spec has "challenge" that is equivalent to JWT "nonce" claim, correct? |
I'm not sure it's entirely equivalent as the use of "nonce" seems to be wrapped up in OpenID token semantics. With a little hand waving, you could say they're similar. In Data Integrity, a challenge is typically provided by a party that wants to receive data from another party (server) and is included and signed over by the other party (client) in their response. From what I understand, there is further binding that the server does with a client session where the client doesn't have to do anything w/ the nonce value. That's where things start deviating. |
Marking this as pending close because the Data Integrity specification no longer specifies a |
To be honest, the specification about challenge and nonce is not very clear. There are no examples of how and in what case each field should be used. Challenge, as far as I understand, can be repeated in a timeframe. In what practical cases can this be useful compared to generating a unique challenge for each signature? By randomly generating a challenge each time, the nonce field becomes unnecessary. Challenge sounds like something that should be used in request-response interaction. Then the response should include the same challenge that was in the signature request. Is this a correct use of challenge? But then it should not be repeated even in a short timeframe. We are implementing a complex protocol with the transfer of signed messages, sometimes it is request-response. And we are confused about how to use these fields correctly. |
Hello,
we are trying to implement Verifiable Credentials and Verifiable Presentations using JWTs as well as JSON-LD & BBS+, and there is some confusion about the nonce property.
In examples #28 (VC) and #31 (VP) in the spec there is a nonce field present inside the JWT – but no further mention of the nonce property elsewhere in the spec (or the JWT Wikipedia page).
Where can we find more information about the meaning of the nonce field and whether it is optional or not, and what the intended use case for the nonce field is, especially in regards to the challenge & domain property?
When creating BBS credentials using the mattrglobal/jsonld-signatures-bbs library, there is only one case where a nonce is included in the proof property:
This complies with the BBS spec, which states that a proof must contain a nonce when featuring a proof of knowledge.
So, I think I can summarize my question as follows:
Thank you very much!
The text was updated successfully, but these errors were encountered: