-----Original Message-----
From: Ludwig Seitz <[email protected]> 
Sent: Friday, August 16, 2019 6:06 AM
To: [email protected]; Jim Schaad <[email protected]>
Subject: Review of draft-ietf-cose-rfc8152bis-struct-03

Hello WG, Jim,

here is my review of draft-ietf-cose-rfc8152bis-struct-03. Note that it 
consists mostly of nits.

Regards,

Ludwig


Nit: Section 1:

"
    o  The procedures used to compute build the inputs to the
       cryptographic functions required for each of the structures.
"

either "compute" or "build", but both sounds wrong to me.
[JLS] Me too. - fixed

==
Nit: section 1:

"Applications may additionally want to defined
    additional data fields as part of the stucture."

should be "... want to define ... structure"
[JLS] Fixed

==
Nit: Section 1.2

"standalong" should be "standalone"
[JLS] Already fixed.

==
Nit: Section 1.4

"Since that time CBOR Data Definition
    Language (CDDL) [I-D.ietf-cbor-cddl] has been published as an RFC."

This (and other places in the draft) should refer to RFC 8610 instead of 
the I-D.
[JLS] Already fixed, but fixed it in the algs draft as well.

==
Nit: Section 1.6


"Authenticated Encryption with Authenticated Data (AEAD) [RFC5116]"

RFC 5116 expands AEAD to 'Authenticated Encryption with Associated Data'

[JLS] Fixed here and in the algs draft.

==
Nit: Section 3

"The structure of COSE has been designed to have two buckets ..."

and then after the second paragraph:
"Two buckets are provided for each layer"

This essentially repeats the same information, and feels unnecessary.
Perhaps:

"The two buckets provided for each layer are:"

[JLS] I looked at this and trimmed it down even more to "The two buckets are:"

==
Section 3

"empty_or_serialized_map = bstr .cbor header_map / bstr .size 0"

This CDDL uses the operators '.cbor' and '.size', which are not defined 
in section 1.4 although the text in section 1.4 makes it appear such as 
if it was presenting all the CDDL operators that are used in this document.

I suggest to provide a short definition of these operators in section 1.4

[JLS] I agree, I should have done then when Carsten suggested using them 
originally.

==
Section 3.1

"Parameters defined in this document do not need to be
       included as they should be understood by all implementations."

I wonder if this 'should' should be a MUST?

[JLS] No I don't think so.  As an example, many implementations in the IoT 
world are going understand only one of IV and PartialIV.  There is no real 
reason for them to understand both if they are only using OSCORE as an example. 
 (An OSCORE implementation would not need to understand any of these headers.)  
Specific applications can be designed so that this would not be true.

==
Nit: Section 3.1
"Partial IV: [...] The IV can be placed in the unprotected header ..."

This should read "The Partial IV can be placed in the ..."

[JLS] Fixed

==
Section 3.1
"The message IV is generated by the following steps:

   1.  Left-pad the Partial IV with zeros to the length of IV.

   2.  XOR the padded Partial IV with the context IV.
"

There seems to be a part missing here, since "context IV" is not 
mentioned anywhere else in this document.

[JLS] Fixed - I re-wrote the second sentence to define both the context and 
partial IV values.

==

Nit: 4.3

"these fields use a TLV structure so
       they can be concatenated without any problems."

This is the first use of the abbreviation TLV, so it should be expanded.

[JLS]  This is not required as it is on the RFC Editor list of well known 
abbreviations. https://www.rfc-editor.org/materials/abbrev.expansion.txt

==
Nit: 4.4

  " 4.  Place the resulting signature value in the 'signature' field of
        the array."

Although it is clear from the context, one might whish to specify which 
array to avoid confusion.

[JLS] It is a bit problematical to say which array it is going into because 
this is one of three different arrays.  However, it would go into a non-array 
for CounterSignature0.  Hmmmmmm.

==
Nits: Section 5.

"That is the countersignature makes a statement about the
    existance of a signature and"

Should be "existence" (in several places).

AND

" as oppose to attesting"

should be "as opposed to attesting"

AND

"A tagged COSE_Countersign steruture is identified byt the CBOR tag TBD0."

should be "structure" and "by"

[JLS] FIxed

==
Nit: 5.2

"The object was to keep the countersignature as small as possible ..."

should be "The objective ..."

[JLS] Fixed

==
Nit: Section 15

"An example of a profile can be found in
    [I-D.ietf-core-object-security] where a profiles was developed for
    carrying content in combination with CoAP headers."

"profiles" should be "profile" or the whole sentence rephrased to avoid 
the second occurrence of 'profile*'


[JLS] Fixed

==
Nit Section 18.

"... at the time of posting of this Internet-Draft"

This sentence will be wrong as soon as the RFC is published.

[JLS] And is academic since the section is to be removed prior to publish as an 
RFC.

==

Appendix A page 59

"In many cases, applications that make the algorithm identifier
       implicit will also want to make the context identifier implicit
       for the same reason."

'context identifier' is not defined as a concept anywhere. Perhaps it 
would be
good to elaborate on what is meant to eliminate possible confusion with 
e.g. the 'context' used in 13.5. or 7.3. or 6.3.

[JLS] I put in a reference to 'key context' in the terminology section so it is 
now defined (albeit indirectly).
==

Note: I did not check the correctness of the examples in Appendix C.

[JLS] You get the same answer as Matt - these have not changed and were 
auto-generated for RFC 8152.  They are also in the examples project on github.

Everything is in a pull request 
https://github.com/cose-wg/cose-rfc8152bis/pull/13 along with the changes from 
Matt's review.

Jim


-- 
Ludwig Seitz, PhD
Security Lab, RISE
Phone +46(0)70-349 92 51


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

Reply via email to