Thanks for the detailed review, Jim. Replies inline...
-----Original Message-----
From: Jim Schaad [mailto:[email protected]]
Sent: Sunday, October 22, 2017 5:21 PM
To: [email protected]
Cc: [email protected]
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
[email protected]
https://www.ietf.org/mailman/listinfo/ace