I'm likely to be the shepherd for this draft (but if anyone else is interested,
please email the WG chairs - [email protected]).  

Back before Mirja became our AD, she commented that this draft read more like
a research paper than a standard that is intended to be used for implementation.

Towards that end, I have a number of suggestions for improvements (based on
draft-ietf-tcpinc-tcpeno-01).  This review is not written in my WG chair role, 
e.g.,
it is a review, not instructions or demands - discussion and pushback are 
definitely
welcome.

I should first comment that the draft is reasonably clear and comprehensible, 
and
reflects the significant effort that has gone into writing it.

Ok, on to the suggestions ...

[A] The Introduction (Section 2) is too long.   I would send the bullet list of 
possible
forthcoming changes (e.g., increased option space) off to a later section or 
even
an Appendix, leaving the paragraphs before and after it in place.

[B] The list of design goals at the end of the Introduction is good - it would 
help to
put them into their own section (3) or subsection (2.1).

[C} After the design goals, a paragraph or two are needed to explain all the 
pieces
that make up TCP-ENO - options, suboptions, marker bytes and transcripts - in
essence this is asking for a summary that explains the organization of Section 
3.

[D] Section 3 on the option itself mixes data structure specification with 
usage 
specification.   It would be much clearer to specify the contents of the option 
here
and move all the usage info down to Section 3.2 on the handshake.    The usage
info to be moved is a minor part of this section:
        - First paragraph, except for its first sentence.
        - Parenthetical comment about graceful fallback in second paragraph
        - Paragraph on TCP SYNC segment contents.

[E] I would reverse the order of Sections 3.1 and 3.2 to describe the handshake
(3.2, of general applicability) before the simultaneous open tiebreaker (3.1, 
mostly
about a special case).    Both sections will need some text edits.    As part 
of this
consider presenting all the handshake examples except for the simultaneous open
example after the handshake specification - this would then be followed by 
current
section 3.1 on simultaneous open tiebreaking and the final example.

[F] Sections 3.3 and 3.4  ought to better connect the suboption length material 
in
3.4 with the suboptions themselves in 3.3.   The primary concern is that the 
marker
byte in 3.4 comes as a bit of a surprise after reading 3.3 on suboptions.  The 
first
paragraph in this section ought to explain the relationship of suboptions and 
marker
bytes (including the situations where marker bytes are used vs. omitted).  The 
rest
of the text can probably remain in about its current order - specify general 
suboptions,
then marker bytes.

 [G] Section 4.2 - NO, don't do this!   The option kind will be assigned to 
TCP-ENO by
IANA, and allowing this class of reuse:
        a) almost certainly violates the rules for the registry from which that 
kind
                value is assigned.
        b) prematurely closes off opportunities to use the option after the 
initial
                handshake (e.g., possibly for encryption renegotiation).

[H] Section 5 should just be deleted - deal with this in the separate API draft.

[I] Section 6 should be entirely about experiments - the "Open Issues" title of
Section 6 should be changed, but the contents of Sections 6 and 6.1 look 
reasonable.

[J] OTOH, I'm not sure about 6.2 - can that experiment be effectively run with
TCP-ENO as currently specified.

[K] First paragraph of section 7 needs to be expanded and strengthened.
        - Define opportunistic encryption.
        - Make it clear that it's unauthenticated at the TCP level.
        - Make the warnings about MiTM and downgrade attacks
                blunter and nastier.
        - Explain in more detail what "fold the session ID into authentication"
                means, and provide an example that gets this right.   There
                are lots of ways for people who aren't crypto experts to get 
that wrong.
                Explain how/why this protects against MiTM attacks.

[L] The second paragraph doesn't say enough about the security role/purpose
of the negotiation transcript.   One possibility is to move the content after 
the
second sentence up to section 3.5 and add text describing the purpose of the
negotiation transcript (downgrade and related negotiation attack countermeasure)
along with a pointer back to 3.5 for the complete discussion.

[M] The third paragraph on randomness sources should refer to RFC 4086 and MUST 
NOT
use the term "pseudo-randomness" as this will be understood by implementers to 
refer
to horribly insecure PRNGs.   Just refer to RFC 4086, and make sure that 
whatever is
said here is consistent with that (both content and terminology usage).

[N]  The IANA considerations are seriously inadequate.   The first sentence is 
ok,
but it needs to identify the registry - it's the TCP Option Kind Numbers 
subregistry of
the Transmission Control Protocol (TCP) Parameters at :
http://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml

The second sentence is effectively a placeholder.  Much more text needs to be 
written
to tell IANA how to establish and manage the suboption values registry.   See 
RFC 5226
for a long discussion of what has to be specified, and RFC 6580 may be a useful 
source
of examples.  As part of this, one or more cs values should be set aside 
permanently
for experimental use.  As one of the authors of RFC 6580, I can help with the 
IANA
Considerations text.

Thanks, --David
----------------------------------------------------
David L. Black, Distinguished Engineer
EMC, 176 South St., Hopkinton, MA  01748
+1 (508) 293-7953     Cell: +1 (978) 394-7754
[email protected]        
----------------------------------------------------


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

Reply via email to