Thanks for the detailed review, Jim. Replies inline... -----Original Message----- From: Jim Schaad [mailto:i...@augustcellars.com] Sent: Sunday, October 22, 2017 5:21 PM To: draft-ietf-ace-cwt-proof-of-possess...@ietf.org Cc: ace@ietf.org Subject: Review of draft-ietf-ace-cwt-proof-of-possession 00
* I dislike the statement of what the specification claims to do. It will be misread by many people who are not familiar with how you are defining the word "presenter". If I intercept a CWT and present it to a validator, it does not make a claim that I possess a specific POP key. Given what a CWT is supposed to do, I believe that a much clearer statement of functionality would be "This specification describes how to associate a set of claims in a CWT with a particular proof-of-possession key." Among other things, this would allow a third party to "present" a CWT on behalf of another party. (See introspection.) I'll look at revising this along the lines you suggest. The existing language, of course, is a direct adaptation of that from RFC 7800. * I dislike the way that the second sentence of the introduction is written. Please remove the text about the presenter, that is not relevant to the holder-of-key assertion. OK * Section 2 - Issuer " Party that creates the CWT and binds the claims with the POP key" The proposed language suggests something that's not true - that the PoP key is used to sign the CWT, or something like that. It's the signing key that binds the claims. * Section 2 - The definition of "presenter" in this document is odd given that we are looking at ways that a CWT can be transferred by a third part. A better term would be "Holder" or "Holder of Key" I'm reluctant to undergo a wholesale change of terminology when this comes directly from the already-approved RFC 7800. (I'm of course willing to entertain clarifications.) * Section 3 paragraph 1 - This paragraph is written with some things taken for granted that I am not user exist. 1) How is the issuer doing the declaration that a presenter possesses a key, is a POP of the key a requirement to issue the CWT that I have not yet seen? 2) Again I don't like the use of presenter as the key usage and transfer are not necessarily done at the same time. I'll think about what you're saying, but "presenter" is one of the well-defined roles in PoP interactions. You seem to not like the term, but it's the one in common use. * Section 3 paragraph 2 - You need to be clearer about what you mean by identified. My reading would be that the presenter is identified by the POP key. If you want to talk about claims which contain other types of naming material, then you need to be clear that is what you are doing. OK - I'll give the claims wording suggestion a shot. * Section 3 paragraph 2 - I would skip most of the detail on the meanings of the different claims and just identify the number of claims and refer to the CWT document for details on what they mean. The current text is not clear, and hopefully, the CWT document is much clearer on what these mean. I'll try to strike a balance between incorporating this suggestion for additional clarity and maintaining the spirit of the RFC 7800 language. (If we deviate very much, people will rightly ask the question "Why does this have a different meaning than the corresponding RFC 7800 text?") * General - Where are you defining the types and contents of the claims that are being registered in this document? I cannot find it and I expected it to be in section 3.1 I agree more needs to be done in this regard. The current text relies too much on things that were implicit in JSON, rather than explicitly defining the CBOR types. * Section 3.1 para 1 - Based on the last sentence, I think that you need to make some type of statement about the purpose of the "cnf" claim that embodies both a POP key and the SAML stuff that you are adding. What are the requirements to be here? What are the relationships between statements? It's not adding SAML stuff. It's making an analogy to a SAML feature. I'll try to make this clearer. * Section 3.1 para 2 - It is fine to say that what the set of methods that must be present is application dependent, however without the presence of some type of profile identification, how is an application supposed to know if the meanings and relationships are what are expected and not from some other profile? The values are always processed and validated within the context of the application profile. No identifier is needed to tell the application what its validation rules are. * Section 3.1 para 4 - The thus in the first sentence does not follow from the requirement. There is nothing that says that the same key could not be in both the COSE_Key and Encrypted_COSE_Key fields. I suppose that's true but why would an application do or want both unencrypted and encrypted representations of the same content? Requiring them to be mutually exclusive simplifies applications, it seems to me. * Section 3.1 para 4 - I don't understand the process defined in sentence #2 and why it is done this way. It would make more sense to me to say that it could be a new field with an array of cnf values. Doing the "additional to 'cnf'" would seem to cause potential problems when this CWT is grabbed by somebody which does not understand how these two fields are related. OK - I'll try to make this clearer. * Change the examples to use CBOR diagnostic notation. -01 will do that, thanks to Ludwig! * Section 3.2 and 3.3 should be written in terms of the fields COSE_Key and Encrypted_COSE_Key rather than in terms of symmetric and asymmetric keys. Then you can properly talk about public and private keys in each of the sections and it is tied to the structure itself rather than inferred Again, unless the text is wrong or unclear, we plan to leave most descriptions parallel to those in RFC 7800. Your suggestion would be a rewrite. * Section 3.4 - I would consider this to be an unusable item for doing POP key identification in all cases where the kid is not computed in a cryptographic manner and the method of computation is included as part of the kid. If the key ID doesn't match, the worst that will happen is the PoP verification will fail. This is analogous to why it's ok for the Key ID to be in an unprotected header in COSE. * Section 3.5 - Huh? I don't know about typically for the demonstration. It could just as easily be done by doing an encryption/decryption operation or a key derivation operation such as in TLS for PSK. I don't know that this section is providing any useful information. If you think that it is needed then a simple statement that you are not specifying how to do POP is sufficient. If you want to supply some additional text about these other methods, that would be welcomed. * Section 4 paragraph 2 - I can understand a reasoning for doing audience restrictions, but I cannot for the life of me figure out why it would be of greater importance for POP statements than for any other set of claims. It's not more important, nor does it say that it is. But in the RFC 7800 last call process, several people wanted us to add this security consideration. * Section 4 para 4 - How does a signed nonce prevent a replay attack with encrypted symmetric secrets? Because a different nonce would be required to be used for each CWT using the PoP key. I'll try to clarify this. * Section 4 - I am surprised there is no statement about self-signed CWT statements esp. as that is given as an example of how additional naming claims would be understood What would you like the statement to say? * Section 5 - Need to make a statement about the correlation information that a CWT issuer would have as well? The issuer is aware of all the audiences that it is issuing CWTs for. Is that what you were getting after? ==== Thanks again for the thorough review, as always! Stay tuned for -01... -- Mike _______________________________________________ Ace mailing list Ace@ietf.org https://www.ietf.org/mailman/listinfo/ace