Closed iherman closed 2 months ago
Yes, I agree that it is a problem. Initially, the concept of Multikey was in the controller document, and the specific key formats were in each cryptosuite. That is the right thing to do, IMHO, as the controller document cannot and should not try and define every single type of key that might ever exist. That said, there was one person that complained about this in the controller document and insisted that we put the definition there as well (because they didn't want to reference the data integrity cryptosuites. So, that's why we have the repetition that we do today.
The right thing to do is to define the key types with the cryptosuite that they go with and to remove the key definitions from the controller document. I expect that to get objections. Similarly, putting all the key types in the controller document is the wrong thing to do because we would centralized key formats to the controller document (which is unnecessary centralization). The compromise is what we have right now.
I don't know if that helps, but that's where we are today. I'd rather leave sleeping dragons alone than poke at them with pointy sticks this close to the CR2 transition.
The right thing to do is to define the key types with the cryptosuite that they go with and to remove the key definitions from the controller document.
The problem with this is that the Multikey definition for, say, ECDSA, may be used for purposes that are not covered by, and not necessary relevant for the cryptosuite definition. The obvious example is DID: we recently agreed to use Multikeys in a DID document as well. By this logic, this would force the DID spec to define the exact Multikey format as well. Or refer to the cryptosuite, which would feel odd and out of place.
Just to make it clear: I won't lie down the road if things stay as they are today, I have no intention to face dragons either. But I believe that, eventually (maybe as part of the maintenance work?) we may have to come back to this issue.
Or refer to the cryptosuite, which would feel odd and out of place.
Why would that feel odd and out of place? It's the cryptosuite spec that defines the key formats that work with the cryptosuite. It's fine for a specification to normatively reference another specification, if only for a small part of the specification (key format), no?
It's fine for a specification to normatively reference another specification, if only for a small part of the specification (key format), no?
Formally, yes, I never disputed that. But, to use a probably extreme example, it is a bit as if the ECDSA Cryptosuite specification contained the formal (i.e., normative) definition of the P-256 curve. That would be possible, but inappropriate, because that curve is used for numerous cryptographic operations that have nothing to do with verifiable credentials.
Multikeys, on a much more modest level of course, are similar. It is a short, compact way to express a, say, ECDSA P-256 key (to keep to the example), which could be used for other purposes that have nothing to do with verifiable credentials. It could be used to convey the public key for an email signature in ECDSA, for example, in place of PGP. And, of course, there is, closer to home, used by a DID document which is again very different.
The DID developers are, mostly, either part of, or close to the "tribe" of Verifiable Credential developers. Finding and using multikeys in the (otherwise complicated) cryptosuite specifications is not a problem for them. But I doubt that would be the case for someone wishing to use ECDSA for email signatures. If we want to ensure that multikeys have any kind of presence outside this "tribe", then the definitions of those keys for some of the most widespread crypto schemes is important in the same definition. IMHO...
The issue was discussed in a meeting on 2024-09-26
The fix for this issue has been implemented in commit 5a21251dd04824e3162c4f56986787eea63962e3. Closing.
This issue is also valid for the EdDSA and BBS specifications.
The §2.1.1 Multikey section gives a (normative!) definition for Multikeys for the various versions of ECDSA. However, section §2.2.2 Mulltikey of the controller document also defines (normatively!) not only the concept of Multikeys, but also its specific definitions for ECDSA/EdDSA/BBS.
I think this is wrong, it violates the DRY principles and, worse, it may lead to discrepancies. (To be clear, I did not see any discrepancies today.) In the current setting of the various specifications, I believe the right place is the CD specification.
(Note that the DID spec possibly adopting Multikeys as one of the standard key representation. The Multikey definition is relevant for DID, the cryptosuites are not...)
In my view, the definition should be removed from the ECDSA (and EdDSA and BBS) specification.