Subject: [tcpinc] Adam Roach's Yes on draft-ietf-tcpinc-tcpeno-13: (with COMMENT)

From: Adam Roach <[email-masked]>
Date: Mon, 06 Nov 2017 17:47:02 -0800

Adam Roach has entered the following ballot position for
draft-ietf-tcpinc-tcpeno-13: Yes

When responding, please keep the subject line intact and reply to all
email addresses included in the To and CC lines. (Feel free to cut this
introductory paragraph, however.)

Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
for more information about IESG DISCUSS and COMMENT positions.

The document, along with other ballot positions, can be found here:
https://datatracker.ietf.org/doc/draft-ietf-tcpinc-tcpeno/

----------------------------------------------------------------------
COMMENT:
----------------------------------------------------------------------

Thanks for a well-thought-out and well written document. I'm looking forward to
seeing how this experiment goes. I have a few minor comments for possible
improvements.

Section 4 indicates that applications can be made aware of whether TCP
encryption is occurring:

   o  A bit available to higher-layer protocols at each endpoint for
      out-of-band negotiation of updated behavior in the presence of TCP
      encryption.

I see that this is used to bind the TEP to certain TCP-ENO information, which
is obviously good -- but I think some guidance in here cautioning about the
hazards of exposing opportunistically encrypted connections to users as
"secure" would be helpful. In general, because of the MITM considerations that
are already covered, conveying opportunistic encryption to users as "secure" is
dangerous.

Section 4.2:
   b
      The passive role bit MUST be 1 for all passive openers.  For
      active openers, it MUST default to 0, but implementations MUST
      provide an API through which an application can explicitly set "b
      = 1" before initiating an active open.  (Manual configuration of
      "b" is only necessary to enable encryption with a simultaneous
      open.)

I think this could be made clearer (thinking in particular of Spencer's
question) if this text indicated that implementations making use of
simultaneous open need to have some out-of-band negotiation of role before the
TCP connection is attempted.

---

From: David Mazieres <[email-masked]>
Date: Mon, 06 Nov 2017 20:40:01 -0800

Adam Roach <[email-masked]> writes:

> Thanks for a well-thought-out and well written document. I'm looking
> forward to seeing how this experiment goes. I have a few minor
> comments for possible improvements.
>
> I see that this is used to bind the TEP to certain TCP-ENO
> information, which is obviously good -- but I think some guidance in
> here cautioning about the hazards of exposing opportunistically
> encrypted connections to users as "secure" would be helpful. In
> general, because of the MITM considerations that are already covered,
> conveying opportunistic encryption to users as "secure" is dangerous.

Thanks for the vote and the feedback.  Applications can already tell if
the connection is encrypted.  The intent of this bit is in fact
precisely to negotiate some higher level authentication, as discussed
later on in the security considerations section.  Ideally the beginning
of section four would not get into too many details, as the point is
just to sketch out the API so readers can contextualize the following
details.  What would you think of a parenthetical remark, like:

   o  A bit available to higher-layer protocols at each endpoint for
      out-of-band negotiation of updated behavior in the presence of TCP
      encryption.  (As discussed in Section 10, higher-layer protocols
      MAY use this bit to strengthen security in a backwards-compatible
      way.)

I'm still not crazy about that because it's both verbose and vague in a
place I was trying to keep things concise, but maybe worth it, or maybe
there is a better way.

> TCP connection is attempted.

Good point.  I added the word only in response to Spencer's feedback,
but I think we should just make the thing abundantly clear.  How about:

       open, and requires some prior agreement by which exactly one
       endpoint sets "b = 1".)

David

---

From: Adam Roach <[email-masked]>
Date: Tue, 7 Nov 2017 16:07:01 -0600

> place I was trying to keep things concise, but maybe worth it, or maybe

On reflection, I agree with you that the original, more concise version 
is better for this section. In any case, the important part of my 
comment was the final clause, starting with the word "conveying." I 
think a helpful treatment of this issue would be to conclude the final 
paragraph of the Security Considerations section with something like:

    Moreover, opportunistic encryption
    emphatically does not protect against targeted attacks that employ
    trivial spoofing to redirect a specific high-value connection to a
    man-in-the-middle attacker. For this reason, applications making use
    of TCP-ENO need to be careful not to represent such connections as
    "secure" to their users, unless end-to-end confidentiality and
    integrity can otherwise be guaranteed.

>         open, and requires some prior agreement by which exactly one

That's exactly the kind of thing I had in mind. Thanks!

/a