Subject: [COSE] draft-ietf-cose-x509-07 x5chain and x5bag in COSE_Key

From: Brian Sipos <[email-masked]>
Date: Tue, 3 Nov 2020 18:44:20 +0000

All,
While investigating the use of COSE within another proposed security
protocol [1] I ran into a use case which is not discussed as a
possibility in the last draft-ietf-cose-x509 [2]: providing a
certificate chain or bag within a COSE_Key (or COSE_KeySet) structure.

This particular use case is because a there will likely be many
signatures present from the same private key associated with an end-
entity certificate, and the message encoding of [1] allows security
"parameter" data to be encoded once and used for multiple security
operations. The idea is that the x5chain would be provided once (as a
COSE_Key) and then each COSE_Sign1 would contain an x5t associated with
the end-entity certificate. This would avoid needing to include a
duplicate x5chain in each of the COSE_Sign1 structures, which would
bloat the size of the encoded signatures.

Is there a technical reason why x5chain or x5bag are inappropriate to
use within a COSE_Key structure?
There seems to be nothing prohibiting this in [2] but also nothing
advocating for this kind of use. The encoding itself could use the
existing code points assigned for x5chain and x5bag Header Parameters
sub-registry [3] and assign a new "X.509 Certificate" (or some other
appropriate name) codepoint Key Types sub-registry [4].

As an alternative, my use could provide for either COSE_Key or
x5chain/x5bag but that runs into use of codepoints from multiple
registries for the same purpose, which seems confusing. And I feel like
this certificate-as-public-key seems more general purpose than my use
in [1].

Thanks for any clarification,
Brian S.

[1] https://tools.ietf.org/html/draft-bsipos-dtn-bpsec-cose-02
[2] https://tools.ietf.org/html/draft-ietf-cose-x509-07
[3] https://www.iana.org/assignments/cose/cose.xhtml#header-parameters
[4] https://www.iana.org/assignments/cose/cose.xhtml#key-type

---

From: Ivaylo Petrov <[email-masked]>
Date: Sun, 15 Nov 2020 19:03:01 +0100

Hello Brian,

I apologize for the delay. Thank you for reaching out! As the current
editor of the cose-x509 draft I will try to provide some answers below.

Cheers,
Ivaylo

> certificate chain or bag within a COSE_Key (or COSE_KeySet) structure.

[IP]: My understanding is that the idea of the author was that it is better
not to provide too many constraints on how the new header parameters are
used when that is not needed. Could you explain if the way x5chain or x5bag
somehow prevent you from efficiently using them?

> bloat the size of the encoded signatures.

[IP]: I am not sure I understood this correctly, so let me try to rephrase
it. In your protocol the security context is split in two parts. One that
is transmitted with each message and one that is not (it is in a way
static). Your idea is to have the certificate that the protocol needs as
the "static" part and then in each message to send a x5t parameter to refer
to this certificate instead of each time including the complete
certificate. If that is the case, that sounds very reasonable to me, but is
there anything in the current draft preventing you from doing that?

> appropriate name) codepoint Key Types sub-registry [4].

Here again I don't think I fully understand your question. It appears to me
that you suggest that x5bag let's say will be placed inside a COSE_Key
structure. My understanding is that you could use a way to refer to a
certificate that would be used for the cryptographic operations instead of
referring to the key in another way.

> _______________________________________________
> COSE mailing list
> [email-masked]
> https://www.ietf.org/mailman/listinfo/cose
>