-
Notifications
You must be signed in to change notification settings - Fork 4
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
Review comments 2024-05-29 #11
Comments
This comment was marked as resolved.
This comment was marked as resolved.
Thank you for the thorough review @emlun!
See #7 (comment)
Upon issuance, the user will present a BL or ARKG public key to the issuer, along with a proof of possession of related private key (as per OpenID4VCI draft 13). Only after verifying that proof, the issuer will derive the batch of next-level PoP public keys using ARKG. If we’d omit the first proof, the issuer could not know if the BL private key is properly protected. For PID and wallet-bound QEAA this would be unacceptable.
Fully agreed, the issuer should not request PoP of the derived public keys. That would potentially create the usability horror that @ve7jtb mentioned.
Indeed, HDK as constructed now limits ARKG to the use with just EC cryptography. I expect that once WSCDs support non-EC cryptography for LoA High, we should revisit the need of HDK as a transitory scheme.
Addressing this awkwardness in: #8
The verifier will not learn the base The other comments need to be fixed in the text:
|
Hm, looking again at "Using threshold EC-SDSA for additive blind authentication", does this blinding method even work with ECDSA? I think something like this works for Schnorr signatures, but I don't think an ECDSA signature can be post-processed like this and remain valid (but under a new public key)? Split-ECDSA works because before signing you replace (ARKG-Derive-Secret-Key doesn't have this problem since it indeed knows the base private key) |
It also seems to me like the section "Using a digital signature algorithm for proof of possession" relies heavily on the specific underlying arithmetic of the |
The blinding method under “Using threshold EC-SDSA for additive blind authentication” (EC-SDSA = Schnorr as standardised at ISO/IEC) indeed does not work with ECDSA. I’ve added a dedicated section “Using threshold ECDSA for multiplicative blind authentication” to mention that the spec does not include ECDSA blinding due to threshold ECDSA patent issues – SECDSA and possibly some related to threshold ECDSA.
For SECDSA, another BlindAuthenticate definition would be needed that indeed performs pre-processing and post-processing. The reader can verify blinded signatures using the blinded public key, which is sufficient for HDK.
The introduction and
|
- Rename root key to device key since it may protect multiple trees. - Consequence: add seed to root node. - Remove index from ARKG info since it is not used. - Replace PoP dependency by functions defined in HDK. - Fully apply ARKG by customising BL-Generate-Key-Pair. - Make use cases easier to read. - Move elliptic curve parameters to generic instantiations. Fixes #9, #10. Addresses #11.
Regarding the last paragraph in my last comment: in 5ebb9be I have flattened the generic instantiation section and removed the intermediate “DSA” abstraction over ECDSA and EC-SDSA. |
I’ve resolved all pending review comments as of 07d321b. Feel free to reuse this issue or open a new one for further discussion. |
Oh, I missed the S there in SDSA. Ok, that makes much more sense then. The "(Schnorr)" clarification in the new draft also makes this much clearer. Thanks! |
Here are my comments after reviewing the HDK draft. This review concerns the version as of commit
06bf2131
.ARKG also requires a novel hardware operation (
ARKG-Derive-Private-Key
).With ARKG I don't think PoP for the root key is necessary, because the trusting party can instead verify that derived keys are correctly derived by the ARKG algorithm and therefore a PoP of the derived private key is also a PoP of the root key.
Also, one important motivation for introducing ARKG to wallet solutions is to enable the wallet client to autonomously generate lots of unique keys, each to be associated with a single-use instance of a verifiable credential. If issuance of those credentials requires a signature by the private key whose public key is to be the proof key for the credential, then that undermines much of the point of introducing ARKG in the first place. Of course the issuer should authenticate the credential issuance request somehow, but it is critically important that the issuance flow not require a signature by the to-be-issued proof key.
Note that ARKG can also be constructed using non-EC cryptograhy (so private keys are not necessary "scalars"), including PQC algorithms.
I recently added a reference to [Shoup] for this in the ARKG draft, I suggest doing the same here.
info
is an input, not outputIs this correct? Or should this maybe be "input keys of ARKG"?
pk_bl
is not yet introduced?pk
is not used?transcript
is not used?Requires specification of
BlindVerify
? So verifier can compute blindedvk
from basepk
?Why is this needed outside ARKG? (Perhaps duplicate of #9)
This should use
DST_ext = "ARKG-P256MUL-ECDH"
instead, see also next commentWe should define this
ARKG-P256MUL-ECDH
instance in the ARKG spec (duplicate of #7)RNG
unused?Comments not related to a particular paragraph
draft-bradleylundberg-cfrg-arkg
seems like it should be a normative referenceThe text was updated successfully, but these errors were encountered: