-
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
Consider using distinct base proof and disclosure proof head bytes for optional features #153
Comments
I think this is a good idea. However, we should avoid adding this until we're sure there isn't more consolidation of the base primitives from the IETF spec so as to avoid churn (and possible confusion in implementations if things move around). So the first step, I think, is seeing if / how the IETF primitives change and then adding this to improve checks in implementations. I'm also not sure if the verifier needs to know whether the PID is known to the issuer or not, so those header values might need to be combined for the disclosure proof, which might impact the order we want to use for these headers. Also, why the jump from 0x07 => 0x10? |
It's hard to grok these bullets. Might I suggest tabular presentation?
2024-04-10 — Edited to improve table |
Hi @dlongley why the jump 0x07 => 0x10? A brain fart must have been thinking in octal (base 8 ==> real old timey computer stuff). @TallTed once we know if the pseudonym flavors can be consolidated and folks agree, I like the idea of tables not just for this information but to make the optional features and their parameters easy to understand. |
Hi @TallTed and @dlongley, walking through test vector generation for the optional features and put down some notes below on inputs, parameters, and serialization requirements. The goal will be to clean up the descriptions of the procedures (issues have already been raised on missing steps and such). Whether we make the info tabular, where to put informative versus normative information can discuss. Anonymous Holder BindingKey security value: holders secret value. Which is never revealed outside the holder. Only a commitment with proof is conveyed to the issuer for "blind signing".
Additional notes: The verification of the derived proof uses the Blind BBS variation per https://www.ietf.org/archive/id/draft-kalos-bbs-blind-signatures-00.html#section-4.2.4, i.e., requires a different BBS api_id than the regular BBS case and hence this MUST be communicated to the verifier. Pseudonym with Issuer Known PidKey security value: pid. This is generated by the issuer, must be unique per holder and random. Must be securely conveyed to holder; It is not revealed to verifiers. Used to generate pseudonym along with the verifier id value.
Additional notes: The verification of the derived proof uses the procedure from https://www.ietf.org/archive/id/draft-vasilis-bbs-per-verifier-linkability-00.html#section-4.3. A verifier knows to use a procedure of this type due to presence of the pseudonym value. However, we may need to differentiate the two pseudonym cases (ongoing work at IETF/DIF). Pseudonym with Hidden PIDKey security value: holders pid value. Which is never revealed outside the holder. Used to generate pseudonym along with verifier id.
Additional notes: Due to the use of BBS api_id during BBS signature generation we need an "implicit input" and need to differentiate the base proof generated here from the anonymous holder binding case. Currently working with IETF/DIF BBS team to see if we can use same pseudonym verification procedure, currently these are slightly different. |
Hi all, @dlongley, and @TallTed, after walking through the test vector generation for the optional features again. I'd really like those extra tags to help: (a) letting me know what I'm receiving (no dummy placeholders if we can help it), (b) the BBS algorithm/api_id to apply, and (3) what additional information will be needed for preparing the "proof". As inspired by @TallTed below is the info in tabular form. The two different pseudonym disclosure proof code points may not be needed if we can reconcile the interfaces in the IETF/DIF BBS pseudonym draft. Otherwise it would nice to have these code points. Other opinions? Optional Feature Tags, Parameters, and inputs
|
PR #158 has been merged to address this issue; closing. |
Currently we use the following "header bytes" (really CBOR tags) for ECDSA-SD and BBS:
To enable easier error and consistency checking I would propose using the following (or something similar) for each of the optional features:
As an example, with the anonymous holder binding feature, when a holder receives a base proof, it would be able to tell from the header values that to generate a disclosure proof it must use its secret value. Or in the case of a pseudonym with hidden PID, by seeing the header value it knows to use its pid and generate a pseudonym prior to preparing the disclosure proof. Similarly on the verifier side of things then can know whether to use a pseudonym when performing disclosure proof verification. Note that we do have other mechanisms to tell these cases a part, but this seems like a helpful check.
The text was updated successfully, but these errors were encountered: